FlowRunner
PricingContact
Theme
Start Free

Heyy

Messaging

Automate customer messaging through a Heyy workspace, sending messages and WhatsApp templates across WhatsApp, Instagram, and other connected channels. Agents keep the conversation in one place regardless of where it started.

3 triggers 72 actions API key available
Heyy website ↗ Platform Documentation ↗ Capability data verified 2026-08-03
A product or legal change lands that alters the wording of a customer notification
Agent runs Search Message Templates to find the live template and its current review status
Agent reads the approved copy, the variables it carries and the channel it targets
Agent uploads any header media with Upload File and resolves a stable link with Get Public File URL
Agent confirms the variable count in the new body matches what the campaign passes into it
Agent posts the proposed body, header and footer to the marketing channel beside the live version
The workspace owner approves the exact wording, because Create Message Template submits it to Meta for review under the business WhatsApp account

What This Integration Enables

Most messaging connectors stop at the message. Heyy's API keeps going, and what it reaches past the message is the reason to use it: teams, chat assignment, a sensitivity flag, labels, custom attributes, campaigns, automations, journeys, and the full lifecycle of a WhatsApp template including its submission to Meta. This is a workspace, and the workspace is what makes the messaging governable. You can answer who owns this thread, what this contact is labelled, which journey they are in, and who approved the wording that went out under your business number.

For FlowRunner agents that changes what is worth automating. Sending a notification is table stakes. The interesting work sits upstream and downstream of it. Contacts are upserted from a CRM and labelled. Inbound messages are routed to the team that should own them, and threads carrying payment or health details are marked sensitive so they are handled differently. People are subscribed to and unsubscribed from journeys as their situation changes, and campaign recipients stay accurate without anyone rebuilding a list. Search actions take structured query expressions and sorting, so an agent can express "open chats on WhatsApp with no assignee, oldest first" as one call rather than paging through everything and filtering client side. FlowRunner's connectors are built and verified against each vendor's official API, so every one of the capabilities below is real surface, not an aspiration.

Without FlowRunner

Template copy edited in the console Wording changes happen in the WhatsApp console with no record of who approved them
Chats claimed by whoever is watching Threads sit unassigned until someone happens to notice them in the inbox
Campaign lists rebuilt per send Recipients are re-uploaded each time instead of being maintained by the events that change them

With FlowRunner

Wording approved before submission The exact body that goes to Meta is read and signed off by a named person first
Routing decided when the message arrives Chats are assigned to the right user or team by the flow that received them
Recipients maintained continuously Campaign membership is added and removed by the systems that own the underlying facts

Use Case Scenarios

Inbound routing that ends with a named owner

On Message Received fires the moment a customer writes in on a connected channel. The agent reads the message, resolves the contact with Search Contacts, and pulls their account state from HubSpot. It classifies the message, applies labels with Add Labels To Contact, and calls Assign Chat To Team so the thread lands in the right queue with context already attached. If the message contains payment or health information, the agent also calls Mark Chat As Sensitive so the workspace treats it accordingly. A thread that would otherwise sit unclaimed has an owner and a classification before anyone opens the inbox.

Order lifecycle notifications inside the template rules

An order ships in Shopify. The agent calls Search Message Templates to confirm the shipping template's review status, then Send Template Message with the tracking number as a variable. WhatsApp templates are the only message type allowed outside the 24 hour customer service window, so the agent does not attempt a free-form send to a customer who has not written in recently. When the customer replies, On Message Received fires, the window is now open, and the agent switches to Send Message for the rest of the conversation. The channel's own rules shape the flow rather than being discovered as errors.

A campaign whose recipient list maintains itself

A retention campaign targets customers approaching renewal. Rather than uploading a list, the agent runs on a schedule: Search Contacts with a structured query on the renewal date attribute, Add Campaign Recipients for anyone newly in the window, and Remove Campaign Recipients for anyone who has already renewed. Contacts who churn get Unsubscribe Contact so they drop out of campaign and journey sends entirely. When the campaign is ready to run, Start Campaign executes its automation for every recipient, against a list that was accurate the moment before it fired.

Human-in-Loop Highlight

Create Message Template is the only action on this connector that sends something to a party outside your control and cannot be taken back or corrected. It creates a WhatsApp template on a channel and submits it to Meta for review under your business WhatsApp account. Once submitted, the reviewer is Meta. Update Message Template renames the template and nothing more, because the content itself cannot be changed through that endpoint, so a body with the wrong legal wording or a mismatched variable count is not editable. It is deletable, and then resubmittable, with the rejection sitting on the account's record either way.

That makes it exactly the moment for an agent to stop. A FlowRunner agent will happily do everything around it: find the live template, diff the new copy against it, verify the placeholder count matches what the campaign passes, upload the header media and resolve a stable public URL for it, and assemble the complete submission. Then it posts to the channel where the workspace owner works: "New shipping template ready to submit on the WhatsApp channel. Body, header and footer below, three variables, replacing the version currently approved. Create Message Template submits this to Meta for review and the body cannot be edited afterwards. Approve, or send it back with changes?" One person reads the exact words that will go out under the company's number, once, before Meta sees them. That is human-in-the-loop applied where it earns its keep, and it costs the flow a minute against a submission that shapes what the business is allowed to say for months.

Agent processes routinely
Detects exception requiring judgment
Clear match Continues automatically
Ambiguous Routes to human via WhatsApp
Human decides
Agent resumes with decision

Agent Capabilities

72 actions

Workspace

3
  • Get Workspace Retrieves the workspace the API key belongs to, including its name, timezone and availability configuration. Used to confirm a flow is pointed at the right workspace before it writes.
  • Get Users Retrieves all users in the workspace with their email, phone number, name, profile picture and roles.
  • Get User Retrieves one workspace user by ID. Used to resolve an assignee before routing a chat to them.

Teams

5
  • Search Teams Retrieves a paginated list of teams with their icon, name and member users, supporting free-text search, structured query expressions and sorting.
  • Get Team Retrieves one team by ID with its icon, name and member users.
  • Create Team Creates a team with an icon, a name and an optional list of member users. Teams are what chat assignment routes to when no single owner is right.
  • Update Team Updates a team's icon, name or member users. Supplying User IDs replaces the member list rather than adding to it.
  • Delete Team Deletes a team by ID.

Contacts

11
  • Search Contacts Retrieves a paginated list of contacts with their name, phone number, email, handles, labels, attributes, subscription state and chats. Supports free-text search, structured query expressions and sorting, including filters on custom attribute values, which is how audience queries are expressed.
  • Get Contact Retrieves one contact by ID with their full profile, labels, custom attributes, subscription state and chats.
  • Create Contact Creates a contact with an optional name, phone number, email, custom attribute values and labels.
  • Update Contact Updates a contact's first name, last name and custom attribute values. Phone number and email cannot be changed here, which is a useful guard against a sync silently re-pointing someone's contact details.
  • Upsert Contact Creates a contact or updates the existing one matched by phone number or email, setting name, custom attribute values and labels on the match. This is the safe entry point for a repeatable CRM sync.
  • Bulk Upsert Contacts Creates or updates multiple contacts in one call, each matched by phone number or email. Used for scheduled reconciliation against a customer list.
  • Delete Contact Deletes a contact by ID.
  • Subscribe Contact Marks a contact as subscribed so they can receive campaign and journey messages.
  • Unsubscribe Contact Marks a contact as unsubscribed, opting them out of campaign and journey messages. This is the action a churn or complaint workflow calls so the person stops hearing from marketing automatically.
  • Add Labels To Contact Adds one or more labels to a contact, keeping existing labels in place.
  • Remove Labels From Contact Removes one or more labels from a contact.

Chats

10
  • Search Chats Retrieves a paginated list of chats with their status, unread state, channel, contact, latest message, assignments and sensitivity flag. Structured queries make it practical to ask for open, unassigned chats on a specific channel, oldest first.
  • Get Chat Retrieves one chat by ID with its status, contact, latest message, assignments and sensitivity flag.
  • Delete Chat Deletes a chat by ID, removing the thread from the workspace.
  • Mark Chat As Read Marks a chat as read, clearing its unread state.
  • Mark Chat As Unread Marks a chat as unread so it resurfaces in the inbox as needing attention. Useful when an agent decides a thread needs a human after all.
  • Change Chat Status Changes a chat's status to open, closed or snoozed, optionally letting the change fire matching Heyy automations.
  • Assign Chat To User Assigns a chat to a workspace user, or unassigns it when no user is selected, optionally firing matching automations. This is how a thread gets a named owner at the moment it arrives.
  • Assign Chat To Team Assigns a chat to a team, or unassigns it when no team is selected. Used when the right queue is known but the right person is not.
  • Mark Chat As Sensitive Marks a chat as sensitive, so the workspace handles the thread under stricter treatment.
  • Mark Chat As Not Sensitive Removes the sensitive flag from a chat.

Messages

2
  • Send Message Sends a message to a chat, targeting either an existing chat by ID or a channel plus one contact identifier. Supports text, media attachments referencing uploaded files, a header and footer, replying to a specific message, and scheduling.
  • Send Template Message Sends a pre-approved template to a chat. WhatsApp templates are the only message type allowed outside the 24 hour customer service window, so this is the action that opens a conversation rather than continues one. Supports template variables, media attachment overrides and scheduling.

Message Templates

5
  • Search Message Templates Retrieves a paginated list of templates with their name, type, review status, content, variables and channel. Read it before sending so a flow never fires against a template Meta has not approved.
  • Get Message Template Retrieves one template by ID with its content, variables and review status.
  • Create Message Template Creates a WhatsApp template on a channel and submits it to Meta for review. The body, header and footer are set here and the review status is reported on the created template. Because the content cannot be edited afterwards, this is the action a FlowRunner agent holds for human approval.
  • Update Message Template Renames a template. The content itself cannot be changed through this endpoint.
  • Delete Message Template Deletes a template by ID.

Campaigns

8
  • Search Campaigns Retrieves a paginated list of campaigns with their name, automation, schedule, recurrence, variables and recipient count.
  • Get Campaign Retrieves one campaign by ID with its schedule, recurrence, variables and recipient count.
  • Create Campaign Creates a campaign that runs an automation against its recipients, supporting automation variables, a scheduled start time and recurrence rules.
  • Update Campaign Updates a campaign's name, automation, variables, schedule or recurrence rules. Only the fields supplied are changed.
  • Delete Campaign Deletes a campaign by ID.
  • Add Campaign Recipients Adds contacts as recipients of a campaign. Used by a scheduled flow that keeps the audience current rather than rebuilding it per send.
  • Remove Campaign Recipients Removes contacts from a campaign's recipient list, for example once they have taken the action the campaign was chasing.
  • Start Campaign Starts a campaign immediately, running its automation for every recipient, optionally overriding the automation variables for this run.

Automations

5
  • Search Automations Retrieves a paginated list of automations with their name and status of draft, active or paused.
  • Get Automation Retrieves one automation by ID with its name and status.
  • Trigger Automation Runs an automation for a specific contact, optionally passing variable values and scheduling the run for later. This is how an event in another system starts a Heyy sequence for one person.
  • Pause Automation Pauses an active automation so it stops processing new events. Useful as an immediate containment step when something upstream goes wrong.
  • Unpause Automation Resumes a paused automation so it processes new events again.

Journeys

4
  • Search Journeys Retrieves a paginated list of journeys with their name, type, status and steps.
  • Get Journey Retrieves one journey by ID with its type, status and steps.
  • Subscribe Contacts To Journey Subscribes contacts to a journey so they start receiving its steps.
  • Unsubscribe Contacts From Journey Unsubscribes contacts from a journey so they stop receiving its steps, which is the action a resolution or churn event should call.

Labels

5
  • Search Labels Retrieves a paginated list of labels with their name and colour.
  • Get Label Retrieves one label by ID.
  • Create Label Creates a label with a name and colour for organising contacts.
  • Update Label Updates a label's name or colour.
  • Delete Label Deletes a label by ID.

Attributes

5
  • Search Attributes Retrieves a paginated list of custom contact attributes with their type, technical name, display name, description, visibility and options.
  • Get Attribute Retrieves one custom contact attribute by ID.
  • Create Attribute Creates a custom contact attribute of type text, number, single select, multi select, date or date and time. Select types take a list of options.
  • Update Attribute Updates an attribute's display name, description, visibility or select options. Visibility is only sent when all three toggles are provided, because the API requires the complete visibility object.
  • Delete Attribute Deletes a custom contact attribute by ID, and with it the values stored against it.

Channels

2
  • Search Channels Retrieves a paginated list of the workspace's connected channels, such as WhatsApp, Instagram, Facebook Messenger, Live Chat and SMS. Used to resolve a channel ID before a send.
  • Get Channel Retrieves one connected channel by ID.

Files

3
  • Upload File Uploads a file to Heyy from a URL so it can be attached to messages and templates, returning the file's ID, content type, size and URL.
  • Get File Retrieves an uploaded file's metadata by ID.
  • Get Public File URL Returns a stable public URL for an uploaded file, creating one if it does not exist yet. The URL does not expire, which is what makes it suitable for template media overrides.

Webhooks

4
  • Search API Webhooks Retrieves a paginated list of the workspace's API webhooks with their URL, status and event subscriptions, including the ones this connector's triggers create.
  • Create API Webhook Creates an API webhook delivering the selected message events for the selected channels to a URL. Failed deliveries are retried with exponential backoff and consistently failing endpoints are disabled automatically.
  • Update API Webhook Updates a webhook's status, URL or event subscriptions. Supplying Events replaces the current subscriptions.
  • Delete API Webhook Deletes an API webhook by ID.

Triggers

3 triggers

Event Triggers

3
  • On Message Received Fires when a new inbound message arrives on the selected channel, delivering the full message object including its content, status, chat, handle, contact and channel. FlowRunner registers and removes the channel-scoped webhook for you. This is the entry point for routing, classification and any reply flow.
  • On Message Sent Fires when an outbound message is created and sent from Heyy on the selected channel, whether by an agent, an automation or an API call. Used to mirror outbound activity into a CRM or audit store so the customer record shows everything the business said, not only what the flow sent.
  • On Message Updated Fires when an existing message changes on the selected channel, most commonly a delivery status transition through sent, delivered and read. Used to escalate undelivered notifications rather than assuming a send succeeded.

Frequently Asked Questions

What can FlowRunner do with Heyy?

FlowRunner agents can run Get Workspace, Get Users, and Get User in Heyy, plus 69 more actions.

Does connecting Heyy to FlowRunner require OAuth?

No. Heyy connects to FlowRunner with an API key, no OAuth flow required.

Can Heyy trigger a FlowRunner workflow automatically?

Yes. Heyy supports 3 triggers that can start a FlowRunner workflow automatically.

Start building with Heyy

$100 in credits. No card required. Connect in minutes.