WhatsApp lets you run two-way, real-time conversations with your customers — and some of the most valuable ones start when the customer messages you first. A Customer-Initiated Journey is a real-time flow that begins the moment a customer sends your WhatsApp number a keyword such as "join" or "bonus."
When a customer starts the conversation, WhatsApp opens a 24-hour Customer-Initiated window. Inside that window, you can reply with a Session Message instead of a Meta-approved Template Message, so you can build fast, two-way journeys without waiting on Meta template review.
This guide will walk you through how to set up a Customer-Initiated WhatsApp journey, from building the journey to connecting it to a keyword trigger.
A Customer-Initiated Journey relies on three building blocks:
- A WhatsApp journey that opens with a Session Message.
- A real-time trigger built on the
whatsapp_received_incoming_messageevent, using themessage_bodyfield to match your keyword. - A real-time triggered campaign that connects the trigger to the journey.
How to Access Customer-Initiated Journey Setup
You will work across two areas of your Optimove instance, both under the Plan tab:
- Campaign Builder — to create your WhatsApp journey.
- Realtime Triggers — to create your keyword-based trigger.
How to Set Up a Customer-Initiated WhatsApp Journey
Build your WhatsApp journey
Create the journey that runs when a customer messages you.
- Navigate to Plan → Campaign Builder.
- Build your journey and set the first message to a Session Message rather than a Template Message. For example, a welcome flow that fires after a customer texts "join."
For details on creating a Session Message, see Creating a WhatsApp Template.
Create your real-time trigger
- Navigate to Plan → Realtime Triggers and create a new trigger.
- Select the
whatsapp_received_incoming_messageevent. - Set
message_bodyto "Contains" and enter the keyword you want to listen for, such as "join."
message_body "Contains" match is not case-sensitive and supports all languages — customers can type "JOIN," "Join," or a non-English equivalent and still trigger the journey.message_body, similar keywords across different triggers can send customers into the wrong journey. You can also narrow a trigger further using optional fields like Platform, OS, or optimove_brand_id.Create your real-time campaign
- From Realtime Triggers or Campaign Builder, create a new real-time triggered campaign.
- Select the keyword trigger you created in Step 2.
- Select the journey you created in Step 1 (with the Session Message as its starting template).
- Click "Create Campaign" to finalize.
For a full walkthrough of scheduling a real-time triggered campaign, see Creating Event-Triggered Campaigns.
How Customer-Initiated Journeys Work
- No Meta approval for the opener: Because the journey opens with a Session Message, it does not require Meta template approval — only Template Messages need approval.
- 24-hour window: The Customer-Initiated window starts the moment the customer's message triggers the campaign.
- Route by intent: You can create multiple keyword triggers pointing to different journeys to route customers by intent (for example, "join" vs. "bonus").
Key Elements to Keep In Mind
- To change the keyword after launch, update
message_bodyon the Realtime Trigger. - To change the opening message, edit the Session Message directly in Campaign Builder.
- You can narrow which customers trigger a journey using optional fields like Platform, OS, or
optimove_brand_id.