How to Sell on WhatsApp With Shopify [Complete Guide]

Gentian Shero

Written by Gentian Shero

Co-founder & CSO at Shero Commerce

Sell on WhatsApp with Shopify

Selling on WhatsApp with a Shopify store is now a real option.

Shopify Messaging includes WhatsApp campaigns next to email and SMS, and Shopify Forms can capture WhatsApp marketing consent directly on the customer record.

Together, those two releases allow for list building and campaigns. The only piece left to build yourself is the conversation where a customer asks for a product and buys it.

I wanted to know what this missing piece actually takes, so I built it.

The way it works is: you connect a Shopify store to a WhatsApp number and put an AI agent between them. The customer asks the AI bot for a product recommendation, and the agent sends back the product/s and a checkout button.

The screen recording of that conversation is embedded below, and the second half of this guide is the step-by-step tutorial, including the setup problems Meta does not document.

In this post, you will learn:

  • Why WhatsApp earns a place in a Shopify channel mix, with the numbers
  • What Shopify released natively in July and August 2026
  • How to set up consent capture and campaigns, step by step
  • How to build a WhatsApp selling agent on the WhatsApp Business API, from Meta app to paid order
  • Set up traps, regional checkout limits, and platform rules
  • What's possible once the agent is running

Key takeaways:

  • Shopify Forms now captures WhatsApp opt-ins natively and stores consent on the customer record, so no third-party app is needed.
  • Selling on WhatsApp splits into three layers: consent, campaigns, and conversation. Shopify now covers the first two out of the box.
  • The conversation layer works through the WhatsApp Business API plus a small middleware service. We built ours with a Claude agent, the Storefront MCP endpoint every Shopify store already exposes, and open-source code.
  • In the US, UK, and EU, checkout is available on your Shopify store only through a cart link. WhatsApp Pay works in chat only in India, Brazil, and Singapore.
  • Real-world benchmarks put WhatsApp open rates at 79 to 98% against roughly 20% for email, measured across tens of millions of campaign messages.

The case for selling on WhatsApp

Personally, I'm a heavy WhatsApp user. Just like me, 3B people worldwide use WhatsApp. The engagement numbers and low competition are why you should pay attention to this channel asap.

The number quoted everywhere is a 98% open rate, and the most honest source I found online treats it with suspicion: the Chatarmin benchmark measured 49.3 million campaign messages across 382 brands over a full year and recorded 79%.

Email averages around 20%. So, even the conservative WhatsApp number is roughly four times higher.

Email at 20%, WhatsApp measured at 79%, and the recycled 98% in gray.

But how this applies to you depends on geography (where your brand is located and where your customers are).

Across Europe, Latin America, India, the Middle East, and Southeast Asia, WhatsApp is the default way customers talk to businesses, and a store with no presence there hands those conversations to competitors. The US is smaller but growing, with about 100 million users who skew toward a younger, internationally connected audience.

With that in mind, conversion goes hand in hand with engagement.

Merchants running WhatsApp campaigns through the major platforms consistently report revenue per recipient at a multiple of email, and the same Chatarmin benchmark backs that up with click rates several times higher than email.

A WhatsApp list is smaller than an email list, but each subscriber on it is worth more, which changes how you treat them.


What Shopify released, and what still needs to be built manually

In the past 30 days, two changelog entries changed the picture, and both are easy to scroll past.

On July 29, Shopify added WhatsApp as a campaign channel inside Shopify Messaging. On August 6th, they added WhatsApp marketing consent to Shopify Forms.

The August 6 changelog entry that closes the consent gap for WhatsApp marketing on Shopify.

Consent was the missing piece.

Messaging could already send WhatsApp campaigns, but without a native way to collect opt-ins, merchants either used an app or ran click-to-WhatsApp ads.

The three layers of selling on WhatsApp. Shopify now covers the first two natively. The third is something you have to build.

Now the same popup that collects email addresses also grows the WhatsApp list. The consent is stored on the customer profile where your segments already live.

What Shopify did not release is in-chat selling.

There is no native way for a customer to browse the catalog, ask questions, and order inside a WhatsApp conversation. That functionality lives on the WhatsApp Business API, and building it is the tutorial below.


Part 1, turn on consent capture in Shopify Forms

To start selling on WhatsApp, the first step is to turn on consent capture in Shopify forms. This is live in every admin today, takes about ten minutes, and costs nothing.

I configured this on our demo store while writing this guide, and the screenshots below are from that setup. Here are the steps to follow:

  1. Install the free Shopify Forms app if you do not have it. It is built by Shopify, and most stores already have it installed for email popups.
  2. Create a new form or edit an existing one. The popup you already use for email is usually the right one to use.
  3. Add the Phone field to the form. WhatsApp consent works with/is attached to the phone number, so the form needs one.
  4. In the Marketing consent section, switch the WhatsApp toggle ON. Shopify collects WhatsApp consent instead of SMS consent in the regions where WhatsApp dominates, and its recommended regional list covers that logic for you.
  5. Update the consent disclaimer so it names WhatsApp explicitly, and match your privacy policy to it. Vague consent language may get you in trouble with regulators and with Meta.
  6. Publish. Opt-ins now record against the customer profile next to email and SMS consent.

Step 1: the Shopify Forms listing in the App Store. Free, built by Shopify.

Steps 3 and 4 in the form editor. The WhatsApp toggle under Marketing consent is the August 6 release, and the preview on the right shows the phone field it adds.

Consent lives on the customer record itself, so it travels with your segments, and no app is needed to pay for or have access to your list.

Subscriber lists do not migrate from third-party WhatsApp tools, so if you have been using one before, plan a fresh opt-in campaign rather than assuming the list can be transferred over.

Keep collecting email on the same form, because in Western markets a WhatsApp only popup will most probably underperform one that captures both.


Part 2, send campaigns through Shopify Messaging

Once the list exists, Shopify Messaging treats WhatsApp as a third sending channel next to email and SMS.

You can build the campaign in the same place, target the same segments, and measure the results in the same analytics.

The July 29 changelog entry that added WhatsApp campaigns to Shopify Messaging.

What is the cost for WhatsApp campaigns?

WhatsApp campaign pricing is per delivered message, set by Meta, and it varies by country and category.

In the US, a marketing template message costs roughly 1 to 14 cents delivered, per Meta's platform pricing.

Shopify passes this through, so you can scale campaigns up for a launch month and back down after, paying only for what you send.

Meta's own pricing model: charged per delivered message, in four categories, with rates published per market.

Business initiated marketing messages also need template approval from Meta before they send.

Approval usually takes minutes to hours. Plain, useful templates pass faster than aggressive promotional copy.

What to send

Lead with timing and utility: back-in-stock alerts, restock windows, order and delivery updates, one launch announcement a month.

WhatsApp is a personal space, Meta throttles senders who get blocked, and a subscriber who opted in yesterday will still block you for a daily blast.

Send less than you would on email and make each message worth the interruption.


Part 3, build the selling agent

This is the layer no vendor guide covers, because it does not need their app.

A customer messages your WhatsApp Business number. Meta's Cloud API forwards the message to a small middleware service as a webhook.

The middleware calls an AI model, Claude in our case, though any model with tool calling works, and hands it one tool: the store's own Storefront MCP endpoint.

Every Shopify store exposes it at yourstore.myshopify.com/api/mcp with no app install and no authentication.

Shopify retires this address on August 31, 2026 in favor of /api/ucp/mcp, the UCP version of the same endpoint. The open source Worker below already uses the new one.

The agent searches the catalog with the customer's own words, the middleware renders results as native WhatsApp messages, and the sale closes through a standard cart permalink. We have also covered this endpoint family in our MCP server guide.

The five steps from inbound message to paid order. Step 3 is the part most merchants do not know they already have.

What you need before you start

  • A Shopify store. We used a development store with the standard snowboard test catalog so the demo was safe to break.
  • A Facebook account in good standing for the Meta developer registration.
  • Somewhere to run about 300 lines of middleware. We use a serverless worker in Cloudflare. Any host that receives webhooks and makes outbound HTTP calls works.
  • An API key for the AI model you want to use.
  • A phone with WhatsApp installed to test as a customer.

Create the Meta developer app

  1. Register as a developer at developers.facebook.com. Meta walks you through phone verification and a short profile.
  2. Create a new app and pick the use case called Connect with customers through WhatsApp.
  3. Name the app something neutral. Meta rejects any app name containing the word WhatsApp
  4. Attach a business portfolio. An unverified one is fine for testing, and you can create it inline during setup. Verification can wait until production.

The app details screen. Pick a neutral name here, because Meta rejects anything containing the word WhatsApp.

The use case picker. Connect with customers through WhatsApp is the one you want.

The business portfolio dialog. Name and email are all it takes for an unverified portfolio, which is enough for your initial test build.

Claim the test number and token

Inside the app's WhatsApp setup screen, Meta gives you a free test phone number that can message up to five registered recipients.

Claim it, generate an access token on the same screen, and copy three values into your middleware configuration: the token, the phone number ID, and the WhatsApp Business Account ID.

The test number screen. The phone number ID and WhatsApp Business Account ID in the box go into your middleware, and Generate token creates the access token.

Then register your own phone as a recipient.

Meta sends a 5 digit code to that WhatsApp account.

If codes go missing, switch accounts or use another WhatsApp number instead of waiting on resends.

The recipient dialog. Up to five numbers can receive test messages, and each one verifies with a code sent to its WhatsApp.

Stand up the middleware

The middleware has two small jobs.

It receives Meta's webhook POSTs, where every inbound message arrives as JSON with the sender, text, and timestamp. And it sends replies back out through the Graph API messages endpoint.

Between those two calls sits the agent loop: pass the conversation history to the model, let it call the catalog search tool as many times as it needs, and relay what it says.

Most merchants have no idea this endpoint exists.

Every Shopify store answers free text product queries at its Storefront MCP endpoint, returning matching products with images, prices, and variant IDs. You can check yours from a terminal right now:

curl -X POST https://yourstore.myshopify.com/api/mcp -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_catalog","arguments":{"catalog":{"query":"snowboard"}}}}'

There is no API key to create, no app to install, and nothing to configure, because Shopify built this endpoint for exactly this kind of agent to use.

Our middleware gives Claude that search tool plus two formatting tools, one that renders a product shortlist and one that sends a checkout button, and the model manages the conversation on its own.

We published the whole Worker as open source, MIT licensed, at github.com/gentianshero/whatsapp-shopify-agent. The core of it is an agent loop this small:

// on each inbound WhatsApp message
const history = await loadConversation(from);
history.push({ role: "user", content: userText });
const reply = await claude(history, tools: [searchCatalog, showProducts, sendCheckout]);
// searchCatalog calls yourstore.myshopify.com/api/mcp
// sendCheckout sends a cart permalink as a WhatsApp CTA button
await saveConversation(from, history);

Everything else in the file is webhook handling and WhatsApp message formatting.

Clone it, set four secrets, deploy, and you have the demo from the video running against your own catalog.

Or skip the manual steps: the repo includes a Claude skill that runs this whole setup for you, traps and all.

What Claude actually decides

The Worker only receives messages and sends replies. Every decision in between comes from Claude.

On every message it reads the full conversation history, so "the cheaper one" means something on the fifth message.

It decides when to search the catalog and writes the search itself. There is no keyword mapping anywhere, because the customer's own words go straight to the store's MCP endpoint.

It picks the reply format too: a short text answer, a product list, or the checkout button. The Worker just renders whatever it chose.

The AI model is swappable. The Worker isolates it behind one function, so any model with tool calling works there.

Connect the webhook, including the two hidden switches

  1. In the app dashboard, open the webhook configuration and enter your middleware URL plus a verify token you choose. In the screenshot, we're using the worker we built in Cloudflare. Meta provides a handshake against your endpoint and shows a green check when it passes.
  2. Subscribe your app to the WhatsApp Business Account. The setup wizard does not do this, and nothing warns you it is missing.
  3. Toggle the webhook field named messages to Subscribed. This is a separate switch from the previous step, and it also defaults to off.

The webhook configuration. Your middleware URL and verify token go here, and Meta shows the handshake result.

The messages field sits in a long list of webhook fields, and it defaults to Unsubscribed. Make sure it is turned on.

Until both switches are on, your middleware receives nothing while every dashboard indicator looks healthy.

The first three of my WhatsApp messages while testing went nowhere (see screenshot) because the second toggle was not turned on.

If no messages reach your middleware, check these two settings first.

Send products the way WhatsApp expects

The message types are what make the agent feel like a store assistant instead of a bot.

The API supports interactive messages, and the agent should use them instead of pasting text lists.

Message type

What it does

Limits to know

Interactive list

A tappable View options sheet with product rows

Up to 10 rows, row titles cap at 24 characters

Reply buttons

Up to three quick answer buttons under a message

Three buttons, 20 characters each

CTA URL button

A tappable button that opens a link

One button per message, ideal for checkout

Text

A plain message

Keep it short, this is chat

When the customer taps a list row, the tap returns through the webhook as structured data carrying the ID you assigned, so the middleware knows the exact variant chosen without parsing text.

The checkout button uses the CTA URL type pointed at a cart permalink, a URL every Shopify store supports out of the box: yourstore.myshopify.com/cart/VARIANT_ID:QUANTITY.

Tapping it opens your normal checkout with the item already in the cart.

The test drive, from question to paid order

Here is the full flow, recorded on the test customer phone: a plain product question, the options sheet, the checkout button, and the order.

The live demo, recorded August 11, 2026. A product question, a tap through the options, the checkout button, and a paid order on the store.

Left: the first messages went unanswered until both webhook toggles were on, then the agent replies with a native list message. Right: the View options sheet, populated from the live catalog with real prices.

The agent closes the loop with a checkout button rather than a raw link.

The button opens the store's standard Shopify checkout with the item in the cart already, so your payment methods, your fraud tooling, and Shop Pay all work exactly as they do for web traffic, and Shopify records you as the merchant of record.

Left: the agent closes with a native Checkout button. Right: the button opens standard Shopify checkout with the product in the cart.

Minutes after hitting "place order", the order was in admin, marked paid, attributed to the online store channel.

Both demo orders in the store admin, paid, placed entirely from the WhatsApp conversation.

Because the customer messages first, every reply falls inside WhatsApp's 24 hour customer service window, where session messages are free and need no template approval.

A responsive shopping agent never pays per message and never waits on a template review.


The caveats, before you commit a sprint

The setup traps

The four traps in order of how much time they cost us.

The app name rejection shows up first and costs the least, since Meta tells you immediately.

The missed webhook subscriptions cost us the most time. The verification handshake passes, but no messages arrive until both the app subscription and the messages field are switched on by hand. Nothing in the interface tells you either switch exists.

The token expiry takes longer to notice.

Our dashboard token worked for the first conversation and died in under thirty minutes, with every send returning access denied while inbound messages kept flowing. A permanent System User token from Meta Business settings fixes it for good, so create one early.

The missing verification codes are the last trap. Two of our phones never received one and a third got it instantly.

Checkout is regional

Where you can take orders and how depends on the market.

Market

In chat payment

Where the customer pays

India

WhatsApp Pay, UPI

Full checkout inside the conversation

Brazil

WhatsApp Pay, Pix

Full checkout inside the conversation

Singapore

WhatsApp Pay

Full checkout inside the conversation

US, UK, EU, everywhere else

Not available

Checkout link opens your Shopify checkout

For a US or European merchant, WhatsApp handles discovery, conversation, and intent, and the transaction happens on your store.

That split works in your favor.

You keep your optimized checkout, your tax and fraud tooling, and your analytics, and the customer pays inside a checkout they already trust.

Our agentic commerce guide covers the protocols that will eventually close the sale inside the conversation.

Production is a different number

I used a test number for demo purposes only. Meta draws a clear line between it and a production setup.

Before real customers can message you, four things need to be in place.

  1. Verify the business. Meta requires business verification on your portfolio before a production number sends at scale. It needs legal documents and takes days, so start it while you are still building.
  2. Register a real number. The number becomes your store's WhatsApp identity. It cannot already be registered to a personal WhatsApp account, and porting one out of the consumer app takes a deletion step first.
  3. Create a System User token. Dashboard tokens expire in hours. A System User token is permanent and scoped, and it is the only sane choice for production.
  4. Submit message templates. Anything you initiate outside the 24 hour window, campaigns included, needs an approved template. Write them early because approval queues are unpredictable.

Messaging limits also scale with number quality.

A fresh production number starts with a daily cap on business initiated conversations, and the cap rises as customers engage without blocking you.

This is one more reason to start with the responsive agent, since customer initiated conversations never count against the cap.


What's possible once the agent is running?

The demo answers one question and sends one checkout link, and that is deliberately minimal.

The same webhook, the same agent loop, and the same catalog endpoint support a lot more, and each of these is an incremental improvement on the build above rather than a new project.

What you can add

How it works

Why add it

Cart recovery that converses

An abandoned checkout triggers a template message, and the agent answers sizing or delivery questions when the customer replies

Recovers the carts a link alone loses

Order tracking in chat

The agent reads order status through the Admin API and answers where is my order directly

The most common support ticket never gets opened

B2B reorders

A wholesale buyer texts reorder the usual and gets a draft order link back

Beats a portal login, can justify the build alone on Plus

Multilingual selling

The model answers in the customer's language with no translation stack

Ten countries, one agent

Back in stock with intent

The restock alert opens a conversation instead of a product page

The blocking question gets asked and answered

Shopify's Storefront MCP endpoint and the Admin API carry the commerce logic, Meta carries the messaging, and the middleware in between stays thin.

For wholesale stores, our B2B guide covers the catalog side of that reorder flow.


Should you use an app or a custom build?

There are three ways to get the conversation layer. The right one depends on volume and on what a conversation is worth in your catalog.

Route

Cost shape

Strengths

Limits

Native Shopify only

Included with Forms and Messaging

Consent and campaigns with zero added stack

No conversational selling

WhatsApp commerce app

$50 to $500 per month plus conversation fees

Fast setup, catalog sync, templates, support inbox

Your list and flows live in their tool, per seat pricing grows

Custom agent on the API

Build cost, then infrastructure near zero

Full control, your AI, your data, no per seat fees

You own uptime and the Meta relationship

The apps are good at what they do, and if you are testing the channel, I would start with one.

Every Shopify store now exposes a catalog endpoint built for AI agents. Meta's API is free to receive and free inside the service window, and the middleware is a few hundred lines.

Our demo is set up on a serverless worker that would cost single-digit dollars a month at real traffic.

Two years ago this would have been an enterprise project. Now a team with one developer can do it in a sprint, and an agency can do it in a few weeks.


What to do next?

Start with the consent field.

That way the list can grow while you figure out the rest. So, turn it on in Forms this week even if campaigns are not on your radar until next quarter.

Add WhatsApp to one automation built on timing, like back-in-stock alerts. Then decide whether the conversation layer is an app trial or a custom build like demoed here, based on what a conversation is worth for your business.

Shopify has been assembling this channel one quiet changelog entry at a time. The Storefront MCP endpoint powering our demo agent is the same infrastructure Shopify provides for all stores for agentic commerce everywhere. 

At the very least, add the consent on the form to start growing your list. 

Want a WhatsApp selling agent on your store?

We built the demo in this guide, and we build production versions for mid-market and enterprise Shopify brands: consent capture, campaign setup, and a custom AI agent wired to your catalog. Our custom development team scopes it in one call.

Talk to our custom development team →


Frequently asked questions

Can I integrate WhatsApp with Shopify for free?

Yes. Consent capture in Shopify Forms and WhatsApp campaigns in Shopify Messaging are native features, so list building costs nothing to set up. Meta charges per delivered message once you start sending campaigns. A chat button on your store and replies to customers inside the 24-hour service window are free.

How do I add a WhatsApp chat button to my Shopify store?

The fastest way is a wa.me link with your business number, styled as a button in your theme. Many themes include a chat or social button setting where you paste that link. If you want the button to open a conversation with a selling agent like the one in this guide, point it at the same WhatsApp Business number, and every message flows through the same webhook.

Can Shopify send order confirmations through WhatsApp?

Not out of the box. Shopify Messaging covers marketing campaigns, and order notifications still go out by email and SMS. To confirm orders on WhatsApp you need an app from the App Store or a small build on the API using utility templates, which Meta prices cheaper than marketing messages.

Do I need Shopify Plus to sell on WhatsApp?

No. Shopify Forms and Shopify Messaging are available on standard plans, so consent capture and WhatsApp campaigns work without Plus. A custom conversational agent also works on any plan because the Storefront MCP endpoint is exposed on every store.

How is this different from the WhatsApp Business app on my phone?

They are two separate products. The WhatsApp Business app is the free phone app: you answer every customer yourself, one message at a time, from one device. Everything in this guide is based on the WhatsApp Business API instead, which is what lets software send and receive messages for you. The API has no app or inbox of its own, so whatever you connect becomes the interface: Shopify Messaging for campaigns, and the agent answering on its own in this build. You can move your app number to the API, but it means deleting the account in the app first, and your chat history does not survive, which is why the guide used Meta's free test number.

Gentian Shero

Co-founder & CSO at Shero Commerce

Gentian is the Chief Strategy Officer (CSO) and Co-founder of Shero Commerce. With over 15 years of experience in eCommerce strategy, technical SEO, and inbound marketing, he has helped hundreds of brands grow smarter and scale faster. At Shero, Gentian leads digital strategy and optimization for mid-market and enterprise merchants, combining hands-on expertise with a deep focus on ROI.