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.

Example output

Address check, Tuesday 8:00am Checked 34 paid orders awaiting fulfillment. Auto-corrected (5) #1042 postal code 11201 to 11201-3312 #1047 123 Oak Steet to 123 Oak St #1051 city SAN FRANSISCO to San Francisco #1055 added ZIP+4, now 78704-1120 #1058 Ave expanded to Avenue per carrier record Held for customer reply (3) #1039 missing apartment number, customer emailed today #1044 street not found in carrier records, customer emailed today #1050 city and postal code disagree, customer emailed today Blocked more than 2 days (1) #1021 held 4 days, no reply since Friday, may be worth a phone call

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

Build a credential rotation checklist when someone leaves

When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.

1Password
Rippling
Slack Bot
+1
Agentic Task
Trace phishing emails to the sending IP and report abuse

Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.

AbuseIPDB
Gmail
Slack
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
Agentic Task
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Draft polite follow-ups for emails that never got a reply

Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.

Aurinko
Google Sheets
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.