Importieren Sie Kundendaten mit Adressen, Kundengruppen und Newsletter-Abonnements per XML-Schnittstelle in Ihren XONIC Shop. Unterstützt externe Kundennummern für ERP/WaWi-Anbindung.
Kunden
Felddefinition
Pflichtfelder sind mit einem Stift markiert. Die Felddefinitionen beziehen sich auf die MySQL Syntax.
Die Identifikation eines bestehenden Kunden erfolgt über die externe Kundennummer (external) oder die interne Kundennummer (id). Wird keine Übereinstimmung gefunden, wird ein neuer Kunde angelegt.
Wenn angegeben und bereits vorhanden → Update. Leer oder 0 → Neukunde mit AUTO_INCREMENT.
Hat Vorrang vor
id beim Matching bestehender Kunden.m: männlich (Herr)f: weiblich (Frau)d: divers
Wird beim Import automatisch verschlüsselt gespeichert. Wird kein Passwort angegeben, bleibt das bestehende Passwort erhalten (bei Update) oder es wird keines gesetzt (bei Neukunde).
Bei Neukunden mit aktivierter Option
XML_PORT_NEW_CUSTOMER_MAIL=true wird automatisch ein Passwort generiert und per Willkommens-E-Mail versandt.de: Deutsch (Standard)en: Englisch
language_id aufgelöst.Kundengruppen können im
<groups>-Block der XML-Datei definiert/aktualisiert werden.Wird automatisch auf die erste importierte Adresse gesetzt, wenn nicht angegeben.
Wird automatisch auf die erste importierte Adresse gesetzt, wenn nicht angegeben.
1: Abonniert (erstellt/aktualisiert Newsletter-Subscriber-Eintrag)0: Nicht abonniert (löscht vorhandenes Abonnement)
Adressen
Pro Kunde können mehrere Adressen importiert werden. Jede Adresse wird als eigener <address>-Knoten innerhalb des <addresses>-Blocks angegeben. Die erste Adresse wird automatisch als Standard-Liefer- und Rechnungsadresse gesetzt.
m, f, d).Wird zusätzlich in das Feld
customers_company des Kundendatensatzes übernommen.DE123456789).DE, AT, CH).Empfohlen gegenüber dem Feld
country.country_code).Wird intern in die
country_id aufgelöst. Wenn weder country_code noch country angegeben wird, greift das im Shop konfigurierte Standardland.Kundengruppen
Kundengruppen können im optionalen <groups>-Block vor den Kundendaten definiert werden. Bestehende Gruppen werden anhand der ID aktualisiert, neue Gruppen werden automatisch angelegt.
Extra-Felder
Über den <extra_fields>-Block können zusätzliche Felder als Name-Wert-Paare übermittelt werden. Folgende Felder werden speziell verarbeitet:
true: Kunde ist gesperrt (customers_lock = 1)false: Kunde ist aktiv (customers_lock = 0)
Mehrere Gebietsleiter durch Semikolon getrennt. Präfix
S für Superuser-Flag.Beispiel:
EXT-001;SEXT-002;EXT-003Die externe Kundennummer des Gebietsleiters wird in die interne ID aufgelöst.
Wird in die interne Kunden-ID aufgelöst und als Genehmiger-Beziehung gespeichert.
Rabatte (discounts)
Ab Shopversion 4.8.6 kann innerhalb des <customer>-Elements ein optionaler <discounts>-Node übermittelt werden. Jeder <discount>-Eintrag entspricht einer Rabattzeile im Feld Rabatte der Kundenverwaltung (x % auf Kategorie N).
Existieren im Shop mehrere Kundenkonten mit derselben externen Kundennummer (z. B. mehrere Ansprechpartner einer Firma), werden die übermittelten Rabatte ab Shopversion 4.8.8 automatisch auf alle Konten dieser Nummer angewendet. Die übrigen Kundendaten (Name, E-Mail, Adressen) bleiben davon unberührt.
0 = Hauptebene – zusammen mit subcategories = 1 wirkt der Rabatt auf das gesamte Sortiment.Dezimal-Komma erlaubt (z.B.
8,5). Werte über 100 werden auf 100 begrenzt, Werte kleiner oder gleich 0 werden übersprungen.0 / 1, Standard: 1.0 / 1, Standard: 0.0 / 1, Standard: 0.Bezieht sich nicht auf kundenindividuelle Preise – siehe Hinweis unter der Tabelle.
0 / 1, Standard: 0.Für den <discounts>-Node gilt die Semantik Ersetzen, wenn vorhanden:
- Node mit Einträgen vorhanden: Der komplette Rabatt-Bestand des Kunden wird ersetzt.
- Leerer Node (
<discounts></discounts>): Alle Rabatte des Kunden werden entfernt. - Node fehlt: Die Rabatte bleiben unangetastet – bestehende Anbindungen ändern nichts.
Das interne Freischalt-Flag des Kunden wird automatisch nachgeführt – die Rabatte wirken sofort im Shop.
Zusammenspiel mit kundenindividuellen Preisen: Standardmäßig wird ein Kategorierabatt zusätzlich auf einen kundenindividuellen Preis angewendet (der Rabatt wirkt dann auf den Kundenpreis). Ab Shopversion 4.8.8 lässt sich das über die Einstellung „Kategorienrabatte auf kundenindividuelle Preise“ in der Shop-Konfiguration abschalten – der kundenindividuelle Preis ist dann der Endpreis und vom Rabatt ausgenommen.
Beispiel innerhalb des <customer>-Elements:
<discounts>
<discount>
<category_id>0</category_id>
<value>8,5</value>
</discount>
<discount>
<category_id>22</category_id>
<subcategories>0</subcategories>
<value>15</value>
<special>1</special>
</discount>
</discounts>
Beispiel-XML
Die XML Datei muss folgender Namenskonvention entsprechen:Customers(.)*.xml
Ablageort: /xoport/xml/import/
Import auslösen: /xpanel/xoport/import_customers.php (Alias ab Shopversion 4.8.6: update_customers.php).
<customer_data><customers> eingebettet — jeder Kunde ist ein <customer>-Element (siehe Beispiel). Ab Shopversion 4.8.6 wird auch <customers> direkt als Wurzelelement akzeptiert. Es werden nur Felder geschrieben, die in der Datei enthalten sind — fehlende Stammdaten-Felder bleiben unangetastet (Delta-Import, z. B. nur <external> + <discounts>); ein leer übermitteltes Feld leert den Wert im Shop. Die JSON-Antwort meldet ab 4.8.6 zusätzlich customers.imported / customers.skipped_unknown — imported: 0 deutet auf ein falsches Wurzelelement oder unbekannte Kundennummern hin.<?xml version="1.0" encoding="UTF-8"?>
<customer_data>
<!-- Kundengruppen (optional) -->
<groups>
<group>
<id>1</id>
<name>Standardkunde</name>
</group>
<group>
<id>2</id>
<name>Premium</name>
</group>
</groups>
<!-- Kundendaten -->
<customers>
<customer>
<id></id>
<external>ERP-12345</external>
<group_id>1</group_id>
<language>de</language>
<gender>m</gender>
<firstname>Max</firstname>
<lastname>Mustermann</lastname>
<email_address>max@example.com</email_address>
<telephone>+49 371 123456</telephone>
<newsletter>1</newsletter>
<addresses>
<address>
<gender>m</gender>
<firstname>Max</firstname>
<lastname>Mustermann</lastname>
<company>Meine GmbH</company>
<tax_id>DE123456789</tax_id>
<street_address>Hauptstraße 1</street_address>
<postcode>09247</postcode>
<city>Chemnitz</city>
<country_code>DE</country_code>
<state>Sachsen</state>
</address>
</addresses>
<extra_fields>
<extra_field>
<name>belegsperre</name>
<value>false</value>
</extra_field>
</extra_fields>
<discounts>
<discount>
<category_id>0</category_id>
<value>8,5</value>
</discount>
</discounts>
</customer>
</customers>
</customer_data>
Letzte Aktualisierung: 23. Juli 2026