---
title: "WooCommerce-integratiehandleiding | Tajo"
description: "Koppel je WooCommerce-winkel aan Tajo met de Tajo for WooCommerce-plugin: engagement-events, betrouwbare aflevering en klantgegevens die tot het minimum beperkt blijven. In ontwikkeling, nog niet end-to-end geverifieerd."
url: https://tajo.io/nl/docs/ecommerce-platforms/woocommerce/
markdown: https://tajo.io/nl/docs/ecommerce-platforms/woocommerce.md
lang: nl-NL
author: "Set Noa"
author_url: https://tajo.io/nl/set-noa/
robots: noindex
---

Vraag vroegtijdige toegang aan

Vul je voornaam en je zakelijke e-mailadres in. We sturen je een link om je aanvraag voor toegang tot Tajo te bevestigen.

# WooCommerce-integratiehandleiding

[Set Noa](https://tajo.io/nl/set-noa/)

Deze gids koppelt een WooCommerce-winkel aan Tajo. De integratie bestaat uit twee helften die samenwerken:

- **Tajo for WooCommerce-plugin**: legt engagement-events (bestellingen, winkelwagens, terugbetalingen, reviews, formulierinzendingen) vast binnen WordPress op het moment dat ze plaatsvinden en levert ze bij Tajo af via een duurzame, ondertekende outbox. Op 14 oktober 2026 is de plugin getest op een lokale site; de aflevering in Tajo is nog niet geverifieerd.
- **WooCommerce REST-verbinding**: Tajo leest de klanten, bestellingen, producten, kortingsbonnen, terugbetalingen en reviews van je winkel voor historische import en doorlopende synchronisatie. Zie de [referentie van de WooCommerce-connector](https://tajo.io/nl/docs/connectors/ecommerce/woocommerce/) voor de opzet met alleen REST.

Marketingautomatisering zelf (e-mail, SMS, WhatsApp via Brevo en andere providers) stel je in Tajo in, niet in de plugin. De taak van de plugin is om betrouwbare events uit WordPress te krijgen.

## Vereisten

- **WordPress 6.3+** met beheerderstoegang
- **PHP 7.4+**
- **WooCommerce 7.0+** (de plugin werkt ook op WordPress-sites zonder WooCommerce, de commerce-adapters blijven dan simpelweg inactief)
- **Tajo-account** met een aangemaakte WordPress-verbinding
- HTTPS op het Tajo-endpoint (altijd het geval bij gehost Tajo)

## Stap 1: installeer de Tajo for WooCommerce-plugin

### Handmatige installatie

```bash
# Download the plugin
cd wp-content/plugins
wget https://tajo.io/downloads/woocommerce/tajo-woocommerce-latest.zip

# Verify and unzip
unzip tajo-woocommerce-latest.zip
```

Activeer de plugin daarna vanuit de WordPress-beheeromgeving:

1. Ga naar **Plugins → Installed Plugins**
2. Zoek “Tajo for WooCommerce”
3. Klik op **Activate**

Je kunt de zip ook rechtstreeks uploaden via **Plugins → Add New → Upload Plugin**. Bij elke release wordt een SHA-256-checksum gepubliceerd op [tajo.io/downloads/woocommerce/](https://tajo.io/downloads/woocommerce/tajo-woocommerce-1.0.0.zip.sha256). De plugin staat nog niet in de WordPress.org-directory; handmatige installatie is vandaag de ondersteunde route.

## Stap 2: configureer de verbinding

Ga naar **WooCommerce → Tajo** (op sites zonder WooCommerce: **Settings → Tajo**) en vul de drie waarden uit je Tajo WordPress-verbinding in:

| Veld | Waarde |
| --- | --- |
| **Tajo-endpoint** | De HTTPS-webhook-URL die in Tajo staat, bijvoorbeeld `https://alto.tajo.io/api/connectors/wordpress/webhooks/engagement` |
| **Binding-ID** | Het binding-ID van de verbinding uit Tajo |
| **Ondertekeningssleutel** | Het gedeelde geheim (32 tot 256 tekens). De plugin genereert bij activering een sterk lokaal geheim; plak dat in Tajo, of plak hier het geheim van Tajo |

Er zijn geen API-sleutelconstanten die je aan `wp-config.php` moet toevoegen. Events blijven veilig in de lokale outbox staan totdat alle drie de waarden zijn opgeslagen.

Controleer daarna de hele keten van begin tot eind:

1. Klik op **Queue test event** en daarna op **Process now**.
2. In de tabel met de afleveringsoutbox hoort het event als afgeleverd te staan.
3. Bevestig in Tajo dat het event `connection.test` op de WordPress-verbinding is aangekomen.

## Wat de plugin verstuurt

Elk event is een compacte envelop met zo min mogelijk persoonsgegevens, ondertekend met HMAC-SHA256. Alleen identiteitsvelden voor engagement (e-mailadres, telefoonnummer, lokale ID’s) plus begrensde eventmetadata verlaten WordPress, nooit namen, postadressen, IP-adressen, user agents, reactieteksten, willekeurige formuliervelden, ordernotities of betaalgegevens.

### 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`, item verwijderen, kortingsbon toepassen of verwijderen | `cart.updated` (met winkelwagensamenvatting voor flows rond verlaten winkelwagens) |
| `woocommerce_cart_emptied` | `cart.emptied` |
| `woocommerce_new_order` / `woocommerce_update_order` | `order.placed` / `order.updated` |
| `woocommerce_order_status_changed` | `order.status_changed` (plus `order.fulfilled` bij afronding) |
| `woocommerce_payment_complete` | `order.paid` |
| `woocommerce_order_refunded` | `refund.created` |
| Statusupdates van WooCommerce Subscriptions | `subscription.status_changed` |

Bestellingsevents bevatten het bestelnummer, de status, de valuta, totalen, regelitems en direct bruikbare review- en herbestel-URL’s, genoeg voor automatiseringen na aankoop en voor win-back zonder een extra API-aanroep.

### WordPress-events

- `contact.created` / `contact.updated` / `contact.deleted` voor gebruikersaccounts
- `content.published` / `content.updated` / `content.unpublished` voor openbare content
- `comment.created` / `comment.status_changed` voor reacties van bezoekers en productreviews (interne WooCommerce-ordernotities, pingbacks en trackbacks worden nooit verstuurd)
- `form.submitted` voor geslaagde inzendingen van **Contact Form 7**, **WPForms**, **Gravity Forms** en **Fluent Forms**. Alleen getypeerde identiteitsvelden voor e-mail en telefoon plus formuliermetadata worden eruit gehaald; willekeurig ingezonden velden worden weggegooid

## Betrouwbaarheid: de afleveringsoutbox

De plugin vuurt nooit rechtstreeks vanuit een paginaverzoek events af op Tajo. Elk event wordt eerst naar een lokale outboxtabel geschreven en daarna door WP-Cron afgeleverd, met:

- Begrensde exponentiële backoff (maximaal 8 pogingen, met respect voor `Retry-After`)
- Dead letters met **Replay dead letters** in de beheeromgeving, in één klik
- Bewaarlimieten zodat een onbereikbaar endpoint nooit persoonsgegevens kan opstapelen (afgeleverd: 7 dagen; in de wachtrij: 30 dagen; dead letters: 30 dagen na de laatste wijziging)
- Idempotente event-ID’s, zodat nieuwe pogingen en replays verderop nooit dubbel aankomen

Schakelt je hostingpartij WP-Cron uit (`DISABLE_WP_CRON`), roep `wp-cron.php` dan minstens één keer per minuut aan vanuit een echte scheduler.

## Toestemming wordt nooit afgeleid

Het aanmaken van een account, checkout, een aankoop en gewone formulierinzendingen gelden **niet** als marketingtoestemming. Ingebouwde events dragen een lege toestemmingslijst. Wil je expliciete toestemming vastleggen (bijvoorbeeld uit een aangevinkt nieuwsbriefvakje), stuur die dan via de extensiehook:

```php
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' )
);
```

Met dezelfde hook kan elke plugin of elk thema eigen events versturen; alles gaat door dezelfde sanitizer, dezelfde outbox en dezelfde ondertekening.

## Stap 3: historische import

Plugin-events dekken alles vanaf de installatie. Voor de geschiedenis van vóór de plugin importeert de WooCommerce REST-verbinding van Tajo bestaande klanten, bestellingen, producten, kortingsbonnen, terugbetalingen en reviews, volledig ingesteld aan de Tajo-kant met een WooCommerce REST API-sleutel (**WooCommerce → Settings → Advanced → REST API**, leesrechten). Zie de [referentie van de WooCommerce-connector](https://tajo.io/nl/docs/connectors/ecommerce/woocommerce/) voor details.

## Privacy en AVG

- De plugin registreert zich bij WordPress **Tools → Export Personal Data** en **Tools → Erase Personal Data**; bewaarde outbox-events met een overeenkomend e-mailadres worden lokaal geëxporteerd of gewist.
- Wissen en afleveren delen een fail-closed mutex, zodat een wisverzoek nooit als afgerond gemeld kan worden terwijl een payload halverwege de verzending is.
- Lokaal wissen dekt alleen de WordPress-outbox. Dien voor gegevens verderop in de keten het bijbehorende verzoek in Tajo in.
- Deactiveren pauzeert de aflevering maar behoudt de configuratie en de events in de wachtrij; de plugin **verwijderen** haalt de outbox, de instellingen, het geheim en de schema’s definitief weg.

## Compatibiliteit

- **HPOS**: de plugin verklaart compatibiliteit met WooCommerce High-Performance Order Storage en gebruikt alleen CRUD-objecten en publieke hooks.
- **WooCommerce Subscriptions**: statuswijzigingen van abonnementen worden vastgelegd als de extensie actief is.
- **Multisite**: bij het verwijderen wordt elke site in het netwerk opgeruimd.

## Operationele referentie

Server-naar-serverdetectie en besturing van de outbox zijn via Application Password-authenticatie beschikbaar voor beheerders:

| Methode | Route | Doel |
| --- | --- | --- |
| `GET` | `/wp-json/tajo/v1/capabilities` | Pluginversie, gedetecteerde adapters, eventinventaris, gezondheid van de outbox |
| `GET` | `/wp-json/tajo/v1/outbox` | Aantallen in de outbox (payloads worden nooit prijsgegeven) |
| `POST` | `/wp-json/tajo/v1/outbox/process` | Verwerk direct een batch |
| `POST` | `/wp-json/tajo/v1/outbox/replay` | Speel dead letters opnieuw af |

## Problemen oplossen

| Symptoom | Oorzaak en oplossing |
| --- | --- |
| Events blijven op “Queued” staan | Endpoint, binding-ID of geheim is nog niet opgeslagen. De aflevering staat gepauzeerd tot alle drie zijn geconfigureerd |
| Events blijven op “Retrying” staan | Het Tajo-endpoint is onbereikbaar vanaf je hosting, of WP-Cron draait niet. Controleer de foutkolom in de outboxtabel en je croninstelling |
| Dead letters stapelen zich op | Een fout waarbij opnieuw proberen niet helpt (meestal een verkeerd binding-ID of geheim). Herstel de configuratie en klik daarna op **Replay dead letters** |
| “Enter a valid HTTPS Tajo webhook endpoint” | Het endpoint moet HTTPS zijn, zonder ingebedde inloggegevens |
| Testevent is afgeleverd maar er staat niets in Tajo | Controleer of je het binding-ID hebt geplakt uit dezelfde Tajo-workspace of -verbinding waar het endpoint bij hoort |

## Volgende stappen

- [Referentie van de WooCommerce-connector](https://tajo.io/nl/docs/connectors/ecommerce/woocommerce/): REST-synchronisatie, details van de webhookondertekening, configuratiesleutels
- [Klantsynchronisatie](https://tajo.io/nl/docs/skills/data-sync/customer-sync/): WooCommerce-klanten koppelen aan je system of record
- Stel automatiseringen voor verlaten winkelwagens, na aankoop en win-back in Tajo in op basis van de events `cart.updated`, `order.placed` en `order.fulfilled`
