clickSomo
حلّ ClickSomo

جهات الاتصال والموافقة

قائمة تستطيع الدفاع عنها، لا مجرد قائمة تملكها

أي أحد يستطيع حشد عشرة آلاف عنوان بريد. السؤال المهم — الذي يطرحه المنظِّم والمزوّد وضميرك كلٌّ بلفظ مختلف — هو من أين جاء كل عنوان وعلى أي أساس يجوز لك الكتابة إليه. ClickSomo يجعل ذلك حقيقةً مخزَّنة لا شيئاً تضطر لإعادة بنائه.

الهوية هي عنوان البريد

جهة اتصال واحدة لكل عنوان في كل مشروع، مفروضة من قاعدة البيانات لا من الأمل. العناوين تُطبَّع عند الكتابة، لا عند القراءة أبداً — فالتطبيع عند القراءة يجعل القيد زينةً تُدخل Anna@ وanna@ معاً.

أرقام الهواتف تُخزَّن بصيغة E.164 حيث توجد، لكن رقم الهاتف صفةٌ لا هوية. لا توجد شبكة حلّ هويات، ولا بروتوكول دمج، ولا سجل تدقيق للدمج، لأن كل جهة اتصال هنا تصل عبر قناة لها عنوان أصلاً: استيراد، أو نموذج، أو اشتراك، أو كودك أنت.

الاسم يُخزَّن كاملاً

display_name كيتحفظ كيما تاعو بالضبط وما كيتقسمش لأجزاء. تقسيم الأسماء مصنع للأخطاء — "van der Berg"، "Kim Min-jun"، الأسماء المفردة، الألقاب، وكل طريقة ترتيب ماشي إنجليزية — والتقسيم الغالط كيبان في وسم الدمج كيما "Dear van,"، وهذا خايب حتى من بلا تخصيص.

الأجزاء المهيكلة كاينة غير للمصادر اللي جايينها مفصولين من قبل. حتى شي حاجة ما كتشتقهم. والاسم اللي كتبو الشخص بنفسو ما كيتبدلش من ملف CSV جاي من بعد شاف شي حاجة مختلفة، حيت قاعدة آخر كتابة كتخلي أوسخ استيراد يربح.

اتصال واحدشنو كاين محفوظ
  • 1الهويةالبريد الإلكتروني، موحد. فريد داخل المشروع.
  • 2الاسممحفوظ كامل. first_name كيتشتق وقت العرض، ما كيتحفظش أبدا.
  • 3الخصائصأي حاجة تحبها، بصيغة JSON. تاعك، وتقدر تتدخل كـ attrs.*.
  • 4الوسوم والقوائمالوسوم عنصر أساسي وكاينين في مخزن واحد؛ القوائم عضوية صريحة.
  • 5الموافقةسطر واحد لكل قناة، مع أساس قانوني ودليلو.
  • 6الأحداثسجل إضافي فقط لكل شي دارو هذا الشخص. الجدول اللي المنتج مبني عليه.
  • ×عمركلا كلمة سر، لا هاش، لا جلسة، لا مفتاح API. أي عمود يقدر يوثق شي واحد هو حادثة، ماشي ميزة.

محدود بالمستأجر والمشروع، بجوج

سجل الموافقات

الغياب ماشي إذن

سطر واحد لكل اتصال لكل قناة — بريد، SMS، رسالة، إشعار — كل واحد فيه حالة، أساس قانوني، مصدر، الدليل، التواريخ والاختصاص. الاتصال اللي ما عندوش سطر أساس لقناة ما يمكنش يوصلو شي حاجة في تلك القناة. ماشي "معلم". ما يمكنش.

consent

الشخص طلب بنفسو. نموذج معبى والدليل محفوظ، تأكيد مزدوج، مربع اختيار علّمو بنفسو. هذا أقوى أساس وهو الوحيد اللي النموذج يقدر ينتجو.

legitimate_interest

أحسن شي يقدر يوصلو استيراد CSV. الجدولة ما تقدرش تتذكر شي واحد وافق على شي حاجة، فما مسموحش تدعي ذلك — وإعادة رفع نفس الملف ما كتطورش الأساس.

contract

كاتكتب ليهم حيت كاين شي حاجة بجوج طرفين فيها. تذكير الخدمة، إشعار التجديد، الشي اللي كان يزعل لو ما وصلوش.

قبل ما تبعث الحملة، كتشوف خليط الأساسات تاع جمهورها: شحال من هذوك طلبوا، شحال كتوصلهم بالمصلحة المشروعة، وشحال كاينين بسبب عقد. رقم واحد وقف أكثر الإرسالات الخايبة من أي لافتة تحذير كتبت.

علاش هذا أشد من اللي تحتاجو: ماشي عليك بالحق. سمعة الإرسال الجماعي مورد مشترك، وقائمة واحدة بلا عناية تسمم البير للجميع اللي كيرسلوا من نفس البنية التحتية. معدلات الشكاوى والارتداد لكل مستأجر كيراقبوا، والحساب اللي معدلاتو تفوت الحد كيتخنق هنا — قبل ما المزود يديرها للجميع مرة وحدة.

ورا كل سطر في القائمة، شي واحد قال نعم.

أربعة طرق للدخول

كل طريق يدخل لقائمتك هو انت، كتخدم على بياناتك

ما كاينش مسار استيراد برمز خدمة وما كاينش منتج آخر كيكتب بصمت في اتصالاتك. لو تحب شي واحد في قائمة، واحد من هذو الأربعة هو اللي حطو.

استيراد CSV

مربوط عمود بعمود، موحد عند الكتابة، مفحوص MX باش النطاقات الميتة والمغلطات تتقبض قبل الارتداد الصلب، وكيوصل بأساس حددتو صراحة. الاستيراد ياخذ معرف، وكل اتصال خلقه يشير ليه.

نموذج ClickSomo

معروض من نفس الوثيقة كي كل شي آخر، مع تحقق، فخ عسل وحد معدل. الإرسال هو الطريق الوحيد اللي يقدر بشكل مشروع ينتج consent، حيت هو الوحيد اللي الشخص حاضر فيه.

صفحة بنيتها في dash-b

مصمم لوحة التحكم ينشر صفحات؛ النموذج في وحدة منهم كيرسل هنا ببياناتك الخاصة. نفس التحقق، نفس معالجة الموافقة، بلا تكامل ثاني تديرو.

واجهة API العامة

POST /v1/contacts برمزك الخاص، دلالات upsert، مفتاح عدم التكرار محترم. تطبيقك يعرف مسبقا شكون سجل؛ هذا أقصر طريق من تلك الحقيقة إلى قمع.

الشرائح مسند، مترجم

الشريحة شجرة مسند محفوظة على حقول الاتصال، الخصائص، الوسوم، عضوية القائمة والسلوك، مترجمة لـ SQL ومخبأة مع عداد. المعاملات هي العادية — يساوي، ما يساويش، في، ما فيش، يبدأ بـ، يخلص بـ، يحتوي، محدد، غير محدد — مركبة بـ و، أو، لا لأي عمق تحتاجو.

عاينو قبل ما تستعملو. النقطة ترجع اتصالات حقيقية، فسؤال "شكون بالضبط في هذه" تجاوبو بالعين ماشي بالإرسال والاكتشاف.

الشرائح إذن كتخدم خدمة مزدوجة: جمهور لحملة، وشرط على فرع قمع، ومُطلِق بحد ذاته — segment_enter كيبدا التشغيل في اللحظة اللي كيولي فيها واحد مؤهل.

الزوّار المنتظمين الساكتينمعاينة الشريحة · 412
  • 1وسمtags contains "regular"
  • 2خاصيةattrs.total_orders >= 3 — الحانة تاعك، والسمية اللي تختارها ليه.
  • 3حركةما كاين حتى حدث order.paid في 90 يوم لي فاتو.
  • 4الموافقةأساس بريد إلكتروني قابل للاستعمال. المتراسلين اللي ما عندهمش ما كيدخلوش في العدّ، حيت ما كانوا يتفصلولهم رسائل أصلاً.
  • iمعاينة412 متراسل، مُدرجين. كيتعدّاو مرة أخرى وقت الإرسال، حيت الشريحة سؤال ماشي صورة ثابتة.

مُترجَمة إلى SQLالعدّ مخزّن مؤقتاً، الجواب حيّ

الاستبعاد، ووقت اللي كيتحقق فيه

الاستبعادات على مستوى المشروع وعالمية: الارتدادات الصلبة، الشكاوى، إلغاء الاشتراكات، الإدخالات اليدوية وعناوين الأدوار. كيتحقق منهم وقت الإرسال، ومن بعد مرة أخرى داخل خدمة الإرسال نفسها.

هذه الكلمة الثانية هي اللي كتخدم الشغل. قمع فيه انتظار ثلاثة أيام عندو نافذة ثلاثة أيام اللي يقدر فيها واحد يلغي اشتراكه، والنظام اللي تحقق من الاستبعاد وقت ما تزنصت الرسالة كيصيطلهم بريها على أي حال. التحقق وقت الإرسال هو الفرق بين احترام إلغاء الاشتراك وتسجيله فقط.

المحو كيخدم بنفس الطريقة: طلب الحذف كيشيل المتراسل وتاريخ رسائله من هنا، وكيوصل لكل خدمة شقيقة عندها نسخة عبر نفس القناة الداخلية اللي كتستعملها العائلة كاملة. كاين بلاصة وحدة تطلب فيها، وحاجة وحدة اللي كتوقع.