clickSomo

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.

Vienas darbuotojo ciklasVykdimas
  • 1Nuomawake_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.

Su kuo variklis testuojamasPaneigimas
  • 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ą.