FlowRunner
PricingContact
Theme
Start Free

WhatsScale

Messaging

Connect AI agents to WhatsScale, a WhatsApp automation platform with a built in CRM. Agents send messages and media, run paced broadcasts to tagged audiences, manage CRM contacts and groups, and react to inbound messages so WhatsApp campaigns scale without manual sending.

3 triggers 42 actions API key available
WhatsScale website ↗ Platform Documentation ↗ Capability data verified 2026-08-12
A campaign is approved for the audience carrying a given CRM tag
Agent reads the tag's current membership with List CRM Contacts and records who is in it today
Agent compares that membership against the last run and identifies contacts added or dropped since
Agent calls Estimate Broadcast to resolve the audience the platform will actually use and its size
Agent posts the resolved count, the membership diff and the message body into the campaign channel
On approval the agent calls Create Broadcast and holds the campaign identifier for Get Broadcast Status
A person approves the audience, not the copy, because the tag it resolves from was last written by an automated contact update

What This Integration Enables

WhatsScale is a WhatsApp automation platform operated from the Netherlands, and the thing to understand before wiring it up is that it is not primarily a send API. It is a broadcast engine with its own address book. Its CRM is separate from the WhatsApp contacts synced to a session, and audiences are built from tags on that CRM rather than from lists you paste at send time. Create Broadcast will accept a CRM tag or an explicit recipient list, never both and never neither, and an empty selection is refused before the request is made rather than sent to a billed bulk path with no defined behavior. Access is unofficial: a WhatsApp account is connected by scanning a QR code in the WhatsScale dashboard rather than through Meta's Cloud API, and connected accounts remain subject to WhatsApp's terms.

The API key covers the whole account, so a single FlowRunner connection reaches every connected number on it and the session is a parameter on each action rather than a property of the connection. That matters for agencies and multi-brand teams, who get one set of credentials and per-flow control of which number speaks. Three triggers cover inbound: direct messages, group messages and channel posts, each a separate event because the payloads genuinely differ. WhatsScale is also unusually candid about its own limits. It publishes an observed inbound drop rate under burst load rather than claiming none. Its subscription plane is a list of addressable rows, so registering a FlowRunner callback cannot displace an endpoint configured for something else. And its circuit breaker will deactivate a failing subscription with no route to reactivate one, which is why the trigger re-reads and rebuilds its own subscriptions on a schedule. Agents run the campaign machinery. The audience stays a human decision.

Without FlowRunner

Audience defined by whoever exported last A recipient list is pasted from a spreadsheet and nobody can reconstruct how it was built
Size discovered at send time The real reach of a campaign is first visible in the delivery report
Tags edited without a record A contact sync overwrites tags and the change surfaces only when the next campaign reaches the wrong people

With FlowRunner

Audience defined by a named tag The tag is the audience, and List CRM Tags plus List CRM Contacts show exactly who is in it
Size resolved before the send Estimate Broadcast returns the audience the platform will use, with nothing dispatched
Tag changes surfaced as a diff Membership added and dropped since the last run is put in front of a person alongside the count

Use Case Scenarios

A paced campaign to a tag that is maintained by automation

Lifecycle events in the CRM keep WhatsScale tags current: a purchase adds a tag with Add Tag To CRM Contact, a refund removes one with Remove Tag From CRM Contact, and a nightly sync from HubSpot reconciles the rest. When a campaign is approved for the tag, the agent calls Estimate Broadcast, posts the resolved size and the membership delta since the last send, and waits. On approval it calls Create Broadcast, polls Get Broadcast Status, and writes progress back to the campaign record. Cancel Broadcast and Resume Broadcast stay available to the operator throughout, so a campaign that starts reaching the wrong cohort can be stopped without anyone opening a support ticket.

Inbound replies routed by identity, not by name

New Direct Message fires when someone answers. The agent correlates on the raw WhatsApp identifier carried in the event rather than on the display name, because the display name is set by the sender and the phone form is best-effort and may be empty depending on privacy settings. It looks the person up with Find CRM Contact By Phone, creates them with Create CRM Contact if they are new, and answers with Send Text Message. Replies that read as an opt-out are handled first in the CRM by removing the campaign tag, then acknowledged in WhatsApp, so the suppression exists before the confirmation goes out rather than after.

Moderating a customer group without watching it

New Group Message fires on every post in a monitored group. The event carries the sender's stable in-group identifier, which passes straight back into Remove Group Participants or Demote Group Admins, so a moderation loop closes without a lookup step in between. The agent flags posts matching a policy pattern, posts them to Slack with the group name and the participant identifier, and removes only on an explicit instruction. Deliveries are at least once and every event carries a stable identifier across retries, so the flow deduplicates on that identifier and a replayed event never produces a second removal.

Human-in-Loop Highlight

The gate here is the audience, and it is a real gate rather than a courtesy, because of one asymmetry in the CRM: Update CRM Contact replaces the tag list while Add Tag To CRM Contact appends to it. Any flow that keeps contact records in sync using the update action can therefore strip the very tag a campaign resolves from, or add people to it, without anything failing. The audience is not a list somebody wrote. It is the current state of a field that automation has been writing to since the last campaign, and Create Broadcast resolves it at run time.

So the agent does the arithmetic and stops. It calls Estimate Broadcast, reads the tag's current membership with List CRM Contacts, diffs it against the roster it recorded on the previous run, and posts to the campaign channel: "Audience winback-q3 resolves to 4,180 contacts. That is 640 more than the last send. 610 of those were added by the nightly CRM sync, 30 by the refund flow, and 92 contacts present last time are gone. Message preview attached. Send, or hold while the sync is reviewed?" A person approves the audience. This is the digital andon cord applied to marketing: the agent is fully capable of composing, pacing, estimating and dispatching the campaign, and the one thing it will not do alone is decide who a message goes to when the definition of "who" was last edited by another agent.

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

Agent Capabilities

42 actions

Account

2
  • Test API Key Confirms the credential works. Used as a connection health check before a flow commits to a run.
  • List Sessions Lists the connected WhatsApp sessions on the account. Because the key is account-wide, this is what tells a flow which number it is about to speak as. Session status is reported as the platform reports it, so a session that is not connected is never presented as if it were.

Contacts and Groups

3
  • List WhatsApp Contacts Lists the contacts synced to a session. Distinct from the WhatsScale CRM, which is its own address book.
  • List WhatsApp Groups Lists the groups a session belongs to.
  • Check WhatsApp Number Confirms a number has a WhatsApp account before a flow spends a send on it.

Messaging

8
  • Get Job Status Returns the state of an asynchronous send. Video, document and story sends return a job identifier rather than a message identifier, so this is what confirms they actually went out.
  • Send Text Message Sends a text message from the selected session.
  • Send Image Sends an image with an optional caption.
  • Send Video Sends a video. Asynchronous, so pair it with Get Job Status.
  • Send Document Sends a document such as an invoice or a ticket. Asynchronous.
  • Send Audio Sends audio, including voice notes. A voice note cannot carry a caption and the combination is refused locally with a message naming the fix, rather than being sent and rejected.
  • Send Location Sends a coordinate with an optional label.
  • Send Poll Sends a poll. Options are validated for both count and duplication before the request leaves, because the platform's ceilings are known.

Stories

3
  • Post Text Story Posts a text story from the session's WhatsApp account. It reaches the account's contact list rather than an addressee, so treat it as publishing, not messaging.
  • Post Image Story Posts an image story.
  • Post Video Story Posts a video story. Asynchronous, so confirm it with Get Job Status.

CRM

9
  • Create CRM Contact Adds a contact to the WhatsScale address book, optionally tagged on creation.
  • List CRM Contacts Lists CRM contacts, filterable by tag. The read that turns a tag into a roster a person can inspect.
  • Get CRM Contact Returns one CRM contact.
  • Find CRM Contact By Phone Resolves a phone number to a CRM contact. The lookup an inbound handler runs before deciding whether it is talking to a known customer.
  • Update CRM Contact Updates a CRM contact. Note that it replaces the tag list rather than appending to it, so an update that omits a tag removes it.
  • Delete CRM Contact Removes a CRM contact. The platform treats this as a soft delete.
  • Add Tag To CRM Contact Appends a tag to a contact, leaving existing tags in place. The safe way for an automated flow to write membership.
  • Remove Tag From CRM Contact Removes one tag from a contact.
  • List CRM Tags Lists the tags in use. Tags are name-valued throughout the platform, with no separate identifier concept anywhere.

Broadcast

5
  • Create Broadcast Starts a paced broadcast to exactly one audience: a CRM tag or an explicit recipient list, never both and never neither. An empty selection is refused before anything is billed.
  • Estimate Broadcast Resolves the audience and returns its size without dispatching anything. The evidence a person needs to approve a send.
  • Get Broadcast Status Reports progress on a running broadcast.
  • Cancel Broadcast Stops a broadcast in flight. Messages already delivered stay delivered, which is why the estimate matters more than the cancel.
  • Resume Broadcast Restarts a paused broadcast from where it stopped.

Group Management

6
  • List Group Participants Lists a group's members. Participants are identified by their in-group identifier, which is what a group event carries and what the moderation actions accept.
  • Add Group Participants Adds members, validated for count and identifier shape before the request leaves.
  • Remove Group Participants Removes members, with the same local validation.
  • Promote Group Admins Promotes members to admin.
  • Demote Group Admins Demotes admins back to members.
  • Leave Group Leaves a group from the session's account.

Webhook Administration

6
  • Subscribe Webhook Registers a webhook subscription for an endpoint outside FlowRunner. The signing secret is returned once by this action and by nothing else, so capture it in the same step or delete and re-subscribe.
  • List Webhook Subscriptions Lists subscriptions on the account, with their state.
  • Delete Webhook Subscription Removes one subscription. Deleting one that a running trigger created stops that trigger receiving events until its flow restarts.
  • List Webhook Deliveries Lists recent deliveries. The payload preview on each row is truncated opaque text, routinely cut mid-value, and must not be parsed as JSON.
  • List Webhook Failures Lists failed deliveries. Worth sweeping, because repeated failures are what deactivate a subscription.
  • Retry Webhook Delivery Replays a delivery to its endpoint.

Triggers

3 triggers

Event Triggers

3
  • New Direct Message Fires when a message arrives in a one-to-one chat on the selected session. The event carries the sender's raw WhatsApp identifier, which is the reliable correlation key, alongside a best-effort phone number and the chat identifier. Deliveries are at least once, so deduplicate on the envelope's event identifier, which stays stable across retries and manual replays.
  • New Group Message Fires when a message is posted in a group the selected session belongs to, optionally narrowed to one group. It carries the sender's stable in-group identifier, which passes straight back into Remove Group Participants or Demote Group Admins to close a moderation loop. The participant name is set by the sender and must never be used for identity decisions, and the participant phone may be empty depending on privacy settings.
  • New Channel Message Fires when a message is posted to a WhatsApp channel the selected session follows, optionally narrowed to one channel. No route in the API enumerates channels, so a channel identifier has to be typed rather than picked from a list.

Frequently Asked Questions

What can FlowRunner do with WhatsScale?

FlowRunner agents can run Test API Key, List Sessions, and List WhatsApp Contacts in WhatsScale, plus 39 more actions.

Does connecting WhatsScale to FlowRunner require OAuth?

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

Can WhatsScale trigger a FlowRunner workflow automatically?

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

Start building with WhatsScale

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