Skip to content
User guide

Everything you can do in FoxlyFlow

Connect a WhatsApp number, chat with customers, send templates to a list and automate replies, all from the dashboard. No code needed. Building your own integration instead? See the API reference.

Getting started

Four steps take you from a new account to your first WhatsApp message. The Overview page tracks them for you.

  1. 1Create an account at Sign up. You get a workspace of your own, and you are its owner.
  2. 2Create a channel. A channel is one WhatsApp number you send from.
  3. 3Link your WhatsApp by scanning a QR code with your phone, like WhatsApp Web.
  4. 4Send your first message from Messages → New message.

The Overview checklist also suggests creating an API key. You only need one if another app (a store, a CRM or your own software) should send messages through FoxlyFlow. Everything else in this guide works without one.

Connect WhatsApp

FoxlyFlow links to your WhatsApp account as a linked device, the same way WhatsApp Web does. Your phone keeps working as usual.

Link a number

  1. 1Go to Channels and press Connect WhatsApp.
  2. 2Give the channel a Name only you will see, such as “Support line”.
  3. 3Pick the Recipients’ time zone: where most of the people you message live. It sets quiet hours (see Sending limits).
  4. 4Press Create channel. A QR code appears and refreshes on its own.
  5. 5On your phone, open WhatsApp, go to Settings → Linked Devices, tap Link a Device and scan the code.

When the page shows WhatsApp connected with your number, the channel is ready to send and receive.

Channel status

Not connected
Created, but no phone linked yet. Press Connect.
Waiting for scan
A QR code is showing. Scan it before it expires; if it does, press Connect again.
Connecting / Reconnecting
Working on it. A dropped connection reconnects by itself.
Connected
Sending and receiving.
Disconnected
Paused. The phone is still linked, so Connect works again without a new QR.
Logged out
Unlinked from the phone. Connecting needs a new QR scan.
Error
Something interrupted the connection. Press Try again.

Disconnect, log out or archive

  • Disconnect pauses the channel. The device stays linked; reconnect any time without a QR.
  • Log out unlinks FoxlyFlow from your phone. Sending and receiving stop until you scan a new QR. Removing the device from Linked Devices on your phone does the same.
  • Archive (only for channels that aren’t connected) hides a channel from lists and pickers. Find it again under Archived on the Channels page and press Unarchive.

Sending limits

Every channel paces its messages so your number behaves like a person, not a bot. This protects it from being restricted or banned by WhatsApp.

  • Messages go out a few seconds apart, with hourly and daily caps. New channels start low and ramp up over their first week.
  • Only a few people who have never messaged your number can be contacted each day.
  • No outreach overnight in the channel’s time zone. Replies to people who wrote in the last 24 hours still go out.
  • The same text can only be sent a few times an hour.

Nothing is dropped. A message over a limit waits as Queued and goes out when it fits. You can change a channel’s time zone any time on its page; it also sets when daily limits reset.

Messages

Your inbox: every conversation, grouped by phone number, across all your channels.

Send a message

  1. 1Open Messages and press New message.
  2. 2Choose a connected channel, the country, and the phone number without the country code. A number starting with + overrides the country.
  3. 3Write the message. Select text and use the toolbar for bold, italic, strikethrough, code, lists and links. The preview shows it as the recipient will see it.
  4. 4Press Send message.

To reply, open a chat on the left and type in the box at the bottom. Use the search box to find a chat by number, or filter by channel.

Delivery ticks

Clock
Queued: waiting for the channel’s sending limits.
One tick
Sent to WhatsApp.
Two ticks
Delivered to the recipient’s phone.
Blue ticks
Read (if the recipient has read receipts on).
Red alert icon
Failed: the message couldn’t be sent. Check the channel is connected and the number is on WhatsApp.

Older chats

Only messages since the number was linked show by default. To bring in more:

  • Whole phone history: your phone sends it once, when a number is linked. For a number that is already linked, log it out and scan the QR again.
  • One chat: open it, scroll to the top and press Load older from phone. The phone must be online, and it may send nothing.

Imported messages don’t trigger automations or webhooks. Photos, videos and files from history show as a text line, not the attachment.

Templates

Write a message once, then send it to one person or a whole list, with each recipient’s own details filled in.

Create a template

  1. 1Open Templates and press New template.
  2. 2Name it and choose a Type: Text, Image, Video, Audio or Document. For media, choose the file; the text becomes its caption.
  3. 3Write the message with variables, for example Hi {{name|there}}, your order #{{order_id}} has shipped.
  4. 4Fill in Sample values to check the preview, then press Create template.
{{name}}
Replaced with the value you give for each recipient. Letters, digits and _ only.
{{name|there}}
Uses “there” when no value is given, so “Hi there” instead of a blank.

Send to one person or a list

Press Send on a template, pick a connected channel, then choose a mode:

  • Single: enter one phone number and fill in the values.
  • Bulk: paste up to 1,000 rows from a spreadsheet or CSV. The first column is the phone number with country code; a header row names the variable columns. Default values fill any cell left empty.
recipients.csv
phone,name,order_id
+919876543210,Aziz,1042
+919812345678,Riya,1043

If some rows are skipped (a bad number, say), fix them and send the list again. People already queued are never messaged twice. Template cards show how many messages were sent and delivered.

Automations

Reply to messages while you sleep: when a message matches a trigger, the automation runs its steps for that contact.

Build one

  1. 1Open Automations and press New automation, or start from a recipe such as Welcome reply, Away message or Order status.
  2. 2Set the trigger under When a message… (see below).
  3. 3Add steps with +. Reorder, duplicate or delete them from each step’s menu. Up to 20 steps.
  4. 4Try it in the test panel: type a sample message to see exactly how it replies. Nothing is sent.
  5. 5Switch Automation on and save. Matching messages start a run right away.

Triggers

Has keyword
Any keyword as a whole word: “price” matches “what’s the price?”.
Contains
The text contains any of these, even inside words.
Starts with
The text starts with any of these.
Is exactly
The whole message equals one of these.
Matches pattern
A regular expression, for advanced matching. Captured parts become {{match.1}} or {{match.name}}.
Any message
Every incoming message. Pair it with a cooldown.

Press Enter or comma to add a keyword; any one of them starts the automation. You can also limit it to some channels and message types (media messages match on their caption), and set a Cooldown per contact so the same person isn’t answered again within 5 minutes to 7 days.

Steps

Send message
Reply with text and variables.
Send template
Send one of your saved templates and fill in its values.
Wait
Pause for seconds, minutes, hours or days before the next step.
Call webhook
Send the run to your system and use its reply in later steps.
Call API
Make any web request and save fields from the reply as {{api.*}} variables. Usually set up by a developer.

Variables

Insert these anywhere with the variable button. Add a fallback the same way as in templates: {{contact.name|there}}.

Contact
{{contact.name}} {{contact.phone}}
Message
{{message.text}} {{message.type}}
Channel
{{channel.name}} {{channel.phone}}
Time
{{now.date}} {{now.time}} {{now.weekday}}

Each automation’s Runs tab shows every run live, step by step, with the variables it used, so you can see why it replied the way it did.

Webhooks

Webhooks push events (new messages, delivery updates, channel changes, finished automations) to another system as they happen. You need a URL from that system, such as an automation tool or your developer’s server.

  1. 1Open Webhooks and press Add webhook.
  2. 2Paste the Endpoint URL and pick the events and channels. All channels includes channels you add later.
  3. 3Copy the signing secret shown once and give it to whoever runs the endpoint. It proves the events come from FoxlyFlow.

API keys

A key lets another app act on your workspace, for example a store sending order updates through FoxlyFlow. Treat keys like passwords.

  • Master API Key: works with every channel and can’t be revoked. Rotate it if it leaks.
  • Channel keys: press Create channel key to make a key that only works with the channels and permissions you pick (send messages, read messages, view or manage the connection, upload or download media). Name it after where it’s used.
  • Rotate issues a new key. The old one stops immediately or after 1 hour, 24 hours or 7 days, so you have time to update the app.
  • Revoke stops a channel key at once.

Settings and team

  • Profile and workspace: your name, email, role and workspace ID. Channels, keys and messages belong to the workspace.
  • Features: owners and admins can switch off API access, sending, templates, automations or webhooks for the whole workspace. Turned-off pages disappear from the sidebar. Incoming messages are always received.
  • Appearance: light, dark or match your system.
  • Sign out ends this browser session only. API keys keep working.

Keyboard shortcuts

⌘ K
Search pages and actions (Ctrl K on Windows).
G then a letter
Jump to a page: O Overview, C Channels, M Messages, T Templates, A Automations, W Webhooks, K API Keys, S Settings.
⌘ B
Fold or unfold the sidebar.

Troubleshooting

Stuck in Queued
Normal under sending limits, or overnight in the channel’s time zone for people who haven’t written recently. It goes out on its own.
Channel not connected
Open the channel and press Connect. If it says Logged out, scan a new QR code.
QR code expired
Press Connect again for a fresh code. Make sure the phone has internet.
Old chats missing
See Older chats.
Automation didn’t reply
Check it’s on, the channel is included, the message matches the trigger and the cooldown has passed. Its Runs tab shows what happened.
A page is missing
An owner or admin switched the feature off in Settings.