Getting Started with WhatsApp
SendSeven integrates with the WhatsApp Business API to let you send and receive messages on WhatsApp at scale. This guide covers the key concepts you need to understand before building your WhatsApp integration.
Prerequisites
- A SendSeven account with a WhatsApp channel configured
- An API token with
messages:createandchannels:readscopes - A Meta Business Account with a verified WhatsApp Business phone number
Setting Up WhatsApp
WhatsApp Business API channels are configured through the Embedded Signup flow in the SendSeven dashboard:
- Log in to SendSeven
- Navigate to Settings > Connected Channels
- Click Connect WhatsApp and answer the short setup questions
- Complete the Facebook Embedded Signup flow
- Select your WhatsApp Business phone number
Once connected, SendSeven automatically handles webhook registration, message routing, and delivery status updates.
During setup you choose between the full API (the number runs on the Cloud API only) and Coexistence (the number stays in the WhatsApp Business app on your phone, and SendSeven runs alongside it on the same number). If you are unsure which one to pick, read WhatsApp Coexistence vs. full API first.
EU local storage
When you connect a new number, the setup offers Store message data in the EU. WhatsApp then keeps the number's message data at rest in the EU. The box starts checked when your workspace is in Europe (EU, EEA, Switzerland or the UK) or has no country on file, and you can change it either way.
- The choice is made once, while the number is registered. Changing it later means connecting the number again as a new registration.
- It isn't available for Coexistence numbers. A number moved from another provider keeps the setting made there.
- If WhatsApp doesn't accept the request, the channel is still connected, without local storage (see Troubleshooting).
The channel object shows the result in the read-only local_storage field (null for other channel types and for numbers connected before this was recorded):
"local_storage": {
"status": "enabled",
"location": "eu",
"source": "customer_choice",
"reason": null,
"updated_at": "2026-10-14T09:12:00Z"
}
| Field | Values |
|---|---|
status | enabled, not_enabled, unknown |
location | eu, or other when a previous provider set a location outside the EU. null unless enabled. |
source | customer_choice, default, migrated_number, preexisting |
reason | Why it is not enabled: coexistence, already_registered, meta_rejected, not_requested |
updated_at | ISO 8601 UTC time of the last change |
Connect links you send to a colleague pre-check the box the same way.
Key Concepts
The 24-Hour Messaging Window
WhatsApp enforces a 24-hour customer service window. The rules are:
| Scenario | What You Can Send |
|---|---|
| Customer messaged within the last 24 hours | Any message type (text, media, interactive) |
| No customer message in 24 hours | Only approved template messages |
The 24-hour window reopens every time a customer sends you a message. Outside this window, you must use a pre-approved template message.
Replies inside the window are not always free: Meta gives each number 1,000 free service messages (free-form replies) per month and charges the rest at its utility rate, and utility templates are charged even inside the window. See Pricing Inside the Window.
Attempting to send a non-template message outside the 24-hour window will fail with a validation error from the WhatsApp Business API.
Templates
Templates are pre-approved message formats that Meta reviews before you can use them. They are the only way to initiate a conversation with a customer or re-engage after the 24-hour window closes.
Templates can include:
- Header -- text, image, video, or document
- Body -- the main message text with variable placeholders (
{{1}},{{2}}, etc.) - Footer -- smaller text below the body
- Buttons -- URL or quick-reply buttons
See Understanding Templates and Send a Template Message for details.
You do not have to write your first template yourself. Meta publishes a catalog of ready-made UTILITY and AUTHENTICATION templates in many languages — adopt one unchanged and it lands in your WhatsApp Business Account already approved, so you can send it straight away. See Meta Template Library.
The SendSeven app has an in-app WhatsApp guide (dashboard, WhatsApp settings, and the template screens) with a setup checklist, a short quiz for choosing between Coexistence and the API, and answers to the common questions — the 24-hour window, what a template is, and when Meta needs a payment method on your account. There is also a step-by-step WhatsApp setup guide on our website.
Template Categories
Meta classifies templates into categories that affect review timelines and pricing:
| Category | Use Case | Examples |
|---|---|---|
UTILITY | Transaction-related | Order confirmations, shipping updates, appointment reminders |
MARKETING | Promotional | Offers, product announcements, newsletters |
AUTHENTICATION | Login/verification | OTP codes, two-factor authentication |
Message Types on WhatsApp
WhatsApp supports a rich set of message types through SendSeven:
| Type | Within 24h Window | Outside 24h Window |
|---|---|---|
| Text | Yes | Template only |
| Image | Yes | Template only |
| Document | Yes | Template only |
| Audio | Yes | Template only |
| Video | Yes | Template only |
| Interactive (buttons/list) | Yes | No |
| Carousel | Template only | Template only |
| Contact card | Yes | No |
| Sticker | Yes | No |
| Reactions | Yes | No |
Quick Start: Send a WhatsApp Message
Within an active 24-hour window, send a text message:
curl -X POST "https://api.sendseven.com/api/v1/messages" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00" \
-H "Content-Type: application/json" \
-d '{
"contact_id": "contact_xyz789",
"channel_id": "channel_wa_001",
"text": "Hi! Your order #5678 has shipped. Estimated delivery: Feb 15.",
"message_type": "text"
}'
To initiate a conversation outside the 24-hour window, use a template:
curl -X POST "https://api.sendseven.com/api/v1/whatsapp-templates/tpl_abc123/send" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00" \
-H "Content-Type: application/json" \
-d '{
"contact_id": "contact_xyz789",
"channel_id": "channel_wa_001",
"language": "en_US",
"variable_values": ["John", "ORD-5678", "Feb 15, 2026"]
}'
Next Steps
- Understanding Templates -- template structure, categories, and language support
- Meta Template Library -- pre-approved templates you can adopt and send immediately
- Send a Template Message -- sending template messages with variables
- WhatsApp Interactive Messages -- buttons and lists on WhatsApp
- 24-Hour Messaging Window -- detailed window rules