# Delivery exception alerts in Slack, logged to a spreadsheet

> When a package hits a delivery exception, your shipping team gets an instant Slack alert with the reason and next step, plus a running log to spot patterns.

- Workflow type: agent
- Services: EasyPost, Slack Bot, Google Sheets
- Categories: Operations
- Published: 2026-07-17

## What it does

- Watches your EasyPost tracking for packages that hit a delivery exception, error, failure, or return to sender.
- Works out what went wrong (bad address, failed delivery attempt, damage, customs hold, or return to sender) and where the package last scanned.
- Posts a clear alert to your shipping-ops Slack channel with the carrier, tracking number, reason, and a recommended next step.
- Logs every incident to a Delivery Exceptions spreadsheet so you can spot recurring problems.

## What you'll need

- An EasyPost account that tracks your shipments.
- A Slack workspace with a channel for your shipping team.
- A Google Sheets spreadsheet to keep the running exceptions log.

## Prompt

When an EasyPost tracker webhook fires because a package tracking status changed (the tracker.updated event), first check the new status. Only continue if the status is an exception, error, failure, or return_to_sender style status. Ignore normal pre-transit, in-transit, out-for-delivery, and delivered updates so the team is never pinged for routine movement.

For a qualifying exception, use EasyPost Retrieve Tracker to pull the full tracker detail by its id. Read the tracking status, the status detail, and the tracking history to work out what went wrong (for example a failed delivery attempt, a bad or undeliverable address, damage, a customs hold, or a return to sender) and where the package last scanned. Decide one concrete recommended next step for the ops team, such as contacting the carrier, correcting the address, or reaching out to the customer.

Post a concise alert to our shipping-ops Slack channel with the Slack Bot Send a Message action. Name the carrier, the tracking number, the exception reason in plain language, where the package last scanned, and the recommended next step. Keep it to a few scannable lines.

Also log the incident to our running Delivery Exceptions Google Sheet with the Append Values action, adding a new row that records the date, tracking number, carrier, status, and reason. This running log lets us spot recurring problems, like a carrier or lane that keeps failing.

## How to customize

- Choose which exception statuses trigger an alert, for example only return to sender or customs holds.
- Change the Slack channel, or the wording and level of detail in the alert.
- Adjust which columns get recorded in your spreadsheet log.

## FAQ

### What counts as a delivery exception?

Anything that stops a package from moving normally: a bad or undeliverable address, a failed delivery attempt, damage, a customs hold, or a package being returned to sender. Routine in-transit updates are ignored.

### Will normal tracking updates spam my team?

No. The alert only fires on exception, error, failure, and return-to-sender statuses, so your team only hears about packages that actually need attention.

### Which carriers does this work with?

Any carrier EasyPost tracks, including USPS, UPS, FedEx, and DHL. The alert names the carrier so your team knows who to contact.

### Do I need to build the spreadsheet first?

Just have a Google Sheet ready for the log. Each incident is added as a new row with the date, tracking number, carrier, status, and reason.

### Can it alert more than one channel?

It posts to the channel you choose, and you can change that channel any time. You can also extend it to alert different channels for different carriers or issue types.

Use this prompt in General Input: https://www.generalinput.com/prompts/delivery-exception-alerts-in-slack-logged-to-a-spreadsheet