Schnittstelle einrichten

...in Shopware 5

Um Hublify mit Shopware zu verbinden, benötigst du einen API-Zugang für deinen Shopware-Shop.

Hierzu einfach das Shopware Backend öffnen und dort zu "Einstellungen" / "Benutzerverwaltung"" wechseln.
Dort den gewünschten User wählen und "editieren".

Im Bereich "API-Zugang" die entsprechende Checkbox aktivieren.
Es wird automatisch ein API-Key erzeugt. Diesen bitte gut merken.

Nach dem Speichern steht der API-Zugang zur Verfügung und du kannst mit dem Einrichten in Hublify fortfahren.

Bitte beachte die FAQs von Shopware zu eventuell nötigen weiteren Einstellungen.

... in Hublify

Hierzu wechselst du in der Hublify App in den Bereich System / Datahub und füllst unter "Connect with..." / "Shopware 5"
das vorbereitete Formular aus.

Neben den Username und Key wird dafür auch noch die API-Url benötigt.
Dies ist üblicherweise "<shopware-shop-url>/api", also z.B. "https://mein.shopware.shop/api".

Bitte beachte auch die generellen Hinweise zum Einrichten vorgefertigter Schnittstellen.

Im Anschluss an die Ersteinrichtung kannst du die Konfiguration deiner Schnittstelle weiter anpassen, um z.B. spezielle Custom-Fields im Daten-Mapping zuzuordnen oder die Frequenz der automatisierten Im- und Exporte anzupassen.

Import-Tipps

Du kannst in den iteratorParams die von Shopware beschriebenen Filter & Sortieroptionen verwenden.
Zusätzlich kannst du für Datumsfelder relative Zeitangaben nutzen, in dem du sie als "strttotime(<relative Zeitangabe>)" schreibst.

Auftragsimport

Hier empfiehlt es sich, auf die neuesten Aufträge zu prüfen und nur noch die abzurufen, die z.B. in den letzten x Tagen bestellt oder bezahlt wurden. Die Shopware-Auftragsnummer ist in "number" zu finden. Aufträge, in denen diese noch nicht existiert, können daher üblicherweise noch ignoriert werden.
Da Versandkosten in Hublify als eigene Auftragsposten erfasst werden, kann dafür ein eigener Code hinterlegt werden.

{
    "iteratorParams": {
        "filter": [             {                 "property": "number",                 "expression": "!=",                 "value": 0             },             {                 "property": "orderTime",                 "expression": ">=",                 "value": "strtotime(- 3 days)"             },             {                 "property": "clearedDate",                 "expression": ">=",                 "value": "strtotime(- 3 days)",                 "operator": "OR"             }         ],         "sort": [             {                 "property": "id",                 "direction": "ASC"             }         ],         "ecs_enrich": true,         "xcost": {             "shipping_pcode": "SW-VZK-001",             "shipping_name": "Versandkosten",             "shipping_block": 5         }, ... }

Produktdaten

Um gezielt einzelne Produkte zu importieren, kann ein Filter nach SKU verwendet werden.

{
    "iteratorParams": {
        "filter": [
            {
                "property": "number",
                "expression": "in",
                "value": ["MySKU123","MySKU456"]
            }
        ],
        "ecs_enrich": true, 
        ...
}

Auch die Stammdaten des Hauptproduktes, wie z.B. der Name, können als Filter verwendet werden.
Beispiel: Produkte, deren Name "lorem" enthält.

{
    "iteratorParams": {
        "filter": [
            {
                "property": "article.name",
                "value": "%lorem%"
            }
        ],
        "ecs_enrich": true, 
        ...
}

weitere Importe

Alle Datenmodelle in Shopware enthalten eine eindeutige "id".
In vielen der Datenmodelle gibt es zudem "number" als ID/Code, den der Kunde üblicherweise sieht. Sofern vorhanden sollte dieser also immer mit übernommen werden.
Zum Filtern neuer/geänderter Daten können üblicherweise die Felder "added" und "changed" verwendet werden.

{
    "iteratorParams": {         "filter": [             {                 "property": "added",                 "expression": ">=",                 "value": "strtotime(- 3 days)"             },             {                 "property": "changed",                 "expression": ">=",                 "value": "strtotime(- 3 days)",                 "operator": "OR"             }         ],         "sort": [             {                 "property": "id",                 "direction": "ASC"             }         ],         "ecs_enrich": true,         ... }