Kontaktlar va rozilik
Faqat sizda bor ro'yxat emas, himoya qila oladigan ro'yxat
Har kim o‘n mingta elektron pochta manzilini saqlashi mumkin. Muhim savol — uni regulyator, provayder va o‘z vijdoningiz biroz boshqacha so‘zlar bilan beradi — har bir manzil qayerdan olingan va unga asosda yozish huquqingiz bormi. ClickSomo buni qayta tiklash kerak bo‘ladigan narsa emas, balki saqlanadigan faktga aylantiradi.
Shaxs — bu elektron pochta manzili
Har bir manzil va loyiha uchun bitta kontakt — bu umid bilan emas, ma’lumotlar bazasi tomonidan ta’minlanadi. Manzillar yozilish vaqtida normalizatsiya qilinadi, hech qachon o‘qish vaqtida emas — o‘qishda normalizatsiya qilsangiz, cheklov Anna@ va anna@ ni ikkalasini ham o‘tkazib yuboradigan bezak bo‘lib qoladi.
Telefon raqamlari mavjud bo‘lsa, E.164 formatida saqlanadi, lekin telefon raqami — bu atribut, shaxs emas. Shaxsni aniqlash grafigi, birlashtirish protokoli va birlashtirishlar audit jurnali yo‘q, chunki bu yerdagi har bir kontakt allaqachon manzili bor kanal orqali keladi: import, forma, obuna yoki o‘z kodingiz.
Ism butun holda saqlanadi
display_name berilganidek saqlanadi va hech qachon qismlarga bo‘linmaydi. Ismni bo‘lish — xatolar zavodi: "van der Berg", "Kim Min-jun", yagona ismlar, unvonlar va anglo bo‘lmagan har qanday tartib qoidasi; noto‘g‘ri bo‘linish birlashtirish tegida "Hurmatli van," shaklida namoyon bo‘ladi, bu esa umuman shaxsiylashtirilmasligidan ham yomon.
Tuzilgan qismlar faqat ularni allaqachon ajratib bergan manbalarda mavjud. Hech narsa ularni hosil qilmaydi. Va odamning o‘zi kiritgan ismi boshqacha ko‘ringan keyingi CSV fayl bilan hech qachon almashtirilmaydi, chunki oxirgi yozuv g‘olib bo‘lsa, eng ehtiyotsiz import g‘olib chiqadi.
- 1ShaxsElektron pochta, normalizatsiya qilingan. Loyiha ichida yagona.
- 2IsmButun holda saqlanadi.
first_namerender vaqtida hosil qilinadi, hech qachon saqlanmaydi. - 3AtributlarXohlagan narsangiz, JSON sifatida. Sizniki va
attrs.*sifatida interpolatsiya qilinadi. - 4Teglar va ro‘yxatlarTeglar birinchi darajali va bitta omborda yashaydi; ro‘yxatlar — aniq a’zolik.
- 5RozilikHar bir kanal uchun bitta qator, qonuniy asos va uning dalillari bilan.
- 6HodisalarBu shaxs qilgan hamma narsaning faqat qo‘shiladigan jurnali. Mahsulot ushlangan asosiy jadval.
- ×Hech qachonParol yo‘q, xesh yo‘q, sessiya yo‘q, API kaliti yo‘q. Kimdirni autentifikatsiya qiladigan ustun — bu xususiyat emas, hodisa bo‘lardi.
Ijara va loyihaga, ikkalasiga ham qamrovlangan
Rozilik daftari
Yo‘qlik — ruxsat emas
Har bir kontakt va kanal uchun bitta qator — elektron pochta, SMS, xat, push — har biri holat, qonuniy asos, manba, dalil, vaqt belgilari va yurisdiktsiyani o‘z ichiga oladi. Kanal uchun asos qatori yo‘q kontaktga o‘sha kanal orqali hech narsa yuborilolmaydi. "Belgilangan" emas. Yuborilolmaydi.
consent
Kimdir faol ravishda so‘ragan. Dalillari saqlangan forma yuborilishi, ikki bosqichli obuna, o‘zi belgilagan belgilash katakchasi. Bu eng kuchli asos va forma ishlab chiqaradigan yagona asos.
legitimate_interest
CSV importi erisha oladigan eng yaxshi daraja. Jadval odamning biror narsaga rozilik berganini eslab qololmaydi, shuning uchun u buni da’vo qilishga hech qachon ruxsat etilmaydi — va o‘sha faylni qayta yuklash buni yaxshilamaydi.
contract
Siz ikkalangiz ham tomon bo‘lgan biror narsa tufayli ularga yozmoqdasiz. Xizmat eslatmasi, yangilanish xabarnomasi, olmasa g‘azablanadigan narsa.
Kampaniya yuborilishidan oldin uning auditoriyasining asoslar taqsimotini ko‘rasiz: ulardan nechtasi so‘ragan, nechtasiga qonuniy manfaat asosida yozmoqdasiz va nechtasi shartnoma tufayli bor. Bu — yozilgan har qanday ogohlantirish banneridan ko‘ra ko‘proq yomon yuborishlarni to‘xtatgan bitta raqam.
Nega bu siz uchun kerak bo‘lgandan ham qat’iyroq: bu aslida siz haqida emas. Ommaviy yuborish obro‘si — umumiy resurs va ehtiyotsiz bitta ro‘yxat bir xil infratuzilmadan yuborayotgan hamma uchun quduqni zaharlaydi. Har bir ijara uchun shikoyat va qaytish darajalari kuzatiladi va chegaradan oshgan hisob shu yerda cheklanadi — provayder buni hammaga bir vaqtda qilishidan oldin.

Ro‘yxatdagi har bir qator ortida kimdir "ha" dedi.
Kirishning to‘rt yo‘li
Ro‘yxatingizga har bir yo‘l — bu siz, o‘z ma’lumotingiz ustida ish tutib
Xizmat-token kiritish yo‘lagi yo‘q va kontaktlaringizga jim yozadigan qardosh mahsulot yo‘q. Kimdirni ro‘yxatga kiritmoqchi bo‘lsangiz, shu to‘rttadan biri kiritgan.
CSV importi
Ustunma-ustun moslashtiriladi, yozishda normalizatsiya qilinadi, o‘lgan va xato yozilgan domaynlarni qattiq qaytishdan oldin ushlash uchun MX tekshiriladi va siz aniq belgilagan asos bilan joylashtiriladi. Import id oladi va u yaratgan har bir kontakt unga qayta ishora qiladi.
ClickSomo formasi
Hamma narsa bilan bir xil hujjatdan render qilinadi, validatsiya, honeypot va tezlik chegarasi bilan. Forma yuborilishi — consent ni qonuniy ishlab chiqaradigan yagona yo‘l, chunki bu odam mavjud bo‘lgan yagona yo‘l.
Dash-b da o‘zingiz qurgan sahifa
Boshqaruv paneli dizayneri sahifalar nashr qiladi; ulardagi forma o‘z kredensiallaringiz bilan shu yerga yuboriladi. Xuddi shu validatsiya, xuddi shu rozilik bilan ishlash, saqlash uchun ikkinchi integratsiya yo‘q.
Ommaviy API
POST /v1/contacts — o‘z tokeningiz bilan, upsert mantiqida, idempotency kaliti qo‘llab-quvvatlanadi. Ilovangiz kim ro‘yxatdan o‘tganini allaqachon biladi; bu fakt voronkaga eng qisqa yo‘l orqali yetib boradi.
Segmentlar — bu kompilyatsiya qilinadigan predikat
Segment — bu kontakt maydonlari, atributlar, teglar, ro‘yxatga a’zolik va xatti-harakatlar ustidagi saqlanadigan predikat daraxti bo‘lib, SQLga kompilyatsiya qilinadi va hisob bilan birga keshlanadi. Operatorlar oddiy: teng, teng emas, ichida, ichida emas, boshlanadi, tugaydi, o‘z ichiga oladi, o‘rnatilgan, o‘rnatilmagan — ular and, or va not bilan kerakli chuqurlikda birlashtiriladi.
Ishlatishdan oldin ko‘rib chiqing. Endpoint haqiqiy kontaktlarni qaytaradi, shuning uchun "bu segmentda aslida kim bor" savoliga yuborib bilib olish emas, ko‘rib javob berishingiz mumkin.
Segmentlar ikki xil vazifani bajaradi: kampaniya uchun auditoriya, voronka shoxi uchun shart va o‘z-o‘zidan trigger — segment_enter biror kishi shartga mos bo‘lishi bilan ishga tushiradi.
- 1Teg
tags contains "regular" - 2Atribut
attrs.total_orders >= 3— sizning maydoningiz, siz bergan nom bilan. - 3HarakatOxirgi 90 kun ichida
order.paidhodisasi yo‘q. - 4RozilikFoydalanish mumkin bo‘lgan e-mail asosi. Unda bo‘lmagan kontaktlar hisobga kirmaydi, chunki ularnga baribir xat yuborib bo‘lmaydi.
- iKo'rish412 kontakt ro‘yxatlandi. Yuborish paytida yana hisoblanadi, chunki segment — bu savol, snapshot emas.
SQLga kompilyatsiya qilinganHisob keshlangan, javob jonli
Cheklovlar va ular qachon tekshirilishi
Cheklovlar (suppression) loyiha doirasida va global: qattiq bounce, shikoyatlar, obunadan voz kechishlar, qo‘lda kiritilganlar va rol manzillari. Ular yuborish paytida tekshiriladi, so‘ngra yuborish xizmatining o‘zida yana bir bor tekshiriladi.
Ikkinchi tekshiruv asosiy ishni bajaradi. Uch kunlik kutish mavjud voronkada odam uch kun ichida obunadan voz kechishi mumkin, va xabar navbatga qo‘yilganda cheklovlarni tekshirgan tizim baribir unga xat yuboradi. Yuborish paytida tekshirish — obunadan voz kechishni hurmat qilish va uni shunchaki qayd etish orasidagi farq.
O‘chirish ham xuddi shunday ishlaydi: o‘chirish so‘rovi bu yerda kontakt va uning xabarlar tarixini olib tashlaydi va oilaning qolgan qismi ishlatadigan xuddi shu ichki kanal orqali nusxani saqlagan har bir qardosh xizmatga yetkaziladi. So‘rov uchun bitta joy va sodir bo‘ladigan bitta hodisa bor.