clickSomo
ClickSomo opmaachen

Funnels & Ausléiser

E Funnel ass e Graph. E Run ass eng Zeil. E Wait ass eng Zäit.

Dat ass de ganze Modell, an all schwéier Eegenschaft, déi dëst Produkt huet, kënnt aus dësen dräi Sätz. E liewege Funnel ze änneren ass sécher wéinst hinnen. E Retry kann net duebel schécke wéinst hinnen. E Person, déi e Dënschdeg sech ofmellt, héiert e Donneschdeg näischt wéinst hinnen.

Wat tatsächlech geschitt, wann et leeft

E Funnel ze publizéieren schreift eng onverännerlech Versioun. Jee een trëtt an, an eng Zeil erschéngt: ee Run, fir dëse Kontakt, un déi Versioun gebonnen, mam aktuellen Node, enger Opwakzäit a sengem eegene Kontext.

E Worker leist d'Runnen, deenen hir Opwakzäit eriwwer ass, a beusprucht se mat SKIP LOCKED, sou datt zwéi Worker net déi selwecht kënne huelen. Et féiert Node aus, bis et op e Wait oder en Terminal stéisst, schreift dann déi nächst Opwakzäit a léisst lass.

E Node ass eng reng Funktioun vum Run, dem Kontakt an dem Node — a seng Effekter gi an der selwechter Transaktioun committéiert wéi de Weidergang vum Run selwer. Dës eenzeg Eegenschaft ass et, déi e Retry sécher mécht. E Worker, deen an der hallwer Sekonn tëscht "senden" a "weiderginn" ëmbruecht gëtt, hëlt entweder béides oder näischt mat, ni just eent.

A well d'App d'Zäit liwwert an net d'Datebank, ass eng Zeil, déi elo geschriwwe gëtt, elo fälleg. Eng Scheduling-Spalt, déi op d'Datebank-Auer defaultéiert, ass am Ament vum Schreiwen nach net fälleg a verpasst deen Tick, deen se selwer erstallt huet — e Bug, deen ausgesäit wéi näischt, bis eng Message eng Stonn ze spéit kënnt.

Een Tick vum WorkerAusféierung
  • 1Leasewake_at <= now(), FOR UPDATE SKIP LOCKED. Eng Queue ouni Lease schéckt duebel, als Standard.
  • 2AusféierenNode der Reih no, bis zu engem Wait oder engem Terminal. Jiddwereen schreift e Step: wat en decidéiert huet, wat en emittéiert huet.
  • 3FestleeënEffekter a Weidergang, eng Transaktioun. Dat ass de ganzen Trick.
  • 4SchlofNächst wake_at geschriwwen. Et gëtt nach keng Downstream-Zeilen, a keng brauche och net.

Ee Run pro Kontakt pro Versioun

Vierzéng Ausléiser

Wat e Run starte kann

E puer vun dëse sinn Saachen, déi Dir maacht. Déi meescht sinn Saachen, déi Äre Kunde mécht, oder net mécht — an d'Ofwiesen vun enger Aktioun ass esou gutt en Ausléiser wéi d'Aktioun selwer.

Si kommen un

form_submit, list_join, contact_created, tag_added an segment_enter. E Segment ass e liewegt Prädikat, also deckt "trëtt an de Segment an" all "ass ginn" of, dat Dir ausdrécke kënnt — dräi Bestellungen, néngzeg Dag roueg, gëtt iwwer eng Grenz eraus aus.

Si maacheppel eppes

page_visit vum Site-Snippet, message_opened, link_clicked, booking_made an payment_made. Eng Message opzemaachen ass selwer en Event um Kontakt, also kann ee Funnel op eng Reaktioun waarden op dat Lescht, dat en geschéckt huet.

Zäit, oder Dir

date_field mat engem Offset — e Gebuertsdag, eng Verlängerung, "e Joer hirer", siwe Deeg virdrun oder dräi Deeg duerno. schedule fir de rekurrierenden. manual fir d'Ukënnegung, déi Dir schéckt, well Dir decidéiert hutt.

Är eegen Applikatioun

api_event ass en custom Event, deen Dir aus Ärem eegene Code mat Ärem eegene Token postet. Alles, wat Äre Produkt weess, gëtt en Ausléiser: aktivéiert, e Kolleg agelueden, d'Limit erreecht, annuléiert, exportéiert. Dëst ass dat Eent, dat en Mailing-Tool an en Deel vun Ärem Produkt verwandelt.

Re-Entrée, eemol decidéiert

E Funnel ass entweder re-entrant oder net, an d'Datebank erzwéngt et: ee Run pro Kontakt pro Funnel, ausser Dir hutt soss eppes gesot. Deeselwechten Ausléiser, deen an der selwechter Sekonn zweemal ausléist, kann net duerch Zoufall zwee Runne produzéieren.

Entrée-Bedéngungen

Een Ausléiser léist aus, an d'Entrée-Spec decidéiert, ob dëse bestëmmte Kontakt berechtegt ass — e Segment-Prädikat virun der Dier. Méi bëlleg wéi e Bedéngungs-Node um éischte Step, an et hält de Graph bei dem, wat geschitt, amplaz bei dem, wien erlaabt ass eran ze kommen.

Vierzéng Saache kënnen et starten. Sechzéng Saache kënnen duerno geschéien.

Sechzéng Aktiounen a siwe Flow-Node

Wat e Funnel maache kann, a wéi en decidéiert

Eppes schécken

send_email, send_sms, send_push, send_letter — véier Kanäl, ee Graph — plus notify_team, wann d'Person, déi Bescheed wësse muss, fir Iech schafft.

De Kontakt änneren

add_tag, remove_tag, add_to_list, remove_from_list, set_field. Ënnerweeg een ze markéieren ass dat, wat de Segment vum nächste Funnel einfach mécht.

No baussen erreechen

http_request un alles wat dir wëllt, create_payment géint Ären eegene verbonne Kont, an book_slot géint eng Buchungsressource. De Bezueler bleift Ären; ni gëtt eise Client.

Tëscht Funnelen wiesselen

enter_funnel an exit_funnel. Baut eng Wëllkommsequenz a rifft se vu véier Plazen op, amplaz véier Kopien ze pflegen, déi am Mäerz auseneen driften.

Generéiert beim Versenden

ai_generate fëllt Merge-variabelen pro Kontakt, ofgerechelt géint Äre Quota an zwëschegespäichert no Kreatioun a Kontaktattribut-Hash — soss géift dir pro Empfänger bei all eenzegem Versand bezuelen.

Waarden, Verzweigen, Splitten, Zesummeféieren

wait hëlt eng Dauer, en Datum-Zäit-Wäert, e Wochendag mat Zäit, oder en Datumsfeld mat engem Offset. condition ass e Segment-Prädikat mat engem Jo an engem Nee. split ass A/B/n mat Gewiichter. join féiert d'Verzweigungen zesumm.

goal — dat wichtegst

E Zil beendert de Laf fir jiddweren, deen et erreecht. Si hunn gebucht, si hu kaaft, si hu geäntwert: de Rescht vun der Sequenz gëtt fir si speziell ofgebrach. Kritt kee "mir vermissen dech" den Dag nodeem hie zeréckkomm ass, an dat ass de Knuet, deen dat verhënnert.

throttle an quiet_hours

Throttle bremst eng Mass eraus, sou datt eng Mailbox mat engem niddrege Rate-Limit net an d'Suspensioun gedriwwe gëtt. Rouestonne halen eng Message bis zu engem ziviliséierten Zäitpunkt — ugewannt op der Message-Ebene, net kopéiert an all Verzweigung vum Graph.

Kuckt ier et lafe kann

De Validator refuséiert datselwecht fir Iech wéi fir d'AI

E Graph gëtt iwwerpréift ier en verëffentlecht ka ginn, an d'Kontroll ass net just eng Empfehlung. Et ass deeselwechte Codepad, ob e Mënsch de Funnel gezeechnen huet oder e Modell en generéiert huet — dat ass den eenzegen Ursaach, fir generéiert Funnelen iwwerhaapt ze vertrauen.

Genau een Entrée

Zwee Entréeskniet sinn eng Méiglechkeet, déi kengem afeelt, bis déi falsch Halschent vun enger Lëscht déi falsch Sequenz kritt.

All Knuet erreechbar

E verlorenen Aascht ass entweder e Feeler oder eng Message, déi Dir denkt, se geet eraus, an et ass net de Fall. Béides ass et wäert, doriwwer informéiert ze ginn.

E Zyklus muss e wait enthalen

Eng Schleif ouni wait dran ass eng endlos Schleif mat engem Versand an der Mëtt. Dës Regel ass den Ënnerscheed tëschent engem Funnel an engem Incident.

All Versand huet seng Kreatioun

E send_email-Knuet ouni Kreatioun an ouni Betreff ka net verëffentlecht ginn. D'Message mam richtegen Betreff an engem eidele Kierper ass en reelle Feelermodus; e gëtt hei refuséiert.

All Variabel ass bekannt

Merge-variabelen ginn beim Verëffentlechen validéiert. {{frist_name}} ass en Tippfehler, deen Dir beim Editéiere gesitt, net e "Moien ," deen a véierzegdausend Postfänker ukënnt.

Simuléiert et dann

Féiert e richtegen Kontakt duerch de ganze Graph a liest de gelafene Wee zréck an all Message, déi geschéckt géif ginn, mat hirem Dag. Nëischt verléisst d'Haus.

Déi onscheen Fäll

Siwe Saachen, déi eng naiv Maschinnt brechen

All eng dovunner ass en Test mat enger deterministescher Auer hannendru, well all eng eng Implementatioun brécht, déi perfekt richteg ausgesäit, bis se op d'Realitéit stéisst.

Wou d'Maschinnt géint getest gëttWiderlegung
  • 1E Funnel, deen an sech selwer schléiftLegitim, üblech an auerdnung — soulaang den Zyklus e wait enthält, wat de Validator verlaangt.
  • 2Eent secht of am LafD'Suppressioun gëtt beim Versand iwwerpréift, net beim Anstouss. Beim Anstouss kucken heescht, d'Leit kréien eng Mail, déi während dem Waarden ausgetruede sinn.
  • 3De Funnel gëtt editéiert, wärend zéngdausend Leit dran sinnSi lafe weider op der Versioun, op där se agaange sinn, bis zum Enn. Nei kënne lafen déi nei.
  • 4Deeselwechten Trigger fëert zweemol an enger Sekonn ausEe Laf, well Eendeckegekeet en Index ass an net eng Kontroll gefollegt vun engem Insert.
  • 5E Kontakt gëtt geläscht, wärend de Laf leeftDe Laf endet. Eng Läschung, déi eng Sequenz hannerléisst, déi nach ëmmer un een gericht ass, ass keng Läschung.
  • 6E Waarde spannt eng Ännung vun der Summerzäit"Dräi Deeg um néng moies" heescht néng moies op béide Säite vun der Auerännerung.
  • 7E Worker gëtt tëscht Senden a Weiderféieren ofgebrachEffekter a Weiderféiere sinn eng Transaktioun. Entweder sinn déi zwee geschitt, oder kee vun deenen zwee.

Deterministesch AuerAll Test bréngt eng plausibel Implementatioun zum Eechten

Kampagnen sinn déi aner Halschent

En Trichter reagéiert. Eng Kampagne ass d'Een-Mol-Broadcast: eng Audience, en Zäitplang, eng Drossel an e Sende. Et ass eppes vun enger anerer Form a gëtt bewosst getrennt gehalen, amplaz se als en Trichter mat engem eenzegen Knott auszeginn.

Zwee Reegelen maachen et sécher. Eng Audience gëtt eemol materialiséiert a refuséiert zweemol ze lafen — e neit Opliese géif roueg all déi derbäisetzen, déi zënter dem Ufank vum Sende derbäikomm sinn, an den Deduplizéierungsindex géif et verstoppen, andeems en d'Duplikater verhënnert, déi en selwer geschaf huet. An d'Compteur ginn aus Liwwerungsereignisser nei berechent, ni op der Plaz eropgesat, sou datt e Webhook mat Nei-Versuch keen Rapport opbléise kann.

Wat benotzen: wann et geschitt well eppes, wat d'Persoun gemaach huet, ass et en Trichter. Wann et geschitt well eppes, wat Dir en Dënschdeg decidéiert hutt, ass et eng Kampagne. E bemierkenswäert Deel vu Marketing-Automatiséierung geet schif, well den Zweeten an d'Form vum Éischte gezwongen gëtt.