Voronkalar va triggerlar
Voronka — bu graf. Ishga tushirish — bu qator. Kutish — bu vaqt.
Bu butun modeldir va ushbu mahsulotning har bir murakkab xossasi shu uchta jumladan chiqadi. Ishlayotgan voronkani tahrirlash ular tufayli xavfsiz. Qayta urinish ikki marta yubora olmaydi — ular tufayli. Seshanba kuni obunadan chiqqan odam payshanba kuni hech narsa eshitmaydi — ular tufayli.
Ishga tushganda aslida nima sodir bo'ladi
Voronkani nashr qilish o'zgarmas versiya yozadi. Biror kirimchi keladi va qator paydo bo'ladi: bitta ishga tushirish, shu kontakt uchun, o'sha versiyaga bog'langan, joriy tugun, uyg'otish vaqti va o'z kontekstini saqlab.
Ishchi (worker) uyg'otish vaqti o'tgan ishga tushirishlarni SKIP LOCKED bilan band qilib oladi, shunda ikki ishchi bir xil qatorni ololmaydi. U kutishga yoki yakuniga yetguncha tugunlarni bajaradi, keyin keyingi uyg'otish vaqtini yozib, qo'yib yuboradi.
Tugun — ishga tushirish, kontakt va tugunning sof funksiyasidir — va uning ta'sirlari ishga tushirishning o'z oldinga siljishi bilan bir xil tranzaksiyada yakunlanadi. Aynan shu bitta xossa qayta urinishni xavfsiz qiladi. "Yuborish" va "siljitish" orasidagi yarim soniyada o'ldirilgan ishchi yoki ikkalasini ham, yoki hech birini qoldiradi — hech qachon bittasini emas.
Va vaqtni ma'lumotlar bazasi emas, ilova beragani uchun, hozir yozilgan qator hozir muddati kelgan hisoblanadi. Ma'lumotlar bazasi soatiga suyanadigan jadval ustuni yozilgan lahza muddati kelgan bo'lmaydi va uni yaratgan o'sha tikni o'tkazib yuboradi — xabar bir soat kechikmaguncha hech narsaga o'xshamaydigan xato.
- 1Band qilish (Lease)
wake_at <= now(),FOR UPDATE SKIP LOCKED. Band qilishlarsiz navbat sukut bo'yicha ikki marta yuboradi. - 2BajarishKutishga yoki yakunga yetguncha tartib bilan tugunlar. Har biri qadam yozadi: nimani hal qildi, nimani chiqardi.
- 3KommitTa'sirlar va siljish — bitta tranzaksiyada. Butun sir shu.
- 4UxlashKeyingi
wake_atyoziladi. Pastdagi qatorlar hali mavjud emas va hech biri shart emas.
Har kontakt va versiya uchun bitta ishga tushirish
O'n to'rtta trigger
Nima ishga tushirishni boshlashi mumkin
Bulardan ba'zilari siz qiladigan ishlar. Ko'pchiligi mijozingiz qiladigan yoki qilmaydigan ishlar — va harakatning yo'qligi harakatning o'zidek yaxshi triggerdir.
Ular keladi
form_submit, list_join, contact_created, tag_added va segment_enter. Segment — jonli predikat, shuning uchun "segmentga kiradi" ifodalay oladigan har bir "bo'lib qoldi"ni qamrab oladi — uchta buyurtma, to'qson kun sukut, chegara ustida xarid.
Ular biror ish qiladi
Sayt snippetidan page_visit, message_opened, link_clicked, booking_made va payment_made. Xabar ochilishi o'zi kontakt bo'yicha hodisa, shuning uchun bitta voronka oxirgi yuborgan narsasiga reaksiyani kutishi mumkin.
Vaqt yoki siz
Ofset bilan date_field — tug'ilgan kun, yangilash, "bir yil o'tdi", yetti kun oldin yoki uch kun keyin. Takrorlanuvchi uchun schedule. O'zingiz qaror qilib yuboradigan e'lon uchun manual.
Sizning o'z ilovangiz
api_event — o'z kodingizdan va o'z tokeningiz bilan yuboradigan maxsus hodisa. Mahsulotingiz biladigan har narsa trigger bo'ladi: faollashtirildi, hamkasbni taklif qildi, chegara buzildi, bekor qildi, eksport qildi. Aynan shu pochta vositasini mahsulotingizning bir qismiga aylantiradi.
Qayta kirish, bir marta hal qilingan
Voronka yoki qayta kiruvchi, yoki yo'q, va buni ma'lumotlar bazasi ta'minlaydi: aks holda aytmagan bo'lsangiz, har kontakt va voronka uchun bitta ishga tushirish. Bir xil trigger bir soniyada ikki marta ishga tushsa, tasodifan ikkita ishga tushirish hosil qila olmaydi.
Kirish shartlari
Trigger ishga tushadi va kirish spetsifikatsiyasi aynan shu kontakt mos kelishini hal qiladi — eshik oldidagi segment predikati. Birinchi qadamdagi shart tugunidan arzonroq va grafni kim kira oladi emas, nima sodir bo'ladi haqida saqlaydi.

Uni boshlashi mumkin bo'lgan o'n to'rtta narsa. Keyin sodir bo'lishi mumkin bo'lgan o'n oltita narsa.
O'n oltita amal va yetti oqim tuguni
Voronka nima qila oladi va qanday hal qiladi
Biror narsa yuborish
send_email, send_sms, send_push, send_letter — to'rt kanal, bitta graf — qo'shimcha, xabar berilishi kerak bo'lgan odam sizning xodimingiz bo'lsa, notify_team.
Kontaktni o'zgartirish
add_tag, remove_tag, add_to_list, remove_from_list, set_field. Ketayotib belgilab borish keyingi voronkaning segmentini sodda qiladi.
Tashqariga chiqish
Xohlagan narsangizga http_request, o'z ulangan hisobingizga create_payment va bron qilish resursiga book_slot. To'lovchi sizniki qoladi; hech kim bizning mijozimizga aylanmaydi.
Voronkalar orasida harakat
enter_funnel va exit_funnel. Bitta kutib olish ketma-ketligini qurib, uni to'rt joydan chaqiring — martga kelib bir-biridan chetlashadigan to'rt nusxani parvarishlash o'rniga.
Yuborish vaqtida yaratish
ai_generate birlashtirish o'zgaruvchilarini har bir kontakt uchun to'ldiradi, kvotangizga hisoblanadi va ijod hamda kontakt-atributi xeshi bo'yicha keshlanadi — aks holda har bir yuborishda har bir qabul qiluvchi uchun to'lab turardingiz.
Kutish, shart, bo'linish, birlashtirish
wait davomiylik, aniq sana-vaqt, hafta kuni va vaqt yoki ofsetli sana maydonini qabul qiladi. condition — ha va yo'q javobli segment predikati. split — vaznli A/B/n bo'linishi. join tarmoqlarni yana birlashtiradi.
goal — aynan muhim bo'lgan narsa
Maqsad unga yetib borgan har kim uchun ketma-ketlikni tugatadi. Ular bandlik qilishdi, xarid qilishdi, javob berishdi: qolgan ketma-ketlik aynan ular uchun bekor qilinadi. Hech kim qaytib kelganidan keyingi kuni "sizni sog'indik" xabarini olmaydi va buni aynan shu tugun oldini oladi.
throttle va quiet_hours
Throttle portlashni sekinlashtiradi, shunda past tezlik chegarasi bo'lgan pochta qutisi blokirovkaga uchramaydi. Tinch soatlar xabarni maqbul vaqtgacha ushlab turadi — bu xabar qatlamida qo'llanadi, grafgning har bir tarmog'iga nusxalanmaydi.
Ishga tushishidan oldin tekshiriladi
Tekshiruvchi siz uchun ham, AI uchun ham bir xil narsalarni rad etadi
Graf nashr etilishidan oldin tekshiriladi va bu tekshiruv faqat maslahat emas. Voronkani odam chizganmi yoki model yaratganmi — kod yo'li bir xil, va aynan shu sababli yaratilgan voronkalarga umuman ishonch mumkin.
Aynan bitta kirish nuqtasi
Ikki kirish tuguni — ro'yxatning noto'g'ri yarmiga noto'g'ri ketma-ketlik tushib qolguncha hech kim sezmaydigan noaniqlik.
Har bir tugun yetib boriladigan bo'lsin
Yolg'iz qolgan tarmoq — bu yoki xato, yoki chiqib deb o'ylagan, ammo chiqmayotgan xabaringiz. Ikkalasi ham haqida xabar berilishga loyiq.
Har bir siklda wait bo'lishi shart
Ichida kutish bo'lmagan sikl — o'rtasida yuborish bo'lgan cheksiz sikldir. Bu qoida voronka bilan hodisa o'rtasidagi farqdir.
Har bir yuborishning ijodi bor
Ijod va mavzusiz send_email tuguni nashr etilmaydi. To'g'ri mavzu va bo'sh matnli xabar — haqiqiy xato rejimi; u aynan shu yerda rad etiladi.
Har bir o'zgaruvchi ma'lum
Birlashtirish o'zgaruvchilari nashrda tekshiriladi. {{frist_name}} — tahrirlash paytida ko'radigan xato, qirq mingta inboxga yetib boradigan "Salom ," emas.
Keyin simulyatsiya qiling
Haqiqiy kontaktni butun graf bo'ylab sinab ko'ring va olingan yo'l hamda yuborilishi kerak bo'lgan har bir xabarni, kun bilan birga, qayta o'qing. Hech narsa tashqariga chiqmaydi.
Noqulay holatlar
Sodda dvigatelni sindiradigan yetti narsa
Bulardan har biri ortida aniqlik soati bo'lgan testdir, chunki har biri haqiqatga duch kelguncha mukammal to'g'ri ko'rinadigan amalga oshirishni sindiradi.
- 1O'ziga halqa qilib aylanadigan voronkaQonuniy, keng tarqalgan va yaxshi — agar siklda validator talab qiladigan wait bo'lsa.
- 2Biror kimi yo'l davomida obunadan chiqadiSuppression yuborish paytida tekshiriladi, navbatga qo'shish paytida emas. Navbatda tekshirilsa, kutish davomida ketgan odamlarga ham xabar yuboriladi.
- 3Voronka ichida o'n ming kishi turib tahrirlanadiUlar kiritilgan versiyani oxirigacha yuritishda davom etadi. Yangi kelganlar yangisini yuritadi.
- 4Bir xil trigger bir soniyada ikki marta ishga tushadiBitta ishga tushirish, chunki unikallik — tekshiruv keyin qo'shish emas, balki indeksdir.
- 5Kontakt ishga tushirish davomida o'chiriladiIshga tushirish tugaydi. Biror kishiga hali ham murojaat qilayotgan ketma-ketlik qoldiradigan o'chirish — o'chirish emas.
- 6Kutish yozgi vaqt o'tishiga to'g'ri keladi"Ertalab soat to'qqizda uch kun" — soat o'zgarishining ikkala tomonida ham ertalab soat to'qqizni anglatadi.
- 7Ishchi 'yuborish' va 'boshqarish' orasida halok bo'lsaEffektlar va boshqarish bitta tranzaksiya. Yoki ikkalasi ham sodir bo'ldi, yoki hech biri.
Aniq (deterministik) soatHar bir test ishonchli ko'ringan amalga oshirishni buzadi
Kampaniyalar — boshqa yarim
Vorilka reaksiya beradi. Kampaniya — bu bir martalik translyatsiya: auditoriya, jadval, cheklov va yuborish. Bu boshqa shakldagi narsa va u bir tugunli vorilka bo'lib ko'rinish o'rniga ataylab alohida saqlanadi.
Ikki qoida buni xavfsiz qiladi. Auditoriya bir marta shakllantiriladi va ikki marta ishga tushishdan bosh tortadi — qayta aniqlash yuborish boshlangandan keyin qo'shilgan hamma odamni jim qo'shib qo'yardi va takrorlarni olib tashlash indeksi o'zi yaratgan takrorlarni to'sib, buni yashirardi. Va hisoblagichlar yetkazish hodisalaridan qayta hisoblanadi, hech qachon joyida oshirilmaydi, shuning uchun qayta yuborilgan webhook hisobotni sun'iy kattalashtira olmaydi.
Qaysi birini ishlatish kerak: agar bu odamning o'zi qilgan ishi tufayli sodir bo'lsa — bu vorilka. Agar bu siz seshanba kuni qabul qilgan qaroringiz tufayli sodir bo'lsa — bu kampaniya. Marketing avtomatlashtirishining ajabtovur darajada katta qismi ikkinchisini birinchisining shakliga majburlash natijasida buziladi.