Brevo dataeksport og migrering: Sådan flytter du dine data ind eller ud
Eksportér kontakter, statistik og logfiler fra Brevo, find ud af præcis hvad der ikke følger med, og følg en tjekliste trin for trin til migrering i begge retninger.
Søgevolumen på fraser som “brevo data export migration to another platform” er drevet af én bekymring: at de data, du har samlet op, er lettere at få ind end at få ud. Det ærlige svar for Brevo er, at det meste kommer rent ud, noget af det kommer ud i en form, du selv skal bygge op igen, og en lille, men vigtig del slet ikke kan flytte sig.
Denne guide dækker begge retninger. Den lister præcis hvad der kan eksporteres, hvad der ikke kan, API-kaldene til konti, der er for store til brugerfladen, og en migreringstjekliste, der behandler undertrykkelseslister og afsenderomdømme som førsteklasses emner frem for eftertanker.
Hvad du faktisk kan eksportere fra Brevo
| Data | Sådan kommer det ud | Format |
|---|---|---|
| Kontakter og attributter | Eksport fra kontaktsiden, eller POST /v3/contacts/export | CSV |
| Listemedlemskab | Eksport pr. liste, eller metadatafeltet _listIds | CSV |
| Tilmeldingsstatus | exportSubscriptionStatus på eksportjobbet | CSV |
| Kampagnestatistik | Eksport af kampagnerapport, eller GET /v3/emailCampaigns | CSV, PDF, JSON |
| Transaktionelle hændelseslogfiler | GET /v3/smtp/statistics/events eller et bulkeksportjob | JSON, CSV |
| Skabeloner | GET /v3/smtp/templates returnerer htmlContent | JSON |
| Virksomheder og deals | Eksport fra den relevante CRM-side | CSV |
Kontakter og attributter
Stien i brugerfladen er CRM og derefter Contacts. Vil du eksportere hele databasen, skal du sikre dig, at ingen liste eller segment er indlæst, og at der ikke er filtre på. Vil du eksportere én liste eller ét segment, klikker du først på “Load a list or segment” og vælger den.
Derefter vælger du, hvilke standardattributter og brugerdefinerede attributter der skal med. EMAIL, datoen for seneste ændring og oprettelsesdatoen er valgt som standard, og resten tilføjer du selv, hvilket er det trin, folk oftest laver forkert. Vælg din feltseparator til CSV, semikolon eller komma, og slå eventuelt “Send export by email” til, så et downloadlink går til kontoejerens adresse. Klik på “Start export”, og hent så filen fra notifikationsklokken ved siden af dit kontonavn.
Lister og segmenter
Lister eksporteres som medlemskab: kør én eksport pr. liste, eller tag metadataene _listIds med i én samlet eksport og del filen op bagefter. GET /v3/contacts/lists giver dig listenavne, id’er og mappe-id’er, så du kan genskabe strukturen på den anden side.
Segmenter er noget andet, og her er det første reelle hul. GET /v3/contacts/segments returnerer kun id, segmentName, categoryName og updatedAt. De filterbetingelser, der definerer et segment, er ikke tilgængelige. Du kan eksportere medlemmerne af et segment på et givet tidspunkt, men den regel, der skabte dem, skal aflæses på skærmen og bygges op i hånden i det nye værktøj. Tag et skærmbillede af hvert segment, før du opsiger kontoen.
Kampagnestatistik
Fra en kampagnerapport kan du eksportere dataene som CSV, og rapporter for e-mail og SMS tilbyder også en PDF-version til deling eller print. Til et fuldt historisk udtræk accepterer GET /v3/emailCampaigns en statistics-parameter med værdierne globalStats, linksStats eller statsByDomain samt et par af startDate og endDate, der dækker et interval på op til to år.
Transaktionelle logfiler
To stier, med forskellige vinduer.
GET /v3/smtp/statistics/events returnerer enkelthændelser filtreret på type (delivered, opened, clicks, hardBounces, spam, unsubscribed og flere). Datointervallet må ikke overstige 90 dage, og det falder tilbage til de seneste 30 dage, hvis du hverken angiver et interval eller parameteren days.
Til bulk opretter POST /v3/webhooks/export et eksportjob over de seneste 7 dages rå hændelser, begrænset til 20 eksportjob pr. periode på 7 dage. Den returnerer et processId, kalder din notify-URL, når den er færdig, og leverer CSV med kolonner som date, email, event, message-id, reason, sending_ip, subject, tag og template_id. Store mængder kommer som et komprimeret arkiv med flere CSV-filer.
Den praktiske konsekvens: vil du have mere end 90 dages transaktionel historik, skulle du have eksporteret den efter en fast plan hele vejen. Sæt det job op nu, ikke i den uge hvor du beslutter dig for at rejse.
Hvad der ikke følger med dig
Det er den del, de fleste migreringsguider springer over.
- Strukturen i automatiserede flows. API’et kan udløse automatiseringer via hændelser, men der findes intet dokumenteret endpoint, der læser et flows forgreninger, forsinkelser og betingelser tilbage. Hvert flow bygges manuelt op igen på den nye platform.
- Definitioner af segmentfiltre. Som ovenfor: kun navnene og de aktuelle medlemmer kan hentes.
- Fuld engagementshistorik pr. kontakt. Du kan eksportere dem, der åbnede, klikkede, ikke åbnede, frameldte sig, hard bouncede eller soft bouncede en bestemt kampagne, med
customContactFilterpå eksport-endpointet. Det, du ikke kan trække, er én ryddelig fil med “hver eneste åbning og hvert eneste klik, denne kontakt nogensinde har lavet”, fordi endpoints til rå hændelser er afgrænset til 90 dage. - Skabelonernes visuelle troværdighed.
htmlContenteksporteres rent, men træk og slip-blokke, syntaks til fletfelter og pladsholdere til frameldingslinks er platformsspecifikke. Den HTML, du eksporterer, er et udgangspunkt, ikke en færdig skabelon. Afsæt tid til at teste hver skabelon igen i den nye editor. - Omdømme for leveringsevne. Afsenderomdømme lever på afsender-IP’erne og det autentificerede domæne. Ny platform, ny IP-pulje, ny opvarmning. Beholder du samme domæne og samme DKIM-opsætning, bevarer du domænesiden af omdømmet, hvilket faktisk hjælper, men det tager ikke IP-siden med.
- Identifikatorer til formularer, landingssider og sporing. Tilmeldingsformularer, landingssider og sporingsscriptet har alle platformsspecifikke id’er. Alt, der er indlejret på dit website, skal skiftes ud, og enhver analyse knyttet til de id’er går i stykker ved skiftet.
Scriptet eksport til store konti
Over cirka 100.000 kontakter bliver eksport via brugerfladen langsom og besværlig, og du vil alligevel gerne have et job, du kan gentage. Endpointet til kontakteksport er asynkront: det tager et filter, returnerer et proces-id og giver dig en CSV, når det er færdigt.
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" }'Et vellykket kald returnerer HTTP 202 og en body med et processId. exportMandatoryAttributes er som standard true og dækker EMAIL, ADDED_TIME og MODIFIED_TIME, så exportAttributes er der, hvor du navngiver dine egne felter. Det er exportSubscriptionStatus, der lægger tilmeldingsstatus for e-mail og SMS ind i filen, og at udelade den er den absolut mest almindelige måde at fremstille en eksport, der er ubrugelig til en lovlig migrering.
Vil du hellere paginere gennem poster end vente på et job, accepterer GET /v3/contacts et limit på op til 1000 med et offset plus modifiedSince og createdSince til inkrementelle udtræk. Hver kontakt kommer tilbage med emailBlacklisted, smsBlacklisted, listIds, listUnsubscribed og consentGroups, hvilket er alt, du skal bruge for at genskabe samtykkestatus.
Hold øje med rate limits, mens du scripter det. Kontakt-endpoints tillader 36.000 forespørgsler i timen og 10 i sekundet på standardplaner, det dobbelte på Professional og Enterprise, mens de fleste andre endpoints ligger på 100 forespørgsler i timen. At paginere en million kontakter med 1000 pr. side er 1000 forespørgsler, komfortabelt inden for kontaktbudgettet, men at hamre løs på kampagne- eller skabelon-endpoints i en løkke er det ikke.
Derfor skal din undertrykkelsesliste migreres først
Flyt frameldingerne, før du flytter noget som helst andet.
Det juridiske argument er enkelt. En kontakt, der frameldte sig, trak samtykket tilbage fra dit brand. Den tilbagetrækning nulstilles ikke, fordi du skiftede leverandør. Under GDPR er dokumentationen for samtykke og dets tilbagetrækning din forpligtelse som dataansvarlig, og under CAN-SPAM skal en framelding respekteres inden for ti hverdage og forbliver respekteret på ubestemt tid. At miste listen under en migrering er ikke et teknisk uheld, det er et compliance-svigt med et papirspor, der peger på dig.
Argumentet om leveringsevne er værre i praksis. Undertrykte adresser er i uforholdsmæssig grad folk, der klagede, hard bouncede eller aktivt ville ud. At maile dem fra en helt ny IP uden omdømme er den hurtigste kendte måde at få en frisk afsenderopsætning strubet eller blokeret i sin første uge. Et par tusind genbrugte spamfælder og klagere kan spolere en måneds omhyggelig opvarmning.
Så eksportér de undertrykte grupper eksplicit i stedet for at håbe, at de er underforstået. På eksport-endpointet accepterer actionForContacts værdien unsubscribed for kontakter, der er blokeret på hvilken som helst måde, og unsubscribedPerList for kontakter, der har frameldt sig én bestemt liste. Kør en separat runde for hardBounces pr. kampagne. På vej ind i en ny platform skal den fil importeres til platformens undertrykkelsesliste, ikke til en liste med modtagelige kontakter.
Brevo håndterer også den omvendte situation: platformen understøtter import af en liste med blokerede kontakter, og import-API’et tager booleanerne emailBlacklist og smsBlacklist, så en importeret fil lander som undertrykt. Bemærk den asymmetri, som Brevo med rette håndhæver: kontakter kan ikke afblokeres i bulk, fordi det ville være ulovligt at genindmelde nogen i bulk, som har bedt om at blive ladt i fred. Undertrykkelse er let at tilføje og bevidst svær at fjerne. Betragt det som den korrekte adfærd, ikke som en forhindring.
Migreringstjekliste, ud af Brevo
- Kortlæg. Tæl kontakter, lister, segmenter, aktive automatiseringer, skabeloner og integrationer. Skriv ned, hvilke integrationer der skriver ind i Brevo, for det er de rør, du skal pege et nyt sted hen.
- Eksportér. Kontakter med alle attributter plus tilmeldingsstatus, én fil pr. liste eller én samlet fil med
_listIds, undertrykte grupper som separate filer, kampagnestatistik, transaktionelle hændelser så langt tilbage som vinduet på 90 dage tillader, og HTML fra skabelonerne. - Arkivér det, der udløber. Alt tidsbegrænset (rå hændelser, logfiler) er væk, når vinduet ruller. Gem det i dit eget datalager eller objektlager nu.
- Rens og kortlæg felter. Fjern dubletter, ensret dato- og telefonformater, og skriv en eksplicit kortlægning fra kolonne til felt for den nye platform. Det er også det naturlige tidspunkt at droppe adresser, der ikke har engageret sig i et år, hvilket er billigere end at betale for at varme dødvægt op. Vores guide til at rense e-maillisten gennemgår tærsklerne.
- Indlæs undertrykkelser først. Importér frameldinger og hard bounces til den nye platforms undertrykkelsesliste, kontrollér at antallene passer med din eksport, og indlæs først derefter modtagelige kontakter.
- Varm op. Start med dit mest engagerede segment, øg volumen gradvist, og hold dagligt øje med bounce- og klagerater. Vores guide til leveringsevne for e-mail har rækkefølgen i detaljer.
- Kør parallelt. Hold Brevo i live og lad platformen sende dine kritiske transaktionelle mails, mens den nye platform tager en voksende andel af marketingafsendelserne. Skift ikke begge dele på én gang.
- Verificér. Afstem antallet af kontakter, stikprøv tyve kontakter felt for felt, bekræft at undertrykte kontakter faktisk er undertrykt ved at forsøge en testafsendelse, og sammenlign en uges afsendelsesvolumen med den gamle platform.
- Skift over, og hold en rollback klar. Skift DNS og integrations-endpoints i et tidsrum, hvor nogen holder øje. Hold Brevo-kontoen aktiv og betalt i mindst én hel faktureringsperiode efter skiftet, med de eksporterede filer gemt uden for begge platforme. Det, og ikke et løfte fra en leverandør, er din reelle rollback-plan.
Migrering ind i Brevo fra en anden platform
Den samme tjekliste kører baglæns, med tre bemærkninger, der er specifikke for Brevo.
Få en rigtig eksport fra den nuværende leverandør. De fleste platforme giver dig kontakter og deres brugerdefinerede felter som CSV. Bed specifikt om undertrykkelseslisten og bounce-listen, som ofte ligger i en separat eksport, folk glemmer at bede om. Kommer du fra en prismodel pr. kontakt, kan du sammenligne, hvad du faktisk kommer til at betale på vej ind, med vores guide til Brevos priser.
Kortlæg felterne, før du uploader. Brevo-attributter har typer (tekst, tal, dato, boolean, kategori), og en dato, der lander i en tekstattribut, kan ikke filtreres senere. Opret attributterne med de rigtige typer først, og importér derefter.
Importér via API’et for alt af en vis størrelse. POST /v3/contacts/import accepterer indlejret CSV i fileBody, et JSON-array i jsonBody, begge begrænset til omkring 10 MB, eller en fjernfil via fileUrl, plus listIds eller et newList-objekt. updateExistingContacts er som standard true og matcher på e-mail. Kør én import med emailBlacklist sat til true for din undertrykkelsesfil, og derefter en import nummer to for modtagelige kontakter. De fuldt fungerende scripts ligger i vores guide til import af CSV-kontakter til Brevo med et script.
Byg derefter det op igen, der ikke fulgte med: automatiseringer, segmenter, formularer og skabeloner. Send en testafsendelse til en håndfuld indbakkeudbydere, før du sender til nogen rigtige modtagere.
Lad ikke den næste migrering blive en klippekant
Grunden til, at en platformsmigrering føles som en klippekant, er, at platformen er blevet dit register. Ordrehistorik, modtagerstatus og kampagneresultater ligger inde hos én leverandør, og at flytte dem betyder en evakuering.
Alternativet er at holde din egen kilde til sandhed og lade afsendelsesplatformen være en destination frem for en boks. Hvis dine butiksdata, din samtykkestatus og dine engagementshændelser løbende synkroniseres ind i dine egne systemer, er det en konfigurationsændring frem for et projekt at skifte eller tilføje en kanal. Det er det arbejde, Tajo udfører mellem Brevo og en forhandlers tekniske opsætning: holde dataene i bevægelse begge veje, så platformen aldrig er den eneste kopi.
Uanset hvad er de eksportjob, der er beskrevet ovenfor, værd at køre efter en fast plan lige nu, uanset om du planlægger at rejse. Den billigste migrering er den, hvor dataene allerede ligger uden for platformen, når du træffer beslutningen.