Shopify-Webhooks

In unseren Projekten kommt es regelmäßig vor, dass der neue Shopify-Shop in die bestehende Systemlandschaft unserer Kunden integriert werden soll. Dabei besteht häufig die Anforderung, dass Daten nicht periodisch per Shopify-Admin-API abgerufen werden können, sondern direkt beim Auftreten eines Ereignisses im Shopify-Shop an CRM- oder ERP-Systeme bzw. Warenwirtschaften übergeben werden müssen.

Nachdem wir kürzlich in unserem Artikel zur individuellen Schnittstellenentwicklung die Shopify-Webhooks kurz angerissen haben, möchten wir dir jetzt zeigen, wie du Webhooks bei Shopify einrichten und nutzen kannst.

Webhooks ermöglichen es, dass eine Software-Anwendung einer anderen Software-Anwendung proaktiv mitteilt, dass ein bestimmtes Ereignis eingetreten ist. Dabei werden im Regelfall auch direkt die entsprechenden Ereignisdaten an die Empfänger-Software übertragen. Immer wenn Daten quasi in Echtzeit zwischen verschiedenen Software-Anwendungen synchronisiert werden müssen, sind Webhooks ein nahezu unverzichtbares Tool.

Ein Anwendungsbeispiel, für das Webhooks wie geschaffen sind: Du nutzt ein dediziertes CRM-System und dessen Daten werden mit deinem Shopify-Shop synchronisiert. Damit du bzw. dein Team einen Neukunden bereits direkt nach der Anmeldung in deinem Shop unterstützen kann, ist es notwendig, dass der Datensatz des Neukunden sofort an das CRM-System übergeben wird. Dafür ist der Shopify-Webhook "Erstellung eines Kunden" wie geschaffen.

Shopify Webhooks anlegen

Bei Shopify kannst du Webhooks entweder direkt im Shopify-Adminbereich oder programmatisch über eine App registrieren. Der Einfachheit halber gehen wir in diesem Artikel den Weg über den Shopify-Adminbereich. Shopify-Webhooks kannst du dort unter "Einstellungen" ➝ "Benachrichtigungen" ➝  "Webhooks" angelegen und verwalten. Wenn du einen neuen Shopify-Webhook anlegen möchtest, musst du nur das Event, das Format, die URL und die Webhook-API-Version wählen. 

Als Event wählst du für den beispielhaften Anwendungsfall "Erstellung eines Kunden" als Format JSON – wenn du lieber mit XML arbeitest, kannst du deine Auswahl natürlich entsprechend anpassen. Mittels der URL wird definiert, wohin die jeweiligen Daten gesendet werden sollen. Zuletzt muss die zu verwendende Webhook-API-Version festgelegt werden – bei einem neuen Projekt kanst du einfach die neuste stabile Version wählen. Sobald du im Shopify-Adminbereich mindestens einen Webhook angelegt hast, erhältst du zusätzlich eine geheime Zeichenkette, mit deren Hilfe du die Integrität der Webhooks bestätigen kannst.

Die übermittelten Daten programmatisch verarbeiten

Sobald du einen Webhook angelegt hast, wird der entsprechende Datensatz – in unserem Beispiel der Datensatz eines Neukunden –  jedes Mal an die hinterlegte URL übergeben, wenn das gewählte Event ausgelöst wird. Du musst also im nächsten Schritt dafür sorgen, dass die übergebenen Daten programmatisch verarbeitet werden. In unserem Beispiel erfolgt die Datenverarbeitung durch ein PHP-Script. Natürlich könnte die notwendige Logik auch in jeder anderen serverseitigen Programmiersprache umgesetzt werden. 

Zunächst weist du sowohl die geheime Zeichenkette zur Verifizierung des Webhooks als auch die übergebenen Daten und den übergebenen HMAC-Header jeweils einer entsprechenden Variablen zu. Dann berechnest du aus den übergebenen Daten und der geheimen Zeichenkette den HMAC-Wert und speicherst ihn in einer weiteren Variable. Wenn der berechnete HMAC-Wert mit dem übergebenen HMAC-Header übereinstimmt, kannst du sicher sein, dass die Daten tatsächlich von deinem Shopify-Shop stammen und du kannst die eigentliche Datenverarbeitung angehen.

In unserem Beispiel gehen wir vereinfacht davon aus, dass nur Vorname, Nachname und E-Mail-Adresse des Neukunden an das CRM-System übergeben werden sollen. Dazu musst du die im JSON-Format übergebenen Daten zunächst dekodieren, so dass du den Datensatz als PHP-Objekt behandeln kannst. Dann erstellst du ein neues PHP-Objekt und weist Vorname, Nachname und E-Mail-Adresse zu. Jetzt kannst du das Kundenobjekt wieder in das JSON-Format umwandeln und den angepassten Datensatz über den entsprechenden API-Endpunkt an dein CRM-System übergeben. Da die konkrete Umsetzung der Datenübergabe per API an das CRM-System in einem realen Anwendungsfall sehr stark von der konkret eingesetzten Lösung abhängig ist, endet die beispielhafte Implementierung an dieser Stelle.

Webhooks für jeden Anwendungsfall

Bei Shopify kannst du für fast 50 Ereignisse Webhooks anlegen  von der "Aktualisierung eines Produkts" über die "Löschung einer Kategorie" bis ihn zum "Zahlungsauftrag". Ganz egal, auf welche Ereignisse du reagieren möchtest und welche Daten du in Echtzeit mit deiner Software-Infrastruktur synchronisieren möchtest, es findet sich bestimmt ein passender Webhook. Solltest du dir nicht sicher sein, welcher Webhook der richtige ist oder ganz allgemein Unterstützung bei der Umsetzung benötigst, komm einfach auf uns zu. Wir finden mit Sicherheit eine passgenaue Lösung für deinen Anwendungsfall.