Brevo data-export en migratie: hoe je je gegevens erin of eruit krijgt

Exporteer contacten, statistieken en logs uit Brevo, ontdek precies wat niet meeverhuist, en volg een stap-voor-stap checklist voor migratie in beide richtingen.

Brevo data export
Brevo data-export en migratie?

Het zoekvolume op zinnen als “brevo data export migration to another platform” komt voort uit één zorg: dat de gegevens die je hebt opgebouwd er makkelijker in gaan dan eruit. Het eerlijke antwoord voor Brevo is dat het meeste er netjes uit komt, een deel eruit komt in een vorm die je opnieuw moet opbouwen, en een klein maar belangrijk deel helemaal niet mee kan.

Deze gids behandelt beide richtingen. Hij somt precies op wat wel exporteert, wat niet, welke API-aanroepen je nodig hebt voor accounts die te groot zijn voor de interface, en biedt een migratiechecklist die onderdrukkingslijsten en verzendreputatie als hoofdzaak behandelt in plaats van als bijzaak.

Wat je echt uit Brevo kunt exporteren

GegevensHoe het eruit komtFormaat
Contacten en attributenExport op de pagina Contacts, of POST /v3/contacts/exportCSV
LijstlidmaatschapExport per lijst, of het metadataveld _listIdsCSV
AbonnementsstatusexportSubscriptionStatus op de exportjobCSV
CampagnestatistiekenExport van het campagnerapport, of GET /v3/emailCampaignsCSV, PDF, JSON
Transactionele gebeurtenislogsGET /v3/smtp/statistics/events of een bulkexportjobJSON, CSV
TemplatesGET /v3/smtp/templates geeft htmlContent terugJSON
Bedrijven en dealsExport vanaf de betreffende CRM-paginaCSV

Contacten en attributen

Het pad in de interface is CRM en dan Contacts. Wil je de hele database exporteren, zorg dan dat er geen lijst of segment geladen is en dat er geen filters actief zijn. Wil je één lijst of segment exporteren, klik dan eerst op “Load a list or segment” en kies hem.

Vervolgens selecteer je welke standaard- en eigen attributen je meeneemt. EMAIL, de datum van laatste wijziging en de aanmaakdatum staan standaard aangevinkt, de rest voeg je zelf toe, en dat is de stap die mensen het vaakst verkeerd doen. Kies je CSV-scheidingsteken, puntkomma of komma, en zet eventueel “Send export by email” aan zodat er een downloadlink naar het adres van de accounteigenaar gaat. Klik op “Start export” en download het bestand daarna via het meldingenklokje naast je accountnaam.

Lijsten en segmenten

Lijsten exporteren als lidmaatschap: draai één export per lijst, of neem de metadata _listIds op in één volledige export en splits het bestand achteraf. GET /v3/contacts/lists geeft je de lijstnamen, id’s en map-id’s zodat je de structuur aan de andere kant kunt nabouwen.

Segmenten liggen anders, en dat is het eerste echte gat. GET /v3/contacts/segments geeft alleen id, segmentName, categoryName en updatedAt terug. De filtervoorwaarden die een segment definiëren worden niet blootgesteld. Je kunt de leden van een segment op een bepaald moment exporteren, maar de regel die ze opleverde moet je van het scherm aflezen en met de hand nabouwen in de nieuwe tool. Maak van elk segment een schermafbeelding voordat je het account opzegt.

Campagnestatistieken

Vanuit een campagnerapport kun je de gegevens als CSV exporteren, en e-mail- en SMS-rapporten bieden daarnaast een PDF-versie om te delen of af te drukken. Voor een volledige historische ophaalactie accepteert GET /v3/emailCampaigns een parameter statistics met de waarden globalStats, linksStats of statsByDomain, plus een startDate en endDate die samen een periode van maximaal twee jaar dekken.

Transactionele logs

Twee paden, met verschillende vensters.

GET /v3/smtp/statistics/events geeft losse gebeurtenissen terug, gefilterd op type (delivered, opened, clicks, hardBounces, spam, unsubscribed en andere). De periode mag niet langer zijn dan 90 dagen, en valt standaard terug op de afgelopen 30 dagen als je noch een periode noch de parameter days meegeeft.

Voor bulk maakt POST /v3/webhooks/export een exportjob over de afgelopen 7 dagen aan ruwe gebeurtenissen, begrensd op 20 exportjobs per periode van 7 dagen. Hij geeft een processId terug, roept je notify-URL aan zodra hij klaar is en levert CSV met kolommen als date, email, event, message-id, reason, sending_ip, subject, tag en template_id. Grote volumes komen binnen als een gecomprimeerd archief met meerdere CSV-bestanden.

Het praktische gevolg: wil je meer dan 90 dagen transactionele geschiedenis, dan had je die al die tijd al volgens een schema moeten exporteren. Zet die job nu op, niet in de week dat je besluit te vertrekken.

Wat niet met je meegaat

Dit is het deel dat de meeste migratiegidsen overslaan.

  • De structuur van automatiseringen. De API kan automatiseringen via gebeurtenissen aanzetten, maar er is geen gedocumenteerd endpoint dat de vertakkingen, wachttijden en voorwaarden van een workflow teruggeeft. Elke workflow bouw je handmatig opnieuw op in het nieuwe platform.
  • Filterdefinities van segmenten. Zoals hierboven: alleen de namen en de huidige leden zijn op te halen.
  • Volledige engagementgeschiedenis per contact. Je kunt de openers, klikkers, niet-openers, afmelders, hard bounces of soft bounces van een specifieke campagne exporteren met customContactFilter op het exportendpoint. Wat je niet kunt ophalen is één net bestand met “elke opening en klik die dit contact ooit heeft gedaan”, omdat de ruwe gebeurtenisendpoints begrensd zijn tot 90 dagen.
  • Getrouwe rendering van templates. htmlContent exporteert netjes, maar drag-and-dropblokken, de syntaxis van merge tags en de plaatshouders voor afmeldlinks zijn platformspecifiek. De HTML die je exporteert is een startpunt, geen afgemaakte template. Reserveer tijd om elke template opnieuw te testen in de nieuwe editor.
  • Bezorgbaarheidsreputatie. Afzenderreputatie zit op de verzendende IP-adressen en het geauthenticeerde domein. Nieuw platform, nieuwe IP-pool, nieuwe opwarmperiode. Hetzelfde domein en dezelfde DKIM-configuratie behouden houdt de domeinkant van de reputatie in stand, wat echt helpt, maar de IP-kant gaat niet mee.
  • Id’s van formulieren, landingspagina’s en tracking. Aanmeldingsformulieren, landingspagina’s en het trackingscript hebben allemaal platformspecifieke id’s. Alles wat op je website is ingebed moet worden vervangen, en elke analyse die aan die id’s hangt breekt bij de overstap.

Gescripte export voor grote accounts

Boven ongeveer 100.000 contacten wordt de export via de interface traag en onhandig, en wil je sowieso een herhaalbare job. Het exportendpoint voor contacten is asynchroon: het accepteert een filter, geeft een process-id terug en levert je een CSV zodra het klaar is.

Terminal window
curl --request POST \
--url https://api.brevo.com/v3/contacts/export \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'api-key: YOUR_API_KEY' \
--data '{
"customContactFilter": { "actionForContacts": "allContacts" },
"exportMandatoryAttributes": true,
"exportAttributes": ["FIRSTNAME", "LASTNAME", "SMS", "COUNTRY"],
"exportMetadata": ["_listIds", "ADDED_TIME", "MODIFIED_TIME"],
"exportSubscriptionStatus": ["email_marketing", "sms_marketing"],
"exportDateInUTC": true,
"notifyUrl": "https://example.com/hooks/brevo-export"
}'

Een geslaagde aanroep geeft HTTP 202 terug met een body die een processId bevat. exportMandatoryAttributes staat standaard op true en dekt EMAIL, ADDED_TIME en MODIFIED_TIME, dus in exportAttributes noem je je eigen velden. Met exportSubscriptionStatus zet je de marketingtoestemming voor e-mail en SMS in het bestand, en het weglaten daarvan is verreweg de meest voorkomende manier waarop mensen een export produceren die onbruikbaar is voor een compliant migratie.

Blader je liever door records dan te wachten op een job, dan accepteert GET /v3/contacts een limit tot 1000 met een offset, plus modifiedSince en createdSince voor incrementele ophaalacties. Elk contact komt terug met emailBlacklisted, smsBlacklisted, listIds, listUnsubscribed en consentGroups, en dat is alles wat je nodig hebt om de toestemmingsstatus te reconstrueren.

Let op de rate limits terwijl je dit scriptt. Contactendpoints staan 36.000 verzoeken per uur en 10 per seconde toe op standaardabonnementen, verdubbeld op Professional en Enterprise, terwijl de meeste andere endpoints op 100 verzoeken per uur zitten. Een miljoen contacten doorbladeren met 1000 per pagina is 1000 verzoeken, ruim binnen het contactbudget, maar campagne- of template-endpoints in een lus afhameren is dat niet.

Waarom je onderdrukkingslijst als eerste mee moet

Verhuis de afmeldingen voordat je iets anders verhuist.

Het juridische argument is simpel. Een contact dat zich afmeldde trok zijn toestemming in bij jouw merk. Die intrekking wordt niet teruggezet omdat je van leverancier wisselt. Onder de AVG is het vastleggen van toestemming en intrekking jouw verplichting als verwerkingsverantwoordelijke, en onder CAN-SPAM moet een afmelding binnen tien werkdagen worden gehonoreerd en blijft die onbeperkt gelden. De lijst kwijtraken in een migratie is geen technisch ongelukje, het is een nalevingsfout met een papieren spoor dat naar jou wijst.

Het bezorgbaarheidsargument is in de praktijk nog erger. Onderdrukte adressen zijn onevenredig vaak mensen die klaagden, hard bouncten of er actief vanaf wilden. Die mailen vanaf een gloednieuw IP-adres zonder reputatie is de snelst bekende manier om een verse verzendopzet in de eerste week geknepen of geblokkeerd te krijgen. Een paar duizend hergebruikte spamvallen en klagers maken een maand zorgvuldig opwarmen ongedaan.

Exporteer de onderdrukte groepen dus expliciet in plaats van te hopen dat ze impliciet meekomen. Op het exportendpoint accepteert actionForContacts de waarde unsubscribed voor contacten die op welke manier dan ook geblokkeerd zijn, en unsubscribedPerList voor contacten die zich voor één specifieke lijst hebben afgemeld. Doe een aparte ronde voor hardBounces per campagne. Bij binnenkomst in een nieuw platform importeer je dat bestand in de onderdrukkingslijst, niet in een mailbare lijst.

Brevo regelt ook het omgekeerde geval: het ondersteunt het importeren van een lijst met geblokkeerde contacten, en de import-API neemt de booleans emailBlacklist en smsBlacklist zodat een geïmporteerd bestand als onderdrukt binnenkomt. Let op de asymmetrie die Brevo terecht afdwingt: contacten kunnen niet in bulk van de blokkeerlijst worden gehaald, want iemand in bulk opnieuw abonneren die met rust wilde worden gelaten zou onwettig zijn. Onderdrukking is makkelijk toe te voegen en bewust moeilijk te verwijderen. Zie dat als het juiste gedrag, niet als een obstakel.

Migratiechecklist, weg uit Brevo

  1. Inventariseer. Tel contacten, lijsten, segmenten, actieve automatiseringen, templates en integraties. Schrijf op welke integraties naar Brevo schrijven, want dat zijn de leidingen die je opnieuw moet omleggen.
  2. Exporteer. Contacten met alle attributen plus abonnementsstatus, één bestand per lijst of één bestand met _listIds, onderdrukte groepen als aparte bestanden, campagnestatistieken, transactionele gebeurtenissen zo ver terug als het venster van 90 dagen toelaat, en de HTML van templates.
  3. Archiveer wat verloopt. Alles wat in tijd begrensd is (ruwe gebeurtenissen, logs) is weg zodra het venster doorschuift. Bewaar het nu in je eigen datawarehouse of objectopslag.
  4. Opschonen en toewijzen. Ontdubbel, normaliseer datum- en telefoonformaten en schrijf een expliciete toewijzing van kolom naar veld voor het nieuwe platform. Dit is ook het natuurlijke moment om adressen te schrappen die al een jaar niets doen, wat goedkoper is dan betalen om dood gewicht op te warmen. Onze gids voor het opschonen van je e-maillijst behandelt de drempelwaarden.
  5. Laad eerst de onderdrukking. Importeer afmeldingen en hard bounces in de onderdrukkingslijst van het nieuwe platform, controleer of de aantallen overeenkomen met je export, en laad pas daarna de mailbare contacten.
  6. Warm op. Begin met je meest betrokken segment, verhoog het volume geleidelijk en houd bounce- en klachtpercentages dagelijks in de gaten. Onze gids over bezorgbaarheid van e-mail beschrijft de volgorde in detail.
  7. Draai parallel. Houd Brevo live en laat het je kritieke transactionele post versturen terwijl het nieuwe platform een groeiend deel van de marketingverzendingen overneemt. Zet niet allebei tegelijk om.
  8. Verifieer. Stem contactaantallen af, controleer twintig contacten veld voor veld, bevestig met een testverzending dat onderdrukte contacten daadwerkelijk onderdrukt zijn, en vergelijk een week verzendvolume met het oude platform.
  9. Zet om en houd een terugweg. Wijzig DNS en integratie-endpoints in een venster waarin iemand meekijkt. Houd het Brevo-account minimaal één volledige facturatieperiode na de omzetting actief en betaald, met de geëxporteerde bestanden opgeslagen buiten beide platforms. Dat, en niet een belofte van een leverancier, is je echte terugvalplan.

Migreren naar Brevo vanaf een ander platform

Dezelfde checklist draait omgekeerd, met drie Brevo-specifieke kanttekeningen.

Zorg voor een echte export bij de huidige leverancier. De meeste platforms geven je contacten en hun eigen velden als CSV. Vraag expliciet om de onderdrukkingslijst en de bouncelijst, die vaak in een aparte export zitten die mensen vergeten aan te vragen. Kom je van een prijsmodel per contact, vergelijk dan wat je straks echt betaalt met onze Brevo prijzengids.

Wijs velden toe voordat je uploadt. Brevo-attributen hebben types (tekst, getal, datum, boolean, categorie), en een datum die in een tekstattribuut belandt is later niet filterbaar. Maak de attributen eerst aan met de juiste types en importeer daarna.

Importeer via de API voor alles van formaat. POST /v3/contacts/import accepteert inline CSV in fileBody, een JSON-array in jsonBody, beide begrensd rond 10 MB, of een extern bestand via fileUrl, plus listIds of een newList-object. updateExistingContacts staat standaard op true en matcht op e-mailadres. Draai één import met emailBlacklist op true voor je onderdrukkingsbestand en daarna een tweede import voor mailbare contacten. De volledige werkende scripts staan in onze gids over CSV-contacten importeren in Brevo met een script.

Bouw daarna opnieuw op wat niet meeverhuisde: automatiseringen, segmenten, formulieren en templates. Stuur een seed-test naar een handvol mailboxaanbieders voordat je naar iemand echt verstuurt.

Laat de volgende migratie geen ravijn zijn

De reden dat een platformmigratie als een ravijn voelt, is dat het platform het systeem van registratie is geworden. Bestelgeschiedenis, abonneestatus en campagneresultaten leven binnen één leverancier, en ze verhuizen voelt als een evacuatie.

Het alternatief is je eigen bron van waarheid aanhouden en het verzendplatform een bestemming laten zijn in plaats van een kluis. Worden je winkelgegevens, toestemmingsstatus en engagementgebeurtenissen continu naar je eigen systemen gesynchroniseerd, dan is wisselen of een kanaal toevoegen een configuratiewijziging in plaats van een project. Dat is het werk dat Tajo doet tussen Brevo en de stack van een verkoper: de gegevens beide kanten op laten stromen zodat het platform nooit de enige kopie is.

Hoe dan ook: de exportjobs die hierboven staan zijn het waard om nu al volgens een schema te draaien, of je nu van plan bent te vertrekken of niet. De goedkoopste migratie is die waarbij de gegevens al buiten het platform staan op het moment dat je besluit.

Veelgestelde vragen

Kan ik al mijn gegevens uit Brevo exporteren?
Je kunt contacten en hun attributen als CSV exporteren, campagnerapporten als CSV of PDF, transactionele gebeurtenislogs als CSV, en de HTML van templates via de API. Voor de structuur van automatiseringen en de filterdefinities van segmenten bestaat geen exportpad, dus die bouw je met de hand opnieuw op.
Hoe exporteer ik contacten uit Brevo?
Ga naar CRM en dan Contacts. Wil je alles exporteren, zorg dan dat er geen lijst, segment of filter geladen is. Wil je één lijst of segment exporteren, klik dan eerst op Load a list or segment. Kies de attributen die je wilt meenemen, kies een komma of puntkomma als scheidingsteken, klik op Start export en download het bestand via het meldingenklokje.
In welk formaat exporteert Brevo contacten?
CSV. Je kiest zelf het scheidingsteken, een puntkomma of een komma. Het exportendpoint van de API levert eveneens een CSV-bestand, en exports van transactionele gebeurtenissen komen binnen als CSV, bij grote volumes gecomprimeerd tot een archief met meerdere CSV-bestanden.
Gaat mijn engagementgeschiedenis mee als ik bij Brevo wegga?
Maar deels. Statistieken op campagneniveau exporteren als rapport, en je kunt de openers, klikkers, bouncers of afmelders van een specifieke campagne exporteren. Ruwe transactionele gebeurtenislogs zijn beperkt tot een venster van 90 dagen via het event report-endpoint en 7 dagen via de bulkexportjob, dus geschiedenis per contact over lange termijn moet je archiveren voordat je vertrekt.
Moet ik mijn afmeldlijst meenemen?
Ja. Contacten die zich hebben afgemeld voor jouw post deden dat bij jou, niet bij Brevo, dus de onderdrukkingsplicht verhuist met je merk mee naar het nieuwe platform. Ze opnieuw mailen is zowel een juridisch risico onder de AVG en CAN-SPAM als de snelste manier om spamklachten uit te lokken op een vers verzenddomein.
Kan ik mijn afzenderreputatie behouden als ik van platform wissel?
Nee. Reputatie hangt aan de verzendende IP-adressen en het geauthenticeerde domein, niet aan je account. Gebruikt het nieuwe platform andere IP-adressen, dan begin je opnieuw met opwarmen. Hetzelfde domein en dezelfde DKIM-selector aanhouden behoudt de domeinreputatie, wat helpt, maar gedeelde IP-pools zetten de IP-kant volledig terug op nul.
Hoe lang duurt een migratie weg van Brevo?
De export en import zelf duren meestal minder dan een dag voor accounts onder een paar honderdduizend contacten. De realistische doorlooptijd is twee tot zes weken, want zo lang duren het opwarmen van de verzending en een parallelle run van je belangrijkste automatiseringen voordat je veilig kunt overstappen.
Is er een API om Brevo-contacten te exporteren?
Ja. POST /v3/contacts/export start een asynchrone job, geeft een processId terug en levert een CSV. Je kunt ook door GET /v3/contacts pagineren met maximaal 1000 records per verzoek, wat makkelijker te scripten is maar trager voor heel grote databases.
Kan ik mijn blokkeerlijst in Brevo importeren?
Ja. Brevo ondersteunt het importeren van een lijst met geblokkeerde contacten, en de import-API accepteert de vlaggen emailBlacklist en smsBlacklist zodat een geïmporteerd bestand als onderdrukt binnenkomt in plaats van mailbaar. Doe dit voordat je je mailbare contacten importeert.

Vraag vroegtijdige toegang aan

Vul je voornaam en een e-mailadres of telefoonnummer in. We nemen daarna contact met je op en leggen uit hoe je toegang krijgt tot Tajo.

automatische herkenning
Verkrijg Brevo