- Server-Side-Tracking in WooCommerce sendet jede bezahlte Bestellung aus den eigenen Bestelldaten des Shops an Meta, TikTok und andere Werbeplattformen, sodass ein Kauf auch dann zählt, wenn das Browser-Pixel nie auslöst.
- ROASaurus wertet eine WooCommerce-Bestellung als bezahlt, wenn ihr Status processing oder completed ist. Dazu gehören Nachnahme-Bestellungen und Banküberweisungen, sobald du sie bestätigst.
- Das ROASaurus-Plugin speichert beim Checkout die Besucher-ID und die Cookies des Anzeigenklicks bei jeder Bestellung, sodass die Bestellung genau ihrem Anzeigenklick zugeordnet wird.
- Ohne das Plugin liefern Webhooks weiterhin jede bezahlte Bestellung, aber es gibt kein Matching über die Dankeseite: Bestellungen werden nur über eine zuvor auf der Seite angegebene E-Mail-Adresse oder über eine eindeutige IP-Adresse und einen Browser verknüpft.
- In WooCommerce folgt das ROASaurus-Skript Einwilligungs-Plugins, die die WP Consent API nutzen, wie Complianz und CookieYes, sowie den Bannern von Cookiebot, OneTrust und IAB TCF.
Server-Side-Tracking in WooCommerce sendet jede bezahlte Bestellung aus den Bestelldaten deines Shops an Meta, TikTok und andere Werbeplattformen, statt sich nur auf ein Pixel im Browser des Käufers zu verlassen. Der Kauf wird auch dann gemeldet, wenn ein Adblocker das Pixel stoppt oder der Käufer die Dankeseite nie erreicht.
Dieser Leitfaden erklärt, warum WooCommerce-Shops Conversions verlieren, welche Bestelldaten WooCommerce dir liefert und welche zwei Wege es gibt, ROASaurus zu verbinden: das WordPress-Plugin oder Webhooks. Danach folgen Matching, Einwilligung, Einrichtung und Test. Für die allgemeine Idee lies Was ist Server-Side-Tracking.
Warum verlieren WooCommerce-Shops Conversions?
Ein Browser-Pixel meldet einen Kauf nur, wenn das Pixel-Skript lädt, der Käufer die Dankeseite erreicht und der Browser das Event sendet. Jeder dieser Schritte kann scheitern. Die Bestellung selbst liegt trotzdem in deiner Datenbank, weil WooCommerce sie auf dem Server speichert.
| Was passiert | Browser-Pixel | Bestelldaten in WooCommerce |
|---|---|---|
| Der Käufer zahlt per Weiterleitung (zum Beispiel PayPal oder eine Banking-App) und schließt den Tab | Keine Dankeseite, kein Purchase-Event | Bezahlte Bestellung, Status processing |
| Ein Adblocker oder eine Datenschutzeinstellung blockiert das Pixel-Skript | Kein Purchase-Event | Bezahlte Bestellung |
| Der Besucher lehnt Marketing-Cookies ab | Das Pixel darf nicht laden | Bezahlte Bestellung |
| Eine Banküberweisung wird drei Tage später bestätigt | In diesem Moment ist kein Browser geöffnet | Der Status wechselt von on hold zu processing |
| Ein Caching- oder Skript-Optimierungs-Plugin verzögert das Pixel | Das Event kann verspätet kommen oder fehlen | Bezahlte Bestellung |
Fehlende Käufe schaden auf zwei Arten. Die Werbeplattform optimiert auf weniger Conversions, und deine Berichte zeigen einen niedrigeren Ertrag, als du tatsächlich erzielst. Hier ist der zweite Effekt in Zahlen, für einen Beispiel-Shop mit einem Break-even-ROAS von 2.2:
| Beispiel-Shop, ein Monat | Nur Pixel | Jede bezahlte Bestellung |
|---|---|---|
| Meta-Werbeausgaben | $8,000 | $8,000 |
| Käufe aus Meta-Klicks | 260 | 320 |
| Umsatz bei $60 pro Bestellung | $15,600 | $19,200 |
| ROAS | 15,600 ÷ 8,000 = 1.95 | 19,200 ÷ 8,000 = 2.40 |
| Gegenüber dem Break-even (2.2) | Sieht nach Verlust aus | Profitabel |
Was WooCommerce dir bietet: Bestellungen, Webhooks und die REST API
Welche Bestellstatus zählen als bezahlt?
WooCommerce beschreibt processing als eingegangene Zahlung, wobei die Bestellung auf die Erfüllung wartet. ROASaurus sendet Bestellungen mit dem Status processing oder completed und überspringt Bestellungen mit den Status pending payment, on hold, failed, cancelled und refunded. Zwei Zahlungsmethoden brauchen Aufmerksamkeit:
- Nachnahme. WooCommerce setzt diese Bestellungen auf processing, bis die Zahlung eingezogen wird, deshalb sendet ROASaurus sie, sobald sie aufgegeben werden. Eine Ausnahme sind Bestellungen mit einem herunterladbaren Produkt: Sie werden auf on hold gesetzt. Was das für Retouren und verweigerte Bestellungen bedeutet, steht unter Nachnahme-Bestellungen tracken.
- Banküberweisung. WooCommerce setzt diese Bestellungen auf on hold, während du die Zahlung prüfst. ROASaurus sendet sie, wenn du sie auf processing setzt.
Webhooks
Ein Webhook ist eine Nachricht, die WooCommerce an ein anderes System sendet, wenn sich etwas ändert. Du legst ihn unter WooCommerce › Settings › Advanced › Webhooks an. Bei einem Bestell-Topic ist die Payload dasselbe Bestellobjekt, das die REST API zurückgibt. Jede Zustellung trägt einen X-WC-Webhook-Signature-Header: einen base64-codierten HMAC-SHA256-Hash der Payload, erstellt mit dem Secret, das du wählst. ROASaurus prüft diese Signatur, bevor es eine Bestellung annimmt.
Zwei Details sind in der Praxis wichtig. WooCommerce stellt Webhooks im Hintergrund zu, standardmäßig mit WP-Cron, deshalb kann sich eine Zustellung verzögern, wenn diese Warteschlange hinterherhinkt. Und WooCommerce deaktiviert einen Webhook nach mehr als fünf fehlgeschlagenen Zustellungen in Folge.
REST API
Über die REST API kann ROASaurus Bestellungen selbst abfragen. Mit einem schreibgeschützten API-Schlüssel fragt ROASaurus alle 5 Minuten nach processing- und completed-Bestellungen, die sich seit der letzten Prüfung geändert haben, mit 30 Minuten Überlappung. Bestellungen, die es schon hat, werden ignoriert. So wird jede Bestellung erfasst, die ein Webhook verpasst hat.
| Bestellfeld | Was ROASaurus damit macht |
|---|---|
id | Wird zur Event-ID order-1042, die Server- und Browser-Events gemeinsam haben |
total | Der Kaufwert: die Gesamtsumme, inklusive Steuer und Versand |
| Rechnungs-E-Mail-Adresse, Telefonnummer, Name, Stadt, Bundesland, PLZ, Land | Mit SHA-256 gehasht und als Kundendaten gesendet |
customer_ip_address, customer_user_agent | Wird mit dem Event gesendet und dient dazu, die Bestellung einem Besucher zuzuordnen |
line_items | Produkt-IDs (die Variations-ID, wenn es eine gibt), Mengen und Preise |
date_paid_gmt | Die Eventzeit bei Bestellungen aus einem Webhook oder der REST API (das Erstellungsdatum, wenn es kein Zahlungsdatum gibt) |
meta_data | Mit dem Plugin: die Besucher-ID und die Meta- und TikTok-Cookies |
Plugin oder Webhooks: zwei Wege zur Verbindung
Beide Verbindungen senden jede bezahlte Bestellung. Sie unterscheiden sich darin, wie gut jede Bestellung mit dem Anzeigenklick verknüpft ist, der den Käufer gebracht hat.
| ROASaurus-Plugin | Nur Webhooks | |
|---|---|---|
| Was du installierst | Ein WordPress-Plugin (PHP 7.4 und WooCommerce 6.0 oder neuer) | Nichts: ein Webhook in den WooCommerce-Einstellungen |
| Wie Bestellungen ankommen | Das Plugin sendet jede bezahlte Bestellung an die Orders-API von ROASaurus | WooCommerce sendet „Order updated“; optionale Prüfung über die REST API alle 5 Minuten |
| Tracking-Skript | Wird vom Plugin auf jeder Seite geladen | Du fügst es selbst hinzu, zum Beispiel mit dem Plugin WPCode oder in deinem Theme |
| Besucher-ID und Klick-Cookies in der Bestellung | Ja, beim Checkout gespeichert (klassischer Checkout und Block-Checkout) | Nein |
| Browser-Kauf auf der Dankeseite | Ja, mit derselben Event-ID wie das Server-Event | Nein |
| Matching über die Dankeseite | Ja | Nein |
Du kannst beides gleichzeitig nutzen. Das Plugin speichert die Besucher-ID als Order-Metadaten in der Bestellung, und die Webhook-Payload enthält sie mit. ROASaurus speichert jede Bestellung nur einmal, anhand ihrer WooCommerce-Bestell-ID, daher erzeugen Plugin und Webhook nie zwei Käufe. Das Plugin erklärt außerdem die Unterstützung für High-Performance Order Storage von WooCommerce.
Wie wird eine WooCommerce-Bestellung dem Anzeigenklick zugeordnet?
Eine Werbeplattform kann einen Kauf nur dann einer Anzeige gutschreiben, wenn sie beides verbinden kann. ROASaurus tut das, indem es die Bestellung mit dem Besucher verknüpft, der die Anzeige angeklickt hat. Dieser Besucher trägt die Click-IDs (wie fbclid und ttclid) und UTM-Parameter von der Landung. Es probiert diese Methoden der Reihe nach und hört bei der ersten auf, die funktioniert:
- Die in der Bestellung gespeicherte Besucher-ID. Nur mit dem Plugin. Das ist eine exakte Verknüpfung.
- Der Browser-Kauf auf der Dankeseite, der dieselbe Bestell-ID trägt. Nur mit dem Plugin.
- Eine gehashte E-Mail-Adresse, die der Besucher zuvor auf deiner Seite angegeben hat, zum Beispiel in einem Popup-Formular von Klaviyo, Attentive oder Wisepops oder über einen Identify-Aufruf.
- Dieselbe IP-Adresse und derselbe Browser, gesehen von 3 Stunden vor bis 15 Minuten nach der Bestellung, aber nur, wenn genau ein Besucher passt. In gemeinsam genutzten Netzwerken, etwa in Büros und Mobilfunknetzen, teilen sich oft mehrere Besucher eine IP-Adresse, und dann rät ROASaurus nicht.
ROASaurus wartet kurz, bevor es jeden Kauf sendet, damit das Event von der Dankeseite zuerst ankommen kann. Ist die Bestellung dann noch nicht zugeordnet, versucht es das Matching beim Senden erneut. Die Seite Orders zeigt das Ergebnis pro Bestellung in der Spalte Matched by. Bestellungen, die über die Besucher-ID des Plugins verknüpft sind, zeigen cart, dasselbe Label, das Shopify-Bestellungen bekommen.
| An Meta gesendet für Bestellung 1042 | Zugeordnet (Plugin) | Nicht zugeordnet (nur Webhooks) |
|---|---|---|
Event-ID order-1042 | Ja | Ja |
| Gehashte E-Mail-Adresse, Telefonnummer, Name und Adresse | Ja | Ja |
| IP-Adresse und Browser der Bestellung | Ja | Ja |
Meta-Click-ID und Browser-ID (fbc, fbp) | Ja | Nein |
Gehashte Besucher-ID (external_id) | Ja | Nein |
| Der Anzeigenklick in der ROASaurus-Attribution | Kampagne und Anzeige des Klicks | Wird als direkt oder unbekannt angezeigt |
Diese Click-Kennungen erhöhen die Match-Rate von Meta für das Event. Event Match Quality erklärt, wie Meta sie bewertet.
Einwilligung bei WooCommerce
Jeder Shop in ROASaurus hat die Einstellung Respect visitor consent, die standardmäßig aktiviert ist. In WooCommerce liest das ROASaurus-Skript die Entscheidung des Besuchers aus der WP Consent API, die Einwilligungs-Plugins wie Complianz und CookieYes befüllen. Außerdem liest es Cookiebot, OneTrust, IAB-TCF-Banner und Google consent mode. Solange der Besucher Marketing-Cookies nicht akzeptiert, setzt das Skript keine Besucher-ID und lädt keine Browser-Pixel.
Lehnt ein Besucher ab, setzt das Skript keine Besucher-ID, behält keine Click-IDs und löst keine Browser-Pixel aus, und das Plugin speichert keine Tracking-Cookies bei der Bestellung. Die bezahlte Bestellung wird trotzdem vom Server an deine verbundenen Werbeplattformen gesendet, mit gehashten Kundendaten aus der Bestellung sowie der IP-Adresse und dem Browser der Bestellung. Wenn deine Rechtsberatung sagt, dass auch Purchase-Events eine vorherige Einwilligung brauchen, kontaktiere ROASaurus, bevor du serverseitige Käufe aktivierst. Die Hilfeseite zur Einwilligung nennt die Details, und der Beitrag zu Consent Mode v2 und DSGVO behandelt den rechtlichen Hintergrund.
So richtest du Server-Side-Tracking in WooCommerce ein
Das sind die Schritte für den Weg über das Plugin:
- Den Shop hinzufügen
Gehe in ROASaurus zu Add a store, wähle WooCommerce und gib die Domain ein, die deine Kunden besuchen.
- Einen API-Key erstellen
Öffne Store settings und klicke unter Orders API auf Create API key. Kopiere den Schlüssel sofort: Er wird nur einmal angezeigt, neben deinem Store-Schlüssel. Der Endpoint ist die Adresse vor
/api/v1/ordersauf dieser Seite. - Das Plugin installieren
Lade das Plugin herunter und lade die ZIP-Datei in WordPress unter Plugins › Add New Plugin › Upload Plugin hoch. Aktiviere es danach.
- Die Schlüssel eingeben
Gib unter WooCommerce › ROASaurus den Endpoint, den Store-Schlüssel und den API-Schlüssel ein und speichere.
- Verbinde deine Werbeplattformen
Nutze unter Tracking & platforms die Option Connect with Facebook oder Add pixel für Meta, TikTok und die anderen. Aktiviere die Option, das Browser-Pixel zusätzlich zu laden, damit der Kauf auf der Dankeseite mit dem Server-Event dedupliziert wird.
- Einwilligung einrichten und testen
Blockiere das Skript in deinem Einwilligungs-Tool, bis der Besucher Marketing-Cookies akzeptiert, und gib dann eine Testbestellung auf.
Ohne das Plugin fügst du das Script-Tag aus Tracking & platforms auf jeder Seite ein und legst dann den Webhook an. Der Tab Connection deines Shops zeigt deine Webhook-URL. Halte sie privat: Jeder, der die URL kennt, kann Bestellungen an deinen Shop senden.
WooCommerce › Settings › Advanced › Webhooks › Add webhook Status Active Topic Order updated Delivery URL (your webhook URL from the Connection tab) Secret (a secret of your choice; paste the same one in ROASaurus) API version WP REST API Integration v3
Lege für die Absicherung unter WooCommerce › Settings › Advanced › REST API einen Schlüssel mit Lesezugriff an. Füge Consumer Key und Secret auf dem Tab Connection ein, speichere und klicke auf Test connection. Fetch orders now holt sofort die letzten bezahlten Bestellungen. Die Seite zur WooCommerce-Integration listet alle Optionen an einem Ort auf.
Wie testest du Server-Side-Tracking in WooCommerce?
Teste zuerst die Browser-Seite, gib dann eine Bestellung auf und verfolge sie bis zu den Werbeplattformen.
- Öffne deinen Shop mit
?roasaurus=connectedin der Adresse. Eine Meldung bestätigt, dass das Skript läuft. Mit?roasaurus=debugschreibt das Skript in die Browserkonsole, was es sendet. - Im Event log sollten Seitenaufrufe unter Collected events eine Besucher-ID zeigen.
- Gib eine Testbestellung auf. Nachnahme geht am schnellsten, weil die Bestellung sofort auf processing steht.
- Auf dem Tab Connection zeigt Last order received die Zeit der letzten Bestellung.
- Im Event log bekommt unter Server deliveries jede verbundene Plattform eine Zeile mit dem Status sent und der Antwort der Plattform.
PageView visitor 3f9c2a1eSkript mit Einwilligung geladenPurchase order-1042Dankeseite, Browser-Pixel ausgelöstorder 1042 processingVom Plugin empfangenMeta Purchase sentGleiche Event-ID, dedupliziertTikTok CompletePayment sentGleiche Event-ID, dedupliziertUm das Event in Meta zu sehen, füge den Code aus Events Manager › Test events in das Feld Test event code deines Meta-Pixels in ROASaurus ein. Entferne ihn wieder, wenn du fertig bist, denn der Code ist nur zum Testen gedacht. Wenn das Plugin eine Bestellung nicht zustellen kann, fügt es in WooCommerce eine Bestellnotiz hinzu, die mit „ROASaurus: order not sent“ beginnt, gefolgt vom Fehler.
Fehler, die du vermeiden solltest
- Das Topic Order created verwenden. Per Weiterleitung bezahlte Bestellungen werden als pending payment angelegt. ROASaurus ignoriert unbezahlte Bestellungen, und wenn die Zahlung eintrifft, folgt keine zweite „created“-Meldung. Verwende Order updated.
- Ein Secret, das nicht übereinstimmt. ROASaurus lehnt eine Zustellung ab, deren Signatur nicht zum Secret passt, das es hat. Nach mehr als fünf Fehlern in Folge deaktiviert WooCommerce den Webhook. Korrigiere das Secret, setze den Webhook zurück auf Active und füge den REST-API-Schlüssel hinzu, damit die Bestellungen aus der Lücke nachgeholt werden.
- Zwei Tools senden dasselbe Pixel. Wenn ein anderes Plugin ebenfalls dein Meta- oder TikTok-Pixel sendet, verwendet es eigene Event-IDs, und die Plattform zählt jeden Verkauf doppelt. Schalte es für dieses Pixel ab. Siehe Doppelzählungen vermeiden und doppelte Purchase-Events.
- Add-to-Cart-Events erwarten. Bei WooCommerce erfasst das Skript Seitenaufrufe von selbst. Produktansichten und Hinzufügen zum Warenkorb werden nur auf Shopify automatisch erkannt. Ein Entwickler kann sie mit einem
tlq-Track-Aufruf senden. - Google-Ads-Conversions erwarten. ROASaurus sendet Kauf-Conversions für Google Ads nur aus dem Shopify-Checkout. Von WooCommerce sendet es Käufe an Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn und die anderen Werbeplattformen, die du verbindest.
- Verspätete Banküberweisungen. Meta akzeptiert Server-Events bis zu 7 Tage nach dem Eventzeitpunkt. Das Plugin sendet die Bestellung mit dem Datum ihrer Erstellung, deshalb lehnt Meta eine Überweisung ab, die mehr als 7 Tage nach dem Checkout bestätigt wird. Bestellungen, die per Webhook oder REST API ankommen, verwenden stattdessen das Zahlungsdatum. Beachte außerdem, dass die Dankeseite den Browser-Kauf beim Checkout auslöst, bevor die Überweisung bezahlt ist. Wird die Zahlung mehr als 48 Stunden später bestätigt, können Meta und TikTok die Browser- und die Server-Kopie nicht zusammenführen, und eine Überweisung, die nie bezahlt wird, behält ihren Browser-Kauf.
Sobald Bestellungen fließen, zeigen die Berichte unter Attribution, aus welchen Kampagnen und Anzeigen sie stammen.
Quellen
- WooCommerce: Webhooks Documentation
- WooCommerce REST API Documentation - WP REST API v3
- WooCommerce: Order Statuses Documentation
- WooCommerce: Cash on Delivery Documentation
- Meta for Developers: Server Event Parameters