Auto-correct address typos and hold the orders you can't fix

Every weekday morning, harmless address typos get fixed on unshipped orders, and anything undeliverable is held while the customer confirms it.

Agentic Task
ShippoShopifyGmailSlack BotOperationsCustomer SupportDaily DigestsEmail Automation
PromptCreate

Every weekday morning on a cron schedule, check the shipping address on every order I am about to ship, and either fix it or flag it before anyone buys a label. Bad addresses cost twice, once for the wasted label and again for the reship, so I want them caught while the order is still sitting with us.

Start with Shopify List Orders to pull orders that are paid but not yet fulfilled. Skip anything already fulfilled, cancelled, or unpaid, so we are never revalidating shipping history on every run.

For each of those orders, run the shipping address through Shippo Validate Address.

Treat the results as two clearly different outcomes, because the right action is different for each.

First outcome: Shippo returns a clean correction that only normalizes formatting, meaning the parcel still arrives at exactly the same door. Examples are abbreviating or expanding a street suffix, fixing casing, adding the ZIP+4 extension, correcting a misspelled city, or filling in a state that the postal code already implies. Apply these with Shopify Update Order, writing the corrected shipping address back, and in the same update append a short note to the order recording precisely what changed, for example "Address auto-corrected 2026-08-11: city HOUSTEN to Houston, ZIP 77002 to 77002-1234". Never silently change an address without leaving that note.

Second outcome: the address is genuinely undeliverable or ambiguous. This covers a missing apartment or suite number on a multi-unit building, a street the carrier cannot find, a mismatch between the city and the postal code, or any result where Shippo is not confident enough to correct it. Do not modify the address. Instead use Shopify Update Order to add a tag such as address-review so the order is visibly on hold, plus a note explaining exactly what Shippo objected to and the date it was held. Recording the hold date in the note matters, because tags alone do not carry a timestamp and later runs need it to work out how long an order has been stuck.

For each held order, use Gmail Send a Message to email the customer a short, friendly note. Greet them by name, tell them their order is ready to go and we want to be sure it reaches them, say plainly what looks wrong (for example "we could not find an apartment or unit number"), show the address we currently have on file, and ask them to reply with the correct version. Keep it to a few sentences, warm and apologetic in tone, with no blame and no shipping jargon.

Before sending any email, check the order's existing tags and notes first. If an earlier run already emailed this customer about this order, do not email again. Just carry the order forward as still waiting. Exactly one customer email per order, no matter how many mornings it stays unresolved.

Finish with a single Slack Bot Send a Message digest to the fulfillment channel, covering three things: how many addresses were auto-corrected with a one line list of what changed, which orders are on hold waiting for a customer reply, and, called out as its own separate section, any order that has been held for more than two days so nothing quietly stalls. If a held order is well past two days, say so plainly and suggest someone call the customer. If nothing needed attention at all, still post a short all clear so the team knows the check actually ran.

What does this prompt do?

  • Every weekday morning, looks at the orders you have been paid for but have not shipped yet, and checks each shipping address against carrier records.
  • Fixes cosmetic problems on its own, things like a misspelled city, a missing ZIP+4, or a street type that needs abbreviating, and leaves a note on the order recording exactly what changed.
  • Holds anything genuinely risky, such as a missing apartment number or a postal code that does not match the city, tags it for review, and emails the customer a short friendly note asking them to confirm.
  • Posts one summary to your fulfillment channel covering what was corrected, what is waiting on a customer reply, and anything stuck for more than two days.

What do I need to use this?

  • A Shopify store, with permission to view and edit orders
  • A Shippo account, used to check addresses against carrier records
  • A Gmail account to send the customer confirmation emails from
  • A Slack workspace and the channel your fulfillment team watches

How can I customize it?

  • Timing: run it every weekday morning, daily including weekends, or twice a day if you ship same day orders.
  • How cautious it is: decide what counts as safe to fix silently. Some teams allow only city spelling and postal code fixes and send everything else to a human.
  • The hold window: two days is the default before an order gets called out as stuck. You also choose which channel gets the summary and which address customers hear from.

FAQs

Could this change an address to the wrong one?
It only rewrites an address when the correction is cosmetic, meaning the parcel still arrives at the same door. Anything that would change which building or unit it goes to is left untouched and sent to a human instead.
What happens if a customer never replies?
The order stays tagged for review and keeps appearing in the daily summary. Once it has been held for more than two days it gets called out separately, so a stalled order does not quietly disappear.
Will customers be emailed the same question every morning?
No. Before emailing, it checks whether an earlier run already contacted that customer about that order. If so, the order is simply carried forward in the summary as still waiting.
Does it touch orders I have already shipped?
No. It only looks at orders that are paid and not yet fulfilled, so your shipping history is never revalidated or modified.
Do I have to change how I buy labels?
No. This runs before labels are purchased and just makes sure the address is clean first. You keep buying labels exactly the way you do today.

Related templates

Win back LiveChat visitors whose chats went unanswered

Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.

LiveChat
Gmail
Slack
Agentic Task
A brand asset library your marketing team actually searches

Every logo, photo, video cut and ad export in one searchable grid, with previews, campaign tags and rights expiry dates at a glance.

General Input Storage
General Input Database
JigsawStack
+1
App
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
Clean out the Looker dashboards and Looks nobody opens

One board showing every dashboard and Look with its folder, owner and favorite count, so you can find dead content and retire it safely.

Looker
Slack Bot
App
LiveKit live operations console for room moderation

Watch every live room on one screen, remove disruptive guests, start recordings and end stuck sessions without anyone opening a terminal.

LiveKit
Slack Bot
General Input Database
App
Wake up dormant Keap leads with a researched reason

Every Monday we find leads who never bought, research a real reason to reach out, and send a short personal email instead of another check in.

Keap
Slack Bot
Agentic Task

Stop paying twice for one delivery.

A failed delivery costs you the wasted label, the reship, and the support ticket. Catch the bad address while the order is still on your desk.