# 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.

- Workflow type: agent
- Services: Shippo, Shopify, Gmail, Slack
- Categories: Operations, Customer Support
- Published: 2026-08-10

## What it does

- 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 you'll need

- 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

## Prompt

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.

## How to customize

- 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.

## Example output

Address check for Tuesday 8:00am

Auto-corrected (4)
#1042 Oak Steet corrected to Oak Street
#1047 added ZIP+4 60614-2231
#1051 123 MAIN STREET NORTHWEST reformatted to 123 Main St NW
#1053 Saint Pual corrected to Saint Paul

On hold, waiting on customer (3)
#1039 apartment number missing, emailed Aug 6
#1044 city and postal code do not match, emailed today
#1050 no such street number, emailed today

Blocked more than two days (1)
#1039 on hold since Aug 6, no reply for 3 days

## FAQ

### Could this change a customer's address to the wrong one?

It only rewrites an address when the correction is cosmetic, like an abbreviation, capitalisation, or a missing ZIP extension. Anything that would change where the parcel actually goes, or that is ambiguous, is left exactly as the customer typed it and sent to a person to look at.

### What happens if the customer never replies?

The order stays tagged for review and keeps showing up in the daily summary. Once it has been sitting for more than two days it gets called out in its own section, so a held order never quietly disappears.

### Will customers get the same email every morning?

No. Before sending, it checks whether that order has already been flagged and the customer already contacted. Each customer hears from you once per order.

### Do I need to change how I buy labels?

No. This runs before you buy anything. It either cleans up the address or flags it, so your normal fulfillment process stays exactly the same.

### Does it look at my whole order history every morning?

No. It only looks at orders that are paid and still waiting to be shipped, so it is not rechecking addresses on parcels that already went out.

Use this prompt in General Input: https://www.generalinput.com/prompts/catch-bad-shipping-addresses-before-you-buy-the-label