Funnel & pencetus
Funnels ialah graf. Run ialah baris. Wait ialah masa.
Itulah keseluruhan model, dan setiap sifat sukar produk ini terhasil daripada tiga ayat tersebut. Menyunting funnel yang sedang berjalan adalah selamat kerananya. Cubaan semula tidak boleh menghantar dua kali kerananya. Orang yang berhenti melanggan pada hari Selasa tidak mendengar apa-apa pada hari Khamis kerananya.
Apa yang sebenarnya berlaku apabila ia berjalan
Menerbitkan funnel menulis versi kekal. Seseorang masuk, dan baris muncul: satu run, untuk kontak ini, terikat pada versi itu, menyimpan nod semasa, masa bangun dan konteksnya sendiri.
Pekerja menyewa run yang masa bangunnya telah berlalu, dengan menuntutnya menggunakan SKIP LOCKED supaya dua pekerja tidak boleh mengambil yang sama. Ia melaksanakan nod sehingga mencapai wait atau terminal, kemudian menulis masa bangun seterusnya dan melepaskannya.
Nod ialah fungsi tulen bagi run, kontak dan nod itu sendiri — dan kesannya dimuktamadkan dalam transaksi yang sama dengan kemajuan run itu. Sifat tunggal inilah yang menjadikan cubaan semula selamat. Pekerja yang terbunuh dalam setengah saat antara "hantar" dan "majukan" meninggalkan kedua-duanya atau tiada satu pun, tidak pernah satu.
Dan kerana aplikasi membekalkan masa dan bukan pangkalan data, baris yang ditulis sekarang perlu dilaksanakan sekarang. Lajur penjadualan yang lalainya ialah jam pangkalan data belum perlu dilaksanakan pada saat ia ditulis, dan terlepas detik yang menciptanya — pepijat yang kelihatan seperti tiada apa-apa sehingga mesej terlewat sejam.
- 1Sewa
wake_at <= now(),FOR UPDATE SKIP LOCKED. Baris gilir tanpa sewa menghantar dua kali secara lalai. - 2LaksanakanNod mengikut turutan sehingga wait atau terminal. Setiap satu menulis langkah: apa yang diputuskan, apa yang dikeluarkan.
- 3KomitKesan dan kemajuan, satu transaksi. Inilah keseluruhan rahsianya.
- 4Tidur
wake_atseterusnya ditulis. Tiada baris hiliran wujud lagi, dan tiada yang perlu.
Satu run bagi setiap kontak bagi setiap versi
Empat belas pencetus
Apa yang boleh memulakan run
Sebahagian daripadanya ialah perkara yang Anda lakukan. Kebanyakannya ialah perkara yang pelanggan Anda lakukan, atau tidak lakukan — dan ketiadaan tindakan adalah pencetus yang sama baiknya dengan tindakan itu sendiri.
Mereka tiba
form_submit, list_join, contact_created, tag_added dan segment_enter. Segmen ialah predikat langsung, jadi "memasuki segmen" meliputi setiap "telah menjadi" yang boleh Anda nyatakan — tiga pesanan, sembilan puluh hari senyap, berbelanja melebihi had.
Mereka melakukan sesuatu
page_visit daripada snippet laman, message_opened, link_clicked, booking_made dan payment_made. Mesej yang dibuka itu sendiri ialah peristiwa pada kontak, jadi satu funnel boleh menunggu tindak balas terhadap perkara terakhir yang dihantarnya.
Masa, atau Anda
date_field dengan offset — hari lahir, pembaharuan, "setahun sejak", tujuh hari sebelum atau tiga hari selepas. schedule untuk yang berulang. manual untuk pengumuman yang Anda hantar kerana Anda memutuskan begitu.
Aplikasi Anda sendiri
api_event ialah peristiwa tersuai yang Anda hantar daripada kod Anda sendiri dengan token Anda sendiri. Apa sahaja yang produk Anda ketahui menjadi pencetus: diaktifkan, menjemput rakan sekerja, mencapai had, dibatalkan, dieksport. Inilah yang menjadikan alat mel sebagai sebahagian daripada produk Anda.
Kemasukan semula, diputuskan sekali
Funnels sama ada membenarkan kemasukan semula atau tidak, dan pangkalan data menguatkuasakannya: satu run bagi setiap kontak bagi setiap funnel melainkan Anda katakan sebaliknya. Pencetus yang sama tercetus dua kali dalam saat yang sama tidak boleh menghasilkan dua run secara tidak sengaja.
Syarat kemasukan
Pencetus tercetus dan spesifikasi kemasukan menentukan sama ada kontak tertentu ini layak — predikat segmen di depan pintu. Lebih murah daripada nod syarat pada langkah pertama, dan ia memastikan graf berkisar tentang apa yang berlaku dan bukan tentang siapa yang dibenarkan masuk.

Empat belas perkara boleh memulakannya. Enam belas perkara boleh berlaku seterusnya.
Enam belas tindakan dan tujuh nod aliran
Apa yang boleh dilakukan oleh funnel, dan bagaimana ia memutuskan
Hantar sesuatu
send_email, send_sms, send_push, send_letter — empat saluran, satu graf — ditambah notify_team apabila orang yang perlu diberitahu bekerja untuk Anda.
Ubah suai kontak
add_tag, remove_tag, add_to_list, remove_from_list, set_field. Menanda seseorang semasa perjalanan inilah yang menjadikan segmen funnel seterusnya mudah.
Capai luaran
http_request kepada apa sahaja yang Anda mahu, create_payment terhadap akaun bersambung Anda sendiri, dan book_slot terhadap sumber tempahan. Pembayar kekal milik Anda; tiada siapa menjadi pelanggan kami.
Bergerak antara funnels
enter_funnel dan exit_funnel. Bina satu urutan sambutan dan panggil ia dari empat tempat, dan bukannya menyelenggara empat salinan yang mula berbeza menjelang bulan Mac.
Jana semasa masa penghantaran
ai_generate mengisi pemboleh ubah gabungan bagi setiap kenalan, diukur terhadap kuota Anda dan disimpan dalam cache mengikut hash kreatif dan atribut kenalan — jika tidak, Anda akan membayar bagi setiap penerima pada setiap penghantaran.
Tunggu, cawang, pisah, gabung
wait menerima tempoh, tarikh-masa, hari dalam minggu dan masa, atau medan tarikh dengan offset. condition ialah predikat segmen dengan jawapan ya dan tidak. split ialah A/B/n dengan pemberat. join menyatukan semula cawangan.
goal — yang satu ini penting
Matlamat menamatkan perlaksanaan bagi sesiapa yang mencapainya. Mereka menempah, mereka membeli, mereka membalas: baki urutan dibatalkan khusus untuk mereka. Tiada siapa menerima "kami merindui Anda" sehari selepas mereka kembali, dan inilah nod yang menghalangnya.
throttle dan quiet_hours
Throttle mengawal rentak ledakan supaya peti mel dengan had kadar rendah tidak dibombardir sehingga digantung. Quiet hours menahan mesej sehingga masa yang berpatutan — diterapkan pada lapisan mesej, bukan disalin ke setiap cawangan graf.
Disemak sebelum boleh dilaksanakan
Pengesah menolak perkara yang sama untuk Anda dan untuk AI
Graf disemak sebelum boleh diterbitkan, dan semakan itu bukan sekadar nasihat. Ia adalah laluan kod yang sama sama ada corong itu dilukis oleh manusia atau dijana oleh model, dan itulah satu-satunya sebab corong yang dijana boleh dipercayai.
Tepat satu pintu masuk
Dua nod pintu masuk ialah kekaburan yang tiada siapa perasan sehingga separuh senarai yang salah menerima urutan yang salah.
Setiap nod boleh dicapai
Cawangan yang terasing sama ada satu kesilapan atau mesej yang Anda sangka akan dihantar tetapi tidak. Kedua-duanya berbalik untuk dimaklumkan kepada Anda.
Setiap kitaran mesti mengandungi wait
Gelung tanpa wait di dalamnya ialah gelung tak terhingga dengan penghantaran di tengahnya. Peraturan inilah yang membezakan antara corong dan insiden.
Setiap penghantaran mempunyai kreatifnya
Nod send_email tanpa kreatif dan subjek tidak boleh diterbitkan. Mesej dengan subjek yang betul tetapi badan kosong ialah mod kegagalan yang sebenar; ia ditolak di sini.
Setiap pemboleh ubah diketahui
Pemboleh ubah gabungan disahkan semasa penerbitan. {{frist_name}} ialah kesilapan taip yang Anda lihat semasa menyunting, bukan "Hai ," yang tiba dalam empat puluh ribu peti masuk.
Kemudian simulasikan ia
Jalankan ujian kering kenalan sebenar merentasi keseluruhan graf dan baca semula laluan yang diambil serta setiap mesej yang akan dihantar, bersama harinya. Tiada apa-apa yang keluar dari sistem.
Kes-kes yang menyusahkan
Tujuh perkara yang merosakkan enjin naif
Setiap satu daripadanya ialah ujian dengan jam deterministik di sebaliknya, kerana setiap satu merosakkan pelaksanaan yang kelihatan sempurna betul sehingga ia bertemu realiti.
- 1Corong yang berkitar ke dalam dirinya sendiriSah, biasa, dan tidak mengapa — dengan syarat kitaran itu mengandungi wait, yang diwajibkan oleh pengesah.
- 2Seseorang berhenti melanggan di tengah perjalananPenyekatan disemak semasa penghantaran, bukan semasa penjadualan. Semakan semasa penjadualan akan menghantar mel kepada orang yang telah keluar semasa tempoh wait.
- 3Corong disunting semasa sepuluh ribu orang berada di dalamnyaMereka terus mengikuti versi yang mereka masuki sehingga ke hujung. Peserta baharu mengikuti versi baharu.
- 4Pencetus yang sama berlaku dua kali dalam satu saatSatu perlaksanaan sahaja, kerana keunikan ialah indeks dan bukan semakan diikuti dengan sisipan.
- 5Kenalan dipadam di tengah perlaksanaanPerlaksanaan tamat. Pemadaman yang meninggalkan urutan yang masih dialamatkan kepada seseorang bukanlah pemadaman.
- 6Wait merentasi perubahan waktu jimat siang"Tiga hari pada pukul sembilan pagi" bermaksud pukul sembilan pagi pada kedua-dua belah perubahan jam.
- 7Pekerja terbunuh antara hantar dan majuKesan dan maju adalah satu transaksi. Sama ada kedua-duanya berlaku atau tiada satu pun.
Jam deterministikSetiap ujian mematahkan satu pelaksanaan yang munasabah
Kempen ialah separuh lagi
Corong bertindak balas. Kempen ialah siaran sekali tembak: khalayak, jadual, had kadar, dan penghantaran. Ia bentuk benda yang berbeza dan sengaja diasingkan berbanding berpura-pura menjadi corong dengan satu nod.
Dua peraturan menjadikannya selamat. Khalayak dimaterialkan sekali sahaja dan menolak untuk berjalan dua kali — penyelesaian semula akan secara senyap menambah semua orang yang menyertai sejak penghantaran bermula, dan indeks nyahpendua akan menyembunyikannya dengan menghalang pendua yang ia sendiri ciptakan. Dan kaunter dikira semula daripada peristiwa penghantaran, tidak pernah ditambah di tempatnya, jadi webhook yang dicuba semula tidak boleh mengembungkan laporan.
Mana yang perlu digunakan: jika ia berlaku kerana sesuatu yang dilakukan oleh orang itu, ia ialah corong. Jika ia berlaku kerana sesuatu yang anda putuskan pada hari Selasa, ia ialah kempen. Sejumlah besar automasi pemasaran menjadi rosak kerana memaksa yang kedua ke dalam bentuk yang pertama.