Skip to main content

WhatsApp Business API on AWS

WhatsApp Business API on AWS

Send and answer WhatsApp messages from your own AWS account with AWS End User Messaging Social. One API for templates, media, and status events, billed on your AWS invoice, with Meta fees on top.

  1. A customer messages in, or the business starts with a template.
  2. AWS End User Messaging Social carries WhatsApp.
  3. The linked WhatsApp Business Account owns the number and templates.
  4. Message and status events publish to an SNS topic.
  5. Outside the 24-hour window, only approved templates can send.
  6. The conversation lands with an agent, a bot, or a human.

Last updated:

Built forAWS Solutions for DevOps & Platform EngineersFor CTOs
Industries servedRetail & eCommerce
Ask AI:ChatGPTClaudePerplexityGemini

What we set up

WhatsApp on AWS runs through AWS End User Messaging Social. Your WhatsApp Business Account (WABA) is linked to your AWS account, messages go out with SendWhatsAppMessage, and inbound messages and statuses arrive at an event destination you choose. It is part of what AWS calls Communication Developer Services.

FactualMinds has no published WhatsApp engagement. The facts on this page come from AWS documentation and our WhatsApp field guide, which links every source.

Architecture

LayerAWS componentWhat we configure
AccountEnd User Messaging Social + Meta sign-upWABA link or migration, phone number, business profile, display name
TemplatesWhatsApp message templatesUtility for order status, Authentication for codes, Marketing only with its own opt-in
SendSendWhatsAppMessageSession replies inside the window, templates outside it. Media is uploaded, then referenced
EventsAmazon SNS event destinationInbound messages plus delivery, read, and fail statuses on one topic
FilterAWS LambdaDrops status events. Only customer messages continue
ReplyAmazon Bedrock or Amazon ConnectAgent answers with read-only tools, or the contact routes to a live agent
ApprovalYour queueRefunds, address changes, price changes go to a person

AWS publishes two samples of this reply path: end-user-messaging-bedrock (WhatsApp to SNS, Lambda, and an optional Bedrock agent) and the two-way multi-channel chat sample (SMS and WhatsApp). Neither is a FactualMinds deployment.

One-time passcodes on WhatsApp

Since October 16, 2026, Notify can generate, send, and verify a passcode on WhatsApp from an AWS-managed template. That removes your own code store. Meta’s Authentication fee still applies on top of the AWS message fee.

WhatsApp in Amazon Connect

If live agents should take WhatsApp contacts, the same linked number can be imported into Amazon Connect. Customers write on WhatsApp, the contact flow routes them, and agents answer in the agent workspace with the rest of the contact history. Amazon Lex can take the first turn.

Engagement phases

  1. Fit check. If the customer has never written to you on WhatsApp, a business-started thread needs a template and a Meta fee. For some jobs the RCS page is the better start.
  2. Account and number. Link or migrate the WABA and confirm the origination number is ACTIVE. The public samples refuse to run without it.
  3. Templates. Get one Utility template approved for order status before any model is connected.
  4. Event path. Subscribe Lambda to the SNS topic and prove that a status event never reaches Bedrock.
  5. Agent and handoff. Connect the Bedrock agent with read-only tools, set a session lifetime, and route money changes to a person or to Connect.
  6. Cost reporting. Log AWS fees and Meta fees on separate lines.

What could go wrong

  • Every status event hits the model. Delivery and read events share the topic with user messages. Filter first.
  • Wrong template category. A Marketing template sent as a support reply is a different Meta meter and a different opt-in.
  • Budget from the AWS fee alone. 10,000 outbound messages are $50 in AWS fees (29 September 2026 rate), plus whatever Meta’s row says for that country and type.
  • Sessions that never expire. Using the phone number as the session id is fine only after you decide how long a session lives.

Who this is for

Good fit if:

  • Your customers already message you on WhatsApp, or you serve countries where WhatsApp is the default way people contact businesses.
  • You want WhatsApp sending, events, and billing to run in your AWS account next to your existing IAM, logging, and event pipeline.
  • You have a clear job for the channel: order status, appointment reminders, support replies, or one-time passcodes.
  • Someone on your side can approve company details with Meta and own the opt-in language.

Not a fit if:

  • Your main goal is bulk promotions to people who have never messaged you. Marketing templates need opt-in and are subject to Meta rules that vary by country.
  • You need a hosted inbox with no AWS involvement. This is a developer service, and the agent workspace is Amazon Connect or something you build.
  • You cannot take your number out of the WhatsApp or WhatsApp Business app, since a number in use there must be deleted first.
  • You operate from China, where AWS does not offer the service.

Approach and architecture

  1. Account link. In the End User Messaging Social console you link a business account and complete Meta’s sign-up flow. You can create a new WABA, migrate an existing one, or add a phone number to an existing one. You give AWS access to the WABA and allow it to bill you for messages.
  2. Phone number registration. The number must receive an SMS or voice passcode during sign-up. If you import a WABA, you need the PIN for each number on it.
  3. Templates. One Utility template for order status or the job you start with, an Authentication template if you send codes, and Marketing templates only where you hold opt-in. Meta reviews templates, and approval status shows in the console.
  4. Sending. Inside the 24-hour customer service window, all message types can be sent. Outside it, only approved templates to users who opted in. The window starts or refreshes each time the customer messages you. We code this branch once and test it.
  5. Inbound and status events. Turn on a message and event destination for the number, point it at an Amazon SNS topic, and subscribe a function. Delivery, read, and fail statuses share that stream with user messages, so the function filters them. A recipient who is not on WhatsApp produces an event with a status of fail.
  6. Reply path. Either the Bedrock agent described above, or an Amazon Connect queue for live agents. For follow-ups with attachments or long content, hand off to Amazon SES.

Deliverables and engagement boundaries

We deliver:

  • A fit check and a written number plan: which number, which jobs, which countries
  • The account link or migration, walked through with your Meta admin
  • Template drafts per job, with category and variable mapping, submitted for your approval
  • The SNS event path, status filter, alarms, and a test that proves a read receipt never reaches a model
  • The window-versus-template send logic in your codebase or as a reference module
  • A cost sheet with the AWS fee and the Meta fee on separate lines
  • Handover and a runbook for template rejections and quality-rating drops

You or third parties own:

  • The Meta Business Account, the WABA, and compliance with WhatsApp’s terms and messaging policy. Meta can prohibit your use of the service at any time.
  • Meta’s template decisions, quality ratings, and per-country pricing
  • Opt-in capture and records
  • Message content and the production application
  • Support staffing if you route to live agents

Prerequisites, limits, and restrictions

  • A Meta Business Account (can be created during sign-up) and a number that can receive an OTP by SMS or voice.
  • A number already in the WhatsApp Messenger or WhatsApp Business app must be deleted from it first.
  • Imported WABAs need the PIN for every number.
  • Not available to customers located in China.
  • Regional availability for End User Messaging Social expanded during 2026. We confirm your Region against the AWS page before design.
  • Templates are the only message type allowed outside the 24-hour window, and only to users who opted in.
  • AWS rates are on the pricing page, and Meta’s are set by Meta. We do not state Meta rates here.
  • AWS also documents newer WhatsApp features such as Flows and calling. We scope them only when a job needs them, and they are not part of the starting engagement.

Next step

Tell us whether you have a WABA today, which countries you serve, and which jobs WhatsApp should handle. Contact us.

Key Features

WABA Linking and Migration

Create a WhatsApp Business Account, migrate an existing one, or add a phone number to an existing WABA through the Meta sign-up flow in the End User Messaging Social console.

Template Approval

Utility, Authentication, and Marketing templates written and submitted per job, so the order-status agent is never stuck with only a Marketing template.

The 24-Hour Window

Session replies inside the customer service window, templates outside it. The branch is coded once and tested, not guessed per message.

Events to Amazon SNS

Inbound messages and delivery, read, and fail statuses go to an event destination. Lambda drops status events before any model call.

Amazon Connect Channel

Link the WhatsApp number to an Amazon Connect instance so live agents take WhatsApp contacts in the same workspace as voice and chat.

Bedrock Replies With Handoff

A Bedrock agent answers order status and policy questions in the thread. Refunds, address changes, and price changes go to a person.

Why Choose FactualMinds?

AWS-Native, Not Another Vendor

WhatsApp sending runs in your AWS account with IAM, CloudWatch, and your existing event pipeline, instead of a separate messaging vendor contract.

Honest Cost Model

We model the AWS fee and the Meta fee on separate lines. The AWS outbound fee is $0.005 per message (AWS pricing page, 29 September 2026). Meta charges on top by country and message type.

Published Field Guide

Our WhatsApp guide documents the window, the template rule, the reply path, and the receipt-filter detail from AWS sources and public samples.

AWS Select Tier Services Partner

50+ AWS certifications on staff. We have no published WhatsApp engagement yet, and we will say so on every page that covers it.

Frequently Asked Questions

How do we connect WhatsApp to AWS?
In the AWS End User Messaging Social console you choose Link business account, then complete the Meta sign-up flow. You can create a new WhatsApp Business Account, migrate an existing one, or add a phone number to an existing WABA. During sign-up you give AWS End User Messaging Social access to the WABA and allow it to bill you for messages.

Source: Getting started with AWS End User Messaging Social

What is the 24-hour customer service window?
When a customer messages you, a 24-hour customer service window starts or refreshes. Inside it you can send any message type. Outside it you can only send approved template messages, and only to users who opted in. A reply to someone who just asked is a different send from a promotion to someone who has been quiet for a week.

Source: Sending messages through WhatsApp

What does a WhatsApp message cost on AWS?
The AWS fee is $0.005 per outbound message, $0.002 for India Authentication and Utility, and $0.001 per inbound message (AWS pricing page read 29 September 2026). Meta charges its own fee on top, by country and message type. Since 1 July 2025 both are per message, not per conversation.

Source: AWS End User Messaging pricing

Can Amazon Connect agents answer WhatsApp messages?
Yes. You link a WhatsApp Business Account and phone number with AWS End User Messaging Social, import the number into your Amazon Connect instance, and route it with an inbound contact flow. The integration supports text, interactive messages, rich link previews, delivered and read receipts, and attachments. Amazon Lex can automate first responses.

Source: Set up WhatsApp Business messaging in Amazon Connect

Can the WhatsApp agent issue a refund?
Not in what we build. The agent may look up an order and answer in the thread. A refund, a new shipping address, or a price change becomes a proposal that a named person approves. The channel being WhatsApp does not make the tool safe.
What could go wrong?
Sending every status event to the model, so you pay to analyze read receipts. Having only a Marketing template approved, so the support agent cannot answer outside the window. Budgeting from the AWS fee alone. A Bedrock session that never expires and answers a new question with last month’s order.
What do we need before we can link a number?
A Meta Business Account (you can create one during sign-up), a phone number that can receive an SMS or voice one-time passcode, and the PINs for every number if you import an existing WABA. A number already registered in the WhatsApp Messenger or WhatsApp Business app must be deleted from it first. Customers located in China cannot link a WABA to AWS End User Messaging Social.

Source: Getting started with AWS End User Messaging Social

Who approves our templates, and how long does it take?
Meta reviews templates, not AWS. You create them in the AWS console, with the API, or in WhatsApp Manager, and monitor approval status in the console. Meta also assigns a quality rating that can lower a template status and its sending rate. We do not quote a review time because it is Meta's to set.

Source: WhatsApp message templates

Can we send promotions on WhatsApp?
Only with a Marketing template, to users who opted in, and subject to Meta's rules, which change. AWS documents support for Meta's Marketing Messages API, and notes that Meta blocked marketing templates sent to +1 numbers from 1 April 2025. Check the current Meta rule for each country before you plan a campaign.

Source: Sending messages through WhatsApp

Can we keep using our number in the WhatsApp Business app?
Not on the same number at the same time. AWS documents that a number already in use with the WhatsApp Messenger or WhatsApp Business app must be deleted from it before you use it for sign-up. We review how the number is used today during the fit check, before anything is migrated, and we do not promise that chat history carries over.

Launch WhatsApp From Your AWS Account

Tell us whether you already have a WhatsApp Business Account, which countries you serve, and which jobs WhatsApp should handle. We will map templates, events, and the reply path.