Skip to main content

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:create and channels:read scopes
  • 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:

  1. Log in to SendSeven
  2. Navigate to Settings > Connected Channels
  3. Click Connect WhatsApp and answer the short setup questions
  4. Complete the Facebook Embedded Signup flow
  5. 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"
}
FieldValues
statusenabled, not_enabled, unknown
locationeu, or other when a previous provider set a location outside the EU. null unless enabled.
sourcecustomer_choice, default, migrated_number, preexisting
reasonWhy it is not enabled: coexistence, already_registered, meta_rejected, not_requested
updated_atISO 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:

ScenarioWhat You Can Send
Customer messaged within the last 24 hoursAny message type (text, media, interactive)
No customer message in 24 hoursOnly 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.

danger

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.

New to WhatsApp Business?

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:

CategoryUse CaseExamples
UTILITYTransaction-relatedOrder confirmations, shipping updates, appointment reminders
MARKETINGPromotionalOffers, product announcements, newsletters
AUTHENTICATIONLogin/verificationOTP codes, two-factor authentication

Message Types on WhatsApp​

WhatsApp supports a rich set of message types through SendSeven:

TypeWithin 24h WindowOutside 24h Window
TextYesTemplate only
ImageYesTemplate only
DocumentYesTemplate only
AudioYesTemplate only
VideoYesTemplate only
Interactive (buttons/list)YesNo
CarouselTemplate onlyTemplate only
Contact cardYesNo
StickerYesNo
ReactionsYesNo

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​