Home/Help Center/Flow triggers

Automation

Flow Triggers: Keywords, New Conversations, Forms and More

Every way a VGraple CRM flow can start, from a keyword or any inbound message to a tag, segment, form submission or appointment event, and how each one behaves.

By Chirag Darji · Updated 27 Aug 2026 · 7 min read

On this page
  1. Before you start
  2. Steps
  3. What you will see
  4. Settings and options
  5. Troubleshooting
  6. Related reading
VGraple CRM flow builder canvas with chatbot nodes for messages, templates and AI responses

A flow's trigger node decides what starts it: a word a customer types, any message at all, a tag landing on a contact, a contact matching a saved segment, a form submission, or one of three appointment events. This article covers all six trigger categories, exactly what each one's fields do, and how the platform checks for a match behind the scenes.

Flow triggers: first 5 of 7 steps

  1. 1Open the flow's trigger node
  2. 2For Keyword / Inbound Message
  3. 3For Contact enters a Segment
  4. 4For Contact receives a Tag
  5. 5For the three appointment triggers
The steps on this page, in order.

Before you start

  • The trigger dropdown groups options by category: Messaging (Keyword / Inbound Message, Contact enters a Segment), Tags (Contact receives a Tag), Appointments (Appointment Booked, Appointment Reminder, Appointment Completed), and Forms (Form Submitted).
  • Only Active flows evaluate triggers. A flow left in Draft never fires, no matter how its trigger is configured.
  • Segment-entry and appointment-reminder triggers run on a schedule (hourly and every 5 minutes respectively), not instantly. Every other trigger fires the same second the underlying event happens.
  • A trigger that targets a contact with no WhatsApp number (a website chat visitor, a Calendly booking made with only an email, or a Meta DM contact) is skipped, since there is nowhere for the flow to send a WhatsApp message.

Steps

  1. Open the flow's trigger node and choose a Trigger Type from the dropdown.
  2. For Keyword / Inbound Message, enter one or more comma-separated keywords (matching is a case-insensitive "contains" check by default), or leave the field blank to catch any inbound message that no keyword flow already claimed.

Automation flows in VGraple CRM with their trigger type, status and how many times each one has run

  1. For Contact enters a Segment, pick a saved segment from the dropdown. The flow runs once for each contact the first time they match that segment's filter, checked hourly.
  2. For Contact receives a Tag, pick a specific tag, or leave it on "Any tag" to fire whenever any tag is applied to a contact.
  3. For the three appointment triggers, optionally scope to one service; leave it on "Any service" to catch every appointment. Appointment Reminder additionally needs an "Hours before appointment" value (1 to 168 hours), checked every 5 minutes.
  4. For Form Submitted, optionally scope to one specific form, or leave it on "Any form" to fire on every submission across every form in your workspace.
  5. Activate the flow and confirm it fires by triggering the event yourself: message the keyword, book a test appointment, submit the test form, or add the tag to a test contact.

A salon that wants three different automated moments does not need three different tools: an Appointment Booked trigger sends the confirmation the instant the slot is taken, an Appointment Reminder trigger fires a day ahead with the service name and price already filled in, and an Appointment Completed trigger asks for a review once the visit is over. Each is its own flow with its own trigger node, so editing the reminder wording never risks breaking the confirmation.

What you will see

A matching keyword or catch-all trigger starts a flow execution the instant the message is processed, visible as a new run on the flow's list entry within a second or two. A segment-entry or appointment-reminder trigger takes up to an hour or 5 minutes respectively to notice a new match, since those run on a schedule rather than instantly. Every trigger passes useful context into the flow as variables you can reference with {{variable_name}}: an appointment trigger provides service_name, service_price (booked) or service_duration (completed) and appointment_at; a form trigger provides every field the customer answered.

None of this requires you to build any of the matching logic yourself. A keyword flow does not need you to write a webhook handler that checks incoming text against a list; a reminder flow does not need you to run your own cron job that scans a calendar every few minutes. Choosing a trigger type and filling in its two or three fields is the entire setup on your side.

Settings and options

Trigger typeCategoryFieldsFires
Keyword / Inbound Message (with keywords)MessagingKeywords (comma-separated), match typeInstantly, when an inbound message contains (or exactly matches) a keyword
Keyword / Inbound Message (blank)MessagingNoneInstantly, as a catch-all for any inbound message no keyword flow already claimed; suppressed while the contact has an active sequence running
Contact enters a SegmentMessagingSegmentHourly, for each contact matching the segment for the first time
Contact receives a TagTagsTag (optional; blank matches any tag)Instantly, the moment the tag assignment is saved
Appointment BookedAppointmentsService (optional)Instantly, right after the appointment is created
Appointment ReminderAppointmentsService (optional), Hours before appointmentEvery 5 minutes, for appointments whose reminder offset falls in the current window
Appointment CompletedAppointmentsService (optional)Instantly, the moment an appointment's status changes to completed
Form SubmittedFormsForm (optional; blank matches any form)Instantly, right after the submission is saved

Troubleshooting

SymptomLikely causeFix
A keyword flow never fires for a real customer messageThe message did not contain the exact keyword text, including a typo, extra punctuation, or a different word entirelyBroaden the keyword list with common variations, or switch to a blank catch-all trigger if precision is not critical
A segment-entry flow has not fired for a contact you can see clearly matchesThe hourly check has not run yet, or the contact already matched the segment before the flow was createdWait for the next hourly cycle; a contact that matched before flow creation never triggers it retroactively
An appointment reminder never sendsThe service filter is scoped to a different service than the one actually booked, or the appointment was cancelled before the reminder windowCheck the trigger's Service field, and confirm the appointment is still in "scheduled" status
A form-submitted trigger does not start a flowThe contact has no WhatsApp number (a widget-only submission with no phone field), or the form filter is scoped to a different formAdd a phone field to the form if you need WhatsApp follow-up, and confirm the trigger's Form dropdown matches the form that was actually submitted
Two flows both respond to the same keywordBoth flows are active with overlapping keywordsRename or disable one so only one flow owns that word
A tag-added trigger fired once but not again for the same contactThis is expected; the trigger only fires on the instant a tag assignment is created, not on every later save of a contact that already carries itRemove and re-add the tag to fire it again, or use a different trigger for repeatable automation

Once your trigger is set, add the nodes that make up the conversation itself; see the flow node reference for every field, or the broader Flow Builder guide for wiring nodes together and testing the result.

Frequently asked questions

How do I make a flow answer any message, not just a keyword?
Set the trigger type to Keyword / Inbound Message and leave the keyword field blank. Behind the scenes this saves the trigger as a catch-all: it fires for any inbound message that no keyword-specific flow already claimed.
What happens if two active flows use the same keyword?
The executor checks keyword flows in an unspecified order and stops at the first match, so only one of the two ever responds. Keep trigger keywords distinct across your active flows so behavior does not depend on evaluation order.
Does a segment-entry flow run for contacts who already matched the segment before I created the flow?
No. It only runs for contacts who match the segment for the first time after the flow is created and active, checked once an hour by a background job. A contact who already matched before the flow existed never triggers it retroactively.
Can I limit an appointment trigger to one specific service?
Yes. Appointment Booked, Appointment Reminder and Appointment Completed triggers all have an optional Service field; leave it on "Any service" to fire for every appointment, or pick one to scope the flow to that service only.
How precise is the Appointment Reminder trigger's timing?
It is checked every 5 minutes by a background job, matching appointments whose reminder offset (hours before the appointment) falls inside that 5-minute window. A reminder set for 24 hours before fires within about 5 minutes of exactly that mark, not to the second.
Does a Tag Added trigger fire for a tag the contact already had?
No. It fires only on the instant the tag assignment is made, from the same action that adds the tag. Re-saving a contact that already carries the tag does not fire the flow again.
Can a form submission trigger a flow if the submitter has no WhatsApp number yet?
No. Form Submitted, Appointment Booked, Appointment Completed, Appointment Reminder and Tag Added triggers all check that the contact is WhatsApp-sendable before starting a flow, since these triggers create or reuse a WhatsApp conversation and a synthetic contact (from web chat, Calendly, or a Meta DM) cannot receive one.

Run your WhatsApp on VGraple CRM

Free forever plan, official Meta WhatsApp Business API, set up in 15 minutes. No card needed.