Воронкалар және триггерлер
Воронка — бұл граф. Іске қосылу — бұл жол. Күту — бұл уақыт.
Бұл — бүкіл модель, және осы өнімнің әрбір күрделі қасиеті осы үш сөйлемнен шығады. Жұмыс істеп тұрған воронканы өңдеу олардың арқасында қауіпсіз. Қайталау қосарлап жібермеуі олардың арқасында. Сейсенбі күні жазылудан бас тартқан адам бейсенбіде ештеңе естімейтіні де олардың арқасында.
Іске қосылғанда шын мәнінде не болады
Воронканы жариялау өзгермейтін нұсқаны жазады. Біреу кіреді де, жол пайда болады: бір іске қосылу, осы контакт үшін, сол нұсқаға бекітілген, ағымдағы түйінді, ояну уақытын және өз контекстін сақтайтын.
Жұмысшы ояну уақыты өткен іске қосылуларды SKIP LOCKED арқылы жалға алады, сондықтан екі жұмысшы бірдейін ала алмайды. Ол түйіндерді күту немесе соңғы түйінге жеткенше орындайды, содан кейін келесі ояну уақытын жазып, босатады.
Түйін — іске қосылу, контакт және түйіннің таза функциясы — оның әсерлері іске қосылудың өз ілгерілеуімен бір транзакцияда жазылады. Дәл осы қасиет қайталауды қауіпсіз етеді. «Жіберу» мен «ілгерілету» арасындағы жарты секундта өлтірілген жұмысшы екеуін де қалдырады немесе ешқайсысын қалдырмайды, ешқашан біреуін ғана емес.
Ал уақытты дерекқор емес, қосымша бергендіктен, қазір жазылған жол қазір мерзімі келген болып саналады. Дерекқор сағатын әдепкі мән ретінде қолданатын жоспарлау бағаны жазылған сәтте әлі мерзімі келмеген болып шығады да, оны жасаған өз тигін өткізіп алады — хабар бір сағат кешіккенге дейін ештеңе көрінбейтін ақау.
- 1Жалға алу
wake_at <= now(),FOR UPDATE SKIP LOCKED. Жалға алусыз кезек әдепкі бойынша қосарлап жібереді. - 2ОрындауКүтуге немесе соңғы түйінге жеткенше түйіндер ретімен. Әрқайсысы қадам жазады: не шешкенін, не шығарғанын.
- 3КоммитӘсерлер мен ілгерілеу — бір транзакцияда. Бұл бүкіл амалдың сыры.
- 4ҰйқыКелесі
wake_atжазылады. Төменгі бағыттағы жолдар әлі жоқ, олардың ешқайсысы қажет те емес.
Әр контакт пен нұсқаға бір іске қосылу
Он төрт триггер
Іске қосылуды не бастай алады
Олардың кейбірі — сіздің істеріңіз. Көбі — клиентіңіздің істейтіні немесе істемейтіні — және әрекеттің болмауы да әрекеттің өзі сияқты жақсы триггер.
Олар келеді
form_submit, list_join, contact_created, tag_added және segment_enter. Сегмент — тірі предикат, сондықтан «сегментке кіреді» деген сіз айта алатын әрбір «болып қалдыны» қамтиды — үш тапсырыс, тоқсан күн тыныштық, шектен асатын шығын.
Олар бірдеңе істейді
Сайт сниппетінен page_visit, message_opened, link_clicked, booking_made және payment_made. Хабардың ашылуы өзі контакт бойынша оқиға, сондықтан бір воронка соңғы жібергеніне реакцияны күте алады.
Уақыт немесе сіз
Ығысуы бар date_field — туған күн, жаңарту, «бір жыл өтті», жеті күн бұрын немесе үш күн кейін. Қайталанатыны үшін schedule. Сіз шешкендіктен жіберетін хабарландыру үшін manual.
Сіздің өз қосымшаңыз
api_event — сіз өз кодыңыздан өз токеніңізбен жіберетін арнаулы оқиға. Сіздің өніміңіз білген кез келген нәрсе триггер болады: белсендіру, әріптісті шақыру, шектің жетуі, бас тарту, экспорттау. Дәл осы пошта құралын сіздің өніміңіздің бөлігіне айналдырады.
Қайта кіру, бір рет шешіледі
Воронка не қайта кіруге ашық, не жабық, және мұны дерекқор қадағалайды: сіз басқаша айтпасаңыз, әр контакт пен воронкаға бір іске қосылу. Бір секундта екі рет жанданған триггер кездейсоқ екі іске қосылуды бере алмайды.
Кіру шарттары
Триггер жанып, кіру сипаттамасы осы нақты контакттің жарамды екенін шешеді — есік алдындағы сегмент предикаты. Бірінші қадамдағы шарт түйінінен арзан, және ол графты «кімге рұқсат бар» туралы емес, «не болады» туралы ұстайды.

Оны он төрт нәрсе бастай алады. Келесіде он алты нәрсе болуы мүмкін.
Он алты әрекет және жеті ағын түйіні
Воронка не істей алады және қалай шешім қабылдайды
Бірдеңе жіберу
send_email, send_sms, send_push, send_letter — төрт арна, бір граф — және хабарлайтын адам сізде жұмыс істесе, notify_team.
Контактті өзгерту
add_tag, remove_tag, add_to_list, remove_from_list, set_field. Жүре бара белгілеу келесі воронканың сегментін қарапайым етеді.
Сыртқа жету
http_request — қалағаныңызға, create_payment — өз байланыстырылған шотыңызға, және book_slot — брондау ресурсына. Төлеуші сіздің қалып қояды; ешкім біздің клиент болып қалмайды.
Воронкалар арасында қозғалу
enter_funnel және exit_funnel. Бір қарсы алу тізбегін құрып, оны төрт жерден шақырыңыз, наурызға қарай ажырап кететін төрт көшірмені ұстаудың орнына.
Жіберу сәтінде жасау
ai_generate біріктіру айнымалыларын әр контакт үшін толтырады, сіздің квотаңызға есептеледі және креатив пен контакт-атрибут хэші бойынша кэштеледі — әйтпесе әр жіберуде әр алушыға төлер едіңіз.
Күту, тармақ, бөлу, біріктіру
wait ұзақтықты, күн-уақытты, апта күні мен уақытты немесе ығысуы бар күн өрісін қабылдайды. condition — иә және жоқ жауаптары бар сегмент предикаты. split — салмақтары бар A/B/n. join тармақтарды қайта біріктіреді.
goal — ең маңыздысы
Мақсат оған жеткен әрбір адам үшін реттілікті аяқтайды. Олар брондаған, сатып алған, жауап берген: реттіліктің қалған бөлігі тек солар үшін жойылады. Қайта оралған күнінен кейін ешкім «сізді сағындық» деп хат алмайды, және мұны болдырмайтын дәл осы торап.
throttle және quiet_hours
Throttle жіберілген хаттардың шоғырын реттейді, сондықтан жіберудің төмен шегі бар пошта қоржыны тоқтатылуға жетелейді. Quiet hours хабарламаны лайық уақытқа дейін ұстайды — бұл хабарлама деңгейінде қолданылады, графтың әрбір тармағына көшірілмейді.
Іске қоспас бұрын тексеріледі
Валидатор сіз үшін де, ЖИ үшін де бірдей нәрселерден бас тартады
Граф жарияланар алдында тексеріледі, және бұл тексеру кеңесшілік ғана емес. Воронканы адам салған да, модель жасаған да бірдей код жолымен тексеріледі — генерацияланған воронкалар сенімді болуының жалғыз себебі осы.
Дәл бір кіру нүктесі
Екі кіру торабы — ешкім байқамайтын екіұштылық, тізімнің қате жартысы басқа реттілікке түскенше.
Әрбір торап жетімді
Жетім қалған тармақ — не қате, не сіз жіберілді деп ойлаған, бірақ жіберілмеген хабарлама. Екеуі де туралы айтылуға тұрарлық.
Циклда күту болуы керек
Ішінде күтуі жоқ цикл — ортасында жіберісі бар шексіз цикл. Бұл ереже воронка мен оқыс жағдайдың айырмашылығы.
Әрбір жіберудің өз креативі бар
Креативі мен тақырыбы жоқ send_email торабы жарияланбайды. Дұрыс тақырыбы бар, бірақ денесі бос хабарлама — нақты сәтсіздік жағдайы; осында қабылданбайды.
Әрбір айнымалы белгілі
Біріктіру айнымалылары жариялау кезінде тексеріледі. {{frist_name}} — түзету кезінде көретін қате теру, ал «Сәлеметсіз бе ,» деп қырық мың пошта қоржынына келетін хабарлама емес.
Сосын модельдеңіз
Нақты контактіні бүкіл граф арқылы сынақтан өткізіп, алынған жолды және жіберілетін әрбір хабарламаны күнімен қоса оқып шығыңыз. Ештеңе сыртқа шықпайды.
Күрделі жағдайлар
Наивтық қозғалтқышты бұзатын жеті нәрсе
Осының әрқайсысының артында анық сағаты бар тест тұр, себебі олардың әрқайсысы шындыққа кездескенше мінсіз дұрыс көрінетін іске асыруды бұзады.
- 1Өзіне цикл жасайтын воронкаЗаңды, жиі кездесетін және мәселесіз — циклда күту болған жағдайда ғана, оны валидатор талап етеді.
- 2Біреу жол үстінде жазылудан бас тартадыБас тарту жіберер алдында, кезекке қойғанда емес, тексеріледі. Кезекте тексеру күту кезінде кеткен адамдарға да хат жібереді.
- 3Воронка он мың адам ішінде түзетіледіОлар кірген нұсқасымен соңына дейін жүре береді. Жаңадан кірушілер жаңасымен жүреді.
- 4Бір триггер бір секундта екі рет іске қосыладыБір рет, себебі бірегейлік — тексеруден кейінгі қосу емес, индекс.
- 5Контакт рет істеп тұрғанда жойыладыРет аяқталады. Біреуге әлі бағытталған реттілікті қалдыратын жою — жою емес.
- 6Күту жаз уақытының өзгерісіне қиылысады«Таңғы сағат тоғызда үш күн» — сағат өзгерісінің екі жағында да таңғы сағат тоғыз деген сөз.
- 7Жіберіс пен алға жылжудың арасында жұмысшы өлтіріледіӘсерлер мен алға жылжу — бір транзакция. Не екеуі де орын алды, не ешқайсысы.
Анықталатын сағатӘр тест лайықты жүзеге асыруды бұзады
Науқандар — екінші жартысы
Воронка реакция жасайды. Науқан — бір реттік хабар тарату: аудитория, кесте, шектеу және жіберу. Бұл басқа пішіндегі нәрсе және ол бір түйінді воронка деп көрсетпеу үшін саналы түрде бөлек ұсталады.
Екі ереже оны қауіпсіз етеді. Аудитория бір рет материалдандырылады және екі рет жүргізілуден бас тартады — қайта анықтау жіберу басталғаннан кейін қосылғандардың барлығын үнсіз қосып алуы мүмкін еді, ал дедупликация индексі жасалған қайталанбаларды болдырмау арқылы оны жасырып қояды. Және санағыштар жеткізу оқиғаларынан қайта есептеледі, орнында арттырылмайды, сондықтан қайталанған webhook есепті ұлғайта алмайды.
Қайсысын қолдану керек: егер ол адамның істеген нәрсесіне байланысты болса, бұл воронка. Егер ол сіздің сейсенбі күні қабылдаған шешіміңізге байланысты болса, бұл науқан. Маркетингтік автоматтандырудың біршама бөлігі екіншісін біріншісінің пішініне күштеп салу арқылы қате кетеді.