قیفها و محرکها
قیف یک گراف است. یک اجرا یک ردیف است. یک انتظار یک زمان است.
این تمام مدل است، و هر ویژگی دشوار این محصول از همین سه جمله بیرون میآید. ویرایش یک قیف زنده به خاطر آنها ایمن است. یک تلاش مجدد به خاطر آنها نمیتواند دوبار ارسال کند. کسی که سهشنبه لغو اشتراک میکند، پنجشنبه به خاطر آنها هیچ چیزی نمیشنود.
آنچه واقعاً هنگام اجرا رخ میدهد
انتشار یک قیف، یک نسخهٔ تغییرناپذیر میسازد. کسی وارد میشود و یک ردیف ظاهر میشود: یک اجرا، برای همین مخاطب، سنجیدهشده به آن نسخه، شامل گرهٔ فعلی، زمان بیداری و زمینهٔ مخصوص خودش.
یک کارگر، اجراهایی را که زمان بیداریشان گذشته است اجاره میکند و با SKIP LOCKED آنها را تصاحب میکند تا دو کارگر نتوانند همان یکی را بردارند. گرهها را اجرا میکند تا به یک انتظار یا یک گرهٔ پایانی برسد، سپس زمان بیداری بعدی را مینویسد و رها میکند.
هر گره یک تابع خالص از اجرا، مخاطب و خود گره است — و اثراتش در همان تراکنشِ پیشروی خود اجرا ثبت میشوند. همین یک ویژگی است که تلاش مجدد را ایمن میکند. کارگری که در نیمثانیهٔ میان «ارسال» و «پیشروی» کشته شود، یا هر دو را باقی میگذارد یا هیچکدام را، هرگز فقط یکی را.
و چون زمان را برنامهٔ شما فراهم میکند نه پایگاه داده، ردیفی که همین حالا نوشته میشود همین حالا سررسید است. ستونی از زمانبندی که بهطور پیشفرض از ساعت پایگاه داده استفاده کند، در لحظهٔ نوشتهشدن هنوز سررسید نیست و همان تیکِ ایجادکنندهاش را از دست میدهد — باگی که تا وقتی پیامی یک ساعت دیر برسد، اصلاً شبیه هیچچیز نیست.
- 1اجاره
wake_at <= now()،FOR UPDATE SKIP LOCKED. صفی بدون اجاره، بهطور پیشفرض دوبار ارسال میکند. - 2اجراگرهها به ترتیب، تا رسیدن به یک انتظار یا گرهٔ پایانی. هر گرم یک گام مینویسد: چه تصمیمی گرفت، چه چیزی صادر کرد.
- 3کامیتاثرات و پیشروی، در یک تراکنش. این تمام نکتهٔ ماجراست.
- 4خواب
wake_atبعدی نوشته میشود. هنوز هیچ ردیف پاییندستی وجود ندارد و نیازی هم نیست.
یک اجرا برای هر مخاطب در هر نسخه
چهارده محرک
چه چیزهایی میتوانند یک اجرا را آغاز کنند
برخی از اینها کارهایی هستند که شما انجام میدهید. بیشترشان کارهایی هستند که مشتری شما انجام میدهد یا نمیدهد — و نبودِ یک اقدام بهاندازهٔ خودِ آن اقدام محرک است.
وارد میشوند
form_submit، list_join، contact_created، tag_added و segment_enter. یک سگمنت یک گزارهٔ زنده است، پس «وارد شدن به سگمنت» هر «تبدیلشدهای» را که بتوانید بیان کنید پوشش میدهد — سه سفارش، نود روز سکوت، خرجِ بیش از یک آستانه.
کاری انجام میدهند
page_visit از اسنیپت سایت، message_opened، link_clicked، booking_made و payment_made. باز شدن یک پیام خودش رویدادی روی مخاطب است، پس یک قیف میتواند منتظر واکنشی به آخرین چیزی که فرستاده بماند.
زمان، یا شما
date_field با یک آفست — تولد، تمدید، «یک سال از آن زمان»، هفت روز قبل یا سه روز بعد. schedule برای مورد تکرارشونده. manual برای اطلاعیهای که چون خودتان تصمیم گرفتید میفرستید.
برنامهٔ خودتان
api_event یک رویداد سفارشی است که از کد خودتان با توکن خودتان ارسال میکنید. هر چیزی که محصول شما میداند تبدیل به محرک میشود: فعالسازی، دعوت همکار، رسیدن به سقف، لغو، خروجی گرفتن. همین یکی است که ابزار ایمیلزنی را به بخشی از محصول شما تبدیل میکند.
ورود مجدد، یکبار برای همیشه تصمیمگیریشده
یک قیف یا ورودمجددپذیر است یا نیست، و پایگاه داده آن را تضمین میکند: یک اجرا برای هر مخاطب در هر قیف، مگر اینکه خلافش را گفته باشید. شلیک دوبارهٔ یک محرک در همان ثانیه نمیتواند تصادفی دو اجرا بسازد.
شرایط ورود
محرک شلیک میشود و مشخصات ورود تصمیم میگیرد که آیا این مخاطبِ خاص واجد شرایط است — گزارهٔ سگمنتی درست جلوی در. ارزانتر از یک گرهٔ شرطی در گام اول، و نمودار را دربارهٔ آنچه رخ میدهد نگه میدارد نه دربارهٔ اینکه چه کسی اجازهٔ ورود دارد.

چهارده چیز میتوانند آن را آغاز کنند. شانزده چیز میتوانند در ادامه رخ دهند.
شانزده اقدام و هفت گرهٔ جریان
قیف چه میتواند بکند، و چگونه تصمیم میگیرد
ارسال چیزی
send_email، send_sms، send_push، send_letter — چهار کانال، یک نمودار — بهعلاوهٔ notify_team برای وقتی که کسی که باید خبردار شود، کارمند شماست.
تغییر مخاطب
add_tag، remove_tag، add_to_list، remove_from_list، set_field. علامتگذاری مخاطب در حین مسیر است که سگمنتِ قیف بعدی را ساده میکند.
دسترسی به بیرون
http_request به هر چیزی که بخواهید، create_payment روی حساب متصل خودتان، و book_slot روی یک منبع رزرو. پرداختکننده مال شما میماند؛ هیچکس مشتری ما نمیشود.
جابهجایی میان قیفها
enter_funnel و exit_funnel. یک توالی خوشآمدگویی بسازید و از چهار جا فراخوانیاش کنید، بهجای نگهداری چهار نسخه که تا اسفند از هم فاصله میگیرند.
تولید در زمان ارسال
ai_generate متغیرهای جایگزینی را برای هر مخاطب پر میکند، با سهمیهٔ شما اندازهگیری و بر اساس هش خلاقیت و ویژگیهای مخاطب ذخیره میشود — وگرنه باید برای هر گیرنده در هر ارسال هزینه میپرداختید.
انتظار، انشعاب، تقسیم، ادغام
wait یک مدت زمان، یک تاریخ و ساعت، یک روز هفته و ساعت، یا یک فیلد تاریخ با آفست میپذیرد. condition یک گزارهٔ سگمنت با یک مسیر بله و یک مسیر خیر است. split تقسیم A/B/n با وزنهاست. join شاخهها را دوباره به هم میرساند.
goal — همان که اهمیت دارد
یک هدف، اجرای جریان را برای هر کسی که به آن برسد پایان میدهد. رزرو کرده، خریده، پاسخ داده: بقیهٔ دنباله دقیقاً برای او لغو میشود. هیچکس روز بعد از بازگشتش پیام «دلتنگتان شدیم» نمیگیرد، و این همان گرهی است که جلوی آن را میگیرد.
throttle و quiet_hours
Throttle سرعتِ یک انفجار ارسال را تنظیم میکند تا صندوقی با سقف نرخ پایین به تعلیق کشیده نشود. ساعات سکوت پیام را تا زمانی مناسب نگه میدارند — در لایهٔ پیام اعمال میشود، نه اینکه در هر شاخهٔ گراف کپی شود.
پیش از اجرا بررسی میشود
اعتبارسنج همان چیزها را هم از شما و هم از هوش مصنوعی میخواهد
هر گراف پیش از انتشار بررسی میشود و این بررسی صرفاً توصیهای نیست. چه شخصی قیف را رسم کرده باشد و چه مدلی آن را تولید کرده باشد، مسیر کد یکی است، و این تنها دلیلی است که قیفهای تولیدشده اصلاً قابل اعتمادند.
دقیقاً یک نقطهٔ ورود
دو گرهٔ ورود ابهامی است که هیچکس متوجه آن نمیشود تا وقتی نیمهٔ اشتباه یک فهرست، دنبالهٔ اشتباه را دریافت کند.
همهٔ گرهها قابل دسترسی
یک شاخهٔ بیاتصال یا یک اشتباه است یا پیامی که فکر میکنید ارسال میشود و نمیشود. هر دو ارزش این را دارند که از آنها باخبر شوید.
هر حلقه باید یک انتظار داشته باشد
حلقهای بدون انتظار، حلقهٔ بینهایتی است با یک ارسال در میانهٔ آن. این قاعده همان تفاوت میان یک قیف و یک حادثه است.
هر ارسال، محتوای خودش را دارد
گرهٔ send_email بدون محتوا و موضوع قابل انتشار نیست. پیامی با موضوع درست و بدنهٔ خالی یک حالت خرابی واقعی است؛ همینجا رد میشود.
هر متغیر شناختهشده است
متغیرهای ادغام در زمان انتشار اعتبارسنجی میشوند. {{frist_name}} غلط تایپیای است که هنگام ویرایش میبینید، نه «سلام ،» که به چهل هزار صندوق میرسد.
سپس شبیهسازیاش کنید
یک مخاطب واقعی را بهصورت آزمایشی از کل گراف عبور دهید و مسیر طیشده و هر پیامی که ارسال میشد، همراه با روزش را بازخوانی کنید. هیچچیز از سازمان خارج نمیشود.
موارد دشوار
هفت چیزی که یک موتور سادهلوحانه را میشکند
هر یک از اینها آزمونی است با یک ساعت قطعی پشت آن، چون هر کدام پیادهسازیای را میشکند که تا برخورد با واقعیت کاملاً درست به نظر میرسد.
- 1قیفی که در خودش حلقه میزندمشروع، رایج و بیاشکال است — به شرط آنکه حلقه شامل یک انتظار باشد، که اعتبارسنج بر آن اصرار دارد.
- 2کسی در میانهٔ مسیر لغو اشتراک میکندحذف در زمان ارسال بررسی میشود، نه در زمان صفگذاری. بررسی در زمان صفگذاری برای کسانی هم میفرستد که در طول انتظار رفتهاند.
- 3قیف در حالی ویرایش میشود که ده هزار نفر داخلش هستندآنان نسخهای را که با آن وارد شدهاند تا انتها طی میکنند. تازهواردها نسخهٔ جدید را طی میکنند.
- 4یک تریگر در یک ثانیه دو بار فعال میشودفقط یک اجرا، چون یکتایی یک ایندکس است، نه یک بررسی بههمراه یک درج.
- 5یک مخاطب در میانهٔ اجرا حذف میشوداجرا پایان مییابد. حذفی که دنبالهای هنوز خطاب به کسی باقی بگذارد، حذف نیست.
- 6یک انتظار از تغییر ساعت تابستانی عبور میکند«سه روز، ساعت ۹ صبح» یعنی ساعت ۹ صبح در هر دو سوی تغییر ساعت.
- 7یک ورکر بین ارسال و پیشروی از بین میروداثرگذاری و پیشروی یک تراکنش واحدند. یا هر دو رخ دادهاند یا هیچکدام.
ساعتِ قطعیهر آزمون یک پیادهسازیِ بهظاهر درست را شکست میدهد
کمپینها نیمهٔ دیگر ماجرا هستند
یک قیف واکنش نشان میدهد. یک کمپین ارسالِ یکبارهٔ همگانی است: مخاطبی، زمانبندیای، محدودیتِ نرخ ارسالی، و یک ارسال. این چیزِ دیگری با شکل متفاوت است و عمداً جدا نگه داشته میشود، نه اینکه وانمود کنیم قیفی با یک گره است.
دو قاعده آن را ایمن میکند. مخاطب یک بار مادیسازی میشود و از اجرای دوباره خودداری میکند — حلِ دوباره، بیسروصدا همهٔ کسانی را میافزود که از آغاز ارسال به آن پیوسته بودند، و شاخصِ حذف تکراری با جلوگیری از تکرارهایی که خودش ساخته بود، آن را پنهان میکرد. و شمارندهها از رویدادهای تحویل بازمحاسبه میشوند، هرگز درجا افزایش نمییابند، تا یک وبهوکِ تکراری نتواند گزارشی را متورم کند.
کدام را استفاده کنیم: اگر به سبب کاری رخ میدهد که شخص انجام داده، یک قیف است. اگر به سبب تصمیمی رخ میدهد که شما روز سهشنبه گرفتهاید، یک کمپین است. بخش شگفتآوری از اتوماسیون بازاریابی با وادار کردن دومی به شکلِ اولی از مسیر درست خارج میشود.