تصدير البيانات والترحيل في Brevo: كيف تنقل بياناتك إليه أو منه
صدّر جهات الاتصال والإحصاءات والسجلات من Brevo، واعرف بالضبط ما الذي لا ينتقل، واتبع قائمة تحقق خطوة بخطوة للترحيل في الاتجاهين.
حجم البحث عن عبارات مثل “brevo data export migration to another platform” يقوده قلق واحد: أن البيانات التي تراكمت لديك أسهل في الإدخال منها في الإخراج. الإجابة الصادقة بخصوص Brevo هي أن معظمها يخرج بنظافة، وبعضها يخرج بشكل يحتاج إلى إعادة بناء، وجزءًا صغيرًا لكنه مهم لا يمكن نقله إطلاقًا.
يغطي هذا الدليل الاتجاهين. وهو يسرد بالضبط ما الذي يُصدَّر وما الذي لا يُصدَّر، واستدعاءات الواجهة البرمجية للحسابات الأكبر من أن تتعامل معها الواجهة الرسومية، وقائمة تحقق للترحيل تعامل قوائم الحجب وسمعة الإرسال كأولويات من الدرجة الأولى لا كأفكار لاحقة.
ما الذي يمكنك تصديره فعلًا من Brevo
| البيانات | كيف تخرج | الصيغة |
|---|---|---|
| جهات الاتصال والسمات | تصدير من صفحة Contacts، أو POST /v3/contacts/export | CSV |
| عضوية القوائم | تصدير لكل قائمة، أو حقل البيانات الوصفية _listIds | CSV |
| حالة الاشتراك | exportSubscriptionStatus في مهمة التصدير | CSV |
| إحصاءات الحملات | تصدير تقرير الحملة، أو GET /v3/emailCampaigns | CSV، PDF، JSON |
| سجلات الأحداث المعاملاتية | GET /v3/smtp/statistics/events أو مهمة تصدير جماعي | JSON، CSV |
| القوالب | GET /v3/smtp/templates يعيد htmlContent | JSON |
| الشركات والصفقات | تصدير من صفحة CRM المعنية | CSV |
جهات الاتصال والسمات
المسار في الواجهة هو CRM ثم Contacts. لتصدير قاعدة البيانات كاملة، تأكد من عدم تحميل أي قائمة أو شريحة وعدم تطبيق أي مرشّحات. ولتصدير قائمة أو شريحة واحدة، اضغط “Load a list or segment” واخترها أولًا.
بعد ذلك تختار السمات القياسية والمخصّصة التي تريد تضمينها. الحقول EMAIL وتاريخ آخر تعديل وتاريخ الإنشاء محددة افتراضيًا، وتضيف البقية بنفسك، وهذه هي الخطوة التي يخطئ فيها الناس أكثر من غيرها. اختر فاصل حقول CSV، فاصلة منقوطة أو فاصلة، ويمكنك اختياريًا تفعيل “Send export by email” ليصل رابط التنزيل إلى عنوان مالك الحساب. اضغط “Start export”، ثم نزّل الملف من جرس الإشعارات بجانب اسم حسابك.
القوائم والشرائح
تُصدَّر القوائم كعضوية: نفّذ تصديرًا واحدًا لكل قائمة، أو ضمّن البيانات الوصفية _listIds في تصدير كامل واحد ثم قسّم الملف لاحقًا. يعطيك GET /v3/contacts/lists أسماء القوائم ومعرّفاتها ومعرّفات مجلداتها كي تتمكن من إعادة بناء الهيكل على الطرف الآخر.
الشرائح مسألة مختلفة، وهذه أول فجوة حقيقية. يعيد GET /v3/contacts/segments الحقول id و segmentName و categoryName و updatedAt فقط. أما شروط المرشّح التي تعرّف الشريحة فليست متاحة. يمكنك تصدير أعضاء الشريحة في لحظة زمنية معينة، لكن القاعدة التي أنتجتهم يجب أن تُقرأ من الشاشة وتُعاد بناؤها يدويًا في الأداة الجديدة. التقط صورة لكل شريحة قبل إلغاء الحساب.
إحصاءات الحملات
من تقرير الحملة يمكنك تصدير البيانات بصيغة CSV، كما تتيح تقارير البريد الإلكتروني والرسائل النصية نسخة PDF للمشاركة أو الطباعة. وللسحب التاريخي الكامل، يقبل GET /v3/emailCampaigns معاملًا اسمه statistics بقيم globalStats أو linksStats أو statsByDomain، وزوجًا من startDate و endDate يغطي مدى يصل إلى سنتين.
السجلات المعاملاتية
مساران، بنافذتين مختلفتين.
يعيد GET /v3/smtp/statistics/events أحداثًا فردية مرشّحة حسب النوع (delivered و opened و clicks و hardBounces و spam و unsubscribed وغيرها). لا يمكن أن يتجاوز المدى الزمني 90 يومًا، ويعود افتراضيًا إلى آخر 30 يومًا إن لم تمرّر مدى ولا المعامل days.
للتصدير الجماعي، ينشئ POST /v3/webhooks/export مهمة تصدير تغطي آخر 7 أيام من الأحداث الخام، بحد أقصى 20 مهمة تصدير لكل فترة 7 أيام. وهو يعيد processId، ويستدعي عنوان الإشعار عند الانتهاء، ويسلّم CSV بأعمدة تشمل date و email و event و message-id و reason و sending_ip و subject و tag و template_id. الأحجام الكبيرة تصل كأرشيف مضغوط يضم عدة ملفات CSV.
النتيجة العملية: إذا أردت أكثر من 90 يومًا من السجل المعاملاتي، فكان عليك تصديره وفق جدول منذ البداية. أنشئ تلك المهمة الآن، لا في الأسبوع الذي تقرر فيه المغادرة.
ما الذي لا ينتقل معك
هذا هو الجزء الذي تتخطاه معظم أدلة الترحيل.
- هياكل عمليات سير العمل الآلية. يمكن للواجهة البرمجية إطلاق الأتمتة عبر الأحداث، لكن لا توجد نقطة نهاية موثَّقة تقرأ فروع سير العمل وتأخيراته وشروطه. كل سير عمل يُعاد بناؤه يدويًا في المنصّة الجديدة.
- تعريفات مرشّحات الشرائح. كما سبق، الأسماء والأعضاء الحاليون فقط هم ما يمكن استرجاعه.
- سجل التفاعل الكامل لكل جهة اتصال. يمكنك تصدير من فتحوا أو نقروا أو لم يفتحوا أو ألغوا الاشتراك أو ارتدّت رسائلهم ارتدادًا صلبًا أو مرنًا في حملة محددة باستخدام
customContactFilterفي نقطة نهاية التصدير. ما لا يمكنك سحبه هو ملف واحد مرتب يضم “كل فتح ونقر قامت به هذه الجهة على الإطلاق”، لأن نقاط نهاية الأحداث الخام محدودة بـ 90 يومًا. - دقة عرض القوالب. يُصدَّر
htmlContentبنظافة، لكن كتل السحب والإفلات وصيغة وسوم الدمج ونائبات روابط إلغاء الاشتراك خاصة بكل منصّة. ملف HTML الذي تصدّره نقطة بداية لا قالب جاهز. خصّص وقتًا لإعادة اختبار كل قالب في المحرّر الجديد. - سمعة قابلية التسليم. سمعة المرسِل تعيش على عناوين IP المرسِلة وعلى النطاق الموثَّق. منصّة جديدة تعني مجمّع IP جديدًا وإحماءً جديدًا. الاحتفاظ بالنطاق نفسه وإعداد DKIM نفسه يحفظ جانب النطاق من السمعة، وهو أمر مفيد فعلًا، لكنه لا ينقل جانب IP.
- معرّفات النماذج وصفحات الهبوط والتتبّع. نماذج التسجيل وصفحات الهبوط ونصّ التتبّع تحمل جميعها معرّفات خاصة بالمنصّة. أي شيء مضمَّن في موقعك يجب استبداله، وأي تحليلات مرتبطة بتلك المعرّفات تنكسر عند التحويل.
تصدير مبرمَج للحسابات الكبيرة
فوق نحو 100,000 جهة اتصال يصبح التصدير عبر الواجهة الرسومية بطيئًا ومرهقًا، وأنت تحتاج إلى مهمة قابلة للتكرار على أي حال. نقطة نهاية تصدير جهات الاتصال غير متزامنة: تقبل مرشّحًا، وتعيد معرّف عملية، وتسلّمك ملف CSV عند الانتهاء.
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" }'الاستدعاء الناجح يعيد HTTP 202 وجسمًا يحتوي processId. القيمة exportMandatoryAttributes افتراضها true وتغطي EMAIL و ADDED_TIME و MODIFIED_TIME، لذا فإن exportAttributes هو المكان الذي تسمّي فيه حقولك المخصّصة. وضبط exportSubscriptionStatus هو ما يضع حالة موافقة التسويق للبريد والرسائل النصية داخل الملف، وإغفاله هو الطريقة الأكثر شيوعًا لإنتاج تصدير عديم الفائدة لترحيل متوافق مع القانون.
وإذا كنت تفضّل التنقل عبر السجلات بدل انتظار مهمة، فإن GET /v3/contacts يقبل limit حتى 1000 مع offset، إضافة إلى modifiedSince و createdSince للسحب التزايدي. كل جهة اتصال تعود مع emailBlacklisted و smsBlacklisted و listIds و listUnsubscribed و consentGroups، وهو كل ما تحتاجه لإعادة بناء حالة الموافقة.
راقب حدود المعدل أثناء برمجة هذا. تسمح نقاط نهاية جهات الاتصال بـ 36,000 طلب في الساعة و 10 في الثانية على الخطط القياسية، ويتضاعف الرقم على مستويي Professional و Enterprise، بينما تقف معظم نقاط النهاية الأخرى عند 100 طلب في الساعة. التنقل عبر مليون جهة اتصال بمعدل 1000 لكل صفحة يعني 1000 طلب، وهو ضمن ميزانية جهات الاتصال براحة، أما استنزاف نقاط نهاية الحملات أو القوالب في حلقة فليس كذلك.
لماذا يجب ترحيل قائمة الحجب أولًا
انقل حالات إلغاء الاشتراك قبل أن تنقل أي شيء آخر.
الحجة القانونية بسيطة. جهة الاتصال التي ألغت اشتراكها سحبت موافقتها من علامتك التجارية. وذلك السحب لا يُعاد ضبطه لأنك غيّرت المورّد. بموجب GDPR فإن سجل الموافقة وسحبها التزام عليك بصفتك المتحكم بالبيانات، وبموجب CAN-SPAM يجب احترام إلغاء الاشتراك خلال عشرة أيام عمل ويبقى محترمًا إلى أجل غير مسمى. فقدان القائمة أثناء الترحيل ليس حادثًا تقنيًا، بل هو إخفاق امتثال مع أثر ورقي يشير إليك.
الحجة المتعلقة بقابلية التسليم أسوأ عمليًا. العناوين المحجوبة هي على نحو غير متناسب أشخاص اشتكوا، أو ارتدّت رسائلهم ارتدادًا صلبًا، أو أرادوا الخروج فعلًا. مراسلتهم من عنوان IP جديد بلا سمعة هي أسرع طريقة معروفة لخنق إعداد إرسال جديد أو حظره في أسبوعه الأول. بضعة آلاف من مصائد البريد المزعج المعاد تدويرها والمشتكين قادرة على إهدار شهر من الإحماء الدقيق.
لذلك صدّر الفئات المحجوبة صراحة بدل افتراض أنها مشمولة ضمنًا. في نقطة نهاية التصدير، يقبل actionForContacts القيمة unsubscribed لجهات الاتصال المحجوبة بأي وسيلة، و unsubscribedPerList لمن انسحبوا من قائمة محددة. نفّذ مرورًا منفصلًا لـ hardBounces لكل حملة. وعند الدخول إلى منصّة جديدة، استورد ذلك الملف إلى قائمة الحجب لديها، لا إلى قائمة قابلة للمراسلة.
تتعامل Brevo مع الحالة العكسية أيضًا: فهي تدعم استيراد قائمة بجهات الاتصال المحجوبة، وتأخذ واجهة الاستيراد القيمتين المنطقيتين emailBlacklist و smsBlacklist كي يصل الملف المستورد كمحجوب. لاحظ عدم التناظر الذي تصيب Brevo في فرضه: لا يمكن رفع الحجب عن جهات الاتصال بشكل جماعي، لأن إعادة اشتراك شخص طلب أن يُترك وشأنه بشكل جماعي عمل غير قانوني. الحجب سهل الإضافة وصعب الإزالة عن قصد. اعتبر ذلك السلوك الصحيح، لا عقبة.
قائمة تحقق الترحيل، الخروج من Brevo
- التدقيق. أحصِ جهات الاتصال والقوائم والشرائح وعمليات الأتمتة النشطة والقوالب وعمليات التكامل. دوّن أي عمليات تكامل تكتب داخل Brevo، لأنها الأنابيب التي سيتعين عليك إعادة توجيهها.
- التصدير. جهات الاتصال بكل سماتها مع حالة الاشتراك، وملف لكل قائمة أو ملف واحد يحمل
_listIds، وفئات الحجب كملفات منفصلة، وإحصاءات الحملات، والأحداث المعاملاتية إلى أبعد ما تسمح به نافذة 90 يومًا، ومحتوى HTML للقوالب. - أرشِف ما ينتهي. كل ما هو محدود بالزمن (الأحداث الخام والسجلات) يختفي بمجرد انزلاق النافذة. خزّنه الآن في مستودع بياناتك أو تخزين الكائنات لديك.
- نظّف وطابِق. أزل التكرارات، ووحّد صيغ التواريخ وأرقام الهاتف، واكتب خريطة صريحة من الأعمدة إلى الحقول في المنصّة الجديدة. وهذه أيضًا اللحظة الطبيعية لإسقاط العناوين التي لم تتفاعل منذ سنة، وهو أرخص من دفع تكلفة إحماء وزن ميت. يغطي دليل تنظيف قائمة البريد العتبات المناسبة.
- حمّل قائمة الحجب أولًا. استورد حالات إلغاء الاشتراك والارتدادات الصلبة إلى قائمة الحجب في المنصّة الجديدة، وتحقق من تطابق الأعداد مع تصديرك، وعندها فقط حمّل جهات الاتصال القابلة للمراسلة.
- الإحماء. ابدأ بأكثر شرائحك تفاعلًا، وزد الحجم تدريجيًا، وراقب معدلات الارتداد والشكاوى يوميًا. يشرح دليل قابلية تسليم البريد الإلكتروني التسلسل بالتفصيل.
- شغّل بالتوازي. أبقِ Brevo نشطًا ومرسِلًا لبريدك المعاملاتي الحرج بينما تتولى المنصّة الجديدة حصة متزايدة من الإرسال التسويقي. لا تبدّل الاثنين معًا.
- تحقق. طابِق أعداد جهات الاتصال، وافحص عشرين جهة اتصال حقلًا بحقل، وأكّد أن الجهات المحجوبة محجوبة فعلًا بمحاولة إرسال اختباري، وقارن أسبوعًا من حجم الإرسال بالمنصّة القديمة.
- حوّل واحتفظ بخطة تراجع. غيّر DNS ونقاط نهاية التكامل في نافذة زمنية يراقبها شخص ما. أبقِ حساب Brevo حيًا ومدفوعًا لدورة فوترة كاملة على الأقل بعد التحويل، مع تخزين الملفات المصدَّرة خارج المنصّتين. هذه، لا وعد المورّد، هي خطة التراجع الحقيقية لديك.
الترحيل إلى Brevo من منصّة أخرى
تعمل قائمة التحقق نفسها بالاتجاه المعاكس، مع ثلاث ملاحظات خاصة بـ Brevo.
احصل على تصدير حقيقي من المنصّة الحالية. معظم المنصّات ستعطيك جهات الاتصال وحقولها المخصّصة بصيغة CSV. اطلب تحديدًا قائمة الحجب وقائمة الارتدادات، فهما غالبًا في تصدير منفصل ينسى الناس طلبه. وإذا كنت قادمًا من نموذج تسعير لكل جهة اتصال، فقارن ما ستدفعه فعلًا عند الدخول باستخدام دليل أسعار Brevo.
طابِق الحقول قبل الرفع. سمات Brevo لها أنواع (نصّ، رقم، تاريخ، منطقي، فئة)، وتاريخ يهبط في سمة نصية لن يكون قابلًا للترشيح لاحقًا. أنشئ السمات بالأنواع الصحيحة أولًا، ثم استورد.
استورد عبر الواجهة البرمجية لأي حجم معتبر. يقبل POST /v3/contacts/import ملف CSV مضمَّنًا في fileBody، أو مصفوفة JSON في jsonBody، وكلاهما محدود بنحو 10 ميجابايت، أو ملفًا بعيدًا عبر fileUrl، إضافة إلى listIds أو كائن newList. القيمة updateExistingContacts افتراضها true وتطابق حسب البريد الإلكتروني. نفّذ استيرادًا واحدًا مع ضبط emailBlacklist على true لملف الحجب، ثم استيرادًا ثانيًا لجهات الاتصال القابلة للمراسلة. النصوص البرمجية الكاملة موجودة في دليلنا حول استيراد جهات اتصال CSV إلى Brevo عبر نصّ برمجي.
بعد ذلك أعد بناء ما لم ينتقل: عمليات الأتمتة والشرائح والنماذج والقوالب. أرسل اختبارًا تجريبيًا إلى حفنة من مزوّدي البريد قبل أن ترسل إلى أي شخص حقيقي.
لا تدع الترحيل القادم يكون هاوية
سبب شعور ترحيل المنصّات بأنه هاوية هو أن المنصّة أصبحت هي نظام السجل. سجل الطلبات وحالة المشتركين ونتائج الحملات تعيش داخل مورّد واحد، ونقلها يعني عملية إخلاء.
البديل هو أن تحتفظ بمصدر حقيقة خاص بك وتجعل منصّة الإرسال وجهة لا خزنة. إذا كانت بيانات متجرك وحالة الموافقة وأحداث التفاعل تُزامَن باستمرار إلى أنظمتك، فإن تبديل قناة أو إضافتها يصبح تغيير إعدادات لا مشروعًا. هذه هي المهمة التي يؤديها Tajo بين Brevo ومنظومة التاجر: إبقاء البيانات تتدفق في الاتجاهين كي لا تكون المنصّة النسخة الوحيدة أبدًا.
في كل الأحوال، مهام التصدير الموصوفة أعلاه تستحق التشغيل وفق جدول من الآن، سواء كنت تنوي المغادرة أم لا. أرخص ترحيل هو الذي تكون فيه البيانات خارج المنصّة أصلًا عندما تتخذ القرار.