Funeli & aktivizuesit
Një funel është një graf. Një ekzekutim është një rresht. Një pritje është një kohë.
Ky është i gjithë modeli, dhe çdo veçori e vështirë e këtij produkti del nga këto tri fjali. Përpunimi i një funeli aktiv është i sigurt falë tyre. Një riprovim nuk mund të dërgojë dy herë falë tyre. Një person që çregjistrohet të martën nuk dëgjon asgjë të enjten falë tyre.
Çfarë ndodh në të vërtetë kur ekzekutohet
Publikimi i një funeli shkruan një version të pandryshueshëm. Dikush hyn, dhe shfaqet një rresht: një ekzekutim, për këtë kontakt, i fiksuar në atë version, që mban nyjen aktuale, një kohë zgjimi dhe kontekstin e vet.
Një punonjës me qira merr ekzekutimet whose kohë zgjimi ka kaluar, duke i marrë me SKIP LOCKED në mënyrë që dy punonjës të mos marrin të njëjtin. Ekzekuton nyjet derisa arrin një pritje ose një fund, pastaj shkruan kohën e ardhshme të zgjimit dhe e lëshon.
Një nyje është funksion i pastër i ekzekutimit, kontaktit dhe nyjes — dhe efektet e saj përfundojnë në të njëjtin transaksion me përparimin e vetë ekzekutimit. Kjo veti e vetme është ajo që e bën një riprovim të sigurt. Një punonjës i vrarë në gjysmësekondën mes "dërgo" dhe "përparo" lë ose të dyja ose asnjërën, kurrë vetëm njërën.
Dhe meqë aplikacioni jep kohën në vend të bazës së të dhënave, një rresht i shkruar tani është për t'u ekzekutuar tani. Një kolonë planifikimi që merr orën e bazës së të dhënave si parazgjedhje nuk është ende për ekzekutim në çastin e shkrimit, dhe e humb vetë tikun që e krijoi — një gabim që duket si asgjë derisa një mesazh të vonesohet një orë.
- 1Marrja me qira
wake_at <= now(),FOR UPDATE SKIP LOCKED. Një radhë pa qira dërgon dy herë si parazgjedhje. - 2EkzekutimiNyjet në rend derisa një pritje ose një fund. Secila shkruan një hap: çfarë vendosi, çfarë dha.
- 3DorëzoniEfektet dhe përparimi, një transaksion. Kjo është gjithë truku.
- 4Gjumë
wake_ati ardhshëm i shkruar. Nuk ka ende rreshta pasues, dhe asnjë nuk duhet.
Një ekzekutim për kontakt për version
Katërmbëdhjetë aktivizues
Çfarë mund të nisë një ekzekutim
Disa prej tyre janë gjëra që ju bëni. Shumica janë gjëra që bën — ose nuk bën — klienti juaj, dhe mungesa e një veprimi është aktivizues po aq i mirë sa vetë veprimi.
Ata mbërrijnë
form_submit, list_join, contact_created, tag_added dhe segment_enter. Një segment është predikat i gjallë, kështu "hyn në segment" mbulon çdo "është bërë" që mund të shprehni — tri porosi, nëntëdhjetë ditë heshtje, shpenzime mbi një prag.
Ata bëjnë diçka
page_visit nga copëza e faqes, message_opened, link_clicked, booking_made dhe payment_made. Hapja e një mesazhi është vetë një ngjarje mbi kontaktin, kështu një funel mund të presë për një reagim ndaj sendit të fundit që dërgoi.
Koha, ose ju
date_field me një ofset — një ditëlindje, një rinovim, "një vit që atëherë", shtatë ditë para ose tri ditë pas. schedule për atë periodik. manual për njoftimin që dërgoni sepse vendosët vetë.
Aplikacioni juaj
api_event është një ngjarje e personalizuar që postoni nga kodi juaj me token-in tuaj. Çdo gjë që produkti juaj di bëhet aktivizues: aktivizuar, ftoi një koleg, e goditi kufirin, anuloi, eksportoi. Kjo është ajo që e kthen një mjet postimesh në pjesë të produktit tuaj.
Rihyrja, e vendosur një herë
Një funel ose lejon rihyrjen ose jo, dhe baza e të dhënave e zbaton: një ekzekutim për kontakt për funel nëse nuk e keni thënë ndryshe. I njëjti aktivizues që shfaqet dy herë në të njëjtën sekondë nuk mund të prodhojë dy ekzekutime rastësisht.
Kushtet e hyrjes
Një aktivizues shfaqet dhe specifikimi i hyrjes vendos nëse ky kontakt i caktuar është i përshtatshëm — një predikat segmenti para derës. Më lirë se një nyje kushti në hapin e parë, dhe e mban grafikun për atë që ndodh, jo për atë që lejohet të hyjë.

Katërmbëdhjetë gjëra mund ta nisin. Gjashtëmbëdhjetë gjëra mund të ndodhin më pas.
Gjashtëmbëdhjetë veprime dhe shtatë nyje rrjedhje
Çfarë mund të bëjë një funel, dhe si vendos
Dërgo diçka
send_email, send_sms, send_push, send_letter — katër kanale, një graf — plus notify_team kur personi që duhet njoftuar punon për ju.
Ndrysho kontaktin
add_tag, remove_tag, add_to_list, remove_from_list, set_field. Të shënuarit e dikujt gjatë rrugës është ajo që e bën segmentin e funelit të ardhshëm të thjeshtë.
Arrij jashtë
http_request ndaj çfarëdo që dëshironi, create_payment ndaj llogarisë tuaj të lidhur, dhe book_slot ndaj një burimi rezervimi. Paguajtësi mbetet juaji; askush nuk bëhet klienti ynë.
Kalo midis funeleve
enter_funnel dhe exit_funnel. Ndërtoni një sekuencë mirëseardhjeje dhe thirreni nga katër vende, në vend që të mirëmbani katër kopje që ndahen deri në mars.
Gjenero në momentin e dërgimit
ai_generate mbush variablat e bashkimit për çdo kontakt, e matur kundrejt kuotës suaj dhe e ruajtur në cache sipas hash-it të krijueshmërisë dhe atributeve të kontaktit — përndryshe do të paguanit për çdo marrës në çdo dërgim të vetëm.
Prit, degëzo, ndaj, bashko
wait merr një kohëzgjatje, një datë-orë, një ditë të javës me orë, ose një fushë date me një ofset. condition është një predikat segmenti me një po dhe një jo. split është A/B/n me pesha. join i ribashkon degët.
goal — ai që ka rëndësi
Një qëllim i jep fund ekzekutimit për këdo që e arrin. Rezervuan, blenë, përgjigjen: pjesa tjetër e sekuencës u anulohet konkretisht atyre. Askush nuk merr "ju mungoni" ditën pasi u rikthye, dhe kjo është nyja që e pengon.
throttle dhe quiet_hours
Throttle rregullon shpejtësinë e një shpërthimi që një kuti postare me kufi të ulët shpejtësie të mos goditet deri në pezullim. Orët e qeta mbajnë një mesazh deri në një orar të përshtatshëm — zbatohen në shtresën e mesazhit, jo të kopjohen në çdo degë të grafik.
Kontrollohet përpara se të mund të ekzekutohet
Vlerësuesi refuzon të njëjtat gjëra për ju dhe për AI-në
Një grafik kontrollohet përpara se të mund të publikohet, dhe kontrolli nuk është thjesht këshillë. Është i njëjti kod pavarësisht nëse funelin e vizatoi një person apo e gjeneroi një model, dhe kjo është arsyeja e vetme pse funelet e gjeneruara janë të besueshme.
Saktësisht një hyrje
Dy nyje hyrjeje janë një paqartësi që askush nuk e vëren derisa gjysma e gabuar e një liste të marrë sekuencën e gabuar.
Çdo nyje e arritshme
Një degë e braktisur është ose një gabim, ose një mesazh që ju mendoni se po dërgohet dhe nuk po dërgohet. Të dyja ia vlen t'ju njoftohen.
Çdo cikël duhet të përmbajë një pritje
Një lak pa pritje brenda është një lak i pafund me një dërgim në mes. Kjo rregullë është diferenca midis një funeli dhe një incidenti.
Çdo dërgim ka krijueshmërinë e vet
Një nyje send_email pa krijueshmëri dhe pa subjekt nuk mund të publikohet. Mesazhi me subjektin e duhur dhe trup bosh është një mënyrë reale dështimi; refuzohet këtu.
Çdo variabël është e njohur
Variablat e bashkimit vlerësohen në publikim. {{frist_name}} është një gabim shkrimi që e shihni gjatë redaktimit, jo një "Përshëndetje ," që mbërrijnë në dyzet mijë kuti postare.
Pastaj simulojeni
Ekzekutoni një kontakt real në provë përmes gjithë grafikut dhe lexoni rrugën e ndjekur dhe çdo mesazh që do të dërgohej, me ditën e tij. Asgjë nuk del jashtë.
Rastet e vështira
Shtatë gjëra që prishin një motor të thjeshtë
Secila prej tyre është një test me një orë deterministe pas, sepse secila prish një zbatim që duket plotësisht i saktë derisa përballet me realitetin.
- 1Një funel që lakohet në vetveteLegjitim, i zakonshëm dhe në rregull — me kusht që cikli të përmbajë një pritje, gjëra që vlerësuesi e kërkon.
- 2Dikush çregjistrohet gjatë rrugësFshirja nga dërgimi kontrollohet në momentin e dërgimit, jo në radhësim. Kontrollimi në radhësim u dërgon postë njerëzve që u larguan gjatë pritjes.
- 3Funeli redaktohet me dhjetë mijë njerëz brendaAta vazhdojnë të ecin në versionin ku hynë, deri në fund. Të rinjtë e ecin atë të riun.
- 4I njëjti shkas aktivizohet dy herë brenda një sekondeNjë ekzekutim i vetëm, sepse unikaliteti është një indeks dhe jo një kontroll i ndjekur nga një futje.
- 5Një kontakt fshihet gjatë ekzekutimitEkzekutimi përfundon. Një fshirje që lë një sekuencë ende të drejtuar ndaj dikujt nuk është fshirje.
- 6Një pritje përfshin një ndryshim të orës ligjore"Tre ditë në orën nëntë të mëngjesit" do të thotë ora nëntë e mëngjesit në të dyja anët e ndryshimit të orës.
- 7Një worker vritet midis dërgimit dhe përparimitEfektet dhe përparimi janë një transaksion i vetëm. Ose ndodhën të dyja, ose asnjëra.
Ora deterministeÇdo test thyen një zbatim të besueshëm
Kampanjat janë gjysma tjetër
Një funnel reagon. Një kampanjë është transmetimi i vetëm: një audiencë, një orar, një kufi dërgimi dhe një dërgesë. Është një gjëme me formë të ndryshme dhe mbahet qëllimisht e veçantë, në vend që të paraqitet si një funnel me një nyje.
Dy rregulla e bëjnë të sigurt. Një audiencë materializohet vetëm një herë dhe refuzon të ekzekutohet dy herë — ripërcaktimi do të shtonte në heshtje të gjithë ata që janë bashkuar që nga fillimi i dërgesës, dhe indeksi i deduplikimit do ta fshehte këtë duke penguar dublikatat që vetë krijonte. Dhe numëruesit rillogariten nga ngjarjet e dërgesës, kurrë nuk shtohen në vend, kështu që një webhook i përsëritur nuk mund të fryjë një raport.
Cilin të përdorni: nëse ndodh për shkak të diçkaje që bëri personi, është një funnel. Nëse ndodh për shkak të diçkaje që ju vendosët të mërkurën, është një kampanjë. Një sasi e madhe automatizimi marketingu shkon keq duke e detyruar të dytën në formën e të parit.