Back to Delivery Exception Handling

Process Runbook / SOP

How the automation works day-to-day: what is automatic, what needs a human, how exceptions are handled, and who to contact.

4 pagesPDF · Operations
FS-DOC-03Operations

Process Runbook / SOP

Delivery Exception Handling

[YourCompany.com] · Fulfilment Department · Prepared by FullSpec · [Today's Date]

This runbook is the day-to-day operating guide for your fulfilment team now that the Delivery Exception Handling automation is live. It tells you what the system does on its own, where your team still acts, and how to handle anything the automation cannot resolve by itself. FullSpec has built and configured every automated step described here. Your team is responsible only for the steps marked as human actions and for the ongoing monitoring tasks listed at the end of this document.

01Process overview

The Delivery Exception Handling process begins the moment a carrier marks a shipment as failed, held, or undeliverable in ShipStation. A webhook fires instantly, triggering the automation to fetch the full Shopify order record, classify the exception, open a Gorgias support ticket, and send a tailored customer email via Gmail, all within two to three minutes of the carrier event. For orders above the configured value threshold, the system pauses and sends a Slack prompt to the Fulfilment Manager for approval before applying any resolution. All other cases are resolved automatically by reship or refund in Shopify, and every outcome is logged to the Google Sheets exceptions register with a Slack summary posted to the fulfilment channel.

Process name
Delivery Exception Handling
Trigger
ShipStation webhook fires when a shipment status changes to failed, held, or undeliverable
Final output
Reship or refund applied in Shopify, Gorgias ticket closed or updated, outcome logged to Google Sheets, Slack summary sent to fulfilment channel
Agents running
Exception Triage Agent (classifies the exception and sets the resolution path); Resolution Agent (applies reship or refund in Shopify and closes the Gorgias ticket)
Tools involved
ShipStation, Shopify, Gorgias, Gmail, Slack, Google Sheets
Weekly volume
Approximately 23 exceptions per week (94 per month)
Human checkpoint
Manager approval via Slack for orders above the configured value threshold
Process owner
[Your name] — Fulfilment Manager
Process Runbook / SOPPage 1 of 4
FS-DOC-03Operations

02Step-by-step: what happens and who acts

What you actually need to do: There is one human step in this entire process. When an order exceeds the value threshold, you will receive a Slack prompt listing the exception summary and the recommended resolution. You approve or override it with a single reply. Everything else runs without any action from your team.
Step
What happens
Who acts
Type
1
ShipStation detects that a carrier has marked a shipment as failed, held, or undeliverable and immediately sends a webhook to the automation platform. No one needs to check any carrier portal.
System
Automated
2
The automation uses the order number in the webhook payload to call the Shopify API and retrieve the full order record, including the customer name, email address, delivery address, order value, and line items.
System
Automated
3
The Exception Triage Agent reads the carrier exception code and message, classifies the exception into one of four categories (address issue, failed delivery attempt, customs hold, or lost parcel), and sets the resolution path variables that all downstream steps depend on.
Exception Triage Agent
Automated
4
A Gorgias support ticket is created automatically, tagged with the exception type and order number, and placed in the fulfilment queue so every exception has a tracked record from the start and any customer reply lands in one place.
System
Automated
5
A customer notification email is sent via Gmail using the template matched to the specific exception type. The email explains what happened, outlines the next steps, and where relevant asks the customer for any information needed to resolve the issue, such as a corrected delivery address.
System
Automated
6
The automation checks whether the order value exceeds the configured approval threshold. If it does, the Resolution Agent pauses and posts the exception summary and recommended resolution action to the Fulfilment Manager via a Slack prompt. The manager reviews the detail and approves or overrides the recommended action with a reply in Slack.
Fulfilment Manager
Human
7
Once the resolution path is confirmed (either automatically for below-threshold orders or after manager approval), the Resolution Agent applies the outcome in Shopify by creating a replacement order for a reship or processing a refund, and adds a resolution note to the original order timeline.
Resolution Agent
Automated
8
The Gorgias ticket is updated with the resolution outcome and closed or tagged as awaiting customer confirmation, depending on the exception type. The resolution type, cost, and timestamp are written to the Google Sheets exceptions log, and a summary message is posted to the Slack fulfilment channel so the whole team can see the case is closed.
System
Automated
Process Runbook / SOPPage 2 of 4
FS-DOC-03Operations

03Handling exceptions

Situation
What the system does
What you do
The webhook arrives but the order number does not match any record in Shopify
The automation logs the raw webhook payload to the Google Sheets exceptions register with a status of 'Unmatched' and posts an alert to the Slack fulfilment channel flagging the order number and carrier message.
Search Shopify manually using the tracking number from the Slack alert. If you find the order, update the record and re-enter the order number into the exceptions log. Contact FullSpec support if mismatches happen repeatedly, as this may indicate a ShipStation order number format issue.
The same shipment fires duplicate webhooks and the exception appears twice in the system
The automation checks for an existing open Gorgias ticket with the same order number before creating a new one. If a duplicate is detected, the second webhook is discarded and the original ticket is updated with a note confirming the duplicate was suppressed.
No action is normally needed. If you notice two Gorgias tickets for the same order, merge them manually in Gorgias and note the duplicate in the Google Sheets log so FullSpec can investigate the carrier webhook behaviour.
The customer notification email fails to send because the email address on the Shopify order is missing or malformed
The automation flags the case in the Google Sheets log with a status of 'Notification failed: invalid email' and posts an alert to the Slack fulfilment channel with the order number and customer name.
Find the correct customer contact using the order details in Shopify, send a manual email from Gmail, and update the Gorgias ticket to confirm the customer was reached. Update the email address on the Shopify order to prevent the same issue on future orders for that customer.
A high-value order Slack approval prompt is not acted on within the review window (default: 4 hours)
The automation sends a follow-up Slack reminder to the Fulfilment Manager. If no response is received after a second reminder, the case is escalated by posting to the Slack fulfilment channel tagging the manager and updating the Gorgias ticket status to 'Awaiting approval: overdue'.
Respond to the Slack prompt as soon as you see the reminder. If the approval window was missed due to being out of office, confirm the resolution verbally with your team first, then approve or override via Slack. Notify FullSpec support if you need the approval window length adjusted.
The carrier does not update the shipment status after a redelivery or correction request is submitted
The automation monitors the shipment status via ShipStation. If no status update is received within a configured window (default: 48 hours after resolution is applied), the Gorgias ticket is flagged as 'Carrier response overdue' and a Slack alert is sent to the fulfilment channel.
Contact the carrier directly using their support line or web portal to chase the redelivery or correction. Update the Gorgias ticket with any reference number the carrier provides. If the carrier confirms the shipment is lost, re-trigger the resolution process by updating the Gorgias ticket status to prompt the Resolution Agent.
ShipStation or the Shopify API is unavailable and the automation cannot complete a step
The automation platform retries the failed API call up to three times with a two-minute interval between attempts. If all retries fail, the raw webhook payload is stored, the step is logged as failed in the Google Sheets register, and a Slack alert is posted to the fulfilment channel with the error detail and affected order number.
Check the ShipStation and Shopify status pages to confirm whether there is a known outage. If an outage is confirmed, the automation will replay the stored webhook once connectivity is restored. If the outage is extended (more than two hours), process the affected exception manually using the pre-automation steps and log the outcome in Google Sheets. Contact FullSpec support if the automation does not recover automatically once the tool comes back online.

04Who to contact and when

Fill in once your team is confirmed. The rows below marked with brackets are placeholders for your team contacts. The FullSpec rows are fixed and do not change.

Role
Name
How to reach them
Fulfilment Manager (process owner)
[Your name]
[Your email or Slack handle]
Fulfilment Coordinator (day-to-day operator)
[Rep name]
[Rep email or Slack handle]
Customer Support Lead (Gorgias queue owner)
[Rep name]
[Rep email or Slack handle]
FullSpec builder (automation configuration and updates)
FullSpec team
support@gofullspec.com
FullSpec support (errors, outages, unexpected behaviour)
FullSpec support
support@gofullspec.com
Contact FullSpec support immediately if: the automation stops firing on new exceptions, the Google Sheets log shows a gap of more than one business day with no entries during a normal trading period, or you receive a Shopify error notification related to a reship or refund the automation attempted.
Process Runbook / SOPPage 3 of 4
FS-DOC-03Operations

05Ongoing maintenance

When
What to do
Who
Whenever a new carrier is added or a carrier changes its exception codes
Provide FullSpec with the new carrier's exception code list and any example webhook payloads. FullSpec will update the Exception Triage Agent classification logic and test it in a sandbox before applying to live traffic. Without this update, new exception codes will fall through to the 'unclassified' path and require manual handling.
Process owner notifies FullSpec; FullSpec makes the update
Whenever customer-facing email content needs updating (tone, policy change, new resolution options)
Send the revised copy to FullSpec with clear notes on which exception type the template applies to. FullSpec will update the Gmail template in the automation and confirm via email once the change is live. Do not edit templates directly in Gmail as this will not update the automation.
Process owner or Customer Support Lead drafts change; FullSpec applies it
Monthly spot-check (first working day of each month)
Open the Google Sheets exceptions log and review the previous month's entries. Confirm that every row has a resolution status, a resolution type (reship or refund), and a timestamp. Flag any rows with a blank resolution status to FullSpec for investigation.
Fulfilment Manager or Fulfilment Coordinator
Weekly error-log review (each Monday morning)
Check the Slack fulfilment channel for any alerts posted by the automation during the previous week. Review the Google Sheets log filter for rows with a status of 'Failed', 'Unmatched', or 'Notification failed'. If more than two errors appear in a single week, contact FullSpec support.
Fulfilment Coordinator
Whenever a team member joins or leaves the fulfilment or support team
Update the contact table in section 04 of this document. If the departing team member was the designated Slack approver for high-value orders, notify FullSpec so the Slack approval prompt recipient can be updated in the automation configuration. Failure to do this means approval prompts go to an inactive user.
Process owner
Quarterly volume review (every three months)
Review the total exception count in Google Sheets against the original estimate of approximately 94 per month. If volume has grown by more than 25 percent, contact FullSpec to confirm the automation platform capacity and any API rate limit headroom. Also review whether the order value approval threshold remains appropriate for your current average order value and adjust it with FullSpec if needed.
Fulfilment Manager with FullSpec support
The most common maintenance issue for this process is failing to update the Slack approver when the Fulfilment Manager changes. Approval prompts for high-value orders will continue to go to the previous manager's Slack account, meaning no one sees them and the case stalls. Any time responsibility for high-value order approvals transfers to a new person, contact FullSpec at support@gofullspec.com to update the recipient in the automation before the handover date.
Process Runbook / SOPPage 4 of 4

More documents for this process

Every document generated for Delivery Exception Handling.

Launch Plan
Operations · Owner
View
ROI and Business Case
Finance · Owner
View
Developer Handover Pack
Technical · Developer
View
Integration and API Spec
Technical · Developer
View
Test and QA Plan
Quality · Developer
View