WhatsApp Ordering for Grocery and Retail Shops: What Changes
Everything we usually write about WhatsApp ordering assumes a kitchen: a fixed menu, a fixed price, one item that either exists tonight or doesn't. Grocery and retail shops don't get that luxury. Your stock changes by the hour, half your items are priced by weight, and "we're out of coriander" is a normal Tuesday, not an emergency.
That's not a reason to skip chat ordering — it's the reason to set it up differently. The core mechanics (a catalogue, a saved number, a confirmation message) are the same ones we cover in our WhatsApp ordering setup guide. What needs rebuilding is everything downstream of "the customer sent their list." That's how you show what's actually in stock, and how you handle the item that ran out between the order and the pack. It's also how you charge for a kilo of something that doesn't weigh exactly a kilo.
A grocery WhatsApp catalogue can't just be a restaurant menu with more rows
A restaurant catalogue is small and stable — thirty dishes, prices that hold for months. A grocery or retail catalogue is neither. WhatsApp's own Business Catalog caps out at 500 products per catalogue, with only one catalogue per WhatsApp Business Account (Meta for Developers). And here's the part that trips shops up: there's no native real-time stock sync built into it. Nothing updates automatically when a shelf empties.
So a 500-line catalogue of everything you ever stock isn't actually useful — customers can browse straight into items you sold out of an hour ago. Two things work better in practice:
- List categories, not every SKU. "Fresh produce", "dairy & eggs", "pantry staples" as catalogue sections, with a pinned message or catalogue description saying "ask what's in for [category] today" rather than trying to keep 400 individual product cards accurate.
- Set a fixed daily audit slot. Once a morning, walk your actual shelves and remove or mark unavailable anything that sold out. There's no automatic fix for this without an integration, so put it on the same person's task list every day rather than "whenever someone remembers."
If you're running enough volume that manual updates are eating real time, a Shopify or POS integration that pushes stock into your catalogue automatically is worth the setup cost. For a single shop under, say, 40-50 orders a day, the manual morning check is genuinely faster than maintaining an integration.
Substitutions are where restaurant playbooks fall apart
A kitchen either has an ingredient or it doesn't — the order just gets confirmed or rejected. Grocery is messier: half the items on a list will have a close-enough alternative, and the choice of which one is exactly where customers get annoyed if you guess wrong.
The data backs this up. In a Lucidworks survey of online grocery shoppers reported by Grocery Dive, nearly a third said they'd stay on the retailer's own site or app to hunt for a substitute themselves when something's unavailable. Only 25% said they're consistently offered an alternative to choose from. Worse for the shop: 47% said they'll simply switch to a different grocer if they run into that kind of friction too often.
That 47% is the number that should change how you handle a WhatsApp grocery order. Silently swapping an item and hoping nobody notices is the single fastest way to lose a repeat customer. Ask instead — before you pack, not after:
Quick one before we finish your order — we're out of the 500g Greek yoghurt. Happy to swap for the 500g natural yoghurt (same price) or leave it off? Let us know and we'll get packing 🙏
One question, two options, a clear default if they don't reply in time (state it: "if we don't hear back by pickup, we'll leave it off rather than guess"). It costs you thirty seconds per order and it's the difference between a customer who trusts your judgement next time and one who stops ordering because last week's "creative substitution" wasn't what they wanted.
Weight-based and variable-price items need their own message format
Restaurant confirmations are simple because the price never moves — order the pad thai, pay the pad thai price. Grocery breaks that the moment you sell anything by weight: a customer asking for "a kilo of tomatoes" might actually get 980g or 1.05kg once it's weighed, and the final price shifts with it.
Don't let that surprise show up only on the receipt. Build it into the confirmation message itself:
Order #22 confirmed: tomatoes (~1kg, priced at weighed amount — approx. AED 12-14), pack of pita bread (AED 6, fixed), 2x cucumber (AED 4, fixed). We'll confirm the exact tomato weight and total when we pack — ready ~5:15pm.
Flag which lines are estimates and which are fixed. Give a realistic range rather than a false-precision single number, then confirm the final total again once it's actually weighed — a second short message, not a surprise at pickup. Customers tolerate a weight-based price moving by a few percent; they don't tolerate finding out about it for the first time when they're already handing over cash.
Pickup and delivery slots matter more here than in food
Grocery and retail shoppers lean on scheduled collection far more than restaurant customers do. Up to 84% of U.S. online grocery shoppers use buy-online-pick-up-in-store at least once a month, and grocery items now account for as much as 78.7% of all click-and-collect sales nationally (Capital One Shopping Research, 2026). That's a very different rhythm from "order now, eat in 25 minutes."
Build slots into how you take the order, not as an afterthought once it's packed:
- Offer 2-3 concrete pickup or delivery windows in the confirmation ("today 4-5pm, today 6-7pm, or tomorrow morning") rather than an open-ended "we'll let you know."
- Cap how many orders you'll confirm per window so packing doesn't collapse into a single rush. The same batching principle from our peak-hour WhatsApp ordering guide applies just as much to a Saturday grocery rush as a Friday dinner rush.
- Send one reminder 30-60 minutes before the slot, not just the initial confirmation — grocery orders get forgotten more easily than a dinner someone's actively waiting on.
None of this needs a booking app. A shared note of which windows are already full, checked before you confirm the next order, does the job for a single shop.
What this saves you versus a delivery-app grocery listing
Third-party grocery marketplaces take a commission on every order, and several also add their own markup on top of your listed shelf prices before the customer ever sees the total. Our commission maths breakdown walks through the exact arithmetic for a typical restaurant order — the same logic applies whether you're selling dinner or dish soap. A WhatsApp order costs you the price of packing and, if you deliver yourself, fuel — nothing else.
The trade-off is real: you're doing the catalogue upkeep, the substitution questions, and the slot management by hand instead of paying a platform to abstract it away. For a shop doing a few dozen orders a day, that trade is usually worth it. For one doing hundreds, it's the point where a proper POS integration starts paying for itself.
Start your grocery WhatsApp ordering setup smaller than you think
Don't try to WhatsApp-enable your entire shop floor in week one. Pick one section — fresh produce, or your top 20 fastest-moving items — and run it as a pilot for two weeks. You'll find out fast whether your daily stock-check habit actually holds up, whether your substitution message gets used or ignored, and whether customers actually want scheduled slots or same-day. Expand the catalogue once those three things are working, not before.
The mechanics underneath are the same ones that already work for restaurants on WhatsApp — a saved number, a clear message template, and someone checking the phone. Running WhatsApp ordering for a grocery or retail shop is different in what you're actually selling: it runs out, it substitutes, and sometimes it doesn't weigh exactly what the customer typed. Build for that from day one and the rest of the setup is the easy part.