Klantsynchronisatie
Tajo brengt klantgegevens op twee manieren naar Brevo: doorlopende synchronisatie (wijzigingen van een gekoppeld platform stromen continu naar Brevo) en bulkmigratie (een hervatbare overdracht op volle schaal vanuit Mailchimp, Klaviyo, HubSpot, Salesforce, Shopify, WooCommerce, Stripe en andere). Beide draaien op dezelfde engine en delen één eigenschap waarover niet te onderhandelen valt: toestemming wordt per record bewezen, nooit aangenomen.
Hoe toestemming wordt bepaald
Elk record passeert een fail-closed toestemmingspoort voordat het in een marketingdoelgroep terecht kan komen:
| Uitkomst | Wat er gebeurt |
|---|---|
Toestemming bewezen (bijvoorbeeld Mailchimp subscribed, Klaviyo SUBSCRIBED, marketingtoestemming in Shopify) | Wordt geïmporteerd in de Brevo-lijsten die je hebt gekozen |
| Expliciet geweigerd (uitgeschreven, opt-out) | Wordt niet weggegooid. Gaat als geblokkeerd contact mee naar Brevo en wordt vastgelegd in het niet-benaderen-register, zodat het nieuwe platform ze nooit kan mailen |
Geblokkeerd om afleverbaarheid (hard bounce, spamklacht, bijvoorbeeld Mailchimp cleaned, Klaviyo HARD_BOUNCE/SPAM_COMPLAINT) | Gaat mee als geblokkeerd en wordt vastgezet: een latere opt-in op een ander platform heft een bounce of klacht nooit op |
| Onbewezen (helemaal geen signaal van toestemming) | Geweigerd. “We konden toestemming niet bewijzen” en “er is toestemming” zijn nooit dezelfde uitkomst |
Het verschil tussen “geweigerd” en “onbewezen” doet ertoe: een uitschrijving is een beslissing die de migratie moet overleven, een ontbrekend veld is helemaal geen beslissing.
Bronnen van toestemming per platform
| Platform | Bewijs van toestemming | Blokkeersignalen |
|---|---|---|
| Mailchimp | Ledenstatus subscribed | unsubscribed (opt-out), cleaned (hard bounce) |
| Klaviyo | Marketingtoestemming in het profiel SUBSCRIBED | Blokkeerlijst met redenen (UNSUBSCRIBE, USER_SUPPRESSED, HARD_BOUNCE, INVALID_EMAIL, SPAM_COMPLAINT) |
| Shopify | email_marketing_consent.state / accepts_marketing | Expliciet not_subscribed |
| HubSpot | Abonnementsstatussen (batch-API, 100 contacten per aanroep) | hs_email_optout |
| Salesforce | Niet in bulk te bewijzen vanuit Sales Cloud, de identiteit migreert wel maar inschrijving in doelgroepen blijft dicht | HasOptedOutOfEmail, EmailBouncedDate |
| WooCommerce / Stripe | Wordt niet afgeleid uit aankopen, een klantrecord is geen marketingtoestemming | Geen |
Conflicten oplossen tijdens de migratie
Als de bron en Brevo het oneens zijn over hetzelfde adres, volgt de oplossing de modus die jij kiest:
- Nieuwste beslissing wint (standaard): de kant met de nieuwste tijdstempel bij de toestemmingsbeslissing wint. Een kant zonder leesbare tijdstempel verliest altijd van een kant die er wel een heeft; heeft geen van beide een tijdstempel, dan wint de minst bereikbare status.
- Bron van waarheid: je wijst zelf het gezaghebbende platform voor de migratie aan (“de bron heeft gelijk” of “Brevo heeft gelijk”). Verklaart je workspace al een system of record, dan is dat platform automatisch het standaardgezag.
- In elke modus: hard bounces en spamklachten zijn feiten over afleverbaarheid, geen voorkeuren. Ze worden nooit gedeblokkeerd door een nieuwere opt-in, en elk conflict waar de engine niet op handelt wordt geteld en gerapporteerd, nooit stilzwijgend overgeslagen.
Betrouwbaar op volle schaal
- Cursorgebaseerde extractie loopt met checkpoints door de volledige brontabel (meer dan 100.000 contacten). Na een crash gaat het verder vanaf de laatst afgeronde batch, en nieuwe pogingen schrijven nooit dubbel (idempotentiesleutels per record).
- Schrijfacties naar Brevo gebruiken de bulk-import-API (10.000 contacten per chunk) binnen de rate limits van Brevo; de blokkeerstatus reist mee met de import, dus er is geen venster waarin iemand eerst bereikbaar is en pas daarna geblokkeerd raakt.
- Elke run rapporteert wat er wel en niet is verplaatst: geïmporteerde contacten, meegenomen expliciete weigeringen, doorgegeven blokkeringen, vastgehouden conflicten en foutredenen per record.
Wat synchronisatie na de migratie toevoegt
Zodra de migratie klaar is, houden dezelfde verbindingen Brevo actueel: platformwebhooks (Shopify, WooCommerce, WordPress, Mailchimp) laten wijzigingen vrijwel realtime binnenkomen, en bronnen die worden gepold verversen volgens schema. Uitschrijvingen die bij de bron worden gezien draaien de toestemming in het grootboek om, met het audittrail van wanneer, waarvandaan en op welk bewijs.
Instellen
- Koppel het bronplatform in Tajo (API-sleutel of OAuth, afhankelijk van de connector).
- Koppel Brevo en kies de doellijsten.
- Kies de modus voor conflictafhandeling (of houd de standaard aan).
- Draai de migratie en neem het rapport door, inclusief de vastgehouden conflicten, voordat je automatiseringen aanzet.
De afhandeling van toestemming en blokkeringen is niet uit te zetten. Er is geen instelling die uitgeschreven contacten als mailbaar importeert.