फनल र ट्रिगरहरू
फनल भनेको ग्राफ हो। रन भनेको पङ्क्ति हो। प्रतीक्षा भनेको समय हो।
यही पूरै मोडेल हो, र यस उत्पादनका हरेक कठिन गुण यी तीन वाक्यबाट निस्कन्छन्। चलिरहेको फनल सम्पादन गर्न सुरक्षित छ किनभने यी छन्। रिट्राईले दोहोरो पठाउन सक्दैन किनभने यी छन्। मङ्गलबार अनसब्सक्राइब गर्ने व्यक्तिले बिहीबार केही सुन्दैन किनभने यी छन्।
चल्दा वास्तवमा के हुन्छ
फनेल प्रकाशित गर्दा एउटा अपरिवर्तनीय संस्करण लेखिन्छ। कसैले प्रवेश गर्छ, र एउटा पङ्क्ति देखिन्छ: यो सम्पर्कका लागि एउटा रन, त्यही संस्करणमा बाँधिएको, हालको नोड, एउटा ब्यूँझने समय र आफ्नै सन्दर्भ समेत बोकेको।
एउटा वर्करले ब्यूँझने समय नाघेका रनहरू लिज गर्छ, 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
थ्रटलले बर्स्टलाई गति दिन्छ जसले गर्दा कम दर सीमा भएको मेलबक्स सस्पेन्सनमा धकेलिँदैन। क्वाइट आवरले सन्देशलाई उपयुक्त समयसम्म रोकेर राख्छ — यो सन्देश तहमा लागू हुन्छ, ग्राफको हरेक शाखामा प्रतिलिपि हुँदैन।
चल्नुअघि जाँचिने
प्रमाणकर्ताले तपाईं र AI दुवैका लागि एउटै कुरा अस्वीकार गर्छ
ग्राफ प्रकाशित हुनुअघि जाँचिन्छ, र त्यो जाँच सल्लाह मात्र होइन। फनेल मानिसले बनाए कि मोडेलले जनरेट गरे, दुवैमा एउटै कोड पथ चल्छ — जनरेट गरिएका फनेल भरपर्दा हुनुको एउटै कारण यही हो।
ठीक एउटै प्रवेश
दुई प्रवेश नोड भएको अस्पष्टता कसैले ध्यान दिँदैन, जबसम्म सूचीको गलत आधा भागले गलत अनुक्रम पाउँदैन।
हरेक नोड पुग्नसकिने
अनाथ शाखा या त गल्ती हो, या त तपाईंले जान्दै छ भन्ने सोचेको तर नजाने सन्देश हो। दुवैका बारेमा जानकारी पाउनु उपयोगी छ।
चक्रमा प्रतीक्षा अनिवार्य
प्रतीक्षा नभएको लुप भनेको बीचमा पठाइसहितको अनन्त लुप हो। यो नियमले फनेल र घटनाबीचको भिन्नता बनाउँछ।
हरेक पठाइसँग आफ्नो क्रिएटिभ
क्रिएटिभ र विषय नभएको send_email नोड प्रकाशित हुन सक्दैन। सही विषय तर खाली मुख्य भाग भएको सन्देश वास्तविक विफलता हो; त्यो यहीँ अस्वीकार गरिन्छ।
हरेक चर परिचित
मर्ज चरहरू प्रकाशनमा प्रमाणित हुन्छन्। {{frist_name}} सम्पादन गर्दै गर्दा देखिने टाइपो हो, चालीस हजार इनबक्समा "नमस्ते ," पुग्ने होइन।
अनि यसलाई सिमुलेट गर्नुहोस्
वास्तविक सम्पर्कलाई सम्पूर्ण ग्राफभरि ड्राई-रन गर्नुहोस् र लिइएको पथ तथा पठाइने हरेक सन्देश, त्यसको दिनसहित, फेरि पढ्नुहोस्। केही पनि बाहिर जाँदैन।
अप्ठ्यारा अवस्थाहरू
सरल इन्जिन तोड्ने सात कुरा
यी मध्ये हरेक निश्चित घडीसहितको परीक्षण हो, किनकि हरेकले वास्तविकतासँग नभेटुञ्जेल पूर्ण रूपमा सही देखिने कार्यान्वयन तोड्छ।
- 1आफैँमा लुप हुने फनेलवैध, सामान्य र ठीकै — जबसम्म चक्रमा प्रतीक्षा हुन्छ, जुन कुरा प्रमाणकर्ताले जरुरी गर्छ।
- 2कसैले बीचमै अनसब्सक्राइब गर्छसप्रेसन पठाइको बेला जाँचिन्छ, लाममा राख्दा होइन। लाममा राख्दा जाँच गरे प्रतीक्षाका बीचमा गएका मानिसहरूलाई पनि मेल जान्छ।
- 3दस हजार मानिस भित्रै हुँदा फनेल सम्पादन गरिन्छतिनीहरू जुन संस्करणमा प्रवेश गरे, त्यही अन्त्यसम्म हिँडिरहन्छन्। नयाँ प्रवेश गर्नेहरू नयाँ संस्करण हिँड्छन्।
- 4एउटै सेकेन्डमा एउटै ट्रिगर दुई पटक चल्छएउटै रन, किनकि अद्वितीयता जाँच गरेर इन्सर्ट गर्ने प्रक्रिया होइन, अनुक्रमणिका हो।
- 5रनका बीचमा सम्पर्क मेटिन्छरन समाप्त हुन्छ। कसैलाई सम्बोधन गरिरहेको अनुक्रम छोडेर जाने मेटाइ वास्तविक मेटाइ होइन।
- 6प्रतीक्षाले डेलाइट-सेभिङ परिवर्तन नाघ्छ"बिहान नौ बजे तीन दिन" भनेको घडी परिवर्तनको दुवैतर्फ बिहान नै बजे हो।
- 7पठाइ र अगाडि बढ्नुका बीचमा वर्कर मारिन्छप्रभाव र अगाडि बढ्नु एउटै लेनदेन हो। या त दुवै भयो, या त कुनै पनि भएन।
निर्धारित घडीप्रत्येक परीक्षणले विश्वसनीय देखिने एउटा कार्यान्वयनलाई तोड्छ
अभियानहरू अर्को आधा हुन्
फनलले प्रतिक्रिया दिन्छ। अभियान भनेको एक पटक मात्र हुने प्रसारण हो: दर्शक समूह, समयतालिका, दर सीमा र प्रेषण। यो फरक आकारको वस्तु हो र एउटा नोड भएको फनलजस्तो देखाउने बहाना गर्नुको सट्टा जानाजान छुट्टै राखिएको हुन्छ।
दुई नियमले यसलाई सुरक्षित बनाउँछन्। दर्शक समूह एक पटक मात्र निर्माण गरिन्छ र दोस्रो पटक चलाउन अस्वीकार गर्छ — फेरि हिसाब मिलाइयो भने पठाइ सुरु भएपछि सम्मिलित हुने सबैजना मौनतः थपिने थिए, र डुप्लिकेट हटाउने अनुक्रमणिकाले आफैँले सिर्जना गरेका प्रतिलिपिहरू रोकेर त्यसलाई लुकाउने थियो। र गणकहरू वितरण घटनाहरूबाट पुनर्गणना गरिन्छन्, ठाउँमै कहिल्यै बढाइँदैन, त्यसैले दोहोर्याइएको वेबहुकले प्रतिवेदन कृत्रिम रूपमा बढाउन सक्दैन।
कुन प्रयोग गर्ने: व्यक्तिले गरेको कुनै कामका कारण घटेको हो भने, त्यो फनल हो। तपाईंले मङ्गलबार गर्नुभएको कुनै निर्णयका कारण घटेको हो भने, त्यो अभियान हो। दोस्रोलाई पहिलोको आकारमा जबरजस्ती भर्दा मार्केटिङ स्वचालनको आश्चर्यजनक रूपमा ठूलो हिस्सा बिग्रन्छ।