WACM.in Logo
Back to documentation

Flowmaker · AI Flow Builder

Using CRM events and follow-up reminders? Follow the CRM automation tutorial.

Build conversations, one clear step at a time.

Welcome customers, collect answers, help them shop and bring in your team. This guide takes you from your first WhatsApp flow to confident, reliable automation.

Understand a flow before you build

A flow is a sequence of connected steps. Each step is a node. A connection tells the flow where to go next, and a labelled output tells it which path to take. You can build useful flows without AI; add AI only where it helps answer or understand a question.

  1. Trigger: what starts it?
  2. Action: what should happen?
  3. Decision: which path?
  4. End: finish this run

Triggers start a conversation or react to an event

MENU can start a shopping menu. Order Created can start an order confirmation. Event triggers require the connected module to produce the event.

Actions do something useful

Send a message, save an answer, update a contact or call an API. Most actions continue as soon as they finish.

Reply nodes wait for the customer

Ask Question, Quick Reply Buttons and List Menu Message pause at that step until the customer responds. Each output needs a connected next step.

Decisions choose a route

Branch gives a True/False choice; Switch gives several cases. Connect the fallback so an unexpected answer still has a useful destination.

Build your first flow: a welcome reply

Start with three nodes and a test phone. Your goal is simple: when a customer sends MENU, they receive one welcome message.

  1. On Keyword Match: MENU
  2. Send Text Message
  3. End Flow
  1. 1

    Prepare your account

    Connect your WhatsApp Business number and check that you can receive a message in the inbox. Make sure the bot is enabled for your test contact. A simple keyword flow needs no AI key.

  2. 2

    Create a named flow

    Open AI Flows in your dashboard and create a flow called “MENU — welcome”. Open its Flow maker. Check its Active/Disabled status and disable it while preparing the graph.

  3. 3

    Choose an intentional starting point

    From the triggers panel, add On Keyword Match. Add MENU with Exact matching. This gives your test a predictable starting point; “menu” will also match.

  4. 4

    Add your message

    Add Send Text Message from the messaging panel. Enter “Welcome! Thanks for reaching out to our team.” A text message continues immediately; it does not wait for a reply.

  5. 5

    Connect the path

    Drag from the MENU keyword output to the message input. Add End Flow and connect the message output to it. A line tells Flowmaker which step to run next.

  6. 6

    Save and address validation

    Click Save. Fix validation errors and review warnings about missing connections or incomplete settings. Saving the graph and enabling a flow are separate actions; saving an already active flow changes its live behavior.

  7. 7

    Run a real conversation test

    Enable the flow from AI Flows. From your test phone, send MENU to the connected number. You should receive one welcome message. Send a different word and confirm this exact-keyword flow does not respond.

  8. 8

    Inspect and expand

    Open History in the builder or AI Flows list and check the matching trigger, message and completed path. Once this works, replace the text step with Quick Reply Buttons and connect each choice to a useful action.

Need to connect your number first? Follow the WhatsApp setup guide.

Choose the right node

Use the names below to find nodes in the builder. Each entry explains what to configure, what happens next and how to avoid a common mistake. Store, Commerce, Verification, Email and Reminders features need their respective modules and integrations configured for your account.

Which node should I choose?
I want to…ChooseRemember
Say somethingSend Text MessageContinues immediately
Collect an answerAsk QuestionWaits and saves a reply
Offer a few choicesQuick Reply ButtonsConnect each choice
Check one conditionBranch (If / Else)Connect True and False
Match several valuesSwitch (Multi-Path)Connect the default
Wait before the next actionDelay TimerPauses the flow; max 24 hours
Nudge someone who has not repliedSmart Follow-UpConditional mode; flow continues
Send a later reminderReminder Due → WhatsApp TemplateSchedule in Reminders first

Showing 69 of 69 nodes. Open a node for setup, outputs and a practical tip.

Triggers

On Incoming Message

Starts on a regular incoming WhatsApp message.

What to configure

Connect to your welcome menu or AI assistant.

What happens next

Continues to the connected action; a flow waiting for a reply resumes at its waiting node.

Use it well

Use one main entry flow. Multiple active flows with overlapping triggers can respond to the same message.

Node identifier: incoming_message

Triggers

On First Message

Welcomes a contact whose conversation has only its first stored message.

What to configure

Write a short welcome and connect the next action.

What happens next

Continues when the first-message condition matches.

Use it well

Test with a new contact. Existing message history, including outgoing messages, can prevent this trigger from matching.

Node identifier: first_message

Triggers

On Keyword Match

Starts a specific path for words or patterns such as MENU, HELP, or order codes.

What to configure

Add a keyword, choose Exact, Contains, Starts With, Ends With, or Regex, and connect that keyword’s output.

What happens next

Uses the matched keyword output; no match stops this entry path.

Use it well

Matching ignores letter case by default. Priority order is Exact → Starts With → Ends With → Contains → Regex.

Node identifier: keyword_trigger

Triggers

On Template Button Click

Starts a flow when a customer taps a template quick reply.

What to configure

Select the template/button filters shown in the node.

What happens next

Connect the matching event output to your first action.

Use it well

Use the button identifier from your template; a website button opens a URL and is not a quick reply.

Node identifier: template_button_clicked

Triggers

Order Created

Runs when the connected store creates an order.

What to configure

Connect your store and choose any order filters.

What happens next

Connect the matching event output to your first action.

Use it well

Use actual order event variables from the variable picker; test with a new order.

Node identifier: order_created

Triggers

Order Status Updated

Runs when an order’s status changes.

What to configure

Choose the relevant status filter and prepare a status message.

What happens next

Connect the matching event output to your first action.

Use it well

Use separate messages for different statuses and test the integration’s emitted status values.

Node identifier: order_status_updated

Triggers

Cart Updated

Runs when the connected cart changes.

What to configure

Connect the store/cart integration and add the next action.

What happens next

Connect the matching event output to your first action.

Use it well

A cart may change repeatedly; avoid sending a message on every change.

Node identifier: cart_updated

Triggers

Abandoned Cart

Runs when your store reports an incomplete cart.

What to configure

Configure abandonment detection in the store integration first.

What happens next

Connect the matching event output to your first action.

Use it well

This trigger receives an event; it does not decide by itself when a cart becomes abandoned.

Node identifier: abandoned_cart

Triggers

Checkout Created

Runs when a checkout is created.

What to configure

Connect the checkout integration and configure available filters.

What happens next

Connect the matching event output to your first action.

Use it well

Starting checkout does not confirm payment.

Node identifier: checkout_created

Triggers

Checkout Updated

Runs when checkout details change.

What to configure

Choose the checkout filters relevant to your integration.

What happens next

Connect the matching event output to your first action.

Use it well

Updates may happen several times; limit customer notifications.

Node identifier: checkout_updated

Triggers

Catalog Opened

Runs when the connected catalog reports a catalog-open event.

What to configure

Connect your catalog/store tracking and the next action.

What happens next

Connect the matching event output to your first action.

Use it well

Verify that your integration emits this event; simply sending a catalog link does not prove it was opened.

Node identifier: catalog_opened

Triggers

Product Updated

Runs when the store reports a product update.

What to configure

Connect product update events to an internal alert or API action.

What happens next

Connect the matching event output to your first action.

Use it well

Product events may have no customer attached. Use staff alerts rather than assuming a customer recipient exists.

Node identifier: product_updated

Triggers

Payment Received

Runs after the Commerce integration confirms a payment.

What to configure

Enable Commerce and connect your configured payment gateway.

What happens next

Connect the matching event output to your first action.

Use it well

Use this event to confirm payment; a clicked payment link is not confirmation.

Node identifier: commerce_payment_received

Triggers

Payment Failed

Runs after the Commerce integration reports payment failure.

What to configure

Connect a helpful retry or support path.

What happens next

Connect the matching event output to your first action.

Use it well

Avoid automatic repeated payment requests; explain what the customer can do next.

Node identifier: commerce_payment_failed

Triggers

Refund Processed

Runs when Commerce reports a processed refund.

What to configure

Connect an appropriate confirmation template.

What happens next

Connect the matching event output to your first action.

Use it well

Report the recorded refund status without promising a bank settlement time.

Node identifier: commerce_refund_processed

Triggers

Subscription Activated

Runs when Commerce activates a subscription.

What to configure

Enable subscriptions and connect a welcome action.

What happens next

Connect the matching event output to your first action.

Use it well

Keep activation and renewal messages separate.

Node identifier: commerce_subscription_activated

Triggers

Subscription Renewed

Runs when Commerce reports a subscription renewal.

What to configure

Connect your renewal confirmation.

What happens next

Connect the matching event output to your first action.

Use it well

Use the real renewal event data for dates and amounts.

Node identifier: commerce_subscription_renewed

Triggers

Subscription Cancelled

Runs when Commerce reports cancellation.

What to configure

Connect a cancellation acknowledgement.

What happens next

Connect the matching event output to your first action.

Use it well

Use actual subscription details for access end dates.

Node identifier: commerce_subscription_cancelled

Triggers

Subscription Expired

Runs when Commerce reports expiry.

What to configure

Connect a renewal or support message.

What happens next

Connect the matching event output to your first action.

Use it well

Expiry behavior depends on your subscription configuration.

Node identifier: commerce_subscription_expired

Triggers

Reservation Created

Runs when the Reminders module creates a reservation.

What to configure

Set up reservations and connect the confirmation action.

What happens next

Connect the matching event output to your first action.

Use it well

This node reacts to a reservation; it does not create one.

Node identifier: reservation_created

Triggers

Reservation Cancelled

Runs when a reservation is cancelled.

What to configure

Connect a cancellation message or staff alert.

What happens next

Connect the matching event output to your first action.

Use it well

Keep cancellation messages separate from reminder flows.

Node identifier: reservation_cancelled

Triggers

Reminder Due

Runs when a scheduled reminder becomes due.

What to configure

Create the reminder in the Reminders module first.

What happens next

Connect the matching event output to your first action.

Use it well

Choose an approved template if the customer’s messaging window may be closed.

Node identifier: reminder_due

Triggers

Template Status Changed

Runs when a WhatsApp template’s status changes.

What to configure

Choose the relevant template/status filters.

What happens next

Connect the matching event output to your first action.

Use it well

This tracks template approval, pause or rejection; it is not message delivery/read tracking. Use internal alerts.

Node identifier: template_status_updated

Messages

Send Text Message

Sends a text reply to the current customer.

What to configure

Enter a message and insert variables using the picker.

What happens next

Sends, then continues to the next connected action.

Use it well

Use for a statement. Use Ask Question when you need to wait for an answer.

Node identifier: message

Messages

Send Image

Sends an image with an optional caption.

What to configure

Upload an image or supply an accessible media URL.

What happens next

Sends, then continues.

Use it well

Test the image on a phone and make the caption meaningful without the image.

Node identifier: image

Messages

Send PDF / Document

Sends a brochure, document or invoice.

What to configure

Upload your document and configure its filename/caption.

What happens next

Sends, then continues.

Use it well

Check that the customer can open the file and that it contains the correct customer’s information.

Node identifier: pdf

Messages

Send Video

Sends a video with an optional caption.

What to configure

Upload a supported video or set its accessible URL.

What happens next

Sends, then continues.

Use it well

Keep demonstrations short and explain what the customer should watch for.

Node identifier: video

Messages

WhatsApp Template

Sends a Meta-approved template with mapped parameters.

What to configure

Choose an approved template, language and parameter values; connect quick reply outputs if used.

What happens next

Can wait for template quick replies and follow the selected button path.

Use it well

Use templates for proactive messages and outside the customer service window. Approval does not replace customer opt-in.

Node identifier: template

Messages

Quick Reply Buttons

Shows up to three choices the customer can tap.

What to configure

Write a prompt, name each button and connect each button output.

What happens next

Waits for the reply, then follows the selected button output.

Use it well

Use distinct labels such as Shop, My orders and Talk to team; include an unmatched-reply path where available.

Node identifier: quick_replies

Messages

List Menu Message

Shows a selectable menu for more choices.

What to configure

Add sections and rows, a menu button title and connect the row outputs.

What happens next

Waits for a selection and follows that row’s path.

Use it well

Keep the menu short (up to ten rows) and test every choice plus an unexpected typed reply.

Node identifier: list_message

Messages

Send Staff / External Message

Sends a WhatsApp alert to configured staff or external recipients.

What to configure

Choose agents or phone recipients and write the alert.

What happens next

Sends the notification and continues.

Use it well

Check recipients and share only the information needed to handle the request.

Node identifier: send_ext_message

Messages

Send Email

Sends an email through the company’s email configuration.

What to configure

Configure company SMTP, recipient, subject and message.

What happens next

Sends and continues.

Use it well

Collect and validate an email address before using a customer reply as the recipient.

Node identifier: send_email

Messages

WhatsApp Interactive Flow

Sends an official Meta WhatsApp Flow interactive multi-screen form and captures structured responses.

What to configure

Select an approved Meta WhatsApp Flow, configure CTA text, screen mode, and response variable prefix.

What happens next

Pauses until the customer submits the interactive form, stores submitted fields as flow variables, and continues via Submitted or Timeout/Fallback.

Use it well

Submitted form fields are automatically mapped into flow variables (e.g. {{flow_response.field_name}}) for downstream CRM or Branch nodes.

Node identifier: whatsapp_flow

CRM & Verification

Ask Question

Asks for information and saves the customer’s reply.

What to configure

Write one question, name its variable (for example lead_email), and optionally enable validation.

What happens next

Pauses until the next reply; validation offers Valid and Invalid paths.

Use it well

Connect invalid input to a clear retry. Saving a flow variable does not update the contact profile.

Node identifier: question

CRM & Verification

Update Contact Profile

Saves collected information to the contact record.

What to configure

Map a contact field to your collected variable.

What happens next

Updates the profile and continues.

Use it well

Validate answers first. Save durable data before End Flow clears temporary flow variables.

Node identifier: update_contact

CRM & Verification

Assign to Agent

Assigns the contact to a selected staff member.

What to configure

Select an agent from your company; None removes assignment.

What happens next

Assigns and continues to the next action.

Use it well

Assignment alone does not disable automation. Agree on how your team pauses the contact’s bot during a human conversation.

Node identifier: assign_agent

CRM & Verification

Assign to Group / Team

Adds or removes a contact from a contact group.

What to configure

Choose the group and Add or Remove.

What happens next

Updates group membership and continues.

Use it well

Use groups for segmentation. Group membership does not assign a specific human agent.

Node identifier: assign_group

CRM & Verification

Add / Remove Tag

Labels a contact for segmentation.

What to configure

Choose the tag and whether to add or remove it.

What happens next

Updates tags and continues.

Use it well

Use consistent tags such as demo_requested or needs_support.

Node identifier: tag

CRM & Verification

Move Journey Stage

Moves a contact to a stage of a sales or service journey.

What to configure

Select the journey and destination stage.

What happens next

Moves the contact and continues; stage entry may trigger configured campaigns.

Use it well

Review stage campaigns first to avoid sending duplicate messages.

Node identifier: move_journey_stage

CRM & Verification

Create CRM Enquiry

Creates or updates a Sales CRM lead/enquiry for the active contact.

What to configure

Select the CRM pipeline, initial stage, enquiry title, requirement template, and optional deal value or owner.

What happens next

Creates the enquiry, stores {{crm_lead_id}}, and continues.

Use it well

Pairs with Ask Question or WhatsApp Interactive Flow to convert qualified chat replies directly into pipeline deals.

Node identifier: crm_create_enquiry

CRM & Verification

Update CRM Stage

Moves the contact’s active CRM enquiry to a target pipeline stage.

What to configure

Select the pipeline and target stage (and optional lost reason if moving to a Lost stage).

What happens next

Updates the enquiry stage and continues.

Use it well

Use after payment confirmation or qualification steps to keep your sales board synchronized automatically.

Node identifier: crm_update_stage

CRM & Verification

Add CRM Lead Note

Appends a private internal note to the contact’s active CRM enquiry.

What to configure

Write the note template using collected flow variables.

What happens next

Saves the internal note and continues without sending a WhatsApp message.

Use it well

Ideal for logging AI summaries, form answers, or qualification scores for sales reps.

Node identifier: crm_add_note

CRM & Verification

Schedule CRM Follow-Up Task

Creates a scheduled follow-up task on the contact’s CRM enquiry.

What to configure

Configure task title, due offset (in minutes/hours/days), and optional assignee.

What happens next

Schedules the task and continues.

Use it well

Ensures a human rep follows up on high-intent leads even if the customer stops replying.

Node identifier: crm_schedule_task

CRM & Verification

Request Verification

Requests an OTP through the Verification module.

What to configure

Set Profile ID, recipient Identifier, Channel (Auto, WhatsApp or Email) and Purpose. Leave Silent Mode off when a code should be delivered.

What happens next

Requests verification and continues.

Use it well

Prepare a separate Ask Question step to collect the code; requesting a code does not verify the contact.

Node identifier: verification_request

CRM & Verification

Verify Code

Checks the code supplied by the customer.

What to configure

Map the collected code and the required verification reference/settings.

What happens next

Connect both Verified and Failed outputs.

Use it well

Provide a retry or a fresh-code path for invalid or expired codes.

Node identifier: verification_verify

CRM & Verification

Verification Status

Checks the status of a specific verification request.

What to configure

Set the request ID variable from your verification request.

What happens next

Connect Pending, Verified, Failed, Expired, Blocked and Rate Limited outputs; unmatched states fall back to Failed.

Use it well

Use before actions that require a verified contact.

Node identifier: verification_status

Logic & Timing

Branch (If / Else)

Tests conditions with AND / OR logic and chooses one of two paths.

What to configure

Choose Match ALL (AND) or Match ANY (OR), then configure variable, operator, and comparison value for each rule.

What happens next

True when the condition group passes; otherwise False.

Use it well

Supports 11 operators: equals, not_equals, contains, not_contains, starts_with, ends_with, greater_than, less_than, is_empty, is_not_empty, and regex_match. Always connect both outcomes.

Node identifier: branch

Logic & Timing

Switch (Multi-Path)

Routes one variable among several named cases.

What to configure

Choose the variable and define the values to match.

What happens next

Follows the matching case or the default output.

Use it well

Use for region or product category; connect a default for unfamiliar answers.

Node identifier: switch

Logic & Timing

Opening Hours

Chooses an open-hours or closed-hours path.

What to configure

Add day/time ranges and check the company timezone.

What happens next

Open during a configured range; otherwise Closed.

Use it well

For overnight shifts, split hours across the two days. Test both paths in the company timezone.

Node identifier: opening_hours

Logic & Timing

Delay Timer

Pauses the flow before continuing.

What to configure

Choose duration and unit, then connect the next action.

What happens next

The next action waits until the timer finishes. Delay is capped at 24 hours.

Use it well

Use only when the next action really must wait. Timers require working background processing.

Node identifier: delay

Logic & Timing

Smart Follow-Up

Schedules a text follow-up while the flow continues immediately.

What to configure

Choose duration, message and Conditional or Force mode.

What happens next

Conditional is cancelled by a new reply; Force sends regardless of a reply.

Use it well

It sends text, not a template. Keep it within the service window; use the Reminders module with a template for later outreach.

Node identifier: followup

Logic & Timing

Execution Counter

Limits how often this contact can pass this counter in this flow.

What to configure

Set the maximum and choose All time or Last 30 days.

What happens next

True within the limit (including the current attempt); False after exceeding it.

Use it well

Put before repeat-prone offers or expensive actions. It is not a daily/weekly counter.

Node identifier: counter

Logic & Timing

Jump to Flow (Sub-Flow Handoff)

Transfers execution from the current flow to another active Flowmaker flow.

What to configure

Select the target flow ID and whether to preserve current session variables.

What happens next

Hands off execution to the target flow’s entry action with loop-depth protection (max 3 hops).

Use it well

Break large monolithic bots into modular reusable flows (e.g. Onboarding, Checkout, Support Escalation).

Node identifier: jump_to_flow

Logic & Timing

End Flow

Finishes this flow and clears its temporary contact state.

What to configure

Connect each completed path to End Flow.

What happens next

Stops here; no outgoing connection is needed.

Use it well

Persist important answers first. Ending this run does not disable the flow or cancel every scheduled job.

Node identifier: end

AI & Tools

AI Agent / LLM

Generates an AI answer and can route by customer intent.

What to configure

Configure the company OpenRouter key/model, prompt, output variable and optional intentions/knowledge search.

What happens next

Stores the result, then follows an intention output or the fallback path.

Use it well

Add Send Text Message with {{ai_response_message}} for the default structured output. The AI node does not send the answer itself.

Node identifier: openai

AI & Tools

HTTP Request (API)

Calls an external service and stores its response.

What to configure

Set method, URL, headers/body and a response variable.

What happens next

Stores response/status variables and continues to its single next action. Use a Branch after it to check the HTTP status.

Use it well

Check response data/status before mapping fields. A request exception stops this path; it has no separate failure output. Test unavailable services too.

Node identifier: http

AI & Tools

Set Variable (DataStore)

Stores a named value for later steps in this flow.

What to configure

Set a variable name and value; values can include other variables.

What happens next

Stores the value and continues.

Use it well

It stores text/value substitutions; it is not a spreadsheet formula engine or a permanent contact field.

Node identifier: datastore

Store & Payments

Add to Cart

Adds a selected product and quantity to the customer’s cart.

What to configure

Supply a valid product ID and quantity from a confirmed selection.

What happens next

Updates the cart and continues.

Use it well

Do not treat a typed product name as an ID. Confirm the product and quantity first.

Node identifier: add_to_cart

Store & Payments

Cart Summary

Sends a summary of the customer’s current cart.

What to configure

Configure the summary text and available options.

What happens next

Sends the summary and continues.

Use it well

Include a helpful route for an empty cart before checkout.

Node identifier: cart_summary

Store & Payments

Fetch Order Details

Loads a customer’s order into flow variables.

What to configure

Choose latest/specific order selection and an output prefix (default selected_order).

What happens next

Loads order data and continues.

Use it well

Fetch before composing a receipt; handle missing orders.

Node identifier: order_details

Store & Payments

Send Orders List

Lets the customer select one of their recent orders.

What to configure

Configure the menu and variable prefix (default selected_order).

What happens next

Waits for selection; connect Selected and the fallback output.

Use it well

Test with a customer who has orders and one who has none.

Node identifier: orders_list

Store & Payments

Send Order Receipt

Sends formatted text using previously loaded order variables.

What to configure

Load/select an order first; edit the receipt text.

What happens next

Sends and continues.

Use it well

Use {{selected_order_number}} and {{selected_order_items_text}}; this node does not fetch the order itself.

Node identifier: send_order_details

Store & Payments

Check User Pricing

Checks contact credits and consumes one credit when allowed.

What to configure

Set the free execution allowance; connect both outcomes.

What happens next

True if credits allow execution (then deducts one); otherwise False.

Use it well

This changes the contact’s credit balance. It does not calculate a product price or check your WACM subscription plan.

Node identifier: check_pricing

Use customer data without writing code

A variable is a named value you can use in later steps. Write it inside double braces or insert it from the variable picker. For example, Hello {{contact_name}}! uses the customer’s saved name.

Common Flowmaker variables and where they come from
ValueExampleWhere it comes from
Saved contact information{{contact_name}}, {{contact_email}}The contact profile; these may be empty
Latest customer message{{contact_last_message}}The contact’s latest message
Answer to your question{{lead_email}}Ask Question with variable name lead_email
Value you set yourself{{lead_source}}Set Variable with name lead_source
Readable AI answer{{ai_response_message}}The message field of default structured AI output
Selected order{{selected_order_number}}Send Orders List or Fetch Order Details
Number of matching products{{search_results_count}}Product Search with the default prefix
API response status{{lookup_status}}HTTP Request with response variable lookup

A reliable data collection pattern

  1. Ask Question → lead_email
  2. Valid output
  3. Update Contact Profile: email = {{lead_email}}
  4. Confirmation message
  5. End Flow

Question and DataStore values belong to this contact’s state in this flow. End Flow clears that temporary state. Use Update Contact Profile or an appropriate integration to keep information you need later. A variable created in one flow is not automatically available in another flow.

Order, payment and reservation variables depend on the event and configured prefix. Use the picker and inspect a test execution in History before mapping them. Add a fallback when a name, lookup or order is missing.

Follow a practical use case

These are build recipes, not one-click imports. Start with the one closest to your goal, configure the listed prerequisites and test each outcome before adding more complexity.

Sales teams, education, real estate and service businesses

Collect and qualify a sales lead

Before you start: A contact email field, a sales agent and an optional lead journey.

  1. On Keyword Match: DEMO
  2. Ask Question: name
  3. Ask Question: email
  4. Update Contact Profile
  5. Add / Remove Tag
  6. Assign to Agent
  7. Send Text Message
  8. End Flow
  1. Use an Exact DEMO keyword so the customer starts this flow intentionally.
  2. Save answers as lead_name and lead_email. Enable email validation and connect Invalid to a friendly retry question.
  3. Map lead_name to the contact name and lead_email to email in Update Contact Profile. Add demo_requested and optionally move the lead to your qualification stage.
  4. Assign a sales agent, acknowledge the request and finish. Agree on bot pause behavior for the human conversation.

Check it works: Submit a valid email and an invalid email. Confirm the contact profile was updated before End Flow and the correct agent was assigned.

Any team with sales and support enquiries

Welcome customers and route support

Before you start: A WhatsApp connection, support agent and configured opening hours.

  1. On Keyword Match: MENU
  2. Quick Reply Buttons
  3. Opening Hours
  4. Assign to Agent
  5. Send Text Message
  6. End Flow
  1. Create Shop, My orders and Talk to team buttons; connect each output to its own action.
  2. On Talk to team, add Opening Hours. Route Open to Assign to Agent and a handoff message.
  3. Route Closed to a message stating your opening hours and an Ask Question for the enquiry. Save the answer to a custom contact field or notify staff before ending.
  4. Connect the menu’s fallback, where available, to “Please choose an option” rather than leaving an unanswered path.

Check it works: Tap every button, type an unexpected reply, and exercise both open and closed paths. Check that overlapping incoming-message flows do not send a second welcome.

Teams with a maintained product or service knowledge base

Answer FAQs with AI and offer a human

Before you start: A configured company OpenRouter key/model, trained knowledge sources and a support agent.

  1. On Incoming Message
  2. AI Agent / LLM
  3. Send Text Message
  4. End Flow
  1. Open AI Knowledge Training from the tools panel. Add current FAQs, documents or website content and wait for training to complete.
  2. In AI Agent / LLM, enable knowledge search and write a system instruction to use your business information and say when an answer is unknown. Use contact_last_message as the customer question.
  3. Keep the output variable ai_response. Connect the normal path to Send Text Message containing {{ai_response_message}}.
  4. Add a human_support intention for requests to speak to a person. Connect its output to Assign to Agent, a handoff message and End Flow; connect the fallback too.

Check it works: Ask a covered question, an unknown question and “I want to speak to a person”. Inspect History for output fields and verify that the message shows readable text rather than JSON.

Stores with customer orders in the connected Shop module

Let customers check their orders

Before you start: Connected store data and a test customer with past orders.

  1. On Keyword Match: ORDERS
  2. Send Orders List
  3. Send Order Receipt
  4. End Flow
  1. Start with an Exact ORDERS keyword and send an Orders List using the selected_order prefix.
  2. Connect the Selected output to Send Order Receipt and review its selected_order variables.
  3. If you need an explicit lookup instead, use Fetch Order Details before Send Order Receipt.
  4. Connect the fallback to “We could not find an order. Our team can help” and offer an agent.

Check it works: Select two different orders and confirm each receipt belongs to the current customer. Test the fallback using a customer with no orders.

Stores with configured abandonment events and checkout links

Recover an abandoned cart

Before you start: An abandonment integration, customer opt-in and an approved cart-recovery template.

  1. Abandoned Cart
  2. Execution Counter
  3. WhatsApp Template
  4. End Flow
  1. Enable abandonment detection in your store integration and confirm that its event includes an identifiable customer and the checkout data you need.
  2. Set an Execution Counter limit suitable for your campaign. Route True to an approved recovery template and False to End Flow.
  3. Map the template’s parameters and checkout URL from the actual event variables. Keep the invitation helpful and respect opt-outs.
  4. If offering assistance after a reply, use On Template Button Click with a quick reply such as “Help me” and route it to an agent.

Check it works: Create a real test abandonment, check the checkout link and trigger again to test the counter limit. A link click must not be reported as a paid order.

Appointment, reservation and service teams

Confirm bookings and send reminders

Before you start: The Reminders module, a reservation and approved confirmation/reminder templates.

  1. Reservation Created
  2. WhatsApp Template
  3. End Flow
  1. Create a reservation through your existing booking process. Reservation Created receives that event and sends the confirmation template.
  2. Create a separate Reminder Due flow to send the reminder template at the scheduled time. The reminder record controls the appointment timing.
  3. Create a Reservation Cancelled flow for cancellation messages or staff alerts.
  4. Map date, time and location from the actual reservation/reminder variables and test the configured timezone.

Check it works: Create, remind and cancel a test reservation. Confirm that each event selects the correct flow and that the customer sees the correct appointment time.

Businesses using the Verification module

Verify a customer’s code

Before you start: Configured verification channel and the node’s recipient/reference settings.

  1. On Keyword Match: VERIFY
  2. Request Verification
  3. Ask Question: code
  4. Verify Code
  5. Send Text Message
  6. End Flow
  1. Configure Request Verification for the supported channel and recipient. Store/use the verification reference exposed by the node.
  2. Ask for the code and save it to verification_code. Map that answer and the request reference into Verify Code.
  3. Connect Verified to a success message and your next permitted action.
  4. Connect Failed to a clear retry or fresh-code path; use a counter if you need to limit repeated attempts.

Check it works: Try a correct code, incorrect code and expired code. Confirm that only Verified reaches the protected action.

Businesses with Commerce and a connected payment gateway

Confirm payments and subscriptions

Before you start: Configured Commerce events and approved payment/subscription templates.

  1. Payment Received
  2. WhatsApp Template
  3. End Flow
  1. Use Send Payment Link for a specific amount, or Send Checkout Link for cart items, in your purchase flow.
  2. Create a separate Payment Received flow for confirmation after the integration reports success.
  3. Create a Payment Failed flow with a helpful retry/support option. Use separate subscription event flows for activation, renewal, cancellation and expiry.
  4. Map amounts, currency and subscription dates from the event’s real data.

Check it works: Exercise both a successful and failed test transaction through your integration. Confirm no success message is sent merely because a link was opened.

Make the flow clear, then make it live

Give every flow one clear job

Name it after its purpose, such as “DEMO — lead capture”. Start with the smallest working path and add decisions only when they help the customer.

Ask one question at a time

Explain why you need the answer. Use buttons for predictable choices, validate emails/numbers and provide a helpful invalid-input path.

Connect every outcome

Include False, Closed, Invalid, default, unmatched and failure paths wherever the node provides them. Every completed path should have a deliberate ending.

Keep the human route visible

Offer “Talk to team” and say what happens after assignment. Assignment and End Flow do not disable the contact’s bot; use your team’s bot pause process during handoff.

Limit repeats and side effects

Put a counter before repeat-prone offers. Moving a journey stage can trigger another campaign; API requests and credit checks can change real data. Review those actions before enabling.

Keep the knowledge base current

Use clear, accurate business information. Test unknown questions and connect AI intention/fallback routes. Ask AI to acknowledge missing information rather than invent answers.

Your launch checklist

  • Save successfully and review warnings.
  • Test every button and decision output.
  • Test invalid answers and missing data.
  • Confirm profile updates and recipients.
  • Check templates, links and media on a phone.
  • Test timers with a short duration first.
  • Review History for unexpected or failed steps.
  • Export a backup before editing an existing flow.
  • Check other active flows for overlapping triggers.
  • Confirm the bot pause and handoff process with your team.

Enable the intended flow after testing. If customers see unexpected behavior, disable that flow from AI Flows and inspect its History before making changes.

Find and fix common problems

Start with History. Follow the steps for your test contact and find the last successful, waiting, skipped or failed node. In the history list, filter by flow/contact/status and open step details to inspect the input, output and error.

The flow does not start

Confirm the flow is Active, the test contact’s bot is enabled and the incoming message appears in the inbox. Check Exact versus Contains keywords and their connected outputs. Event triggers need a real event from the relevant module.

I get two replies

Look for multiple active flows matching the same message, particularly broad On Incoming Message flows. Narrow their triggers and check History to identify which flows ran.

The flow stops after a question or menu

Waiting for the customer is expected. Reply from the same contact. Check that the selected button, row, Valid/Invalid or fallback output is connected.

A variable is empty or appears as a placeholder

Check spelling, choose the variable from the picker, and confirm the step that creates it ran earlier in this flow. Look at History for the actual value. End Flow clears temporary flow state.

The AI answer looks like JSON or is never sent

The AI node stores its output. Add Send Text Message with {{ai_response_message}} when using the default structured output. Inspect History if you changed the output variable or the provider returned a different shape.

AI or knowledge training fails

Check the company OpenRouter key, chosen model, provider availability and completed knowledge training. Review the failed step in History and provide a customer-facing fallback where the node offers one.

A timer never fires

Check duration and units; Delay is capped at 24 hours. Confirm the flow/contact still exists. A conditional follow-up is cancelled by a new reply. Ask your administrator to check background workers if scheduled steps remain pending.

A message is processed but not delivered

A successful flow step does not guarantee WhatsApp delivery. Check the inbox/message status, template approval, language, parameter mapping and the customer service window.

A store or payment event never arrives

Confirm the module and integration are configured and emit that event. Test an actual order, abandonment or payment; manually typing an event name in chat does not trigger an event flow.

For support, share the flow name, test time and failing step/error. Remove customer details, API keys and verification codes from screenshots or exported history.

Common questions

Do I need an AI key for every flow?

No. Keyword, message, question and routing flows work without an AI model. AI Agent / LLM and knowledge training require the company’s configured OpenRouter key and model.

Does Save publish the flow?

Save updates the graph. Active/Disabled in AI Flows controls whether it executes. Saving changes to an active flow affects live conversations, so prepare and test changes carefully.

Does End Flow turn off the bot?

No. It finishes this run and clears temporary state for this flow. A later matching message/event can start it again. Disable the flow or use the contact’s bot setting when you need to stop automation.

How do I reuse or back up a flow?

Use Export in the AI Flows list to save JSON and Import to load a graph. Recheck agent/group selections, templates, variables and integration settings in the destination account before enabling it.

Why can’t I see an expected node or integration?

Availability depends on enabled modules, account configuration and permissions. Check the relevant setup with your administrator or WACM support.

Can I describe a flow to AI?

WACM also offers AI-assisted flow generation. Treat the generated result as a starting point: review node settings, connections and customer messages, then run the same tests before enabling it.