WooCommerce-Integrationsleitfaden
Dieser Leitfaden verbindet einen WooCommerce-Store mit Tajo. Die Integration besteht aus zwei Hälften, die zusammenarbeiten:
- Plugin Tajo for WooCommerce: erfasst Engagement-Events (Bestellungen, Warenkörbe, Rückerstattungen, Bewertungen, Formularübermittlungen) innerhalb von WordPress, sobald sie eintreten, und liefert sie über eine dauerhafte, signierte Outbox an Tajo. Am 14. Oktober 2026 wurde das Plugin auf einer lokalen Seite getestet; die Zustellung an Tajo wurde noch nicht verifiziert.
- WooCommerce-REST-Verbindung: Tajo liest Kund:innen, Bestellungen, Produkte, Gutscheine, Rückerstattungen und Bewertungen deines Stores für den historischen Import und den laufenden Sync. Das reine REST-Setup beschreibt die WooCommerce-Connector-Referenz.
Die Marketing-Automatisierung selbst (E-Mail, SMS, WhatsApp über Brevo und andere Anbieter) richtest du in Tajo ein, nicht im Plugin. Die Aufgabe des Plugins ist es, verlässliche Events aus WordPress herauszubekommen.
Voraussetzungen
- WordPress 6.3+ mit Admin-Zugang
- PHP 7.4+
- WooCommerce 7.0+ (das Plugin funktioniert auch auf WordPress-Sites ohne WooCommerce, die Commerce-Adapter bleiben dann einfach inaktiv)
- Tajo-Konto mit einer angelegten WordPress-Verbindung
- HTTPS auf dem Tajo-Endpunkt (bei gehostetem Tajo immer gegeben)
Schritt 1: Das Plugin Tajo for WooCommerce installieren
Manuelle Installation
# Download the plugincd wp-content/pluginswget https://tajo.io/downloads/woocommerce/tajo-woocommerce-latest.zip
# Verify and unzipunzip tajo-woocommerce-latest.zipAktiviere es anschließend im WordPress-Admin:
- Gehe zu Plugins → Installed Plugins
- Suche „Tajo for WooCommerce“
- Klicke auf Activate
Du kannst die ZIP-Datei auch direkt über Plugins → Add New → Upload Plugin hochladen. Zu jedem Release wird unter tajo.io/downloads/woocommerce/ eine SHA-256-Prüfsumme veröffentlicht. Das Plugin ist noch nicht im WordPress.org-Verzeichnis gelistet; die manuelle Installation ist heute der unterstützte Weg.
Schritt 2: Die Verbindung konfigurieren
Gehe zu WooCommerce → Tajo (auf Sites ohne WooCommerce: Settings → Tajo) und trage die drei Werte aus deiner Tajo-WordPress-Verbindung ein:
| Feld | Wert |
|---|---|
| Tajo-Endpunkt | Die HTTPS-Webhook-URL, die in Tajo angezeigt wird, z. B. https://alto.tajo.io/api/connectors/wordpress/webhooks/engagement |
| Binding-ID | Die Binding-ID der Verbindung aus Tajo |
| Signing Secret | Das gemeinsame Secret (32-256 Zeichen). Das Plugin erzeugt bei der Aktivierung ein starkes lokales Secret; füge es in Tajo ein oder trage hier das Secret aus Tajo ein |
Es gibt keine API-Key-Konstanten, die du in wp-config.php ergänzen musst. Events bleiben sicher in der lokalen Outbox in der Warteschlange, bis alle drei Werte gespeichert sind.
Prüfe danach die Strecke von Anfang bis Ende:
- Klicke auf Queue test event und dann auf Process now.
- Die Tabelle der Zustell-Outbox sollte das Event als zugestellt anzeigen.
- Prüfe in Tajo, dass das Event
connection.testan der WordPress-Verbindung angekommen ist.
Was das Plugin sendet
Jedes Event ist ein kompakter, datensparsamer Umschlag, signiert mit HMAC-SHA256. WordPress verlassen nur Engagement-Identitätsfelder (E-Mail, Telefon, lokale IDs) sowie begrenzte Event-Metadaten, nie Namen, Postadressen, IP-Adressen, User Agents, Kommentartexte, beliebige Formularfelder, Bestellnotizen oder Zahlungsdaten.
WooCommerce-Events
| Hook | Event |
|---|---|
woocommerce_created_customer / woocommerce_update_customer | customer.created / customer.updated |
woocommerce_new_product / woocommerce_update_product | product.created / product.updated |
woocommerce_add_to_cart, Entfernen von Positionen, Gutschein anwenden oder entfernen | cart.updated (mit Warenkorb-Zusammenfassung für Abbruch-Flows) |
woocommerce_cart_emptied | cart.emptied |
woocommerce_new_order / woocommerce_update_order | order.placed / order.updated |
woocommerce_order_status_changed | order.status_changed (+ order.fulfilled bei Abschluss) |
woocommerce_payment_complete | order.paid |
woocommerce_order_refunded | refund.created |
| Statusänderungen von WooCommerce Subscriptions | subscription.status_changed |
Bestell-Events enthalten Bestellnummer, Status, Währung, Summen, Positionen und fertige URLs für Bewertung und Nachbestellung, genug für Automationen nach dem Kauf und zur Rückgewinnung, ganz ohne weiteren API-Aufruf.
WordPress-Events
contact.created/contact.updated/contact.deletedfür Benutzerkontencontent.published/content.updated/content.unpublishedfür öffentliche Inhaltecomment.created/comment.status_changedfür Besucherkommentare und Produktbewertungen (interne WooCommerce-Bestellnotizen, Pingbacks und Trackbacks werden nie gesendet)form.submittedfür erfolgreiche Übermittlungen von Contact Form 7, WPForms, Gravity Forms und Fluent Forms, extrahiert werden nur typisierte Identitätsfelder für E-Mail und Telefon sowie Formular-Metadaten; beliebige übermittelte Felder werden verworfen
Zuverlässigkeit: die Zustell-Outbox
Das Plugin feuert Events nie direkt beim Seitenaufruf an Tajo. Jedes Event wird zuerst in eine lokale Outbox-Tabelle geschrieben und dann per WP-Cron zugestellt, mit:
- Begrenztem exponentiellem Backoff (bis zu 8 Versuche, mit Beachtung von
Retry-After) - Dead Letters mit Replay dead letters per Klick im Admin
- Aufbewahrungsgrenzen, damit ein nicht erreichbarer Endpunkt nie personenbezogene Daten anhäuft (zugestellt: 7 Tage; in der Warteschlange: 30 Tage; Dead Letters: 30 Tage nach der letzten Aktualisierung)
- Idempotenten Event-IDs, damit Wiederholungen und Replays nie Duplikate im nachgelagerten System erzeugen
Wenn dein Hoster WP-Cron deaktiviert (DISABLE_WP_CRON), rufe wp-cron.php mindestens einmal pro Minute über einen echten Scheduler auf.
Einverständnis wird nie abgeleitet
Kontoerstellung, Checkout, Kauf und allgemeine Formularübermittlungen gelten nicht als Marketing-Einverständnis. Eingebaute Events tragen eine leere Einverständnisliste. Um ein ausdrückliches Einverständnis festzuhalten (zum Beispiel aus einer angehakten Newsletter-Box), sende es über den Erweiterungs-Hook:
do_action( 'tajo_engagement_emit', 'consent.updated', array( 'email' => $email ), array( 'policyVersion' => '2026-07' ), array( array( 'channel' => 'email', 'status' => 'opt_in', // or 'opt_out' 'purpose' => 'marketing', 'source' => 'newsletter_checkbox', 'evidence' => array( 'formId' => 'newsletter-footer', 'field' => 'marketing_email' ), ), ), gmdate( 'c' ));Derselbe Hook erlaubt jedem Plugin und jedem Theme, eigene Events zu senden; alles läuft durch denselben Sanitizer, dieselbe Outbox und dieselbe Signatur.
Schritt 3: Historischer Import
Plugin-Events decken alles ab der Installation ab. Für die Historie vor dem Plugin importiert die WooCommerce-REST-Verbindung von Tajo bestehende Kund:innen, Bestellungen, Produkte, Gutscheine, Rückerstattungen und Bewertungen, vollständig auf der Tajo-Seite konfiguriert mit einem WooCommerce-REST-API-Key (WooCommerce → Settings → Advanced → REST API, Leseberechtigung). Details findest du in der WooCommerce-Connector-Referenz.
Datenschutz und DSGVO
- Das Plugin registriert sich bei WordPress unter Tools → Export Personal Data und Tools → Erase Personal Data; aufbewahrte Outbox-Events zu einer passenden E-Mail-Adresse werden lokal exportiert oder gelöscht.
- Löschung und Zustellung teilen sich einen fail-closed Mutex, damit eine Löschung nie den Abschluss meldet, während ein Payload gerade versendet wird.
- Die lokale Löschung umfasst nur die WordPress-Outbox, für nachgelagerte Daten reiche die entsprechende Anfrage in Tajo ein.
- Eine Deaktivierung pausiert die Zustellung, behält aber Konfiguration und Events in der Warteschlange; das Löschen des Plugins entfernt Outbox, Einstellungen, Secret und Zeitpläne dauerhaft.
Kompatibilität
- HPOS: Das Plugin erklärt Kompatibilität mit WooCommerce High-Performance Order Storage und nutzt ausschließlich CRUD-Objekte und öffentliche Hooks.
- WooCommerce Subscriptions: Statusänderungen von Abos werden erfasst, wenn die Extension aktiv ist.
- Multisite: Die Deinstallation räumt jede Site im Netzwerk auf.
Referenz für den Betrieb
Server-zu-Server-Discovery und Outbox-Steuerung stehen Admins über die Authentifizierung mit Application Password zur Verfügung:
| Methode | Route | Zweck |
|---|---|---|
GET | /wp-json/tajo/v1/capabilities | Plugin-Version, erkannte Adapter, Event-Inventar, Zustand der Outbox |
GET | /wp-json/tajo/v1/outbox | Outbox-Zähler (Payloads werden nie offengelegt) |
POST | /wp-json/tajo/v1/outbox/process | Einen Batch sofort verarbeiten |
POST | /wp-json/tajo/v1/outbox/replay | Dead Letters erneut senden |
Fehlerbehebung
| Symptom | Ursache und Lösung |
|---|---|
| Events bleiben auf „Queued“ | Endpunkt, Binding-ID oder Secret sind noch nicht gespeichert, die Zustellung pausiert, bis alle drei konfiguriert sind |
| Events bleiben auf „Retrying“ | Der Tajo-Endpunkt ist von deinem Hoster aus nicht erreichbar, oder WP-Cron läuft nicht, prüfe die Fehlerspalte der Outbox-Tabelle und dein Cron-Setup |
| Dead Letters häufen sich | Ein nicht wiederholbarer Fehler (meist eine falsche Binding-ID oder ein falsches Secret), korrigiere die Konfiguration und nutze dann Replay dead letters |
| „Enter a valid HTTPS Tajo webhook endpoint“ | Der Endpunkt muss HTTPS sein und darf keine eingebetteten Zugangsdaten enthalten |
| Test-Event zugestellt, aber nichts in Tajo | Prüfe, ob du die Binding-ID aus demselben Tajo-Workspace bzw. derselben Verbindung eingefügt hast, zu der der Endpunkt gehört |
Nächste Schritte
- WooCommerce-Connector-Referenz: REST-Sync, Details zur Webhook-Signatur, Konfigurationsschlüssel
- Kundensynchronisation: WooCommerce-Kund:innen in dein System of Record übernehmen
- Richte in Tajo Automationen für Warenkorbabbrüche, nach dem Kauf und zur Rückgewinnung ein, auf Basis der Events
cart.updated,order.placedundorder.fulfilled