Export și migrare de date Brevo: cum îți muți datele în interior sau în exterior
Exportă contacte, statistici și jurnale din Brevo, află exact ce nu se transferă și urmează o listă de verificare pas cu pas pentru migrarea în oricare direcție.
Volumul de căutări pentru expresii precum „brevo data export migration to another platform” este împins de o singură teamă: că datele pe care le-ai acumulat sunt mai ușor de băgat înăuntru decât de scos afară. Răspunsul cinstit pentru Brevo este că cea mai mare parte iese curat, o parte iese într-o formă pe care trebuie să o reconstruiești, iar o parte mică, dar importantă, nu poate să se mute deloc.
Ghidul acoperă ambele direcții. Enumeră exact ce se exportă, ce nu, apelurile API pentru conturile prea mari pentru interfață și o listă de verificare a migrării care tratează listele de suprimare și reputația de trimitere ca preocupări de prim rang, nu ca gânduri de ultim moment.
Ce poți exporta cu adevărat din Brevo
| Date | Cum ies | Format |
|---|---|---|
| Contacte și atribute | Exportul din pagina Contacts sau POST /v3/contacts/export | CSV |
| Apartenența la liste | Export per listă sau câmpul de metadate _listIds | CSV |
| Status abonare | exportSubscriptionStatus pe jobul de export | CSV |
| Statistici de campanie | Exportul raportului de campanie sau GET /v3/emailCampaigns | CSV, PDF, JSON |
| Jurnale de evenimente tranzacționale | GET /v3/smtp/statistics/events sau un job de export în masă | JSON, CSV |
| Șabloane | GET /v3/smtp/templates returnează htmlContent | JSON |
| Companii și tranzacții | Export din pagina CRM relevantă | CSV |
Contacte și atribute
Calea din interfață este CRM, apoi Contacts. Ca să exporți toată baza de date, asigură-te că nu este încărcată nicio listă sau niciun segment și că nu este aplicat niciun filtru. Ca să exporți o singură listă sau un segment, apasă pe „Load a list or segment” și alege-l mai întâi.
Apoi selectezi ce atribute standard și personalizate să incluzi. EMAIL, data ultimei modificări și data creării sunt selectate implicit, iar restul le adaugi tu, ceea ce este pasul pe care oamenii îl greșesc cel mai des. Alege separatorul de câmpuri CSV, punct și virgulă sau virgulă, și eventual activează „Send export by email”, ca un link de descărcare să ajungă la adresa proprietarului contului. Apasă „Start export”, apoi descarcă fișierul din clopoțelul de notificări de lângă numele contului tău.
Liste și segmente
Listele se exportă ca apartenență: rulează un export pentru fiecare listă sau include metadatele _listIds într-un singur export complet și împarte fișierul după aceea. GET /v3/contacts/lists îți dă numele listelor, id-urile și id-urile de folder, ca să poți recrea structura de cealaltă parte.
Segmentele sunt altceva, și aici apare primul gol real. GET /v3/contacts/segments returnează doar id, segmentName, categoryName și updatedAt. Condițiile de filtrare care definesc un segment nu sunt expuse. Poți exporta membrii unui segment la un moment dat, dar regula care i-a produs trebuie citită de pe ecran și reconstruită manual în noul instrument. Fă o captură de ecran la fiecare segment înainte să închizi contul.
Statistici de campanie
Dintr-un raport de campanie poți exporta datele ca CSV, iar rapoartele de e-mail și SMS oferă și o versiune PDF, pentru distribuire sau tipărire. Pentru o extragere istorică completă, GET /v3/emailCampaigns acceptă un parametru statistics cu valorile globalStats, linksStats sau statsByDomain, plus o pereche startDate și endDate care acoperă un interval de până la doi ani.
Jurnale tranzacționale
Două căi, cu ferestre diferite.
GET /v3/smtp/statistics/events returnează evenimente individuale, filtrate după tip (delivered, opened, clicks, hardBounces, spam, unsubscribed și altele). Intervalul de date nu poate depăși 90 de zile și, dacă nu transmiți nici interval, nici parametrul days, revine implicit la ultimele 30 de zile.
Pentru volum, POST /v3/webhooks/export creează un job de export pe ultimele 7 zile de evenimente brute, plafonat la 20 de joburi de export per perioadă de 7 zile. Returnează un processId, apelează URL-ul tău de notificare când termină și livrează CSV cu coloane precum date, email, event, message-id, reason, sending_ip, subject, tag și template_id. Volumele mari sosesc ca arhivă comprimată cu mai multe fișiere CSV.
Consecința practică: dacă vrei mai mult de 90 de zile de istoric tranzacțional, trebuia să îl exporți periodic tot timpul. Configurează acel job acum, nu în săptămâna în care decizi să pleci.
Ce nu vine cu tine
Aceasta este partea pe care majoritatea ghidurilor de migrare o sar.
- Structurile fluxurilor de automatizare. API-ul poate declanșa automatizări prin evenimente, dar nu există niciun endpoint documentat care să citească înapoi ramurile, întârzierile și condițiile unui flux. Fiecare flux se reconstruiește manual în noua platformă.
- Definițiile filtrelor de segment. Ca mai sus, doar numele și membrii curenți pot fi extrași.
- Istoricul complet de interacțiune per contact. Poți exporta cei care au deschis, au dat clic, nu au deschis, s-au dezabonat, au avut hard bounce sau soft bounce la o campanie anume, folosind
customContactFilterpe endpointul de export. Ce nu poți extrage este un singur fișier ordonat cu „fiecare deschidere și fiecare clic pe care le-a făcut vreodată acest contact”, pentru că endpointurile de evenimente brute sunt limitate la 90 de zile. - Fidelitatea randării șabloanelor.
htmlContentse exportă curat, dar blocurile drag and drop, sintaxa etichetelor de îmbinare și substituenții pentru linkul de dezabonare sunt specifice platformei. Codul HTML pe care îl exporți este un punct de plecare, nu un șablon finit. Alocă timp ca să retestezi fiecare șablon în noul editor. - Reputația de livrabilitate. Reputația de expeditor stă pe IP-urile de trimitere și pe domeniul autentificat. Platformă nouă, pool de IP-uri nou, încălzire nouă. Păstrarea aceluiași domeniu și a aceleiași configurări DKIM conservă partea de domeniu a reputației, ceea ce ajută cu adevărat, dar nu duce mai departe partea de IP.
- Identificatorii de formulare, pagini de destinație și urmărire. Formularele de înscriere, paginile de destinație și scriptul de urmărire au toate id-uri specifice platformei. Orice este încorporat pe site-ul tău trebuie schimbat, iar orice analiză legată de acele id-uri se rupe la trecere.
Export scriptat pentru conturi mari
Peste aproximativ 100.000 de contacte, exportul din interfață devine lent și incomod, iar oricum îți dorești un job repetabil. Endpointul de export al contactelor este asincron: acceptă un filtru, returnează un id de proces și îți dă un CSV când termină.
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" }'Un apel reușit returnează HTTP 202 și un corp care conține un processId. exportMandatoryAttributes are implicit valoarea true și acoperă EMAIL, ADDED_TIME și MODIFIED_TIME, așa că exportAttributes este locul unde îți numești câmpurile personalizate. Setarea exportSubscriptionStatus este cea care pune în fișier starea de consimțământ pentru marketing prin e-mail și SMS, iar omiterea ei este cel mai frecvent mod în care oamenii produc un export inutil pentru o migrare conformă.
Dacă preferi să parcurgi înregistrările în loc să aștepți un job, GET /v3/contacts acceptă limit până la 1000 cu un offset, plus modifiedSince și createdSince pentru extrageri incrementale. Fiecare contact revine cu emailBlacklisted, smsBlacklisted, listIds, listUnsubscribed și consentGroups, adică tot ce îți trebuie ca să reconstruiești starea consimțământului.
Urmărește limitele de rată cât timp scriptezi asta. Endpointurile de contacte permit 36.000 de cereri pe oră și 10 pe secundă pe planurile standard, dublu pe nivelurile Professional și Enterprise, în timp ce majoritatea celorlalte endpointuri stau la 100 de cereri pe oră. Parcurgerea unui milion de contacte, câte 1000 pe pagină, înseamnă 1000 de cereri, confortabil în bugetul de contacte, dar bătutul în buclă pe endpointurile de campanii sau de șabloane nu este.
De ce lista ta de suprimare trebuie migrată prima
Mută refuzurile înainte de a muta orice altceva.
Argumentul legal este simplu. Un contact care s-a dezabonat și-a retras consimțământul față de brandul tău. Retragerea aceea nu se resetează pentru că ai schimbat furnizorul. Sub GDPR, evidența consimțământului și a retragerii lui este obligația ta ca operator, iar sub CAN-SPAM un refuz trebuie onorat în zece zile lucrătoare și rămâne onorat pe termen nelimitat. Pierderea listei într-o migrare nu este un accident tehnic, este o abatere de conformitate cu urme scrise care arată spre tine.
Argumentul de livrabilitate este și mai dur în practică. Adresele suprimate sunt disproporționat de des ale oamenilor care s-au plâns, au avut hard bounce sau chiar au vrut să scape. Să le trimiți e-mailuri de pe un IP nou-nouț, fără reputație, este cea mai rapidă metodă cunoscută de a-ți vedea configurația nouă de trimitere limitată sau blocată în prima săptămână. Câteva mii de capcane de spam reciclate și de reclamanți pot anula o lună de încălzire atentă.
Așa că exportă explicit cohortele suprimate, în loc să speri că sunt subînțelese. Pe endpointul de export, actionForContacts acceptă unsubscribed pentru contactele blocate prin orice mijloc și unsubscribedPerList pentru contactele care au refuzat o listă anume. Fă o trecere separată pentru hardBounces per campanie. La intrarea într-o platformă nouă, importă acel fișier în lista ei de suprimare, nu într-o listă către care se trimite.
Brevo gestionează și cazul invers: acceptă importul unei liste de contacte blocate, iar API-ul de import primește valorile booleene emailBlacklist și smsBlacklist, astfel încât un fișier importat ajunge ca suprimat. Observă asimetria pe care Brevo are dreptate să o impună: contactele nu pot fi deblocate în masă, pentru că reabonarea în masă a cuiva care a cerut să fie lăsat în pace ar fi ilegală. Suprimarea este ușor de adăugat și deliberat greu de eliminat. Tratează asta ca pe comportamentul corect, nu ca pe un obstacol.
Listă de verificare pentru migrarea în afara Brevo
- Audit. Numără contactele, listele, segmentele, automatizările active, șabloanele și integrările. Notează care integrări scriu în Brevo, pentru că acelea sunt conductele pe care va trebui să le redirecționezi.
- Export. Contactele cu toate atributele plus statusul abonării, un fișier per listă sau un singur fișier care poartă
_listIds, cohortele de suprimare ca fișiere separate, statisticile de campanie, evenimentele tranzacționale cât de departe permite fereastra de 90 de zile și codul HTML al șabloanelor. - Arhivează ce expiră. Orice este limitat în timp (evenimente brute, jurnale) dispare odată ce fereastra se rotește. Stochează-l acum în propriul depozit de date sau în propriul spațiu de obiecte.
- Curăță și mapează. Elimină duplicatele, normalizează formatele de dată și de telefon și scrie o mapare explicită între coloane și câmpuri pentru noua platformă. Este și momentul natural să renunți la adresele care nu au interacționat de un an, ceea ce este mai ieftin decât să plătești încălzirea unei greutăți moarte. Ghidul nostru de curățare a listelor de e-mail acoperă pragurile.
- Încarcă prima dată suprimările. Importă refuzurile și hard bounce-urile în lista de suprimare a noii platforme, verifică dacă numerele se potrivesc cu exportul tău și abia apoi încarcă contactele către care se trimite.
- Încălzește. Începe cu segmentul cel mai angajat, crește volumul treptat și urmărește zilnic ratele de bounce și de reclamații. Ghidul nostru de livrabilitate a e-mailurilor are secvența în detaliu.
- Rulează în paralel. Ține Brevo activ și trimițând corespondența ta tranzacțională critică în timp ce noua platformă preia o parte tot mai mare din trimiterile de marketing. Nu le comuta pe amândouă deodată.
- Verifică. Reconciliază numărul de contacte, verifică punctual douăzeci de contacte câmp cu câmp, confirmă prin încercarea unei trimiteri de test că cele suprimate chiar sunt suprimate și compară o săptămână de volum trimis cu vechea platformă.
- Fă trecerea și păstrează o cale de întoarcere. Schimbă DNS-ul și endpointurile integrărilor într-o fereastră în care cineva stă cu ochii pe ele. Ține contul Brevo activ și plătit cel puțin un ciclu complet de facturare după trecere, cu fișierele exportate stocate în afara ambelor platforme. Acesta, și nu promisiunea unui furnizor, este planul tău real de revenire.
Migrarea în Brevo dinspre altă platformă
Aceeași listă de verificare rulează invers, cu trei observații specifice pentru Brevo.
Obține un export real de la furnizorul actual. Majoritatea platformelor îți dau contactele și câmpurile lor personalizate ca CSV. Cere explicit lista de suprimare și lista de bounce, care sunt adesea într-un export separat pe care oamenii uită să îl solicite. Dacă vii dintr-un model de preț per contact, compară cât vei plăti de fapt la intrare cu ghidul nostru de prețuri Brevo.
Mapează câmpurile înainte să încarci. Atributele Brevo au tipuri (text, număr, dată, boolean, categorie), iar o dată care ajunge într-un atribut de tip text nu va putea fi filtrată ulterior. Creează mai întâi atributele cu tipurile corecte, apoi importă.
Importă prin API orice are dimensiune reală. POST /v3/contacts/import acceptă CSV inline în fileBody, un tablou JSON în jsonBody, ambele plafonate în jur de 10 MB, sau un fișier la distanță prin fileUrl, plus listIds sau un obiect newList. updateExistingContacts are implicit valoarea true și potrivește după e-mail. Rulează un import cu emailBlacklist setat pe true pentru fișierul de suprimare, apoi un al doilea import pentru contactele către care se trimite. Scripturile complete și funcționale sunt în ghidul nostru despre importul contactelor CSV în Brevo cu un script.
Apoi reconstruiește ce nu s-a transferat: automatizări, segmente, formulare și șabloane. Trimite un test către câțiva furnizori de e-mail înainte să trimiți către cineva real.
Nu lăsa următoarea migrare să fie o prăpastie
Motivul pentru care migrarea unei platforme pare o prăpastie este că platforma a devenit sistemul de evidență. Istoricul comenzilor, starea abonaților și rezultatele campaniilor trăiesc în interiorul unui singur furnizor, iar mutarea lor înseamnă o evacuare.
Alternativa este să îți păstrezi propria sursă de adevăr și să lași platforma de trimitere să fie o destinație, nu un seif. Dacă datele magazinului tău, starea consimțământului și evenimentele de interacțiune se sincronizează continuu către propriile tale sisteme, schimbarea sau adăugarea unui canal devine o modificare de configurare, nu un proiect. Asta face Tajo între Brevo și stiva unui comerciant: ține datele curgând în ambele sensuri, ca platforma să nu fie niciodată singura copie.
Oricum ar fi, joburile de export descrise mai sus merită rulate periodic chiar de acum, indiferent dacă plănuiești sau nu să pleci. Cea mai ieftină migrare este aceea în care datele sunt deja în afara platformei în momentul în care iei decizia.