Piltuves un trigeri
Piltuve ir grafs. Izpilde ir rinda. Gaidīšana ir laiks.
Tā ir visa modeļa būtība, un katra sarežģītā īpašība, ko šim produktam piemīt, izriet no šiem trim teikumiem. Tieši pateicoties tiem, dzīvas piltuves rediģēšana ir droša. Tieši pateicoties tiem, atkārtots mēģinājums nevar nosūtīt divreiz. Tieši pateicoties tiem, cilvēks, kas atteicās no abonementa otrdienā, ceturtdienā nedzird neko.
Kas patiesībā notiek, kad tas darbojas
Publicējot piltuvi, tiek ierakstīta nemainīga versija. Kāds ienāk, un parādās rinda: viena izpilde šim kontaktam, piesaistīta šai versijai, kurā saglabāts pašreizējais mezgls, mostošanās laiks un tās pašs konteksts.
Darbinieks iznomā izpildes, kuru mostošanās laiks ir iestājies, piesaistot tās ar SKIP LOCKED, lai divi darbinieki nevarētu paņemt vienu un to pašu. Tas izpilda mezglus, līdz sasniedz gaidīšanu vai beigu mezglu, tad ieraksta nākamo mostošanās laiku un atbrīvo izpildi.
Mezgls ir tīra funkcija no izpildes, kontakta un mezgla — un tā sekas tiek fiksētas vienā transakcijā ar pašas izpildes virzību uz priekšu. Tieši šī vienīgā īpašība padara atkārtotu mēģinājumu drošu. Darbinieks, kas tiek nogalināts pussekundē starp "nosūtīt" un "virzīt", atstāj vai nu abas darbības, vai nevienu — nekad tikai vienu.
Un tā kā laiku piegādā lietotne, nevis datubāze, rinda, kas ierakstīta tagad, ir izpildāma tagad. Plānošanas kolonna, kas pēc noklusējuma izmanto datubāzes pulksteni, ierakstīšanas brīdī vēl nav izpildāma un palaiž garām tieši to ciklu, kas to izveidoja — kļūda, kas neizskatās pēc nekā, līdz ziņa nokavējas par stundu.
- 1Iznomāšana
wake_at <= now(),FOR UPDATE SKIP LOCKED. Rinda bez iznomāšanas pēc noklusējuma sūta dubultoti. - 2IzpildeMezgli secībā, līdz gaidīšanai vai beigu mezglam. Katrs ieraksta soli: ko tas nolēma, ko tas izsniedza.
- 3IesniegumsSekas un virzība — vienā transakcijā. Šī ir visa trika būtība.
- 4Miega režīmsNākamais
wake_atierakstīts. Vēl nepastāv neviena lejupējā rinda, un neviena nav vajadzīga.
Viena izpilde kontaktam vienā versijā
Četrpadsmit trigeri
Kas var uzsākt izpildi
Daļa no šiem ir lietas, ko darāt Jūs. Lielākā daļa ir lietas, ko Jūsu klients dara vai nedara — un darbības neesamība ir tikpat labs trigeris kā pati darbība.
Viņi ierodas
form_submit, list_join, contact_created, tag_added un segment_enter. Segments ir dzīvs predikāts, tāpēc "iekļūst segmentā" aptver katru "ir kļuvis", ko var izteikt — trīs pasūtījumi, deviņdesmit dienu klusums, izdevumi virs sliekšņa.
Viņi kaut ko dara
page_visit no vietnes fragmenta, message_opened, link_clicked, booking_made un payment_made. Vēstules atvēršana pati par sevi ir notikums kontaktam, tāpēc viena piltuve var gaidīt reakciju uz pēdējo nosūtīto.
Laiks, vai Jūs
date_field ar nobīdi — dzimšanas diena, atjaunošana, "gads kopš", septiņas dienas pirms vai trīs dienas pēc. schedule atkārtojošajam. manual paziņojumam, ko sūtāt, jo tā nolēmāt.
Jūsu patiess lietotne
api_event ir pielāgots notikums, ko publicat no sava koda ar savu tokenu. Viss, ko Jūsu produkts zina, kļūst par trigeri: aktivizēts, uzaicinājis kolēģi, sasniedza limitu, atcēla, eksportēja. Tieši šis pārvērš sūtīšanas rīku par Jūsu produkta daļu.
Atkārtota ieeja, izlemta vienreiz
Piltuve vai nu pieļauj atkārtotu ieeju, vai ne, un datubāze to nodrošina: viena izpilde kontaktam vienā piltuvē, ja vien neesat teicis citādi. Tas pats trigers, kas iedarbojas divas reizes vienā sekundē, nevar nejauši radīt divas izpildes.
Ieejas nosacījumi
Trigers iedarbojas, un ieejas specifikācija izlemj, vai šis konkrētais kontakts ir piemērots — segmenta predikāts pirms durvīm. Lētāk nekā nosacījuma mezgls pirmajā solī, un tas ļauj grafam būt par to, kas notiek, nevis par to, kam ir atļauts iekļūt.

Četrpadsmit lietas var to uzsākt. Sešpadsmit lietas var notikt tālāk.
Sešpadsmit darbības un septiņi plūsmas mezgli
Ko piltuve var darīt un kā tā izlemj
Nosūtīt kaut ko
send_email, send_sms, send_push, send_letter — četri kanāli, viens grafs — plus notify_team, kad cilvēks, kas jāinformē, strādā pie Jums.
Mainīt kontaktu
add_tag, remove_tag, add_to_list, remove_from_list, set_field. Atzīmēšana ceļā ir tas, kas padara nākamās piltuves segmentu vienkāršu.
Sasniegt ārpusi
http_request uz jebko, ko vēlaties, create_payment pret savu pieslēgto kontu un book_slot pret rezervācijas resursu. Maksātājs paliek Jūsu; neviens nekļūst par mūsu klientu.
Pārvietoties starp piltuvēm
enter_funnel un exit_funnel. Izveidojiet vienu sveiciena secību un izsauciet to no četrām vietām, nevis uzturiet četras kopijas, kas līdz martam jau ir atšķirušās.
Ģenerēt nosūtīšanas brīdī
ai_generate aizpilda apvienošanas mainīgos katrai kontaktpersonai, rēķinot to pret Jūsu kvotu un kešojot pēc radošā materiāla un kontaktpersonas atribūta heša — citādi Jūs maksātu par katru saņēmēju pie katra nosūtījuma.
Gaidīt, zarošana, sadalīšana, savienošana
wait pieņem ilgumu, datumu un laiku, nedēļas dienu un laiku, vai datuma lauku ar nobīdi. condition ir segmenta predikāts ar atbildi “jā” vai “nē”. split ir A/B/n ar svariem. join atkal savieno zarus kopā.
goal — tas, kas patiešām ir svarīgi
Mērķis beidz izpildi ikvienam, kas to sasniedz. Viņi rezervēja, viņi nopirka, viņi atbildēja: pārējā secība tiek atcelta tieši viņiem. Neviens nesaņem “mums pietrūkāt” dienu pēc atgriešanās, un tieši šis mezgls to novērš.
throttle un quiet_hours
Throttle ierobežo izsūtīšanas ātrumu, lai pastkaste ar zemu apjomu ierobežojumu netiktu pārslogota līdz bloķēšanai. Klusās stundas notur vēstījumu līdz pieklājīgam laikam — tas tiek piemērots vēstījuma līmenī, nevis iekopēts katrā grafika zarā.
Pārbaudīts pirms palaišanas
Validētājs Jums un mākslīgajam intelektam atteic vienus un tos pašus gadījumus
Grafiks tiek pārbaudīts pirms publicēšanas, un šī pārbaude nav tikai ieteikums. Tā ir viena un tā pati koda ceļa izpilde neatkarīgi no tā, vai funnels ir uzzīmējis cilvēks vai ģenerējis modelis — tieši tāpēc ģenerētie funnels vispār ir uzticami.
Tikai viens ieejas punkts
Divi ieejas mezgli ir neskaidrība, ko neviens nepamana, līdz nepareizā saraksta puse saņem nepareizo secību.
Katrs mezgls ir sasniedzams
Atstāts novārtā zars ir vai nu kļūda, vai vēstījums, par kuru Jūs domājat, ka tas aiziet, bet patiesībā neaiziet. Abos gadījumos ir vērts to uzzināt.
Ciklam jāsatur gaidīšana
Cikls bez gaidīšanas ir bezgalīgs cikls ar nosūtīšanu pa vidu. Šī noteikuma dēļ atšķiras funnels un incidenta izsaukums.
Katram nosūtījumam ir radošais materiāls
send_email mezglu bez radošā materiāla un tēmas nevar publicēt. Vēstījums ar pareizu tēmu un tukšu pamattekstu ir reāls kļūmes scenārijs; šeit tas tiek atteikts.
Katrs mainīgais ir zināms
Apvienošanas mainīgie tiek validēti publicēšanas brīdī. {{frist_name}} ir drukas kļūda, ko redzat labošanas laikā, nevis “Sveiki ,” četrdesmit tūkstošos iesūtnēs.
Pēc tam to simulējiet
Veiciet testa izpildi ar īstu kontaktpersonu caur visu grafiku un apskatiet izvēlēto ceļu un katru vēstījumu, kas tiktu nosūtīts, ar tā dienu. Nekas neaiziet ārā.
Nevienkāršie gadījumi
Septiņas lietas, kas sagrauj naivu dzini
Katrai no tām ir tests ar deterministisku pulksteni, jo katra sagrauj implementāciju, kas izskatās pilnīgi korekta, līdz tā sastopas ar realitāti.
- 1Funnels, kas cilpā atgriežas pats uz seviLeģitīmi, izplatīti un pieņemami — ja vien cikls satur gaidīšanu, ko validētājs pieprasa.
- 2Kāds abonēšanu atceļ izpildes laikāAizliegumu saraksts tiek pārbaudīts nosūtīšanas brīdī, nevis ievietošanas rindā brīdī. Pārbaude rindā nozīmētu, ka vēstules saņem tie, kas aizgājuši gaidīšanas laikā.
- 3Funnels tiek labots, kad tajā ir desmit tūkstoši cilvēkuViņi turpina iet pa versiju, ar kuru iestājās, līdz galam. Jaunie dalībnieki iet pa jauno.
- 4Viens un tas pats trigeris iedarbojas divas reizes vienā sekundēViena izpilde, jo unikalitāte ir indekss, nevis pārbaude, kam seko ievietošana.
- 5Kontaktpersona tiek dzēsta izpildes laikāIzpilde beidzas. Dzēšana, pēc kuras secība joprojām ir adresēta kādam, nav dzēšana.
- 6Gaidīšana sniedzas pāri vasaras laika pārejai"Trīs dienas plkst. 9 no rīta" nozīmē deviņus no rīta abās pulksteņa maiņas pusēs.
- 7Darbinieks tiek nogalināts starp nosūtīšanu un apstiprinājumuIetekme un apstiprinājums ir viena transakcija. Vai nu abi notika, vai arī neviens.
Deterministisks pulkstenisKatrs tests sagrauj ticamu implementāciju
Kampanijas ir otra puse
Piltuves reaģē. Kampanija ir vienreizēja pārraidīšana: auditorija, grafiks, ierobežojums un nosūtīšana. Tā ir cita veida lieta, un tā apzināti tiek turēta atsevišķi, nevis tiek uzdoti kā piltuve ar vienu mezglu.
Divi noteikumi padara to drošu. Auditorija tiek materializēta vienreiz un atsakās darboties divreiz — atkārtota izšķiršana klusi pievienotu visus, kas pievienojās pēc nosūtīšanas sākuma, un deduplikācijas indekss to paslēptu, novēršot dublikātus, ko pats izveidoja. Un skaitītāji tiek pārrēķināti no piegādes notikumiem, nevis palielināti uz vietas, tāpēc atkārtots tīmekļa āķis nevar uzbriest pārskatā.
Ko izmantot: ja tas notiek personas darbības dēļ, tā ir piltuve. Ja tas notiek tāpēc, ka Jūs to izlēmāt otrdienā, tā ir kampanija. Pārsteidzoši daudz mārketinga automatizācijas sabojājas, piespiežot otro pieņemt pirmā formu.