WhatsApp Automation for D2C Brands in India (2026): The Five Flows, What Each Costs, and What to Hand to an AI Agent
Most D2C WhatsApp stacks in India run the same five flows. Here is each one with its Meta template category and rupee cost, the limits that quietly block messages, and a worked monthly bill for a brand doing 5,000 orders.
The short answer
- 5WhatsApp flows that cover most of a D2C brand's volume
- ₹0.1150per utility message to an Indian number (order updates, COD confirmation)
- ₹0.8631per marketing message (abandoned cart, re-engagement)
- 250 → 2,000first messaging-limit step for a new business portfolio
WhatsApp automation for a D2C brand in India comes down to five flows: order updates, COD confirmation, abandoned-cart recovery, “where is my order” support, and returns. Three of them are utility templates at ₹0.1150 a message on Meta’s India rate card. One is a marketing template at ₹0.8631. The last two are conversations a customer starts, which an AI agent can answer from your order data.
The opportunity is in what happens after the message. An order update can become an answered tracking question; a COD reminder can become a confirmed address. Adya connects those replies to your order data and gives your team a handoff when needed. Budget for both Meta messaging and the platform that handles the conversations, then measure the orders and support work the flow helps your team manage.
Where D2C brands lose money on WhatsApp today
Three leaks show up in almost every brand we look at. Each one maps to a flow below.
Returns to origin. A COD parcel refused at the door costs forward shipping, reverse shipping, packaging and the ad spend that won the order. Industry figures for Indian RTO rates vary widely by category and courier, and no regulator publishes one, so measure your own. The direction is not in doubt: an unconfirmed COD order is your riskiest shipment.
“Where is my order?” tickets. Every status question a human answers costs agent time, and most of them have an answer already sitting in your order system. The customer wanted the tracking scan, not a person.
Checkouts that stop at the OTP. A customer who added to cart and left gave you a phone number and intent. A single, opted-in reminder recovers some of them. The trap is sending it as a utility template and getting it reclassified as marketing, or sending it to someone who never opted in.
Flow 1: order confirmation and tracking
This is the flow to build first, because it is cheap, it is expected, and it opens the door for Flow 4. Your store fires a webhook when an order is created, paid, shipped and out for delivery; each event sends one utility template.
| Event | Store trigger | Template category | Meta cost per message |
|---|---|---|---|
| Order placed | Shopify orders/create; WooCommerce order topic | Utility | ₹0.1150 |
| Payment received | Shopify orders/paid | Utility | ₹0.1150 |
| Shipped, with tracking link | Shopify orders/fulfilled or fulfillments/update | Utility | ₹0.1150 |
| Out for delivery / delivered | Courier webhook | Utility | ₹0.1150 |
| Cancelled or refunded | Shopify orders/cancelled, refunds/create | Utility | ₹0.1150 |
Shopify delivers each webhook as an HTTPS POST with an HMAC signature in the X-Shopify-Hmac-SHA256 header. It expects a 200 within five seconds, and retries 8 times over the next 4 hours if it gets anything else. WooCommerce configures webhooks under Settings → Advanced → Webhooks with a shared secret, and disables a webhook after more than five consecutive delivery failures. Acknowledge first, send the template afterwards.
Two rules keep this flow at ₹0.1150. Send one message per real event, not one per attempt — an idempotency key such as order-4821-shipped makes a retry safe. And keep the copy to the order: name, order number, what happened, when to expect the next step. The order-update recipe in our docs walks the whole loop, including the webhooks that tell you the message was delivered and that the customer replied.
Flow 2: COD confirmation and RTO
We worked this one through in full in the cheapest way to confirm a COD order, so here is the shape and the conclusion rather than a repeat.
Confirm by WhatsApp first: one utility template within minutes of the order, with quick-reply buttons to confirm, change the address or cancel. Call only the customers who did not reply after a few hours, with an AI agent that confirms the same three things and corrects the address on the call. Hold or convert to prepaid the orders that answer neither.
In the illustrative scenario in that guide, the ladder cost less per confirmation than calling everyone. Your WhatsApp reply rate, call connection rate and average call length determine your result; the example is not measured performance or a guarantee. Write every outcome, including address corrections, back to your order system.
Flow 3: abandoned-cart recovery
This is the one flow on the list that is marketing, and it is billed like it: ₹0.8631 per delivered message, about 7.5 times a utility message. Meta’s own template guidelines list “You left {{items}} in your cart!” as a marketing example. Submitting it as utility does not make it cheaper; Meta assigns the category and reclassifies mixed content as marketing.
Shopify’s checkouts/create and checkouts/update webhooks carry an abandoned_checkout_url, which is the link your template should deep-link to. Send one reminder, not a sequence, and only to customers whose opt-in covers marketing messages. Meta’s policy requires that opt-in to name your business and state what the person is agreeing to receive, and it recommends a separate opt-in per message category.
Two limits sit on this flow and on nothing else. Meta’s per-user marketing limit can block your reminder because the customer has had too many marketing messages from other brands this week; you are not charged, but it does not arrive. And your own frequency cap should be stricter than Meta’s — Adya’s sending rules hold every person to one message per campaign per day and four per rolling week, and the weekly cap can only be lowered.
Flow 4: “Where is my order?” answered by an AI agent, not a ticket
A customer replies to the shipping update with “it says out for delivery but nothing came.” That reply opens a 24-hour customer service window. The pricing example below includes applicable Meta service-message charges. With a live order lookup, Adya can answer a routine tracking question in that conversation and pass exceptions to your team.
The agent needs a live read tool pointed at your order data. In Adya that is a knowledge-base source in “call it live” mode with a URL like https://api.yourbrand.in/orders/{order_id} and a name such as check_order. It also needs a one-line rule for when to use it: “after the customer has given an order number or you have identified them by phone.” The agent calls it mid-answer and reads back the latest scan, the courier and the expected date. Read tools cannot change anything in your system; that is enforced, not advisory.
Shopify, WooCommerce and most Indian courier aggregators expose this over REST already. If your tracking lives in a spreadsheet, that is the thing to fix before any WhatsApp work.
Flow 5: returns, exchanges and human handoff
Returns are where automation should stop short of the decision. Let the agent collect what a human would ask anyway — order number, item, reason, a photo if your policy needs one — and read your return policy back accurately. Then either take the action your rules allow, or hand off.
The distinction that matters is read versus action. Looking up whether an order is inside the return window is a read. Accepting the return is an action, and an action tool should confirm the customer asked, gather details one at a time, and never claim it is done before your system says so. If you are not ready to let an agent accept returns, switch actions off and it can still answer every question about them.
Handoff is the other half. Adya’s human handoff moves a WhatsApp thread to a live person inside your live hours, with an AI-written summary and the full thread, so the customer does not repeat themselves. Outside live hours it creates a ticket with a reference the customer can quote. A staff reply on WhatsApp still has to respect the 24-hour window and any opt-out, the same as the agent’s.
Templates: utility vs marketing, and why wording changes your bill
Meta reviews every template and assigns one of three categories. Utility templates must be non-promotional and either requested by the user or essential to them. Authentication is one-time codes. Everything else is marketing. Meta’s guidelines state that a template mixing utility and marketing content is categorised as marketing.
| Wording | Category | Meta cost per message | Per 5,000 orders |
|---|---|---|---|
| “Your order AM-4821 has shipped and should arrive in 2–3 days.” | Utility | ₹0.1150 | ₹575 |
| “Your order AM-4821 has shipped! Use code BACK10 on your next order.” | Marketing | ₹0.8631 | ₹4,315.50 |
| “Your package is out for delivery today.” | Utility | ₹0.1150 | ₹575 |
| “You left {{items}} in your cart! Complete your order.” | Marketing | ₹0.8631 | ₹4,315.50 |
The practical rule: one template per job, and no second job in the same template. Put the discount in a separate, opted-in marketing message, and keep every status template to the status. A category you disagree with can be appealed in WhatsApp Manager, but you pay the applied category until it changes.
Write the variables carefully. Meta rejects templates with placeholder gaps, variables at the very start or end, and content that looks like it is collecting sensitive data. In Adya a template that is submitted but not yet approved is refused at launch with template_not_approved, which is better than forty thousand delivery failures.
Messaging limits, quality rating and the per-user marketing limit
Messaging limits
A new business portfolio can message 250 unique customers in a rolling 24 hours, outside open service windows. The next tier is 2,000, not 1,000. Meta’s messaging-limits page gives three ways to reach it: verify your business, have the partner that onboarded you verify it, or deliver 2,000 high-quality templates to unique numbers within 30 days. Above 2,000 the tiers are 10,000, 100,000 and unlimited. You move up one level when your quality is good and you have used at least half your limit in the last 7 days.
For a brand doing 5,000 orders a month, 250 is a day-one problem and 2,000 is comfortable. Replies inside a customer service window never count, which is one more reason to let customers open the window.
Quality rating
Each business phone number carries a Green, Yellow or Red rating based on the last 7 days of customer feedback, mainly blocks and reports. Red moves the number to Flagged; if it has not recovered after 7 days, Meta drops the messaging limit one tier. Sending marketing to people who did not opt in is the fastest way to get there.
The per-user marketing limit
Separately, Meta limits how many marketing templates one person receives from all businesses in a period. The number is not published and adapts to the person’s recent read rate and inbox. A blocked message fails on the status webhook with error code 131049; wait at least 24 hours before resending, because repeated retries can suspend delivery to that user for up to 24 hours. Marketing sent inside an open service window does not count towards it.
Monthly cost for a brand doing 5,000 orders
Assumptions, all replaceable: 5,000 orders, 60% COD, three utility updates per order, and 4,000 abandoned checkouts with a marketing opt-in. 20% of orders generate a tracking question and 5% a returns conversation, with four AI replies each. COD voice uses the ladder from the COD post: 45% confirm on WhatsApp, 68% of the rest answer a 1.2-minute call.
| Line | Volume | Rate | Meta cost |
|---|---|---|---|
| Order updates (utility) | 15,000 | ₹0.1150 | ₹1,725 |
| COD confirmation (utility) | 3,000 | ₹0.1150 | ₹345 |
| Abandoned cart (marketing) | 4,000 | ₹0.8631 | ₹3,452.40 |
| AI replies in the service window | 5,000 | First 1,000 free, then ₹0.1150 | ₹460 |
| Meta total | 27,000 messages | ₹5,982.40 |
Count customer windows, not just incoming replies. For this scenario assume each order belongs to a different customer, its three updates fall in three separate 24-hour windows, and the COD prompt and its replies share the first window. That creates 15,000 windows. Assume the 4,000 cart nudges and 1,250 tracking/returns conversations each open additional windows: 20,250 WhatsApp conversations in total. Messages within an already open customer window do not add another conversation. Your own schedule and repeat customers may change this count substantially.
Use Growth for this outbound campaign workflow: 5,000 conversations, 500 call minutes and one Indian phone number are included. The COD voice rung assumes 1,650 attempts, 68% connected and 1.2 minutes per connected call: 1,346.4 minutes, rounded up to 1,347 billable minutes in this estimate. Voice is billed separately from the conversation allowance. Plan campaign batches within your recipient limits.
| Line | Calculation | Cost |
|---|---|---|
| Growth subscription | 5,000 conversations + 500 call minutes | ₹7,999 |
| Extra conversations | (20,250 − 5,000) × ₹2 | ₹30,500 |
| COD voice overage | (1,347 − 500) × ₹6 | ₹5,082 |
| Indian phone number | One included with Growth | ₹0 extra |
| Adya subtotal | Subscription + conversation and voice overages | ₹43,581 |
| Meta messaging, billed separately | Templates ₹5,522.40 + service ₹460 | ₹5,982.40 |
| Combined monthly estimate | Before GST; no extra numbers or services | ₹49,563.40 |
| Per order | ₹49,563.40 ÷ 5,000 | ₹9.91 |
Compare this estimate with your own avoided return costs, contribution from recovered orders and support hours saved. For example, preventing 60 returns at an assumed ₹500 cost each would avoid ₹30,000. Assess that alongside contribution from recovered checkouts and time saved answering order questions. Bring your volumes to our team to compare the listed plan with a custom setup. Include integration work, extra numbers and taxes in your rollout budget. Our WhatsApp Business API pricing post explains the Meta portion separately.
Go beyond broadcasts with conversations that resolve
A status message is often the start of a customer question. Adya helps your team manage what follows: tracking, return policy questions and a handoff with the conversation history.
Start with one connected workflow. Bring your store events and order-data endpoint into the setup conversation. Plan the webhook or integration work, test one order update and its likely replies, then expand when the answers and handoffs meet your criteria.
Make campaigns useful to the recipient. Keep consent and frequency caps in the rollout plan. Use delivery outcomes and customer replies to evaluate a campaign, with your team ready for exceptions that need judgment.
Pick Adya when the replies are the point. A status message turns into a tracking question, a return, an address change or a call, and you want one agent handling all of it with a human one click away.
Frequently asked questions
A plain order-status message is a utility template. Meta's template guidelines list order confirmations and shipping updates as utility examples, and charge them at ₹0.1150 per delivered message in India. Add a discount code or an upsell to the same message and Meta classifies it as marketing, billed at ₹0.8631. Keep status messages purely transactional.
Meta does not publish a number. Its per-user marketing template limit is dynamic: it depends on how many marketing messages that person has recently received from all businesses and how often they read them. A message blocked by the limit fails with error code 131049, and Meta's guidance is to wait at least 24 hours before resending. Adya's own campaign cap is 4 messages per person per rolling week, which cannot be raised.
Yes, if it is given a live read tool. In Adya you register your order endpoint, for example https://api.yourbrand.in/orders/{order_id}, as a Look up data source on a knowledge base; the agent calls it mid-conversation and answers from the response. Shopify and WooCommerce both expose order data over REST and send order webhooks, so the same data can drive the outbound status templates.
You can use Meta's Cloud API directly; Meta bills your business on the same per-message rate card either way. A direct integration means you build template management, the 24-hour window logic, opt-out handling, webhook retries and an inbox yourself. A provider or platform adds a fee on top of Meta's rate, typically a per-message markup or a monthly plan, in exchange for that work. Compare the two lines separately.
The worked example estimates ₹49,563.40 before GST: ₹43,581 for Adya Growth, conversation overages and COD voice, plus ₹5,982.40 paid separately to Meta. It assumes 20,250 distinct WhatsApp customer windows, 1,347 billable call minutes, and Growth's included Indian number. Sending or replying within an existing 24-hour customer window changes the conversation count, so map your actual timing before budgeting.
Sources
- 1.Meta for Developers — Pricing on the WhatsApp Business Platform (rate cards, India INR billing, free entry point window)
- 2.Meta for Developers — Upcoming pricing updates for service and utility messages (effective October 1, 2026)
- 3.Meta for Developers — Template categories and guidelines (utility, marketing, authentication examples)
- 4.Meta for Developers — Messaging limits (250 → 2,000 → 10,000 → 100,000 → unlimited)
- 5.Meta for Developers — Per-user marketing template message limits (error 131049)
- 6.Meta for Developers — Get opt-in for WhatsApp
- 7.Meta Business Help Center — About your WhatsApp Business phone number's quality rating
- 8.Shopify.dev — Webhooks reference (orders/create, orders/paid, orders/fulfilled, checkouts/update)
- 9.Shopify.dev — HTTPS webhook delivery, HMAC verification and retries
- 10.WooCommerce — Webhooks documentation
- 11.Amomic-AI docs — Campaign sending rules (opt-outs, consent, frequency caps)
- 12.Adya pricing — our full price list


