Catch bad shipping addresses before you buy the label
Every weekday morning, unfulfilled orders get an address check: harmless typos fixed automatically, risky addresses held with a note to the customer.
Every weekday at 8am, check the shipping addresses on my unfulfilled Shopify orders before I buy labels for them, so I do not pay for a failed delivery and then a reship.
Start with Shopify List Orders to pull orders that are paid but not yet fulfilled. Only look at orders that are currently waiting on a label. Do not revalidate order history, and skip anything already fulfilled or cancelled.
Run the shipping address on each of those orders through Shippo Validate Address.
When Shippo returns a clean correction that only normalizes formatting, apply it with Shopify Update Order. That means things like a street type abbreviation (Street to St), odd casing (123 MAIN STREET to 123 Main St), a missing ZIP+4 extension, or a misspelled city that resolves to the same place. Write the corrected address onto the order and add a note recording exactly what changed, so anyone looking at the order later can see it was touched automatically and why.
When the address is genuinely undeliverable or ambiguous, do not change it. Leave it exactly as the customer entered it. This covers a missing apartment or suite number on a multi unit building, a street that does not exist at that number, and a mismatch between the city and the postal code. Instead, use Shopify Update Order to tag the order for review with a tag like address-review, and add a note explaining what Shippo flagged.
For each of those held orders, use Gmail Send a Message to email the customer a short, friendly note asking them to confirm the correct address before it ships. Quote the address we have on file, name the specific thing that is unclear, and make it easy to reply. Keep it warm and brief, and do not make the customer feel blamed.
Do not email the same customer twice about the same order. Before sending, check the order's existing tags and notes. If it is already tagged for review and we have already reached out, skip the email and just keep tracking it in the digest.
Finish with one Slack Send a Message digest to my fulfillment channel. Include how many addresses were auto corrected and which orders they were, which orders are on hold waiting for a customer reply, and a clearly separated section listing any order that has been blocked for more than two days so nothing quietly stalls. If there is nothing to report, still post a short all clear line so I know the check ran.
Example output
What does this prompt do?
- Each weekday morning, pulls every order that has been paid for but not yet shipped and checks the delivery address against a shipping address database.
- Fixes harmless formatting problems on its own, like Street versus St, odd capitalisation, a misspelled city, or a missing four digit ZIP extension, and records the change on the order.
- Leaves genuinely questionable addresses untouched, such as a missing apartment number or a city that does not match the postal code, tags the order for review, and emails the customer a friendly request to confirm.
- Posts one summary to your fulfillment channel with the number of auto corrections, the orders waiting on a customer reply, and anything stuck for more than two days.
What do I need to use this?
- A Shopify store where you can view and edit orders
- A Shippo account, used for the address checks
- A Gmail account to send the customer emails from
- A Slack workspace and the channel your fulfillment team watches
How can I customize it?
- Change the timing. Run it every weekday at 8am, twice a day through peak season, or only on the days you actually buy labels.
- Decide how cautious to be. You can treat a missing apartment number as an automatic hold, or let it through when the building is a single unit.
- Change the review tag, the wording of the customer email, which channel gets the summary, and how long an order can sit before it gets called out as stalled.
FAQs
Could this change a customer's address to the wrong one?
What happens if the customer never replies?
Will customers get the same email every morning?
Do I need to change how I buy labels?
Does it look at my whole order history every morning?
Related templates
When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.
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.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every Monday, rank the week's matches by expected demand, put the big ones on your venue calendar, and post a rota-ready summary to Slack.
Every Thursday, rank your team's upcoming flights by how likely they are to run late, and email the fixes while changes are still cheap.
Each month, spot the saved cards about to expire, email the customers still on recurring billing, and rank the revenue at risk in Slack.
Stop paying twice for the same delivery.
A bad address costs you the wasted label, the reship, and the customer's patience. Catch it the morning before you ship instead.