Skip to content

WhatsApp Business

Your client gets the reminder where they actually read it, from your own number.

What it does

With WhatsApp connected, the Send the client a WhatsApp action in Cord Workflows sends your approved template to the phone of the document’s client, with event data in its variables: a payment reminder before the due date, a heads-up that a quote is about to expire, a deposit confirmation.

Cord sends WhatsApp through Meta’s Cloud API and with your account: messages come from your number and Meta charges the conversation to your account, not Cord.

Meta does not allow starting a conversation with free text, only with an approved template. That is why Cord asks for your template’s name and fills in its variables; there is no free-text message field because Meta would reject it.

Without connecting anything, Collections (the Remind via WhatsApp button) and each client’s page have a button that opens WhatsApp on your phone or computer with the message ready, for you to send. That button does not use this integration: this page is for Cord to send the message on its own, from a workflow. The ready message from Collections comes out in each client’s document language.

Requirements

Where What you need
Cord The Settings permission. Any plan.
Meta for Developers An app with the WhatsApp product and your sending number added. That is where the phone number ID (digits only) comes from.
WhatsApp Manager A message template approved by Meta, with up to 4 variables ({{1}} to {{4}}). Note its exact name and language.
Token A permanent access token from your Meta account with permission to send messages from that number. A token that expires stops working and messages start failing.
Your clients A phone number saved with its country code (+52 55 1234 5678). Cord does not guess the country: the same number exists in several.
Cost Meta charges each template-initiated conversation to your Meta account, based on the recipient’s country. Cord does not charge for messages.

Connect

  1. In Meta for Developers, create a WhatsApp Business app and add your sending number.
  2. In WhatsApp Manager, create a template and submit it for approval. Example: Hi {{1}}, your invoice {{2}} for {{3}} is due on {{4}}. You can pay it from the link we emailed you.
  3. Copy the phone number ID (digits only) and generate a permanent access token.
  4. In Cord, go to Settings › Integrations › WhatsApp Business and fill in Phone number ID, Access token, Template name (lowercase, without spaces or accents, as it appears in Meta) and Template language (for example es_MX or en_US).
  5. Click Save and then Send test to your own number, with the country code.

The token is stored encrypted and never shown again; the card only says “A token is saved”. To change the template, leave the token field empty and save: Cord keeps the one it already had.

WhatsApp Business detail, connected: phone number ID, saved token, the recordatorio_pago template in es_MX and the number with country code to send a test.

Use it in a workflow

The Send the client a WhatsApp step has up to 4 variables, up to 200 characters each. Each variable fills {{1}}, {{2}}… of your template in order, and accepts event data: {{cliente}}, {{folio}}, {{numero}}, {{total}}, {{saldo}}, {{vence}}. Line breaks inside a variable become spaces.

The template arrives in the language Meta approved it in, the same for all your clients: your organization uses a single template, so it doesn’t follow each client’s document language. If your clients speak several languages, the Email the client action does send the email in each one’s language.

With the example template, in a workflow with the An invoice is about to be due trigger:

Step variable Value Arrives as
Variable 1 {{cliente}} Lone Star Supply
Variable 2 {{numero}} F-00231
Variable 3 {{saldo}} $12,500.00
Variable 4 {{vence}} 2026-10-10

The phone number comes from the document’s client, never from a field in the step: a workflow cannot message a number that is not your client’s.

What flows and in which direction

WhatsApp is an outbound-only integration.

Direction What flows When
From Cord to the client Your approved template, with the variables filled in, from your number. When the workflow step runs.
From the client to Cord Nothing. If the client replies, the reply reaches your number in Meta’s tools; Cord does not read or store it. —

That is why the template should send the client where they can act (the document link they already received by email) and your team should handle replies from the business’s WhatsApp account.

Limits

Limit Value
Messages from workflows 60 per hour per organization
Tests from Settings 5 per hour
Variables per message 4, up to 200 characters
Sending numbers per organization 1
Templates per organization 1 (the one saved on the card)
Cost per conversation Charged by Meta to your account, by country

Disconnect

  1. Go to Settings › Integrations › WhatsApp Business.
  2. Click Disconnect. You will see “WhatsApp disconnected”.

Cord deletes the phone number ID, the token and the template, and stops sending messages. Workflows with the WhatsApp action will fail with “Connect WhatsApp in Settings › Integrations to use this action.” until you connect again.

Disconnecting in Cord does not revoke the token in Meta. If you want to invalidate it, also do it from your Meta account.

Common issues

Message or symptom What to do
“The client has no phone with a country code on file.” Edit the client and save the number with + and its country code. Then click Retry on the run.
“WhatsApp did not accept your template” Check that it is approved, that the name and language match, and that the step has the same number of variables as the template.
“WhatsApp did not accept the message” Usually the token expired or the sending number was deactivated in Meta. In a workflow, Cord retries on its own; for the test, check the token and the sending number.
“Connect WhatsApp in Settings › Integrations to use this action” The phone number ID, the token or the template name is missing. Fill them in and save.
“The phone number ID is digits only…” You pasted the phone number instead of the ID. Copy it from Meta’s WhatsApp panel.
“The template name goes in lowercase, without spaces or accents” Type the name exactly as it appears in Meta, for example payment_reminder.
“The template language goes as es_MX or en_US” Use the language code the template was approved with.
The test fails but the template is approved Send test fills only {{1}} with the word “test”. If your template does not have exactly one variable, Meta may reject the test even though the workflow works: test from a workflow with every variable.
A variable’s text lands in another spot If you leave a middle variable empty (for example 2) and fill the next one, Cord does not send the empty one and the following ones shift: 3 fills {{2}}. Fill the variables in order, with no gaps.