Trigger Blocks
Every chatbot flow starts with a Trigger Block. This is the starting point that tells the system when to begin the conversation. Each flow can have exactly one trigger.
2. Capture the trigger node at the start of the flow
Save to:
static/img/screenshots/chatbot-flows/trigger-blocks/trigger-node-on-canvas.pngTrigger typesβ
There are 10 trigger types available. Some triggers are channel-specific β they only appear when the flow is created for a particular channel.
| # | Trigger type | Channels | When the flow starts |
|---|---|---|---|
| 1 | Keyword | All | Customer sends a specific word or phrase |
| 2 | Button Click | All | Customer clicks a button from a previous message |
| 3 | Webhook | All | An external system sends a request |
| 4 | Manual | All | You trigger it yourself from the Flow List |
| 5 | Drip Campaign | All | A drip campaign reaches a chatbot step |
| 6 | Order Received | Customer places an order via WhatsApp | |
| 7 | WhatsApp Flow Submitted | Customer submits a WhatsApp Flow form | |
| 8 | Ad Click (CCTWA) | Customer clicks a Click-to-WhatsApp ad | |
| 9 | New Lead (Facebook Lead Ad) | A new lead is submitted via a Facebook Lead Ad form | |
| 10 | Post Comment | Messenger, Instagram | Customer comments on one of your posts |
1. Keywordβ
The flow starts when a customer sends a specific word or phrase.
| Setting | Description |
|---|---|
| Keywords | One or more words or phrases that will trigger the flow (e.g., "hi", "help", "menu") |
| Match Mode | How the incoming message is compared to your keywords (see below). Matching is always case-insensitive |
| Exclude Keywords | Optional. If the message matches any of these, the flow is skipped even when a keyword matched β useful to avoid false triggers |
2. Select "Keyword" as the trigger type
3. Add a few keywords like "hi", "hello", "help"
4. Open the Match Mode dropdown to show the options
5. Capture the configuration panel
Save to:
static/img/screenshots/chatbot-flows/trigger-blocks/keyword-trigger-config.pngMatch modes:
| Mode | Matches when the message⦠| Example (keyword price) |
|---|---|---|
| Contains Word (default) | contains the keyword as a whole word | "what is the price?" β Β "pricey" β |
| Exact | is exactly the keyword (nothing else) | "price" β Β "price please" β |
| Contains | contains the keyword anywhere, even inside another word | "pricey", "price" β |
| Starts With | begins with the keyword | "price list please" β |
| Match All | contains every keyword (as words) β use with multiple keywords | keywords order + status β "order status" β
|
| Regex | matches the keyword treated as a regular expression | pattern ^(hi|hello)$ matches "hi" or "hello" |
Exclude keywords: Add words that should block the trigger. Exclude keywords have their own match mode and are checked after a keyword match β if the message also matches an exclude keyword, the flow does not start. Example: keyword order with exclude cancel won't trigger on "cancel my order".
How it works:
- Customer sends a message like "Hi"
- System checks if the message matches any keyword (using your match mode) in any active flow
- If matched β and not blocked by an exclude keyword β the flow starts for that customer
Use cases:
- FAQ menu β Keywords:
menu,help,optionsβ Show a main menu with buttons - Language selection β Keywords:
english,hindi,tamilβ Start conversation in that language - Product inquiry β Keywords:
price,pricing,costβ Show pricing information
Two active flows cannot share the same keyword with the same match mode. If you try to activate a flow whose keyword conflicts with another active flow, you'll see an error message with the conflicting flow's name.
2. Button Clickβ
The flow starts when a customer clicks a button (or selects a list row) whose payload matches this trigger. The payload is the value sent back when the button is tapped β set it as a custom payload on the button, or use the auto-generated one.
| Setting | Description |
|---|---|
| Match Mode | How the incoming payload is compared to your pattern: Exact, Starts With, Contains, or Regex |
| Payload Pattern | The value to match against (e.g., approve_ for Starts With, or approve_REQ123 for Exact) |
| Extract to Variable (optional) | For non-exact modes: saves the matched part of the payload into a session variable you name (see Dynamic payloads) |
2. Open the Match Mode dropdown to show Exact / Starts With / Contains / Regex
3. Choose "Starts With" and enter a pattern like "approve_"
4. Enter "approval_id" in Extract to Variable
5. Capture the configuration panel
Save to:
static/img/screenshots/chatbot-flows/trigger-blocks/button-click-trigger-config.pngMatch modes:
| Mode | Triggers when the payload⦠| Example (pattern approve_) |
|---|---|---|
| Exact | equals the pattern exactly | only approve_ |
| Starts With | begins with the pattern | approve_REQ123 β
|
| Contains | contains the pattern anywhere | order_approve_x β
|
| Regex | matches the pattern as a regular expression (case-insensitive) | pattern approve_(\d+) matches approve_789 |
How it works:
- A previous flow, broadcast, or template sends an interactive message with buttons
- Customer taps a button β WhatsApp sends back the button's payload
- The payload is matched against active Button Click triggers; the most specific match wins (Exact > Starts With > Contains > Regex)
- The flow starts
Dynamic payloads and extractionβ
Buttons and list rows can carry a custom payload containing variables β for example a button payload of approve_{{request_id}} is sent as approve_REQ123. A Button Click trigger using Starts With approve_ will match it, and if you set Extract to Variable to approval_id, the part after the prefix (REQ123) is saved as {{approval_id}} for use in the rest of the flow.
| Mode | Pattern | Incoming payload | Extracted value |
|---|---|---|---|
| Starts With | approve_ | approve_REQ123 | REQ123 |
| Contains | _id_ | order_id_42 | 42 |
| Regex | approve_(\d+) | approve_789 | 789 (first capture group) |
See Custom button payloads for how to set payloads on the sending side, and the Approval workflow use case for a complete example.
Use cases:
- Approvals β A request message has an "Approve" button with payload
approve_{{request_id}}β each tap independently triggers an approval flow with the right ID extracted - Multi-level menus β Main menu flow sends buttons β Each button triggers a specialized sub-flow
- Department routing β "Sales", "Support", "Billing" buttons each trigger a different flow
Two active flows can't use the same pattern with the same match mode. Non-exact modes (Starts With / Contains / Regex) are allowed to overlap β when more than one matches, the most specific one runs.
3. Webhookβ
The flow starts when an external system sends a request to the flow's unique web address.
| Setting | Description |
|---|---|
| Webhook URL | The unique address external systems will call (auto-generated) |
| API Key | A security key to authenticate requests β create one with the chatbot-flows:webhook scope |
2. Capture the full configuration panel showing webhook URL, authentication section, and request body example
Save to:
static/img/screenshots/chatbot-flows/trigger-blocks/webhook-trigger-config.pngHow it works:
- You share the webhook address with an external system (like your CRM, e-commerce platform, or custom app)
- The external system sends a request with a phone number and optional data
- The flow starts for that phone number, with the external data available as variables
Request body format:
The external system sends a request with this structure:
{
"phone_number": "+919876543210",
"data": {
"customer_name": "John Doe",
"order_id": "ORD-123",
"order_details": {
"product": "Premium Plan",
"price": 2999,
"billing": {
"address": "Mumbai",
"gst": "27AABCU9603R1ZM"
}
}
}
}
Available session variables:
Everything inside data becomes available as session variables. You define the variables yourself β whatever fields you include in the request are available in your flow. Access nested values using dot notation:
| Variable | Value from example above |
|---|---|
{{customer_name}} | John Doe |
{{order_id}} | ORD-123 |
{{order_details.product}} | Premium Plan |
{{order_details.price}} | 2999 |
{{order_details.billing.address}} | Mumbai |
{{order_details.billing.gst}} | 27AABCU9603R1ZM |
Use cases:
- Order status updates β Your e-commerce system triggers the flow when an order ships, sending tracking details
- CRM integration β Your CRM triggers a follow-up flow when a deal reaches a certain stage
- Form submissions β A website form triggers a flow with the submitted data
The webhook trigger is the most technical trigger type. It requires the external system to send a properly formatted request. See Testing and Triggering for a complete example with a cURL command.
4. Manualβ
The flow is triggered by you (or your team) from the Flow List page for specific contacts.
| Setting | Description |
|---|---|
| No additional configuration needed | The flow is ready to trigger manually |
2. Capture the configuration panel showing the info card
Save to:
static/img/screenshots/chatbot-flows/trigger-blocks/manual-trigger-config.pngHow it works:
- Go to the Flow List
- Click the Trigger Flow action on the flow
- Select one or more contacts (up to 5 at a time)
- Click Trigger
- The flow runs for each selected contact
Use cases:
- One-time outreach β Send a personalized message sequence to selected contacts
- Testing β Test your flow with a specific contact before going live
- VIP follow-up β Manually trigger a follow-up flow for high-value contacts
5. Drip Campaignβ
The flow starts automatically when a contact reaches a Chatbot step in a drip campaign.
| Setting | Description |
|---|---|
| No additional configuration needed | The drip campaign handles the triggering |
2. Capture the configuration panel showing the info card and available session variables
Save to:
static/img/screenshots/chatbot-flows/trigger-blocks/drip-campaign-trigger-config.pngHow it works:
- You create a drip campaign with a Chatbot node
- When an enrolled contact reaches that step, the system triggers this chatbot flow
- The chatbot takes over the conversation for that contact
Available session variables:
The drip campaign automatically passes context to your flow:
| Variable | Description |
|---|---|
{{session.drip_campaign_id}} | The campaign's unique identifier |
{{session.drip_campaign_name}} | The campaign's name |
{{session.drip_enrollment_id}} | The contact's enrollment identifier |
{{session.drip_step_number}} | Which step in the campaign triggered the chatbot |
{{session.drip_step_name}} | The name of the step that triggered the chatbot |
{{session.lead_id}} | The contact's lead identifier |
Use cases:
- Interactive follow-up β A 7-day onboarding campaign hands off to a chatbot on day 4 for an interactive product tour
- Qualification check β A lead nurturing campaign uses a chatbot to ask qualifying questions mid-sequence
- Support handoff β A post-purchase campaign triggers a support chatbot for customers who need help
To use this trigger, add a Chatbot node to your drip campaign and select this flow. The drip campaign will trigger the flow automatically when a contact reaches that step.
6. Order Receivedβ
This trigger is only available for WhatsApp flows.
The flow starts automatically when a customer places an order through WhatsApp.
| Setting | Description |
|---|---|
| No additional configuration needed | Triggers on every WhatsApp order |
2. Capture the configuration panel showing the info card, session variables list, and View All Variables button
Save to:
static/img/screenshots/chatbot-flows/trigger-blocks/order-trigger-config.pngHow it works:
- A customer opens your WhatsApp catalog and places an order
- The system detects the order and triggers this flow
- All order details are available as session variables
Available session variables:
The system provides order details that you can use in your messages and conditions:
| Variable | Description |
|---|---|
{{order.catalog_id}} | The WhatsApp catalog identifier |
{{order.text}} | Order notes or text from the customer |
{{order.product_items.0.product_retailer_id}} | First item β Product ID |
{{order.product_items.0.quantity}} | First item β Quantity ordered |
{{order.product_items.0.item_price}} | First item β Price |
{{order.product_items.0.currency}} | First item β Currency |
Click the View All Variables button in the configuration panel to see the complete list.
Use cases:
- Order confirmation β Send an instant confirmation with order details and estimated delivery
- Upselling β After an order, suggest related products based on what the customer bought
- Payment collection β Guide the customer through payment after they place an order
Use a Condition node after the trigger to handle different order scenarios β for example, route high-value orders to a human agent while smaller orders get an automated confirmation.
7. WhatsApp Flow Submittedβ
This trigger is only available for WhatsApp flows.
The flow starts automatically when a customer submits a specific WhatsApp Flow form.
| Setting | Description |
|---|---|
| WhatsApp Flow | Select which WhatsApp Flow form should trigger this automation |
2. Select a published WhatsApp Flow from the dropdown
3. Capture the configuration panel showing the flow selection and available session variables
Save to:
static/img/screenshots/chatbot-flows/trigger-blocks/whatsapp-flow-trigger-config.pngHow it works:
- You select which WhatsApp Flow form to monitor
- A customer opens and fills out that form on WhatsApp
- When they submit the form, this chatbot flow is triggered
- All submitted form data is available as session variables
Available session variables:
The system dynamically loads variables based on the WhatsApp Flow you select. These correspond to the form fields the customer filled out β for example, if your form has fields like full_name, email, and phone, you can access them as:
| Variable | Description |
|---|---|
{{full_name}} | The value the customer entered in the "Full Name" field |
{{email}} | The value from the "Email" field |
{{phone}} | The value from the "Phone" field |
The exact variables depend on your WhatsApp Flow form design. Click the View All Variables button to see the complete list for your selected flow.
Use cases:
- Registration processing β Customer fills out a registration form β Chatbot confirms details and creates their account
- Appointment booking β Customer selects a date and time in a form β Chatbot confirms the booking and sends a reminder
- Lead capture β Customer fills in their contact info and requirements β Chatbot qualifies the lead and routes to the right team
Only published WhatsApp Flows appear in the dropdown. If your flow isn't showing up, make sure it's been published first.
8. Ad Click (CCTWA)β
This trigger is only available for WhatsApp flows.
The flow starts automatically when a customer clicks on your Click-to-WhatsApp (CCTWA) ad on Facebook or Instagram.
| Setting | Description |
|---|---|
| No additional configuration needed | Triggers on any WhatsApp ad click |
2. Capture the full configuration panel showing the info card, ad variables grid, and filtering tip
Save to:
static/img/screenshots/chatbot-flows/trigger-blocks/ad-click-trigger-config.pngHow it works:
- You run a Click-to-WhatsApp ad campaign on Facebook or Instagram
- A customer clicks the ad and is redirected to WhatsApp
- The system detects the ad click and triggers this flow
- Ad campaign details are available as session variables
Available session variables:
| Variable | Description |
|---|---|
{{trigger.ad.headline}} | Ad headline text |
{{trigger.ad.body}} | Ad primary text |
{{trigger.ad.source_id}} | Facebook ad ID |
{{trigger.ad.source_url}} | Ad source URL |
{{trigger.ad.source_type}} | Ad source type |
{{trigger.ad.media_type}} | Media type (image or video) |
{{trigger.ad.image_url}} | Image URL (if the ad has an image) |
{{trigger.ad.video_url}} | Video URL (if the ad has a video) |
{{trigger.ad.thumbnail_url}} | Thumbnail URL |
{{trigger.ad.ctwa_clid}} | Ad click ID |
Use cases:
- Campaign-specific welcome β Greet customers with a message that matches the ad they clicked (e.g., "Thanks for your interest in our Summer Sale!")
- Lead capture β Automatically collect contact details from customers who clicked your ad
- Product showcase β Show the product catalog or demo based on which ad campaign brought the customer
Since this trigger fires for any Click-to-WhatsApp ad, use a Condition node after the trigger to filter by specific campaigns. For example, check if {{trigger.ad.headline}} contains "Summer Sale" to run a different flow for that campaign.
9. New Lead (Facebook Lead Ad)β
This trigger is only available for WhatsApp flows.
The flow starts automatically when a new lead is submitted via a Facebook Lead Ad form. The lead's phone number is used to initiate a WhatsApp conversation.
| Setting | Description |
|---|---|
| No additional configuration needed | Triggers on every new lead from Facebook Lead Ads |
2. Select "New Lead (Facebook Lead Ad)" as the trigger type
3. Capture the full configuration panel showing the info card, available lead variables, and custom fields tip
Save to:
static/img/screenshots/chatbot-flows/trigger-blocks/leadgen-trigger-config.pngHow it works:
- A customer fills out a lead form on your Facebook ad
- The system receives the lead data and looks up the phone number
- The flow starts a WhatsApp conversation with that phone number
- Lead form data is available as session variables
Since the lead hasn't messaged you on WhatsApp, you're outside the 24-hour messaging window. The first node after the trigger must be a Template Message β regular text or media messages will fail.
Available session variables:
| Variable | Description |
|---|---|
{{lead.full_name}} | Lead's full name |
{{lead.phone}} | Lead's phone number |
{{lead.email}} | Lead's email address |
{{lead.ad_name}} | Name of the ad that generated the lead |
{{lead.ad_id}} | Facebook ad ID |
{{lead.form_id}} | Lead form ID |
All extra fields from the lead form (e.g., city, job title) are also available as {{lead.<field_name>}}. Use a Condition node to branch based on any lead field.
Available nodes:
When using the New Lead trigger, only outbound-compatible nodes are available in the builder β interactive nodes like Buttons, List, Question, SPM, and MPM are hidden since the customer hasn't initiated a conversation. Available nodes include:
- Template Message (required as the first node)
- Carousel (for Messenger/Instagram flows)
- Condition, Router, HTTP Call, Script
Use cases:
- Instant follow-up β Lead fills out a form β Flow sends a WhatsApp template confirming receipt and asking if they'd like to schedule a call
- Lead qualification β Use lead form fields in Condition nodes to route high-value leads to a sales agent
- CRM integration β Use an HTTP Call to push the lead data to your CRM, then send a personalized template based on their interest
10. Post Commentβ
This trigger is only available for Messenger and Instagram flows.
The flow starts automatically when a customer comments on one of your Facebook or Instagram posts.
| Setting | Description |
|---|---|
| Page | Select which Facebook Page or Instagram account to monitor for comments |
| Posts | Optionally select specific posts to monitor β leave empty to trigger on any post |
| Comment Keywords | Optionally filter by keywords in the comment text β leave empty to trigger on any comment |
| Keyword Match | How to match keywords: Exact Match (comment must match the keyword exactly) or Contains (comment contains the keyword anywhere) |
| Comment Type | Filter by comment type: All Comments, Top-Level Comments Only, or Reply Comments Only |
2. Select "Post Comment" as the trigger type
3. Select a page, optionally pick specific posts, add comment keywords
4. Capture the full configuration panel
Save to:
static/img/screenshots/chatbot-flows/trigger-blocks/post-comment-trigger-config.pngHow it works:
- A customer comments on one of your Facebook or Instagram posts
- The system checks if the comment matches your filter criteria (page, post, keywords, comment type)
- If matched, the flow starts β the customer receives a direct message in response
- Comment details are available as session variables
Use cases:
- Contest automation β Customers comment a keyword like "WIN" on your contest post β Flow sends them a DM with contest details
- Lead capture β Customers comment on a product post β Flow sends a DM asking for their contact details
- Auto-reply to comments β Any comment on a specific post triggers a thank-you DM with more information
- Keyword-based offers β Customers comment "DEAL" β Flow sends them a discount code via DM
When using the Post Comment trigger, you also get access to the Reply Comment node in the message blocks. This lets your flow reply directly to the customer's comment on the post (in addition to sending a DM). See Reply Comment.
Choosing the right triggerβ
| Scenario | Best trigger | Channel |
|---|---|---|
| Customers start the conversation by messaging you | Keyword | All |
| Flow is part of a multi-step menu system | Button Click | All |
| External systems (CRM, e-commerce) need to start the flow | Webhook | All |
| You want to start the flow for specific people | Manual | All |
| Flow should run mid-way through a drip campaign | Drip Campaign | All |
| Customer places an order via WhatsApp catalog | Order Received | |
| Customer submits a WhatsApp Flow form | WhatsApp Flow Submitted | |
| Customer clicks a Facebook/Instagram WhatsApp ad | Ad Click (CCTWA) | |
| A new lead comes in from a Facebook Lead Ad | New Lead (Facebook Lead Ad) | |
| Customer comments on your Facebook/Instagram post | Post Comment | Messenger, Instagram |
| You're testing a new flow | Manual | All |