Ekspor Data dan Migrasi Brevo: Cara Memindahkan Data Masuk atau Keluar
Ekspor kontak, statistik, dan log dari Brevo, pahami persis apa yang tidak ikut pindah, dan ikuti daftar periksa langkah demi langkah untuk migrasi dua arah.
Volume pencarian untuk frasa seperti “brevo data export migration to another platform” didorong oleh satu kekhawatiran: bahwa data yang sudah Anda kumpulkan lebih mudah dimasukkan daripada dikeluarkan. Jawaban jujurnya untuk Brevo adalah sebagian besar data keluar dengan rapi, sebagian keluar dalam bentuk yang harus Anda bangun ulang, dan sebagian kecil namun penting sama sekali tidak bisa dipindahkan.
Panduan ini membahas kedua arah. Panduan ini merinci persis apa yang bisa diekspor, apa yang tidak, panggilan API untuk akun yang terlalu besar bagi antarmuka, serta daftar periksa migrasi yang memperlakukan daftar suppression dan reputasi pengiriman sebagai perhatian utama, bukan sekadar pelengkap.
Apa yang benar-benar bisa Anda ekspor dari Brevo
| Data | Cara mengeluarkannya | Format |
|---|---|---|
| Kontak dan atribut | Ekspor dari halaman Contacts, atau POST /v3/contacts/export | CSV |
| Keanggotaan daftar | Ekspor per daftar, atau field metadata _listIds | CSV |
| Status langganan | exportSubscriptionStatus pada job ekspor | CSV |
| Statistik kampanye | Ekspor laporan kampanye, atau GET /v3/emailCampaigns | CSV, PDF, JSON |
| Log event transaksional | GET /v3/smtp/statistics/events atau job ekspor massal | JSON, CSV |
| Template | GET /v3/smtp/templates mengembalikan htmlContent | JSON |
| Perusahaan dan deal | Ekspor dari halaman CRM terkait | CSV |
Kontak dan atribut
Jalur di antarmuka adalah CRM, lalu Contacts. Untuk mengekspor seluruh basis data, pastikan tidak ada daftar atau segmen yang dimuat dan tidak ada filter yang diterapkan. Untuk mengekspor satu daftar atau segmen, klik “Load a list or segment” dan pilih lebih dulu.
Setelah itu Anda memilih atribut standar dan kustom mana yang disertakan. EMAIL, tanggal perubahan terakhir, dan tanggal pembuatan terpilih secara default, dan sisanya Anda tambahkan sendiri, dan langkah inilah yang paling sering dilewatkan orang. Pilih pemisah kolom CSV Anda, titik koma atau koma, dan bila perlu aktifkan “Send export by email” agar tautan unduhan dikirim ke alamat pemilik akun. Klik “Start export”, lalu unduh berkasnya dari lonceng notifikasi di sebelah nama akun Anda.
Daftar dan segmen
Daftar diekspor sebagai keanggotaan: jalankan satu ekspor per daftar, atau sertakan metadata _listIds dalam satu ekspor penuh lalu pecah berkasnya setelah itu. GET /v3/contacts/lists memberikan nama daftar, id, dan id folder sehingga Anda bisa membuat ulang strukturnya di sisi lain.
Segmen berbeda, dan di sinilah celah nyata pertama muncul. GET /v3/contacts/segments hanya mengembalikan id, segmentName, categoryName, dan updatedAt. Kondisi filter yang mendefinisikan sebuah segmen tidak diekspos. Anda bisa mengekspor anggota sebuah segmen pada satu titik waktu, tetapi aturan yang menghasilkan anggota tersebut harus dibaca dari layar dan dibangun ulang secara manual di alat baru. Ambil tangkapan layar setiap segmen sebelum Anda membatalkan akun.
Statistik kampanye
Dari laporan kampanye Anda dapat mengekspor datanya sebagai CSV, dan laporan email serta SMS juga menawarkan versi PDF untuk dibagikan atau dicetak. Untuk penarikan historis penuh, GET /v3/emailCampaigns menerima parameter statistics dengan nilai globalStats, linksStats, atau statsByDomain, serta pasangan startDate dan endDate yang mencakup rentang hingga dua tahun.
Log transaksional
Dua jalur, dengan jendela waktu yang berbeda.
GET /v3/smtp/statistics/events mengembalikan event individual yang difilter berdasarkan tipe (delivered, opened, clicks, hardBounces, spam, unsubscribed, dan lainnya). Rentang tanggalnya tidak boleh melebihi 90 hari, dan secara default mencakup 30 hari terakhir jika Anda tidak memberikan rentang maupun parameter days.
Untuk skala massal, POST /v3/webhooks/export membuat job ekspor atas 7 hari terakhir event mentah, dibatasi 20 job ekspor per periode 7 hari. Job ini mengembalikan processId, memanggil notify URL Anda saat selesai, dan menghasilkan CSV dengan kolom antara lain date, email, event, message-id, reason, sending_ip, subject, tag, dan template_id. Volume besar datang sebagai arsip terkompresi berisi beberapa berkas CSV.
Konsekuensi praktisnya: jika Anda menginginkan lebih dari 90 hari riwayat transaksional, Anda seharusnya sudah mengekspornya secara terjadwal sejak awal. Siapkan job itu sekarang, bukan pada minggu Anda memutuskan pergi.
Apa yang tidak ikut bersama Anda
Bagian inilah yang paling sering dilewatkan panduan migrasi.
- Struktur alur kerja otomatisasi. API bisa memicu otomatisasi melalui event, tetapi tidak ada endpoint terdokumentasi yang membaca kembali cabang, jeda, dan kondisi sebuah alur kerja. Setiap alur kerja dibangun ulang secara manual di platform baru.
- Definisi filter segmen. Seperti di atas, hanya nama dan anggota saat ini yang bisa diambil.
- Riwayat engagement lengkap per kontak. Anda dapat mengekspor pembuka, pengeklik, non-pembuka, pemberhenti langganan, hard bounce, atau soft bounce dari satu kampanye tertentu menggunakan
customContactFilterpada endpoint ekspor. Yang tidak bisa Anda tarik adalah satu berkas rapi berisi “setiap pembukaan dan klik yang pernah dilakukan kontak ini”, karena endpoint event mentah dibatasi 90 hari. - Kesetiaan rendering template.
htmlContentterekspor dengan bersih, tetapi blok drag and drop, sintaks merge tag, dan placeholder tautan berhenti berlangganan bersifat khas platform. HTML yang Anda ekspor adalah titik awal, bukan template jadi. Sediakan waktu untuk menguji ulang setiap template di editor baru. - Reputasi deliverability. Reputasi pengirim hidup pada IP pengirim dan domain yang terautentikasi. Platform baru, kumpulan IP baru, warm up baru. Mempertahankan domain dan konfigurasi DKIM yang sama menjaga sisi domain dari reputasi, dan itu benar-benar membantu, tetapi tidak membawa sisi IP.
- Identifier formulir, landing page, dan pelacakan. Formulir pendaftaran, landing page, dan skrip pelacakan semuanya punya id khas platform. Apa pun yang tertanam di situs Anda harus diganti, dan analitik apa pun yang terkait id tersebut akan rusak saat pergantian.
Ekspor terskrip untuk akun besar
Di atas kira-kira 100.000 kontak, ekspor lewat antarmuka menjadi lambat dan merepotkan, dan Anda memang menginginkan job yang bisa diulang. Endpoint ekspor kontak bersifat asinkron: menerima sebuah filter, mengembalikan process id, dan menyerahkan CSV kepada Anda saat selesai.
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" }'Panggilan yang berhasil mengembalikan HTTP 202 dan body berisi processId. exportMandatoryAttributes bernilai true secara default dan mencakup EMAIL, ADDED_TIME, serta MODIFIED_TIME, jadi exportAttributes adalah tempat Anda menyebutkan field kustom Anda. Mengatur exportSubscriptionStatus adalah yang memasukkan status persetujuan pemasaran untuk email dan SMS ke dalam berkas, dan menghilangkannya adalah cara paling umum orang menghasilkan ekspor yang tidak berguna untuk migrasi yang patuh aturan.
Jika Anda lebih suka menelusuri record daripada menunggu sebuah job, GET /v3/contacts menerima limit hingga 1.000 dengan offset, ditambah modifiedSince dan createdSince untuk penarikan inkremental. Setiap kontak kembali dengan emailBlacklisted, smsBlacklisted, listIds, listUnsubscribed, dan consentGroups, yang merupakan semua yang Anda butuhkan untuk merekonstruksi status persetujuan.
Perhatikan rate limit saat Anda membuat skrip ini. Endpoint kontak mengizinkan 36.000 permintaan per jam dan 10 per detik pada paket standar, dua kali lipat pada tingkat Professional dan Enterprise, sementara sebagian besar endpoint lain berada di 100 permintaan per jam. Menelusuri satu juta kontak pada 1.000 per halaman berarti 1.000 permintaan, masih nyaman di dalam anggaran kontak, tetapi menggempur endpoint kampanye atau template dalam perulangan jelas tidak.
Mengapa daftar suppression Anda harus dimigrasikan lebih dulu
Pindahkan data opt out sebelum memindahkan apa pun yang lain.
Argumen hukumnya sederhana. Kontak yang berhenti berlangganan menarik persetujuannya dari merek Anda. Penarikan itu tidak menjadi batal karena Anda berganti vendor. Di bawah GDPR, catatan persetujuan dan penarikannya adalah kewajiban Anda sebagai pengendali data, dan di bawah CAN-SPAM sebuah opt out harus dihormati dalam sepuluh hari kerja dan tetap dihormati selamanya. Kehilangan daftar itu dalam migrasi bukan kecelakaan teknis, melainkan kegagalan kepatuhan dengan jejak dokumen yang menunjuk kepada Anda.
Argumen deliverability-nya lebih buruk dalam praktik. Alamat yang ditekan secara tidak proporsional berisi orang-orang yang mengeluh, mengalami hard bounce, atau memang ingin keluar. Mengirimi mereka dari IP yang benar-benar baru tanpa reputasi adalah cara tercepat yang diketahui untuk membuat setup pengiriman baru dibatasi atau diblokir pada minggu pertamanya. Beberapa ribu spam trap daur ulang dan pengeluh dapat merusak sebulan warm up yang dilakukan dengan hati-hati.
Jadi ekspor kelompok yang ditekan secara eksplisit, jangan berharap mereka tersirat dengan sendirinya. Pada endpoint ekspor, actionForContacts menerima unsubscribed untuk kontak yang di-blocklist dengan cara apa pun dan unsubscribedPerList untuk kontak yang keluar dari satu daftar tertentu. Lakukan lintasan terpisah untuk hardBounces per kampanye. Saat masuk ke platform baru, impor berkas itu ke daftar suppression platform tersebut, bukan ke daftar yang siap dikirimi email.
Brevo juga menangani kasus sebaliknya: Brevo mendukung impor daftar kontak yang di-blocklist, dan API impor menerima boolean emailBlacklist dan smsBlacklist sehingga berkas yang diimpor langsung berstatus ditekan. Perhatikan asimetri yang memang tepat ditegakkan Brevo: kontak tidak bisa dikeluarkan dari blocklist secara massal, karena mengembalikan langganan secara massal untuk orang yang meminta tidak diganggu jelas melanggar hukum. Penekanan mudah ditambahkan dan sengaja dibuat sulit dihapus. Anggap itu perilaku yang benar, bukan penghalang.
Daftar periksa migrasi, keluar dari Brevo
- Audit. Hitung kontak, daftar, segmen, otomatisasi aktif, template, dan integrasi. Catat integrasi mana yang menulis ke Brevo, karena itulah saluran yang harus Anda arahkan ulang.
- Ekspor. Kontak dengan semua atribut ditambah status langganan, satu berkas per daftar atau satu berkas tunggal yang membawa
_listIds, kelompok suppression sebagai berkas terpisah, statistik kampanye, event transaksional sejauh yang diizinkan jendela 90 hari, dan HTML template. - Arsipkan yang akan kedaluwarsa. Apa pun yang dibatasi waktu (event mentah, log) akan hilang begitu jendelanya bergulir. Simpan sekarang di gudang data atau penyimpanan objek Anda sendiri.
- Bersihkan dan petakan. Hapus duplikat, normalkan format tanggal dan nomor telepon, dan tulis pemetaan kolom ke field yang eksplisit untuk platform baru. Ini juga momen alami untuk membuang alamat yang tidak berinteraksi selama setahun, yang lebih murah daripada membayar untuk memanaskan beban mati. Panduan pembersihan daftar email kami membahas ambang batasnya.
- Muat suppression lebih dulu. Impor data opt out dan hard bounce ke daftar suppression platform baru, verifikasi jumlahnya cocok dengan ekspor Anda, dan baru setelah itu muat kontak yang siap dikirimi email.
- Warm up. Mulai dari segmen paling aktif Anda, tingkatkan volume bertahap, dan pantau angka bounce serta keluhan setiap hari. Panduan deliverability email kami memuat urutannya secara rinci.
- Jalankan paralel. Biarkan Brevo tetap aktif dan mengirim email transaksional kritis Anda sementara platform baru menangani porsi pengiriman pemasaran yang terus bertambah. Jangan mengalihkan keduanya sekaligus.
- Verifikasi. Rekonsiliasi jumlah kontak, periksa dua puluh kontak field demi field, konfirmasi kontak yang ditekan memang benar-benar ditekan dengan mencoba pengiriman uji, dan bandingkan volume pengiriman selama seminggu dengan platform lama.
- Berpindah dan siapkan rencana mundur. Ubah DNS dan endpoint integrasi pada jendela waktu ketika ada orang yang mengawasi. Pertahankan akun Brevo tetap aktif dan berbayar setidaknya satu siklus penagihan penuh setelah perpindahan, dengan berkas hasil ekspor disimpan di luar kedua platform. Itulah rencana mundur Anda yang sesungguhnya, bukan janji vendor.
Migrasi masuk ke Brevo dari platform lain
Daftar periksa yang sama berjalan terbalik, dengan tiga catatan khusus Brevo.
Dapatkan ekspor sungguhan dari platform lama. Sebagian besar platform akan memberi Anda kontak dan field kustomnya sebagai CSV. Minta secara khusus daftar suppression dan daftar bounce, yang sering berada di ekspor terpisah dan lupa diminta orang. Jika Anda datang dari model harga per kontak, bandingkan berapa yang benar-benar akan Anda bayar saat masuk dengan panduan harga Brevo kami.
Petakan field sebelum mengunggah. Atribut Brevo memiliki tipe (teks, angka, tanggal, boolean, kategori), dan tanggal yang mendarat di atribut teks tidak akan bisa difilter nanti. Buat atributnya dengan tipe yang benar lebih dulu, baru impor.
Impor melalui API untuk apa pun yang berukuran besar. POST /v3/contacts/import menerima CSV inline di fileBody, array JSON di jsonBody, keduanya dibatasi sekitar 10 MB, atau berkas jarak jauh melalui fileUrl, ditambah listIds atau objek newList. updateExistingContacts bernilai true secara default dan mencocokkan berdasarkan email. Jalankan satu impor dengan emailBlacklist bernilai true untuk berkas suppression Anda, lalu impor kedua untuk kontak yang siap dikirimi email. Skrip lengkap yang berfungsi ada di panduan kami tentang mengimpor kontak CSV ke Brevo dengan skrip.
Setelah itu bangun ulang yang tidak ikut pindah: otomatisasi, segmen, formulir, dan template. Kirim uji seed ke beberapa penyedia inbox sebelum Anda mengirim ke orang sungguhan.
Jangan biarkan migrasi berikutnya jadi jurang
Alasan migrasi platform terasa seperti jurang adalah karena platform tersebut sudah menjadi sistem pencatatan. Riwayat pesanan, status pelanggan email, dan hasil kampanye hidup di dalam satu vendor, dan memindahkannya berarti evakuasi.
Alternatifnya adalah memiliki sumber kebenaran Anda sendiri dan membiarkan platform pengirim menjadi tujuan, bukan brankas. Jika data toko, status persetujuan, dan event engagement Anda tersinkron terus-menerus ke sistem Anda sendiri, berpindah atau menambah kanal menjadi perubahan konfigurasi, bukan sebuah proyek. Itulah pekerjaan yang dilakukan Tajo di antara Brevo dan tumpukan teknologi merchant: menjaga data mengalir dua arah sehingga platform tidak pernah menjadi satu-satunya salinan.
Bagaimanapun juga, job ekspor yang dijelaskan di atas layak dijalankan secara terjadwal mulai sekarang, terlepas dari apakah Anda berencana pergi atau tidak. Migrasi termurah adalah migrasi ketika datanya sudah berada di luar platform saat Anda memutuskan.