WhatsApp marketing on your own number, at cost
Most platforms mark up every message. OpsTower connects your own Meta WhatsApp Cloud API — Meta bills conversations directly to you, and you pay us a flat platform fee. Templates, campaigns, flows and a team inbox included.
Everything included
Every capability below is in the plan for the tiers listed under Pricing — there is nothing to unlock inside the module itself.
Campaign builder with guardrails
Pick an audience, see the exact number of people it matches, then confirm. An empty filter matches nobody rather than everybody — a mis-set campaign cannot become a send to your whole list.
Segmented audiences
Build lists from what customers actually did: COD buyers, repeat purchasers, people who bought once and never came back, anyone whose parcel came back RTO. Pulled from your Shopify orders, not typed by hand.
Template manager
Write a template, submit it to Meta for review, and watch its status update in the dashboard. Rejections come back with Meta’s reason attached so you can fix and resubmit rather than guess.
Two-way team inbox
Replies land in one shared inbox your whole team works from, with the customer’s order history beside the conversation and a visible countdown on the 24-hour window in which you can reply freely.
Flow builder you can draw or describe
A full-page canvas: drag a step in, join it up, and see every branch. Or write one sentence — “ask COD customers to confirm, remind them after 6 hours, then tag the order” — and it draws the flow for you, which you then edit like any other.
It catches the step that would never arrive
WhatsApp accepts a message sent outside the 24-hour window and then quietly does not deliver it. The builder walks every path and flags that step while you are still building — including on flows the AI drafted, so it cannot hand you a broken one.
13 flows already written
COD confirmation, abandoned checkout, failed delivery, RTO, delivered-then-review, win-back. Each one installs paused so you read it and change the wording before a single customer hears from it.
Fired by what actually happened
COD or prepaid order, checkout started, fulfilled, delivered, cancelled, failed delivery, out for delivery, parcel turning back. Straight off the event in seconds — not a schedule that sweeps every quarter hour.
Button taps come back into the flow
When your COD template offers Confirm and Cancel, the tap re-enters the same flow and takes the branch you drew — it does not fall through to a bot that asks them for the order number they were just shown.
Writes tags back to Shopify
Tag the order confirmed or cod-cancelled from inside the flow, so the packing list and the WhatsApp thread agree without anyone retyping anything.
COD confirm and cancel, by button
A COD order asks the customer to confirm with a tap before you pack it, with a photo of what they bought. The tap tags the order in Shopify and answers them straight away. Cancelling an order genuinely cancels and restocks it — and is refused once the parcel has a tracking number, because that is a return, not a cancellation.
Customer updates, approved by you
A customer asks to fix an address, pincode, phone or name before dispatch. They must prove the order is theirs with its email or phone, then you approve — and only then does Shopify change.
AI replies, grounded in your orders
Answers “where is my order” from that customer’s own shipment rows. It cannot send free text at all, and refunds, damage and complaints are routed to a person in code before the model is ever called.
Template library on day one
Seven utility templates already written and already attached to their flows, ready to submit for Meta review the day you connect your number — plus a catalogue of 20 covering orders, delivery, returns and win-back, instead of a blank page.
WhatsApp CRM with team seats
Contacts, tags, fixed lists, self-updating segments and your own custom fields — plus per-agent logins with roles, where a member sees only the chats assigned to them.
Click-to-WhatsApp leads
Replies to your Meta ads become contacts automatically, tagged with the campaign that produced them, so you can measure which ad actually started conversations.
Works with what you already run
Your own Meta WhatsApp Business Account, your Shopify store, and your payment gateway for the order data behind every message.
Four ways to group people, because they are four different jobs
Most WhatsApp tools give you tags and call it a CRM. A tag cannot express “the 300 people I am inviting to this launch” and a fixed list cannot express “whoever stops repeating.” Both matter, so both exist — alongside your own custom fields and the team that works them.

Each with their own login, so who replied to whom stays on the record.
Search by name or number, filter by tag, select in bulk. Import a CSV straight from another platform — it finds the phone, name and tag columns by header rather than demanding a fixed order. Export any view. Block and opt-out are handled explicitly, and neither can ever be messaged by a campaign.
Applied by you, by a flow, or by the AI. The ones automation writes — cod-confirmed, ndr, needs-human — are marked read-only, because renaming a tag a flow depends on would break it silently and the failure would look like the flow simply stopped working.
You put people in it and it stays put. Send to a list next month and it reaches exactly the people in it today. Right for a one-off — a launch invite, a wholesale price drop, an event.
“COD buyers who never repeated.” Re-answered every time it is read, so whoever qualifies tomorrow is in it tomorrow with nothing to refresh. Right for anything ongoing — winbacks, VIP treatment, a flow's audience.
Appointment date, credit days, GST number, policy expiry. Whatever your business actually tracks. Usable inside a template as {{contact.key}} and as a rule in a segment, so a field you invent on Monday can drive a campaign on Tuesday.
Each person logs in with their own credentials and answers from the same number. Owner, Admin and Member roles decide who can spend money and who can only work the inbox. Open chats per agent are visible on one screen, so you can move work before a customer waits a day.
What each plan includes
Contacts are not charged per head — the number below is a fair-use ceiling, not a meter. What scales with the plan is how many ways you can slice them and how many people can work the inbox.
Starter ₹1,999/mo | Growth ₹3,499/mo | Unlimited ₹18,999/mo | |
|---|---|---|---|
| Team seats | 1 | 3 | 25 |
| Contacts | 25,000 | 1,00,000 | 20,00,000 |
| Tags | 10 | 100 | null |
| Segments | 2 | 10 | null |
| Lists | 10 | 25 | null |
| Custom attributes | 5 | 20 | null |
| Messages / second | 40 | 80 | 1000 |
What stops a campaign going to the wrong people
The expensive mistake in this software is not a missing feature. It is one message reaching an audience nobody intended.
Never everybody. A campaign with no audience selected sends to zero people, which is the only safe direction for that mistake to fail.
The exact number, before the campaign exists — not after you press send.
Segments re-count at send time. If one grew more than 10% since you confirmed it, nothing goes out and it asks you to look again.
It never falls back to a wider audience. Deleting a segment cannot silently turn a targeted campaign into a blast.
From every list, every segment, every campaign. There is no path that ignores them.
An agent sees threads assigned to them plus the unassigned queue — enforced on the page, the API and the URL, not just hidden from the list.
Your customer is already on WhatsApp. Your team is already answering.
Indian shoppers do not email, and they do not open a support portal. They message. Pulse puts the order behind that message so the answer takes seconds instead of a phone call.

Asks on the app they already have open. No portal, no ticket number, no app to install.

The call your team is on right now is almost always one of four questions. Pulse answers all four in writing, instantly.

A reply inside a minute is the difference between a confirmed order and one that comes back to you unopened.
Every one of these is live today
What brands actually send on WhatsApp
Not a list of things the platform could theoretically do. Each of these is a flow or campaign you can switch on from the dashboard, on your own number, billed by Meta at Meta's rates.
Coming next: Abandoned-cart recovery · COD order confirmation before dispatch
Two buttons that actually do something
Cash on delivery is most of Indian ecommerce and most of its returns. The message below goes out when a COD order is placed — and the buttons are wired to your store: Cancel order cancels the order in Shopify and restocks the stock, without anyone opening the admin.
This is a Cash on Delivery order. Please confirm it below and we will pack it today.
If you no longer want it, tap Cancel order and we will cancel it right away.
What stops it going wrong
Once a parcel is with a courier, cancelling in Shopify would leave it physically in transit against a cancelled order. The call is refused and the reply says to handle it as a return instead.
If the shipment already has a tracking number, the tap is recorded and the contact tagged, but nothing is cancelled — that parcel is past the point where this button is the right tool.
“cancel nahi karna” means do not cancel. A substring rule would read “cancel” and cancel it. Only a whole-message match counts, so that sentence falls through to a human.
The trigger itself requires a COD order, not a checkbox the merchant can mis-set. Asking someone who has already paid to confirm cash on delivery is how a number gets reported.
Tapping the same button twice does nothing the second time. Tapping Confirm and then Cancel DOES cancel: someone who changes their mind in the next minute means it, and ignoring that quietly is how a parcel ships to a customer who believes they cancelled.
A tap gets a reply — cancelled, confirmed, or handed to a person. Silence is indistinguishable from a message that never arrived, which is what makes people phone you.
If Shopify refuses, the contact is still tagged and the reason is written to the audit log. An invisible failure on a customer's cancellation is the worst outcome available.
Why most WhatsApp tools stop at the message
| Typical BSP | OpsTower | |
|---|---|---|
| Sends a COD confirmation | Yes | Yes |
| Customer answers with a tap | Usually typed | Two buttons |
| “Confirm” marks the order safe to dispatch | Manual | Tagged automatically |
| “Cancel” cancels it in Shopify | No — a person does it | Yes, and restocks |
| Refuses to cancel a shipped parcel | n/a | Refused in code |
| Typed “cancel nahi karna” is safe | Depends on the bot | Never matches |
| Confirm, then change your mind | Ignored | Cancels — a person means it |
| Customer told what happened | Usually silence | Replied in seconds |
The gap is not message formatting — any tool can render a button. It is that acting on the answer needs your Shopify connection and your WhatsApp number to live in the same product. That is the whole reason OpsTower owns both sides.
An AI that can only say things it can prove
Most WhatsApp chatbots are decision trees wearing an AI badge, or a language model with no access to your orders — so it guesses. Ours is handed the customer’s own shipment rows and is structurally unable to state anything that isn’t in them.
The customer's own shipments — order, status, courier, AWB, delivery issue — are in the prompt before the model runs. If there are none, it is told so and hands off rather than guessing.
The model must call one of two functions: reply, or escalate. There is no code path where a stray sentence reaches a customer.
Refunds, damage, chargebacks and cancellations are routed to a human in code, before the API call. That is why escalating costs nothing.
Your NDR reply branching and keyword flows take priority. The AI only speaks when nothing you configured did.
The difference between this and the other two things called “WhatsApp chatbot”
| Keyword bot | Generic AI bot | Pulse AI Replies | |
|---|---|---|---|
| Knows your actual orders | No | No | Reads the shipment row |
| Can invent an answer | Can't answer at all | Yes — will guess | Cannot emit free text |
| Refunds, damage, complaints | Falls through silently | May improvise | Human, before the model runs |
| Spend control | n/a | Unbounded | Hard monthly ceiling |
| Overrides the rules you wrote | n/a | Often | Never — runs last |
It answers order and policy questions. It is not a salesperson: it will not negotiate, upsell, or improvise about money — and we would rather say so here than have you find out on a customer.
How the AI chatbot works →“Change my address” — answered without a phone call
Customers ask to fix a detail after ordering: a wrong pincode, a new address, the other phone number. Today that is a call, a screenshot, and someone editing Shopify by hand. Here the customer just messages WhatsApp, the AI turns it into a request, and one click applies it to the order.
“change my address”, “wrong pincode”, “use my other number”. It reaches the same WhatsApp number they already message you on — no form, no portal, no app.
It records order, field, old value and new value as structured data, then replies that the request has been sent for confirmation. It never says the change is done, because it has not happened yet.
The request waits in Pulse with the old value struck through and the new one beside it. Rejecting always messages the customer with your reason — there is no silent no.
On approval the order is updated, a note is written to it recording who asked and what changed, and the customer is told. Every step is on the order itself, not in someone's chat history.
What stops it going wrong
Reading the request is the easy part. Everything below is why it is safe to act on one.
The order's phone number must match the WhatsApp number that asked, compared on the last 10 digits so +91 and bare formats both work. This is the guard that matters: without it, anyone who knows an order number could have that parcel redirected to their own address.
Shopify's order search is prefix-fuzzy — asking for #1104 can return #1104-A. A near-match is refused rather than edited, because changing the wrong order is worse than changing none.
Changing an address in Shopify does not change it at the courier. If the parcel has a tracking number, approving is refused with the reason — and only then does an explicit override appear, for after you have called the courier yourself.
Address, pincode, phone and name. Anything else — a size, an item, a product change — is refused with “update it in Shopify, then approve”, instead of being guessed into an address line.
A new address with no pincode, kept next to the old pincode, is a parcel routed to the wrong state. Instead of failing, it messages the customer asking for the 6 digits and stays pending.
If any check fails, nothing is written and the customer is never told it is done. Half-applied is the worst outcome available: the customer stops watching for a parcel that is still going to the old address.
How this is normally handled
| Phone & manual edit | A support inbox | Pulse | |
|---|---|---|---|
| Customer effort | Call and wait | Email, then wait | One WhatsApp message |
| Request is structured | No — free text | No — free text | Order, field, old → new |
| Checks it is their order | Whoever answers decides | Rarely | Enforced in code |
| Blocks a shipped parcel | If they remember | No | Refused, override explicit |
| Written to Shopify | By hand | By hand | One click |
| Customer told the outcome | Sometimes | Sometimes | Always, approved or not |
| Recorded on the order | No | No | Note on the order |
It handles address, pincode, phone and name. It deliberately does not touch what was ordered, prices, or anything involving money — those go to a person, and we would rather say so here than have you find out on a customer.
How the AI chatbot works →Six templates, written and wired before you log in
A flow without an approved template cannot send. So we do not hand you six switches and a blank page — your workspace arrives with the templates written, attached to their flows, and ready to submit for Meta review in one action.
cod_order_confirmA COD order is placedHi {{1}}, thanks for your order {{2}}. This is a Cash on Delivery order. Please confirm it below and we will pack it today.
Confirming intent before dispatch is the single biggest lever on RTO. Cancel actually cancels the order in Shopify.
order_shippedThe parcel is picked upHi {{1}}, your order {{2}} is on its way. Tracking: {{3}} · Courier: {{4}}
Answers “where is my order” before it is asked, removing the ticket.
order_out_for_deliveryThe rider has it, delivering todayHi {{1}}, your order {{2}} is out for delivery today with {{3}}.
Someone being home is how an NDR never happens in the first place.
ndr_delivery_failedA delivery attempt failsHi {{1}}, we could not deliver {{2}}. Reason: {{3}}. Reply YES to reschedule.
Most RTOs start as an unactioned NDR. The reply re-books the attempt.
order_returningA parcel turns around (RTO)Hi {{1}}, your order {{2}} is coming back to us. Reason: {{3}}
An RTO in flight can still be rescued if the customer re-confirms.
order_delivered_reviewDelivery is confirmedHi {{1}}, your order {{2}} has been delivered. Not right? Start a return below.
Confirms delivery first, asks second — which is why it passes as utility.
Every one is a UTILITY template — the category Meta intends for order updates, and the cheaper conversation rate. None of them upsell, which is also why they pass review.
Each body's {{n}} placeholders must match what its trigger actually supplies. A mismatch is not a crash — Meta rejects it at delivery, so messages silently never arrive. A script verifies all six.
Re-running the seed never overwrites a template you have changed, and never re-points a flow you have wired yourself.
Meta reviews every template before it can send — usually under an hour for utility templates, occasionally longer. That clock is Meta’s, not ours, which is why we submit on the day you connect your number rather than the day you send your first campaign.
Whose WhatsApp account is it, really?
Most WhatsApp platforms in India put your number inside their Business Solution Provider account and resell you messages. OpsTower does the opposite: we help you register your own WhatsApp Business Account, and we never sit between you and Meta's invoice. It sounds like a technicality until you try to leave.
| Your own WABAHow OpsTower does it | Provider-owned (BSP) WABAThe common setup | |
|---|---|---|
| Who owns the WhatsApp Business Account | ✓You. Registered under your own Meta Business Manager. | The provider. Your number sits inside their account. |
| Who bills you for conversations | ✓Meta, directly to your card, at published rates. | The provider, from a prepaid wallet, at their rate. |
| Quality rating & messaging limits | ✓Yours. Follows your number wherever you go. | Tied to their infrastructure; you inherit their reputation. |
| If you switch platforms | ✓Number, templates and history stay with you. Migration is a settings change. | Often means re-verification, re-approval and lost history. |
| Rate transparency | ✓You can read Meta's invoice yourself. | You see their rate card, not Meta's. |
| Green tick / business verification | ✓Verified against your own registered business. | Sometimes held at the provider level. |
What a marketing message actually costs
Meta charges per conversation, not per platform. These are Meta's published India rates alongside the two BSP rates we see most often.
| Marketing messages / month | Meta direct (OpsTower) | At ₹0.865 | At ₹1.4 | You'd overpay |
|---|---|---|---|---|
| 10,000 | ₹7,846 | ₹8,650 | ₹14,000 | up to ₹6,154 |
| 30,000 | ₹23,538 | ₹25,950 | ₹42,000 | up to ₹18,462 |
| 1,00,000 | ₹78,460 | ₹86,500 | ₹1,40,000 | up to ₹61,540 |
Utility and authentication conversations are cheaper again — Meta charges about ₹0.115 each. Rates are Meta's published India pricing as of August 2026 and change periodically; your Meta invoice is always the authority. Free service conversations and the 24-hour customer-service window are unchanged either way.
One honest caveat: a BSP-managed account is genuinely simpler to set up, because someone else handles verification. We think fifteen minutes of setup is worth owning the asset — but if you want the hands-off version, we'll walk you through it and you can decide.
Why your own WABA matters
Aggregator platforms resell WhatsApp through their own infrastructure and charge per message on top of Meta's own per-message rates. At 50,000 messages a month, that markup is often larger than your entire OpsTower subscription.
With OpsTower you register your own WhatsApp Business Account, your number stays yours, your quality rating is yours, and if you ever leave, everything goes with you. No lock-in by design.
We built this after running WhatsApp marketing inside an Indian eyewear operation — including the hard lessons. Audience previews are mandatory because we once watched a mis-filtered campaign come within one click of an entire contact list, and rate limiting is tuned to keep your number's quality rating healthy.
Frequently asked
Do I need my own Meta WhatsApp API account?
Yes — and that's the point. We guide you through creating a WABA in Meta Business Manager in about 15 minutes. Your number, your quality rating, your data.
What does a message cost?
Exactly what Meta charges — conversation-based pricing billed by Meta to your card. OpsTower adds zero markup.
Can I migrate from Interakt / Wati / GoKwik?
Yes. Export your contacts as CSV, import with tags, and re-submit your templates. Most brands migrate in a day.
Is there an approval flow for campaigns?
Every campaign shows the exact audience count and requires explicit confirmation. Zero-recipient or unpreviewed sends are blocked at the API level.
Will the AI answer a customer wrongly?
It is handed the customer's own shipment rows and may only state what is in them — it cannot send free text at all, only a grounded reply or a handoff. Anything about refunds, damage or complaints is routed to a person in code, before the model is called. When it is unsure, it hands off: a handoff costs you nothing, a wrong answer costs you a customer.
What is the 24-hour window, and why does it matter?
WhatsApp only lets you send a normal message within 24 hours of the customer last writing to you. Outside that, a plain message is accepted by the API — it returns success and an id — and is then never delivered. Nothing errors. That is why the builder checks every path as you draw it and tells you which step would land outside the window, and what to use instead.
Can a flow start from someone browsing my website?
Yes, with our pixel on your storefront — but read the limit first. A page view tells us a browser looked at a page, not whose browser it is, and a WhatsApp message needs a phone number. We recognise a visitor only after they click a link we sent them; from then on that browser is linked to them. Everyone else is counted and left alone, because the alternative is messaging strangers.
Does the AI send anything on its own?
No. It drafts a flow onto the canvas and stops. The flow is paused, exactly like one you drew by hand, and messages nobody until you read it and switch it on. The same window check runs on what it drafted as on what you draw.
What does the AI cost to run?
About ₹0.07 per reply on the default model, measured on real messages, with a hard monthly ceiling you set. At the ceiling it stops replying and hands conversations to your team rather than spending past it. Your WhatsApp conversation fee from Meta is separate and unchanged.
Explore the rest of the platform
Pulse is included from ₹1,999/month
One subscription, every module in your tier. WhatsApp message fees are billed to you by Meta directly and are never marked up.
Billed monthly. Switch or cancel any time.
Free trial
Everything, for 14 days
Seeing it work on your own orders before you pay anything.
- Stores
- 1
- Seats
- 1
- Contacts
- Unlimited
- Every module unlocked
- Pulse · Radar · Pilot · Boomerang · Raves
- Echo switched on, free
- Extra seats, free
- Full flow builder + AI
- All 13 ready-made flows
- Your own WhatsApp number
- No card required
Starter
Stop the two biggest leaks
Brands doing 300–1,500 orders a month, mostly COD.
- Stores
- 1
- Seats
- 1
- Contacts
- 25,000
- Your own Meta WhatsApp account
- No markup on Meta’s rates
- Campaigns with audience preview
- Template manager + Meta submission
- 7 templates written for you
- 20-template catalogue
- Shared team inbox
- 24-hour window countdown
- 40 messages / second
- Click-to-WhatsApp ad leads
Growth
Fulfilment on rails
Brands doing 1,500–4,000 orders a month.
- Stores
- 1
- Seats
- 3
- Contacts
- 1,00,000
- Pilot — auto-fulfilment rules
- Dry-run safety on every rule
- Campaign scheduler
- Campaign click tracking
Pro
The whole post-purchase stack
Brands doing 4,000–12,000 orders a month that want one dashboard.
- Stores
- 1
- Seats
- 10
- Contacts
- 5,00,000
- Boomerang — returns portal
- Runs on your own domain
- Raves — photo reviews
- Cross-module automations
Unlimited
Everything, including your own apps
Brands doing 12,000+ orders a month that want the apps and the API.
- Stores
- 1
- Seats
- 25
- Contacts
- 20,00,000
- Pocket — your own iOS + Android apps
- We publish it, then transfer it to you
- Pocket monthly included — the one-time build is quoted separately
- Full REST API
- Webhooks
Ready to see it on your store?
14-day free trial, no card required. Or talk to us for a fully customized setup for your brand.
Start free trial