Kunden und Bestellungen
Kundendaten, B2B, Bestellabwicklung, Rückmeldungen und Gutschriften.
Kunden
Kunden können in beide Richtungen entstehen: Bestehende SelectLine-Kunden werden in den Shop übertragen, damit sie sich dort anmelden können. Und Kunden, die im Shop bestellen, werden in der SelectLine angelegt.
Betreibt der Shop Shopify Plus mit B2B, entstehen statt einzelner Kunden Unternehmen mit Kontakten — siehe B2B mit Shopify Plus.
Kunden in den Shop übertragen
Die Aufgabe heißt Exportiere Kunden. Beim ersten Lauf werden alle Kunden mit gesetztem Kundenkennzeichen übertragen, danach nur noch die geänderten.
ShopAktiv-Feld
Das Kundenfeld, das bestimmt, ob der Kunde in den Shop gehört. Zu finden unter Shopify → Einstellungen → Kunden.
Shopkundennummer-Feld
In diesem SelectLine-Feld merkt sich FINN.ghost die Shopify-Kundennummer. Beim Anlegen wird sie dort zurückgeschrieben.
Dieses Feld ist die Verbindung zwischen beiden Systemen. Wird es geleert, verliert die Schnittstelle die Zuordnung und legt beim nächsten Lauf einen zweiten Kunden im Shop an.
Zusätzlich lassen sich weitere Felder als Suchfelder hinterlegen. Der Bestellimport sucht den Kunden dann auch dort — praktisch, wenn Shop-Kundennummern historisch in verschiedenen Feldern gepflegt wurden.
Pflichtangaben
Ein Kunde wird übersprungen, wenn keine gültige E-Mail-Adresse vorhanden ist.
Geprüft wird auf ein @ und darauf, dass kein Leerzeichen enthalten ist. Die übersprungenen Kunden stehen im Protokoll und sind damit eine gute Arbeitsliste für die Datenpflege.
Was übertragen wird
| Im Shop | Aus der SelectLine |
|---|---|
| Vor- und Nachname | Kundenstamm |
| Kundenstamm | |
| Telefon | Telefon 1 |
| Währung | Währung des Kunden |
| Standardadresse | Straße, PLZ, Ort, Land, Firma, Zusätze |
| Metafelder | Extrafelder der Hauptadresse aus dem CRM |
Neue Kunden zur Kontoerstellung einladen
Standardmäßig verschickt Shopify beim Anlegen keine Einladung. Mit dieser Einstellung erhält der Kunde eine E-Mail, über die er sein Kundenkonto aktivieren kann.
Kunden aus Bestellungen
Bestellt jemand im Shop, der in der SelectLine noch nicht existiert, wird er angelegt. Als Vorlage dient der Shopkunde — dessen Vorbelegungen werden übernommen und mit den Bestelldaten überschrieben.
Gesucht wird der bestehende Kunde in dieser Reihenfolge:
- über das Shopkundennummer-Feld und die zusätzlichen Suchfelder
- über die E-Mail-Adresse — im Kundenstamm und in den CRM-Adressen
- kein Treffer: der Kunde wird neu angelegt
Weil die E-Mail-Adresse als zweites Kriterium gilt, laufen zwei SelectLine-Kunden mit derselben E-Mail auf denselben Shop-Kunden zusammen. In Betrieben mit einer Sammeladresse für mehrere Ansprechpartner lohnt hier ein Blick.
Nummernkreis für neue Kunden
Ist ein Nummernkreis hinterlegt, erhalten neu angelegte Shop-Kunden eine Nummer daraus — fortlaufend ab der höchsten bereits vergebenen. Damit bleiben Shop-Kunden im Kundenstamm erkennbar.
Sonderfälle
Nur Bestellungen von bekannten Kunden importieren
Findet sich kein Kunde, bricht der Import dieser Bestellung mit einem Fehler ab, statt einen Kunden anzulegen. Der Weg für Shops mit geschlossenem Kundenkreis.
Kein Kundenkonto anlegen
Alle Bestellungen laufen auf den Shopkunden. Sinnvoll, wenn keine Kundenpflege im ERP gewünscht ist.
Marktplatzbestellungen als Gastbestellungen anlegen
Bestellungen, die nicht aus dem Webshop kommen — Amazon, eBay, Kaufland —, laufen auf den Shopkunden statt auf einen eigenen Kunden.
Kunden in SL nicht aktualisieren
Bestehende Kunden werden beim Bestellimport nicht überschrieben. Sinnvoll, wenn die Kundendaten im ERP als führend gelten.
Adresse des Shopkunden verwenden
Der Beleg erhält die Adresse des Shopkunden statt der Adresse aus der Bestellung. Die Lieferadresse aus der Bestellung wird dabei trotzdem gesetzt.
Kundenadresse aus SL in Beleg verwenden
Umgekehrt: Der Beleg erhält die im Kundenstamm gepflegte Adresse, nicht die Rechnungsadresse aus der Bestellung.
Kassenbestellungen
Bestellungen aus dem Shopify-Kassensystem laufen immer auf den Shopkunden und erhalten im Beleg den Namen POS Kunde.
Shopkunde je Herkunft oder Tag
Der Shopkunde lässt sich je Verkaufskanal — Web, Amazon, eBay — und je Bestell-Tag unterschiedlich festlegen. Damit landen Marktplatzbestellungen auf eigenen Sammelkunden und sind in der Auswertung trennbar.
Weiter
B2B mit Shopify Plus
Shopify Plus kennt neben Endkunden auch Unternehmen mit mehreren Ansprechpartnern, eigenen Adressen und Zahlungszielen. Ist B2B eingeschaltet, überträgt FINN.ghost die SelectLine-Kunden als Unternehmen statt als einzelne Kunden.
Die Umschaltung erfolgt über eine Einstellung. Sie verändert das Verhalten des Kundenexports vollständig — vorher angelegte Einzelkunden bleiben unberührt im Shop stehen.
Was aus einem Kunden wird
| Im Shop | Aus der SelectLine |
|---|---|
| Unternehmen | Kunde, Name aus Firma oder Nachname |
| Externe ID | Kundennummer |
| Steuernummer | USt-IdNr. |
| Rechnungsadresse | Adresse des Kunden |
| Lieferadresse | Standardlieferadresse, sonst Rechnungsadresse |
| Kontakte | CRM-Adressen zur Hauptadresse des Kunden |
| Metafelder | Extrafelder des Kunden |
Pflichtangaben
Straße und Land sind Pflicht, außerdem Firma oder Nachname. Fehlt eines davon, bricht der Export dieses Kunden mit einer Meldung ab.
Kontakte und Rollen
Jede CRM-Adresse zur Hauptadresse des Kunden wird ein Firmenkontakt. Erforderlich sind E-Mail sowie Vor- oder Nachname; andere werden übersprungen und im Protokoll vermerkt.
Die Rollen setzt FINN.ghost so:
| Rolle im Shop | Wer |
|---|---|
| Location admin | der Standardansprechpartner des Kunden |
| Ordering only | alle weiteren Kontakte |
Der Standardansprechpartner wird zusätzlich als Hauptansprechpartner des Unternehmens gesetzt.
Ist der Kunde inaktiv oder das Kundenkennzeichen nicht gesetzt, werden allen Kontakten die Rollen entzogen. Die Kontakte bleiben bestehen, können sich aber nicht mehr anmelden und nicht mehr bestellen. Das ist der Weg, einen B2B-Kunden zu sperren.
Entfallene Kontakte
Wird eine CRM-Adresse in der SelectLine gelöscht, räumt FINN.ghost im Shop auf:
- Kontakt ohne Bestellungen: wird gelöscht.
- Kontakt mit Bestellungen: behält den Datensatz, verliert aber alle Rollen.
Damit bleibt die Bestellhistorie erhalten und der Zugang ist trotzdem entzogen.
Wenn die E-Mail schon vergeben ist
Existiert im Shop bereits ein Endkunde mit derselben E-Mail-Adresse, kann kein neuer Firmenkontakt entstehen. FINN.ghost erkennt das, sucht den bestehenden Kunden und verknüpft ihn als Kontakt mit dem Unternehmen.
Einkaufserlebnis
Drei Einstellungen bestimmen, wie B2B-Kunden im Shop bestellen:
Bestellung als Entwurf
Der Warenkorb wird nicht direkt zur Bestellung, sondern zu einem Bestellentwurf, der erst geprüft und freigegeben wird.
Lieferadresse bearbeitbar
Legt fest, ob der Kunde beim Bestellen von der hinterlegten Lieferadresse abweichen darf.
Zahlungsbedingungsvorlage
Die Shopify-Zahlungsbedingungsvorlage, die für das Unternehmen gilt — etwa „Zahlung innerhalb 30 Tagen".
Bestellungen von Unternehmen
Bei B2B-Bestellungen entfällt die Prüfung auf vollständige Bezahlung, weil mit Zahlungsziel gearbeitet wird.
FINN.ghost übernimmt zusätzlich:
- die Rechnungsadresse des Unternehmensstandorts anstelle der Adresse aus der Bestellung
- die Steuernummer des Standorts, was die Kontengruppe für EU-Ausland beeinflusst
- den Ansprechpartner im Beleg, ermittelt über den Firmenkontakt der Bestellung
Ist der Kunde in der SelectLine inaktiv oder das Kundenkennzeichen nicht gesetzt, wird die Bestellung nicht importiert. Im Protokoll steht der Hinweis, dass der Kunde inaktiv ist. Das verhindert, dass gesperrte Kunden über den Shop weiter bestellen.
Weiter
Bestellungen
Die Aufgabe Bestellungen importieren holt Bestellungen aus dem Shop und legt sie als Beleg in der SelectLine an.
Welche Bestellungen abgeholt werden
Geholt wird, was sich seit dem letzten Lauf geändert hat — unabhängig vom Status. Anschließend prüft FINN.ghost je Bestellung, ob sie importiert werden kann.
Eine Bestellung wird übersprungen, wenn:
| Grund | Hinweis |
|---|---|
Tag ImportError |
ein früherer Import ist gescheitert |
Tag ImportIgnore |
bewusst vom Import ausgenommen |
| offener Betrag ungleich 0 | noch nicht bezahlt, außer bei Import oder B2B |
| keine Positionen | leere Bestellung |
| kein Kunde | außer bei Kassenbestellungen |
| keine Adressen | außer bei Kassenbestellungen |
| Beleg existiert bereits | erkannt über die Bestellnummer im Beleg |
Die Tags ImportError und ImportIgnore
Scheitert ein Import, setzt FINN.ghost am Shopify-Auftrag den Tag ImportError und versucht ihn nie wieder. Das verhindert Endlosschleifen — bedeutet aber, dass die Bestellung liegen bleibt, bis jemand eingreift.
Vorgehen bei ImportError: Ursache im Protokoll nachlesen, in der SelectLine beheben,
dann den Tag im Shopify-Adminbereich entfernen. Beim nächsten Lauf wird die Bestellung
erneut versucht.
Mit ImportIgnore lässt sich eine Bestellung dauerhaft ausnehmen — etwa eine
Testbestellung.
Welcher Beleg entsteht
Der Belegtyp richtet sich nach der Zahlungsart: Vorkasse-Zahlarten gehen in den Vorkasse-Belegtyp, alle anderen in den Bestell-Belegtyp.
Der Beleg trägt die Kennung sfy_<Bestellnummer>_<interne ID> im dafür eingestellten
Feld, üblicherweise Ihr Auftrag. Daran erkennt die Schnittstelle den Beleg später
wieder.
Dieses Feld darf an Shop-Belegen nicht verändert werden. Ohne die Kennung findet die Schnittstelle den Beleg nicht mehr und meldet Versand und Zahlung nicht zurück.
Was im Belegkopf landet
| Im Beleg | Aus der Bestellung |
|---|---|
| Ihr Auftrag | sfy_<Bestellnummer>_<ID> |
| Kunde und Rechnungsadresse | Rechnungsadresse, bei B2B die des Unternehmensstandorts |
| Lieferadresse | nur wenn sie von der Rechnungsadresse abweicht |
| Währung | Shop-Währung oder Kundenwährung |
| Preistyp | brutto, wenn die Bestellung Steuer enthält |
| Zahlungsbedingung, Bankbezug | über die Zuordnung der Zahlungsarten |
| Lieferbedingung | über die Zuordnung der Versandarten |
| Zahlungsreferenz | Autorisierung der erfolgreichen Transaktion |
| Kopf- oder Fußtext | Notiz aus der Bestellung |
| Sprache | über die Sprachzuordnung |
| Lager und Lagerplatz | bei echter Standorttrennung aus dem Fulfillment |
| Auftragsdatum | Bestelldatum, auf Wunsch mit Uhrzeit |
Zusätzlich lassen sich E-Mail-Adresse und Telefonnummer in eigene Belegfelder schreiben, und Shopify-Metafelder der Bestellung auf Belegfelder abbilden.
Zu lange Adressen
Die SelectLine begrenzt die Feldlängen: Nachname und Firma 80, Vorname 40, PLZ 10, Telefon 30 Zeichen.
Standardmäßig bricht der Import ab, wenn eine Angabe zu lang ist. Hinterlegt man ein Feld für zu lange Adressen, wird stattdessen gekürzt und der vollständige Originalwert in dieses Belegfeld geschrieben. Das ist die empfehlenswerte Einstellung — sonst bleiben Bestellungen mit langen Firmennamen dauerhaft liegen.
Marktplatzbestellungen
Bei Bestellungen über Amazon, eBay oder Kaufland liest FINN.ghost die Marktplatz-Bestellnummer aus den Bestellattributen und schreibt sie in ein eigenes Belegfeld. Damit lässt sich der Beleg der Marktplatzbestellung zuordnen.
Positionen
Jede Position der Bestellung wird zu einer Belegposition. Die Artikelnummer wird über den Cache zur Shopify-Variante ermittelt, im Zweifel über die SKU.
Findet sich die Artikelnummer nicht, wird die Bestellung mit dem Tag ImportError versehen und übersprungen. Im Protokoll steht der Hinweis, den Cache zu erneuern. Das ist der häufigste Grund für gescheiterte Importe.
Rabatte
Rabatte werden auf den Promotion-Artikel gebucht, mit Bezeichnung und Rabattcode. Über Rabattpositionen aufsummieren pro Rabattcode entsteht statt vieler kleiner Zeilen eine Position je Code.
Geschenkkarten
Mit Geschenkkarte bezahlte Anteile werden ebenfalls als Rabattposition gebucht, mit den letzten Zeichen der Karte in der Bezeichnung, Steuer 0.
Positionsbezeichnung aus dem Shop
Über eine Einstellung lässt sich die Bezeichnung aus der Bestellung als Positionsbezeichnung übernehmen, statt der Artikelbezeichnung aus der SelectLine.
Versandkosten
Die Versandkosten werden anteilig nach Steuersatz verteilt — siehe Zahlungs- und Versandarten. Rabatte auf die Versandkosten werden vorher abgezogen.
Nach der Beleganlage
Positionsprüfung
FINN.ghost vergleicht, wie viele Positionen übergeben wurden und wie viele im Beleg angekommen sind. Bei Abweichung gilt der Import als gescheitert.
Diese Prüfung fängt den Fall, dass die SelectLine eine Position stillschweigend verwirft — etwa wegen eines gesperrten Artikels. Ohne sie hätte man einen zu günstigen Beleg, ohne es zu merken.
Konten der Rabattpositionen
Rabattpositionen erhalten das je Steuersatz eingestellte Erlöskonto. Ohne diese Angabe übernehmen sie Konto und Steuer der vorangehenden Artikelposition.
Fertigungsaufträge
Ist in der SelectLine eingestellt, dass beim Speichern Fertigungsaufträge entstehen, erzeugt FINN.ghost zu Positionen mit Arbeitsplan einen Fertigungsauftrag und verknüpft ihn mit der Belegposition.
Makro
Nach dem Aufbau des Belegs läuft das Makro Bestellung angelegt, mit Belegtyp und Belegnummer als Parameter.
Wenn beim Import etwas schiefgeht
Jede Bestellung wird für sich verarbeitet. Läuft eine auf einen Fehler, wird der
angefangene Beleg gelöscht, die Bestellung mit ImportError markiert und die nächste
bearbeitet.
Ein Sonderfall wird eigens behandelt: Hat der Kunde eine Belegsperre, erscheint eine verständliche Meldung mit Kundennummer und Name, statt eines technischen Fehlers.
Weiter
Versand und Rückmeldungen
Nach dem Bestellimport melden drei weitere Schritte den Fortschritt zurück in den Shop. Sie laufen am Ende derselben Aufgabe Bestellungen importieren.
- Versand und Trackingnummern
- Bestelländerungen aus der SelectLine
- Zahlungseingang bei Vorkasse
Berücksichtigt werden nur Belege, die aus dem Shop stammen. Von Hand erfasste Belege bleiben unberührt.
Versand melden
Erreicht ein Beleg den Belegtyp Versand und wird gedruckt, meldet FINN.ghost die Bestellung im Shop als versendet und übergibt Paketnummer, Transportdienstleister und Sendungsverfolgungslink.
Erkannt wird der Versand über den Druckvorgang. Zusätzlich lösen neu erfasste Paketnummern eine Meldung aus, auch wenn der Beleg schon vorher gedruckt wurde.
Nur Lieferstatus senden, wenn Paketnummer vorhanden
Meldet erst, wenn eine Paketnummer vorliegt. Findet sich am Versandbeleg keine, sucht FINN.ghost in den Vorgängerbelegen.
Kunde über Versand informieren
Legt fest, ob Shopify die Versandbenachrichtigung verschickt. Voreingestellt ist aus.
Gemeldet wird gegen das erste offene Fulfillment der Bestellung. Ist keines offen — etwa weil im Shop schon manuell versendet wurde —, unterbleibt die Meldung und das Protokoll weist darauf hin.
Trackingnummern stattdessen importieren
Läuft der Versand über Shopify, kehrt die Einstellung Trackingnummern importieren die Richtung um: FINN.ghost prüft die Shop-Bestellungen und erzeugt zu vollständig versendeten Bestellungen den Versandbeleg als Nachfolger in der SelectLine. Die Trackingnummern kommen in die Paketverwaltung.
Storniert der Shop eine Bestellung, entsteht der Versandbeleg ebenfalls, damit die Belegkette schlüssig bleibt.
Beide Richtungen schließen sich aus. Ist der Import aktiv, wird kein Versand mehr an Shopify gemeldet.
Bestelländerungen an Shopify zurückmelden
Ist ein Belegtyp Bestelländerungen hinterlegt, überträgt FINN.ghost Änderungen aus der SelectLine zurück in die Shopify-Bestellung.
Abgeglichen werden:
| Änderung in der SelectLine | Wirkung in Shopify |
|---|---|
| Menge geändert | Positionsmenge wird angepasst |
| Position entfernt | Menge wird auf 0 gesetzt, Ware eingebucht |
| Position hinzugefügt | Artikel wird zur Bestellung hinzugefügt |
| Versandkosten geändert | Versandposition wird ersetzt |
Das ist die einzige Stelle, an der die Schnittstelle eine Bestellung im Shop inhaltlich verändert. Der Kunde sieht die geänderte Bestellung in seinem Konto, und Shopify bucht bei entfernten Mengen den Bestand zurück. Wer das nicht möchte, lässt den Belegtyp leer.
Berücksichtigt werden nur Belege, die nicht von der Schnittstelle selbst bearbeitet wurden — eigene Änderungen lösen also keine Rückmeldung aus. Und nur, wenn sich tatsächlich etwas geändert hat.
Rabattpositionen bleiben außen vor. Sie entstehen aus Shopify-Rabatten und würden beim Zurückschreiben doppelt gezählt.
Zahlungseingang bei Vorkasse
Ist ein Vorkassebeleg in der SelectLine als gezahlt verbucht, markiert FINN.ghost die Bestellung im Shop als bezahlt. Der Kunde sieht, dass seine Überweisung angekommen ist.
Erster Lauf nach der Einrichtung
Beim allerersten Lauf wird nichts rückwirkend gemeldet. Die Schnittstelle merkt sich ab diesem Zeitpunkt, was neu ist.
Das ist Absicht: Sonst würde die Inbetriebnahme alle historischen Belege an den Shop melden und Kunden alte Versandbestätigungen erhalten.
Weiter
Gutschriften und Storni
Erstattet man im Shopify-Adminbereich einen Betrag oder storniert eine Bestellung, kann FINN.ghost daraus in der SelectLine die passende Belegkette erzeugen: Rechnung als Vorgänger und darauf die Gutschrift.
Diese Verarbeitung ist standardmäßig ausgeschaltet. Sie greift tief in die Belegkette ein und erzeugt Belege ohne weitere Rückfrage. Vor dem Einschalten sollte der Ablauf mit dem Support besprochen und in einem Testmandanten geprüft werden.
Was passiert
Zu jeder Rückerstattung im Shop:
- Existiert noch keine Rechnung zur Bestellung, wird sie als Nachfolger des Auftrags erzeugt — mit genau den erstatteten Positionen und Mengen.
- Darauf entsteht eine Gutschrift, verknüpft als Nachfolger der Rechnung.
- Die Gutschrift erhält die Shopify-Erstattungsnummer im Feld Ihr Zeichen, die Zahlungsreferenz der Erstattung und die Notiz aus dem Shop als Kopftext.
Sind damit alle Positionen der Rechnung gutgeschrieben, werden zusätzlich die Versandkosten gutgeschrieben.
Über Ihr Zeichen erkennt FINN.ghost eine bereits verarbeitete Erstattung. Eine Erstattung wird deshalb nie doppelt gutgeschrieben, auch wenn die Bestellung mehrfach abgeholt wird.
Zwei Belegtypen für Gutschriften
| Fall | Belegtyp |
|---|---|
| Ware wird zurück ins Lager gebucht | Belegtyp Gutschrift |
| Ware wird nicht zurückgebucht | Belegtyp Gutschrift ohne Einlagerung |
Shopify unterscheidet beim Erstatten, ob die Ware wieder eingelagert wird. Ist ein zweiter Belegtyp hinterlegt, folgt FINN.ghost dieser Unterscheidung — sonst gilt für beide Fälle derselbe Belegtyp.
Wann geprüft wird
Auf Erstattungen wird geprüft, wenn eine Bestellung vollständig storniert ist — also alle Positionen zurückgegeben oder eingelagert wurden. Zusätzlich beim Import der Trackingnummern, falls dieser Weg aktiv ist.
Voraussetzungen und Grenzen
Die erstatteten Positionen müssen im Auftrag mit ausreichender offener Menge vorhanden sein. Ist eine Position dort nicht auffindbar — etwa weil sie in der SelectLine gelöscht oder bereits vollständig verwendet wurde —, bricht die Verarbeitung mit einer Meldung ab und es entsteht keine Gutschrift.
Weitere Punkte:
- Erstattungen ohne Positionen — etwa eine reine Betragserstattung als Kulanz — werden übersprungen und im Protokoll vermerkt. Solche Fälle müssen in der SelectLine von Hand gebucht werden.
- Serien- und Chargennummern sowie Lager und Lagerplatz werden aus dem Lagerprotokoll der Ursprungsposition übernommen.
- Teilerstattungen sind möglich; es wird die erstattete Menge verwendet.
Empfehlung
Für die meisten Betriebe ist der sinnvolle Weg, Gutschriften in der SelectLine zu buchen und im Shop nur die Zahlung zu erstatten. Die automatische Verarbeitung lohnt sich vor allem bei hohem Retourenvolumen und sauber geführten Belegketten.