🛍️ Shopify on WhatsApp

Checking the delivery address before you ship

The cheapest question you will ever ask a customer, and almost nobody asks it.

Address verification is showing the customer the address you are about to ship to and asking them to confirm or correct it, before the parcel leaves. It takes one message, it costs nothing when done in the right place, and it removes a category of failure that is otherwise invisible until it is expensive.

A wrong address does not announce itself. It becomes a failed delivery three days later, by which point you have paid to send the parcel and will pay again to get it back.

Why addresses are wrong so often

None of these is carelessness, and none is detectable from the address string itself. Only the customer knows.

The cheapest place to ask

Straight after they confirm the order. The tap that confirms opens a 24-hour customer service window, and inside it every message is free text at no charge under Meta's pricing rules — service conversations have been free and unlimited since 1 November 2024.

So the address check rides along on a conversation you were having anyway. Asked as a separate message days later, it needs an approved template and is charged. Same question, entirely different cost.

Confirm, then check the address, in one conversation

TriggerShopify: order placed
Ask via template"Confirm your order?" — Confirm / CancelCharged once. The tap opens 24 free hours.
SendShow the address backFree text — no template, no charge
Ask"Is this right?" — Yes / Change it
Yes, that's right
Thank them, done
Change it
Ask for the correction
Note it and assign to your team

A person updates the order before it ships.

Show the address, do not ask for it

The difference matters. "What's your address?" makes the customer retype something they already typed, and most will not bother. "We'll deliver to: [address] — is that right?" needs one tap to confirm and only becomes work if something is wrong.

The order event carries the address lines, city, postcode and country, so the message can be assembled automatically. Format it as it will appear on the label, not as a database record.

Ask for the thing that is actually missing

In many markets the formal address is fine and the delivery still fails, because what the courier needs is not in the address fields. If that describes your market, add one question:

Save the answer to a contact field and put it in the order notes. Your courier integration may not carry a custom field, in which case a person copies it — still worth it, because the alternative is a failed attempt.

The field has to exist first. Any contact field you save into must be defined under Settings → Contact Attributes, or the save silently does nothing and reads back empty later. See saving customer answers to contact fields.

What happens to a correction

Be realistic about this. A flow can collect a corrected address; it cannot rewrite the shipping address on the Shopify order. The available actions are to tag the order and leave an internal note, and a person makes the change.

That is fine as long as somebody actually looks. Tag corrections distinctly — "address changed" — so your packing team can filter for them each morning rather than discovering one at the label printer.

When to ask

TimingCostVerdict
In the confirmation conversationFreeBest — the window is already open
Morning of dispatch, as a separate messageA charged templateWorks, but you are paying for it
After a failed deliveryA charged templateToo late — the cost is already spent
At checkout, on your websiteFreeUseful, but people rush past it

Which orders to check

You do not need to ask on every order, and asking on all of them adds a message to every purchase. Sensible filters:

  1. First-time customers. Repeat customers whose last delivery arrived have a proven address.
  2. High-value orders, where a failed delivery costs most.
  3. Cash-on-delivery orders specifically, which carry the failure risk.
  4. Anything to an area your courier struggles with, if you know which those are.

What it saves

One free message against a failed delivery attempt, a return leg, and an order that generated nothing. Even at a low correction rate the arithmetic works, because the message costs nothing and the failure costs real money.

It also produces a second benefit nobody plans for: customers reply to it. An address check is a natural, non-salesy reason to be in conversation, and the reply keeps the window open for anything else that comes up before delivery. The wider RTO picture is in reducing RTO with WhatsApp.

Writing the message

Three lines, no more. The customer is confirming something, not reading a notice.

WeakBetterWhy
"Please confirm your delivery address.""We'll deliver to: 14 Park Road, Flat 3, Lahore. Is that right?"Shows the address; one tap to confirm
"Kindly verify the address details provided at checkout.""Anything that helps the rider find you? A landmark or shop nearby?"Asks for what is actually missing
"Address confirmation required before dispatch.""Just checking before we pack this — all correct?"Sounds like a person

Formal phrasing hurts here more than elsewhere. An address-confirmation message that reads like a system notice is exactly what a scam message reads like, and customers ignore both.

What the order event gives you

Every Shopify order event carries the address fields, so the message can be assembled without anyone typing: address line one and two, city, province, postcode and country, plus the customer's name. That means one template, or one free-text message, covers every order you will ever ship.

One caution that applies to every template: a variable that resolves to an empty string makes Meta reject the whole message, and the customer receives nothing. If your checkout allows a blank second address line — most do — write the message so it still reads correctly when that line is empty.

How it interacts with the platform rules

All three point the same way: ask inside the conversation you are already having.

A three-step build

  1. Extend your confirmation flow rather than creating a new automation. Add the address message after the Confirm branch.
  2. Add a two-option question — "Yes, that's right" and "Change it".
  3. Wire the change path to collect the correction, leave an internal note and assign the chat, so a person updates the order before it ships.

Fifteen minutes, and it reuses a conversation you were paying for anyway. The wider sequence is in reducing RTO with WhatsApp, and the question mechanics in buttons, lists or free text.

Local address reality

Checkout forms are designed around postal addressing, and in much of the world deliveries do not work that way. A rider finds a house by landmark, shop name, building colour or a phone call — none of which has a field at checkout.

That gap is why an address can be formally complete and still undeliverable, and why "is this right?" is a weaker question than "what helps the rider find you?" in those markets. If your failed deliveries cluster in particular areas rather than across your whole customer base, this is usually the cause.

Store what you learn

A landmark a customer gives you once is useful on every future order, so save it to a contact field rather than only into the order note. The next order can then be checked against something you already know instead of asking again.

The field has to be defined first under Settings → Contact Attributes, and the value is available afterwards as a variable in any message or note. Repeat customers then get a shorter, better-informed conversation, which is the version of personalisation that actually helps someone.

What good looks like

  1. The confirmation flow already runs, so there is a conversation to attach this to.
  2. The address is shown back, formatted as it will appear on the label.
  3. One question, two options: right, or change it.
  4. Corrections leave an internal note, tag the order, and reach a person.
  5. Anything the customer volunteers — a landmark, a floor, a better time — is saved to a contact field for next time.
  6. Your packing team filters on the tag each morning.

The last point is the one that determines whether any of it matters. A collected correction nobody applies is worse than not asking, because the customer now believes the problem is solved.

Frequently asked questions

When should I verify a delivery address?

In the same conversation as the order confirmation. The customer's tap opens a 24-hour window in which the address check is free text at no charge — asked days later as a separate message, it needs a charged template.

Should I ask for the address or show it back?

Show it back. Asking makes the customer retype something they already entered and most will not bother; showing it needs one tap to confirm and only becomes work if something is wrong.

Can an automation update the address on the Shopify order?

No. It can collect a correction, tag the order and leave an internal note — a person makes the actual change, so tag corrections distinctly and check them each morning.

Should I verify every order's address?

No — that adds a message to every purchase. Filter to first-time customers, high-value orders, cash-on-delivery orders, or areas your courier struggles with.

Need help? Message us