Skip to main content
Flowella adds WhatsApp triggers and five actions to HubSpot workflows. Use them to send templates and messages, wait for a contact’s reply or Flow submission, read documents into contact properties and create PDFs. This page lists every trigger and action with its fields, outputs and error codes. Several actions depend on the 24-hour window: for 24 hours after a contact messages your WhatsApp number, you can send them any message. Outside the window, WhatsApp only delivers approved templates.

Before you start

  • Connect HubSpot to Flowella and check that Custom workflow actions is under Unlocked on the Capabilities card in Settings → HubSpot. See Capabilities.
  • For the triggers, Contact activity events (message sent, read, replies, forms) must be unlocked too. See Check that contact activity events are unlocked.
  • Use contact-based workflows. Flowella’s actions only run on contacts. HubSpot workflows come with Professional and Enterprise plans.
  • To send templates, have at least one approved template. See Templates.
  • Store WhatsApp numbers in international format, for example +447700900123. See Phone number format.
See Before you start for the full checklist.
The send actions always use your default WhatsApp number. To check or change it, see Connected numbers table.

How a workflow send works

This diagram shows what happens when a workflow sends a template, and how the contact’s reply comes back to HubSpot. The HubSpot inbox steps only apply when the Flowella custom channel is connected.
  • HubSpot holds the contact at a send step until Flowella reports the result, for up to one hour. Flowella reports success when WhatsApp marks the message as sent.
  • If a send fails, the step fails with a reason and an error code, and the workflow continues with the next step. See Error codes.
  • Every send appears in the Flowella inbox. Templates sent by a workflow also appear in the HubSpot inbox thread, as the template name and language. Messages from Send WhatsApp Message and Send WhatsApp Reply don’t appear in the HubSpot inbox thread.

Triggers

When you choose a trigger for a contact-based workflow, or the event for a Delay until event step, search for Flowella. HubSpot lists the events under Flowella: WhatsApp Forms Integration, for example Flowella: WhatsApp Forms Integration: Form Completed. You can filter on these properties in the trigger, in Delay until event steps and in active lists. For the full property reference, see Event properties for filtering.

Form Completed (inbound)

This trigger fires when a contact submits a WhatsApp Flow.
  • It only fires for WhatsApp Flow submissions. A website submission of the same HubSpot form doesn’t fire it, so use HubSpot’s own form submission trigger for those.
  • The event records the form name and the source, not the answers. Flowella sends the answers to HubSpot as a submission of the form the Flow was built from. Branch on the contact properties the form writes.
  • Filter on Form Name so that only submissions of that form enrol the contact or end the wait.
Typical use: process a booking, feedback or onboarding form as soon as the contact submits it.

Text Reply (inbound)

This trigger fires when a contact sends you a text message. It also fires when the contact:
  • Taps a quick reply button. The reply is the button’s label.
  • Picks an option from a list. The reply is the option’s title.
  • Submits a WhatsApp Flow. The reply is a one-line summary that starts with the Flow’s title.
It doesn’t fire for images, voice notes, videos or documents, even when they have a caption. Because a Flow submission counts as a reply, a Delay until event step that waits for Text Reply also ends when the contact submits a Flow. To route on what the contact said, enrol on Text Reply and branch on the Last WhatsApp reply message contact property (flowella_last_reply_message). Flowella writes the reply to this property, and the time to Last WhatsApp reply at (flowella_last_reply_at), before the event fires. The property always holds the reply that fired the trigger. Use exact matches for fixed choices such as Yes and No. See Last WhatsApp reply contact properties.
Don’t filter the trigger itself on the event’s Message property. HubSpot checks event filters against every Text Reply event the contact has ever sent, so a keyword filter matches old replies as well as the new one. Rebuild any workflow that filters on Text Reply → Message so that it branches on Last WhatsApp reply message instead.
STOP, UNSUBSCRIBE, CANCEL, END and QUIT are opt-out keywords. When one of them is the whole message, Flowella opts the contact out of messages from that WhatsApp number. The message still fires Text Reply, so don’t build routes that ask contacts to reply with these words, and don’t label a quick reply button Cancel or Stop. See How keyword opt-outs work.
Typical use: route contacts on replies such as Yes, Book or Help, or send a Flow when a contact asks for something.

Message Read (outbound)

This trigger fires when WhatsApp reports that the contact read a message you sent through Flowella. messageType is the type of message that was read: TEXT, IMAGE, AUDIO, VIDEO, DOCUMENT, TEMPLATE, SYSTEM or OTHER. Filter on messageType equal to TEMPLATE to look only at template reads. Typical use: follow up only after the contact has seen your first message.

Message Sent (outbound)

This trigger fires when WhatsApp reports that a message from Flowella was sent to the contact. It covers messages from workflows, the Flowella inbox and bulk sends. deliveryStatus is always sent, because Flowella doesn’t log deliveries as events. templateName holds the template name for template sends, for example flowella_form_reminder. Typical use: track messages your team sends from the Flowella inbox, or start a follow-up timer. A workflow doesn’t need this trigger for its own sends, because the send step’s outputs already record them.

Using “Delay until event” with Flowella triggers

HubSpot’s Delay until event step pauses a contact until a Flowella event happens, or until a time limit passes. Then a Branch step checks whether the event happened in time. For example, a workflow can:
  1. Send a Flow with Send WhatsApp Template.
  2. Wait with Delay until event, set to the Flowella Form Completed event and filtered on Form Name.
  3. Branch on whether the contact submitted in time. If not, send a reminder or create a task.
You can wait for any Flowella event:
  • Form Completed: wait for the Flow’s answers, then branch on the properties the form wrote.
  • Text Reply: wait for any reply, then branch on Last WhatsApp reply message.
  • Message Read: wait until the contact opens your message, then decide whether to follow up.
Plan the time limit around the 24-hour window. A plain text follow-up only reaches the contact if they messaged you in the last 24 hours. After a longer wait, follow up with Send WhatsApp Template or Send WhatsApp Reply.

Actions

Flowella adds five actions to contact-based workflows. Search for the action’s name when you add a step. Assign to Customer Agent is HubSpot’s own action, not a Flowella action. See Hand conversations to the HubSpot Customer Agent.

Outputs of the send actions

Send WhatsApp Template, Send WhatsApp Message and Send WhatsApp Reply return these outputs. Later steps in the workflow can use them as data tokens.

Send WhatsApp Template

This action sends an approved WhatsApp template to the enrolled contact from your default number. Templates with a Flow button are sent the same way, so this is also how you send a Flow from a workflow. Variables
  • Map the variables in the order the template shows them. Image, video and document headers don’t use a slot. For example, a template has {{1}} in the header and {{1}} and {{2}} in the body. Map Template Variable 1 to the header value, and Template Variables 2 and 3 to the body values.
  • If a mapped value is empty, or you map fewer slots than the template has variables, Flowella sends the template’s confirmed fallback value. If there is no confirmed fallback, the send fails. See Fallback values.
  • The action has five slots. For any variable after the fifth, Flowella sends the confirmed fallback value, or the send fails.
  • Dates appear in UTC. See Date and time variables.
  • For a location header, map the latitude and longitude to the slots after the body variables. See Location headers.
Media, buttons and language
  • Image, video and document headers always use the media saved with the template. You can’t change the media for each contact from HubSpot.
  • You can’t set button values for each contact. Put per-contact links or codes in a body variable instead.
  • When the template has a Flow button, Flowella passes the enrolled contact’s HubSpot ID to the Flow. This helps Flowella match the submission to the same contact.
  • If the template exists in more than one language, Flowella sends the en version. If there is no en version, it sends the most recently updated one. Versions in en_GB or en_US don’t count as en. See Language.
Duplicate sends. If the same template, in the same language, goes to the same phone number from the same WhatsApp number within 15 seconds, Flowella sends it once. The other step fails straight away with DUPLICATE_TEMPLATE_SEND_SUPPRESSED, and the workflow continues. This usually happens when two HubSpot contacts share a phone number and enrol at the same time. The template still reached that phone number. See Template send suppressed as duplicate.

Send WhatsApp Message

This action sends a plain text message to the enrolled contact from your default number. It can’t send media, buttons or templates. Key points:
  • The message only reaches the contact inside the 24-hour window. Flowella doesn’t check the window first. If the contact hasn’t messaged your default number in the last 24 hours, WhatsApp rejects the message (Meta error 131047) and the step fails. See Error 131047.
  • When the window may be closed, use Send WhatsApp Reply or Send WhatsApp Template instead.
  • Flowella sends the text exactly as HubSpot fills it in. It doesn’t reformat dates.
  • The message appears in the Flowella inbox, not in the HubSpot inbox thread.

Send WhatsApp Reply

This action sends your message as normal text when the 24-hour window is open. When the window is closed, it sends the message inside your Service smart reply template, so it can still reach the contact. Use it when a workflow may run hours or days after the contact’s last message. The action has no phone field. Flowella uses the contact’s WhatsApp phone number, then mobile phone number, then phone number. This flowchart shows how the action decides what to send. When the window is closed:
  • Flowella always uses the Service smart reply template. It fills {{1}} with the contact’s first name, {{2}} with your organisation name and {{3}} with your message.
  • Smart reply templates are English only.
  • If the Service template is turned off, not approved yet or paused by Meta, the step fails with the message “Smart Reply template is not approved yet. Check Settings → Reply Templates.” Check the template in Settings → WhatsApp (Meta) → Smart replies. See Smart replies.
Meta can charge for the message whether the window is open or closed. See Pricing and message categories. Like Send WhatsApp Message, this action sends the text as HubSpot fills it in, and its messages don’t appear in the HubSpot inbox thread. When to use it instead of Send WhatsApp Message:
  • Re-engagement and customer success follow-ups that may run after 24 hours of silence.
  • Follow-ups after a Form Completed wait with a long time limit.
  • Any send that should reach the contact whatever the state of the window.

Track the window in a HubSpot property

Flowella can keep a contact property up to date with the time the contact’s 24-hour window closes. Flowella writes to whatsapp_window_open_until but doesn’t create it, so create it in HubSpot first:
  1. In HubSpot, create a contact property. See HubSpot’s guide to creating properties.
  2. Choose the field type Date and time picker.
  3. Check that the internal name is exactly whatsapp_window_open_until before you save. HubSpot doesn’t let you change an internal name later.
Each time the contact sends you a message, Flowella sets the property to 24 hours after that message. This needs CRM contacts (auto-create on new WhatsApp chat) under Unlocked in Settings → HubSpot. Use the property in branches and lists, for example to treat contacts whose window has closed differently. The property reflects the contact’s latest message to any of your WhatsApp numbers. Send WhatsApp Reply checks the window on your default number only.

AI Document Reader

This action reads a PDF or image, finds the values you ask for and writes them to the enrolled contact’s properties. Use it for documents your contacts send you, such as a file uploaded through a HubSpot form or a WhatsApp Flow. A field map looks like this:
Each extract name starts with a letter, uses only letters, numbers and underscores, and is up to 64 characters long. Use each extract name once. Documents Flowella can read:
  • PDF, JPEG, PNG and WebP files, up to 15 MB. Flowella checks the file’s contents, not its name. Other formats, including HEIC photos from iPhones, fail with DOCUMENT_UNSUPPORTED_TYPE.
  • PDFs of up to 4 pages.
  • Links must start with https://.
If a PDF has little or no text, such as a scan, Flowella reads it visually, the same way as a photo. How properties are written:
  • Flowella writes all the values in one update to the contact.
  • If any property in the field map doesn’t exist in HubSpot, or HubSpot rejects a value, the whole update fails with HUBSPOT_PATCH_FAILED. No properties change. Check every internal name before you turn the workflow on.
  • Clear HubSpot properties when empty decides what happens to properties for values Flowella can’t find. Values it finds are always written.
When the step succeeds, it returns these outputs: Error codes:

Generate Document

This action fills a Flowella document template with the enrolled contact’s HubSpot properties, creates a PDF and saves it to your HubSpot files, in the flowella-documents folder. Create templates on the Document templates screen in Flowella. When the step succeeds, it returns these outputs:
Flowella saves generated PDFs to HubSpot files as public files. Anyone who has a file’s link can open it, and search engines can index it. Don’t put sensitive personal data, such as ID numbers or health or financial details, in document templates. Files that contacts upload in a WhatsApp Flow are saved to HubSpot files in the same way.
Error codes:

Error codes

When Send WhatsApp Template, Send WhatsApp Message or Send WhatsApp Reply fails, the contact’s workflow history shows the reason, and the Error code output holds a short code. The workflow then continues with the next step. When the code is FAILED, the error message tells you more. For example:
  • For Send WhatsApp Template, set-up problems show the underlying code in brackets: “Flowella could not send this WhatsApp template (CHANNEL_NOT_FOUND). Check the workflow action inputs, then try again.”
  • For Send WhatsApp Reply, a Service template that isn’t available shows “Smart Reply template is not approved yet. Check Settings → Reply Templates.”
  • When a variable is empty and its fallback value hasn’t been confirmed yet, the message says that the fallback has not been reviewed. Confirm the fallback values in the template. See Templates with fallbacks not reviewed.
  • For Send WhatsApp Message and Send WhatsApp Reply, when WhatsApp refuses the message straight away, the message gives WhatsApp’s reason.
Codes that start with FLOWELLA_META: For fixes for each code and for other WhatsApp errors, see WhatsApp error codes in Flowella. For connection and sync problems, see HubSpot sync failures.

Hand conversations to the HubSpot Customer Agent

Assign to Customer Agent is HubSpot’s own workflow action, not part of Flowella. It hands a conversation to the Customer Agent, HubSpot’s AI agent for the conversations inbox. The agent can only reply on WhatsApp when the Flowella custom channel is connected. The agent’s replies follow the same rules as any reply from the HubSpot inbox:
  • Plain text from your default number. Attachments are dropped.
  • Inside the 24-hour window only. If the contact hasn’t messaged your default number in the last 24 hours, the reply isn’t delivered. Flowella posts Re-engage chips in the thread, and a person has to click one to send a template.
  • Text-based messages only. The agent sees text messages, button taps, list picks and Flow summaries. It doesn’t see images, voice notes, videos or documents.
  • No typing indicator. Flowella doesn’t show the contact a typing indicator before the agent’s replies at present.
  • Opt-outs apply. Contacts who opted out don’t receive the agent’s replies.
Assign the agent while the window is open, for example straight after a Text Reply trigger. A workflow that waits 48 hours before it assigns the agent often leaves it unable to reply. See Use the HubSpot Customer Agent with Flowella.

Workflow patterns

These patterns combine Flowella’s triggers and actions with HubSpot’s own steps. For complete step-by-step recipes, see HubSpot workflow recipes.

Pattern 1: Send a Flow and wait for the answers

1

Send the Flow

Add Send WhatsApp Template and choose a template with a Flow button.
2

Wait for the submission

Add Delay until event, set to Form Completed and filtered on Form Name. Set a time limit.
3

Branch on the outcome

Add a Branch on whether the event happened in time.
4

Process the answers

If the contact submitted, branch on the contact properties the form wrote, then update records or create tasks.
5

Follow up

If the contact didn’t submit, send a reminder with Send WhatsApp Template or Send WhatsApp Reply, or create a task for your team.

Pattern 2: Route on what the contact replies

1

Set the trigger

Enrol contacts on Text Reply.
2

Branch on the reply

Branch on Last WhatsApp reply message, for example equal to Book or Change booking.
3

Send the right Flow

For Book, add Send WhatsApp Template with your booking Flow template.
4

Wait for the answers

Add Delay until event, set to Form Completed and filtered on Form Name, then branch on the result.

Pattern 3: Feedback with a follow-up

1

Send the feedback form

Add Send WhatsApp Template with your feedback Flow template.
2

Wait for the response

Add Delay until event, set to Form Completed and filtered on Form Name.
3

Branch on the score

Branch on the score property the form wrote:
  • High score: thank the contact with Send WhatsApp Message. Submitting the Flow opened a new 24-hour window.
  • Low score: create a task for your team, or use Assign to Customer Agent while the window is open.

Pattern 4: Hand replies to the Customer Agent

1

Set the trigger

Enrol contacts on Text Reply.
2

Acknowledge the message

Optionally, add Send WhatsApp Message to confirm you received the contact’s message.
3

Assign the agent

Add HubSpot’s Assign to Customer Agent action. The contact messaged you a moment ago, so the agent can reply inside the 24-hour window.

Date and time variables

When you map a HubSpot date or date-time property to a Template Variable in Send WhatsApp Template, Flowella shows it as dd.MM.yyyy HH:mm in UTC. For example, 27.06.2026 14:30.
  • Flowella always uses UTC, not the contact’s time zone. During British Summer Time, a 14:30 appointment shows as 13:30.
  • A date-only property shows 00:00 as the time.
  • Flowella treats any separate 13-digit number in a template variable as a timestamp. A 13-digit order or reference number can appear as a date.
  • Send WhatsApp Message and Send WhatsApp Reply don’t reformat dates. They send the text as HubSpot fills it in.
To show local time or another format, store the date as text in a HubSpot property, for example Tuesday 4 November, 14:30, and map that property instead. See Dates from HubSpot.

Tips and best practices

Use international phone numbers. Store WhatsApp numbers with + and the country code, for example +447700900123. A local number such as 07700 900123 fails with CONTACT_PHONE_INVALID.
Name templates clearly. The Template Name list shows names with spaces and capital letters. booking_confirmation_restaurant reads as Booking Confirmation Restaurant, which is easier to find than template_1.
Send, then wait. Pair each send with a Delay until event step, so the workflow handles contacts who reply and contacts who don’t.
Test with a small group first. Enrol a test contact with your own number before you turn a workflow on for everyone. Check the variables, the phone number format and each branch.

Contact activity

The Flowella events on each contact and the properties you can filter on.

Custom channel

Bring WhatsApp conversations into the HubSpot inbox.

Template variables

Samples, fallback values and how HubSpot values fill a template.

Smart replies

The Service, Update and Offer templates used outside the 24-hour window.

Workflow recipes

Step-by-step HubSpot workflows built with these actions.

UTM and ad tracking

See which ad, link or QR code started each conversation.
Last modified on November 3, 2026