Piltuvėliai ir trigeriai
Piltuvėlis yra grafas. Vykdymas yra eilutė. Laukimas yra laikas.
Tai visas modelis, ir kiekviena šio produkto sudėtinga savybė kyla iš tų trijų sakinių. Gyvo piltuvėlio redagavimas yra saugus dėl jų. Pakartotinė bandymo operacija negali išsiųsti dvigubai dėl jų. Žmogus, atsisakęs antradienį, ketvirtadienį negirdi nieko dėl jų.
Kas iš tiesų vyksta, kai tai paleidžiama
Paskelbus konversijų piltuvėlį, sukurama nekintama versija. Kažkas įeina, ir atsiranda eilutė: vienas vykdymas, šiam kontaktui, pririštas prie tos versijos, su dabartiniu mazgu, pažadinimo laiku ir savu kontekstu.
Darbuotojas išsinuomoja vykdymus, kurių pažadinimo laikas jau praėjo, ir užima juos su SKIP LOCKED, kad du darbuotojai negalėtų paimti to paties. Jis vykdo mazgus, kol pasiekia laukimą arba terminalą, tada įrašo kitą pažadinimo laiką ir paleidžia.
Mazgas yra grynasis vykdymo, kontakto ir mazgo funkcija — ir jo poveikis įvykdomas toje pačioje transakcijoje kaip ir pats vykdymo žingsnis. Būtent ši viena savybė daro pakartotinį bandymą saugiu. Darbuotojas, nutrauktas per tą pusę sekundės tarp „siuntimo“ ir „žingsnio“, palieka arba abu, arba nei vieno — niekada tik vieną.
Ir kadangi laiką pateikia programa, o ne duomenų bazė, dabar įrašyta eilutė yra dabar ir laukianti. Planavimo stulpelis, pagal nutylėjimą naudojantis duomenų bazės laikrodžiu, įrašymo akimirką dar nėra laukiantis ir praleidžia būtent tą ciklą, kuris jį sukūrė — klaida, atrodanti kaip niekas, kol laiškas pavėluoja valandai.
- 1Nuoma
wake_at <= now(),FOR UPDATE SKIP LOCKED. Eilė be nuomos pagal nutylėjimą siunčia dukart. - 2VykdytiMazgus eiliškumu, kol laukimas arba terminalas. Kiekvienas įrašo žingsnį: ką nusprendė, ką išdavė.
- 3PataisaPoveikis ir žingsnis — viena transakcija. Visa tai yra šis triukas.
- 4MiegaĮrašytas kitas
wake_at. Žemyn einančių eilučių dar nėra, ir jų nereikia.
Vienas vykdymas kontaktui vienoje versijoje
Keturiolika trigerių
Kas gali paleisti vykdymą
Kai kurie iš jų yra tai, ką darote Jūs. Dauguma — tai, ką daro arba nedaro Jūsų klientas, ir veiksmo nebuvimas yra toks pat geras trigeris kaip ir pats veiksmas.
Jie atvyksta
form_submit, list_join, contact_created, tag_added ir segment_enter. Segmentas yra gyvas predikatas, todėl „įeina į segmentą“ apima kiekvieną išreiškiamą „tapo“ — trys užsakymai, devyniasdešimt dienų tylos, išleidžia virš ribos.
Jie kažką daro
page_visit iš svetainės fragmento, message_opened, link_clicked, booking_made ir payment_made. Laiško atvėrimas pats savaime yra kontakto įvykis, todėl vienas piltuvėlis gali laukti reakcijos į tai, ką paskutinį kartą išsiuntė.
Laikas, arba Jūs
date_field su poslinkiu — gimtadienis, atnaujinimas, „metai nuo tada“, septynios dienos iki arba trys po. schedule pasikartojančiam. manual skelbimui, kurį siunčiate, nes taip nusprendėte.
Jūsų pati programa
api_event yra pasirinktinis įvykis, kurį skelbiate iš savo kodo su savo prieigos raktu. Viskas, ką žino Jūsų produktas, tampa trigeriu: suaktyvino, pakvietė kolegą, pasiekė ribą, atšaukė, eksportavo. Būtent tai paverčia laiškų įrankiu Jūsų produkto dalimi.
Pakartotinis įėjimas, nuspręstas kartą
Piltuvėlis arba leidžia pakartotinį įėjimą, arba ne, ir duomenų bazė tai užtikrina: vienas vykdymas kontaktui viename piltuvėlyje, nebent nurodėte kitaip. Tas pats trigeris, suveikęs du kartus per tą pačią sekundę, atsitiktinai negali sukurti dviejų vykdymų.
Įėjimo sąlygos
Trigeris suveikia, ir įėjimo specifikacija nusprendžia, ar šis konkretus kontaktas yra tinkamas — segmento predikatas priešais duris. Pigiau nei sąlygos mazgas pirmame žingsnyje, ir tai leidžia grafui kalbėti apie tai, kas vyksta, o ne apie tai, kam leidžiama įeiti.

Keturiolika dalykų gali jį paleisti. Šešiolika dalykų gali įvykti toliau.
Šešiolika veiksmų ir septyni srauto mazgai
Ką piltuvėlis gali padaryti ir kaip jis sprendžia
Išsiųsti kažką
send_email, send_sms, send_push, send_letter — keturi kanalai, vienas grafas — plus notify_team, kai tas, kurį reikia informuoti, dirba pas Jus.
Pakeisti kontaktą
add_tag, remove_tag, add_to_list, remove_from_list, set_field. Žymėjimas einant yra tai, kas padaro kito piltuvėlio segmentą paprastą.
Pasiekti už ribų
http_request į bet ką, ko norite, create_payment prie savo prijungtos sąskaitos, ir book_slot prie rezervacijos ištekliaus. Mokėtojas lieka Jūsų; niekas netampa mūsų klientu.
Judėti tarp piltuvėlių
enter_funnel ir exit_funnel. Sukurkite vieną pasveikinimo seką ir kvieskite ją iš keturių vietų, o ne prižiūrėkite keturias kopijas, kurios iki kovo išsiskirs.
Generuoti siuntimo metu
ai_generate užpildo sujungimo kintamuosius kiekvienam kontaktui, skaičiuojama į Jūsų kvotą ir saugoma podėlyje pagal kūrybos ir kontakto atributo maišą — kitu atveju mokėtumėte už kiekvieną gavėją kiekvieno siuntimo metu.
Laukti, šaka, padalijimas, sujungimas
wait priima trukmę, datą ir laiką, savaitės dieną su laiku arba datos lauką su poslinkiu. condition yra segmento predikatas su „taip“ ir „ne“. split yra A/B/n su svoriais. join vėl sujungia šakas.
goal — tas, kuris svarbiausia
Tikslas nutraukia sekimą kiekvienam, kuris jį pasiekia. Jie užsisakė, nusipirko, atsakė: likusi seka jiems asmeniškai atšaukiama. Niekas negaus „ilgamės“ žinutės kitą dieną po to, kai sugrįžo, ir būtent šis mazgas to apsaugo.
throttle ir quiet_hours
Throttle riboja siuntimų srautą, kad pašto dėžutė su žemu dažnio limitu nebūtų užtvindyta iki sustabdymo. Ramios valandos laiko žinutę iki tinkamo laiko — taikoma žinutės lygiu, o ne kopijuojama į kiekvieną grafiko šaką.
Patikrinama prieš paleidžiant
Tikrintuvas Jums ir dirbtiniam intelektui atmeta tuos pačius dalykus
Grafikas patikrinamas prieš jį publikuojant, o patikra nėra tik patarimas. Tai tas pats kodo kelias, nesvarbu, ar piltuvėlį nubrėžė žmogus, ar sugeneravo modelis — tik dėl to sugeneruoti piltuvėliai iš viso gali būti patikimi.
Lygiai vienas įėjimas
Du įėjimo mazgai yra dviprasmybė, kurios niekas nepastebi, kol netinkama sąrašo pusė negauna netinkamos sekos.
Kiekvienas mazgas pasiekiamas
Paliktas be ryšio šaka yra arba klaida, arba žinutė, kurią manote siunčiant, bet iš tikrųjų nesiunčiama. Abiem atvejais verta apie tai sužinoti.
Cikle turi būti laukimas
Ciklas be laukimo yra begalinis ciklas su siuntimu viduryje. Ši taisyklė skiria piltuvėlį nuo incidento.
Kiekvienas siuntimas turi savo kūrybą
send_email mazgas be kūrybos ir temos negali būti publikuojamas. Žinutė su teisinga tema ir tuščiu turiniu yra reali klaida; ji čia atmetama.
Kiekvienas kintamasis žinomas
Sujungimo kintamieji tikrinami publikuojant. {{frist_name}} yra rašybos klaida, kurią matote redaguodami, o ne „Sveiki ,“ atkeliaujantis į keturiasdešimt tūkstančių gautųjų.
Tada imituokite
Atlikite bandomąjį realaus kontakto praėjimą per visą grafiką ir perskaitykite nueitą kelią bei kiekvieną žinutę, kuri būtų išsiųsta, su jos diena. Niekas neišeina į išorę.
Nepatogūs atvejai
Septyni dalykai, kurie sugriauna naivų variklį
Kiekvienas iš jų yra testas su deterministiniu laikrodžiu, nes kiekvienas sugriauna įgyvendinimą, kuris atrodo visiškai teisingas, kol nesutinka realybės.
- 1Piltuvėlis, kuris susuka į saveLegitimu, dažnas ir tinkamas — su sąlyga, kad cikle yra laukimas, kurio reikalauja tikrintuvas.
- 2Kažkas atsisako prenumeratos kelyjeAtsisakymų sąrašas tikrinamas siuntimo metu, o ne įtraukiant į eilę. Tikrinant įtraukimo metu laiškai išsiunčiami tiems, kurie paliko per laukimą.
- 3Piltuvėlis redaguojamas, kai jame yra dešimt tūkstančių žmoniųJie toliau eina versiją, į kurią įėjo, iki galo. Nauji dalyviai eina naująją.
- 4Tas pats trigeris suveikia du kartus per vieną sekundęVienas paleidimas, nes unikalumas yra indeksas, o ne patikra po kurios seka įterpimas.
- 5Kontaktas ištrinamas paleidimo metuPaleidimas baigiasi. Ištrynimas, po kurio seka vis dar adresuota kam nors, nėra ištrynimas.
- 6Laukimas kerta laiko keitimą (vasaros/žiemos laikas)„Trys dienos devintą ryto“ reiškia devintą ryto abiejose laikrodžio keitimo pusėse.
- 7Darbuotojas nutraukiamas tarp siuntimo ir pažangosPoveikis ir pažanga yra viena operacija. Arba abiejų įvyko, arba nė vieno.
Deterministinis laikrodisKiekvienas testas suardo įtikinamą implementaciją
Kampanijos yra kita pusė
Piltuvas reaguoja. Kampanija yra vienkartinis transliavimas: auditorija, tvarkaraštis, ribojimas ir išsiuntimas. Tai kitokios formos dalykas ir sąmoningai laikomas atskirai, o ne apsimetama, kad tai piltuvas su vienu mazgu.
Dvi taisyklės tai daro saugiu. Auditorija suformuojama vieną kartą ir atsisako vykdyti antrą kartą — pakartotinis jos išnaujinimas tyliai pridėtų visus, kurie prisijungė nuo išsiuntimo pradžios, o dubliavimo šalinimo indeksas tai paslėptų, neleisdamas dublių, kuriuos pats sukūrė. Ir skaitikliai yra perskaičiuojami iš pristatymo įvykių, niekada nedidinami vietoje, todėl pakartotas žiniatinklio kabliukas (webhook) negali išpūsti ataskaitos.
Ką naudoti: jei tai įvyksta dėl žmogaus veiksmo, tai piltuvas. Jei tai įvyksta dėl to, ką antradienį nusprendėte Jūs, tai kampanija. Stebėtina daug rinkodaros automatizacijos sugenda priversdama antrąjį įgyti pirmojo formą.