Automated shipping notifications with real-time tracking links. Reduce 'where is my order?' tickets by 40% with proactive updates.
Customers contact support asking about their order status when they don't receive proactive shipping updates. Each 'where is my order?' ticket costs time and money, and the customer experience suffers. Manual shipping notifications don't scale during peak fulfillment periods, leaving customers in the dark during the most anxious part of the purchase journey.
MultiMail's AI agent sends automated shipping status emails as packages move through fulfillment stages — picked, packed, shipped, out for delivery, and delivered. Autonomous oversight ensures zero delay on these event-driven, templated notifications. High volume is handled without creating a human bottleneck.
Your fulfillment system sends shipping status events to the AI agent via webhook or API call. Each event includes the order ID, current status, tracking number, and estimated delivery window.
The agent composes a clear, concise email with the current shipping status, tracking link, and updated estimated delivery time. The format adapts based on the event type (shipped vs. out for delivery vs. delivered).
Under autonomous oversight, the update is sent instantly via send_email. Customers receive real-time notifications without any human approval needed.
If a delivery encounters issues (delays, failed delivery attempts, returned to sender), the agent sends appropriate notification emails with next steps and support contact information.
import requests
API = "https://api.multimail.dev/v1"
HEADERS = {"Authorization": "Bearer mm_live_xxx"}
STATUS_SUBJECTS = {
"shipped": "Your order #{order_id} has shipped!",
"in_transit": "Your order #{order_id} is on its way",
"out_for_delivery": "Your order #{order_id} is out for delivery",
"delivered": "Your order #{order_id} has been delivered"
}
def handle_shipping_event(event: dict):
subject = STATUS_SUBJECTS[event["status"]].format(
order_id=event["order_id"]
)
body = (
f"Hi {event[&"cm">#039;customer_name']},\n\n"
f"{get_status_message(event)}\n\n"
f"Track your package: {event[&"cm">#039;tracking_url']}\n"
f"Estimated delivery: {event[&"cm">#039;eta']}"
)
requests.post(
f"{API}/send",
headers=HEADERS,
json={
"from": "[email protected]",
"to": event["customer_email"],
"subject": subject,
"text_body": body,
"html_body": build_shipping_html(event)
}
)Handle fulfillment events and send appropriate shipping status emails.
import requests
API = "https://api.multimail.dev/v1"
HEADERS = {"Authorization": "Bearer mm_live_xxx"}
def handle_delivery_exception(event: dict):
if event["exception_type"] == "delayed":
subject = f"Delivery update: Order "cm">#{event['order_id']} delayed"
body = (
f"Hi {event[&"cm">#039;customer_name']}, your delivery has been "
f"delayed. New estimated arrival: {event[&"cm">#039;new_eta']}.\n\n"
f"We apologize for the inconvenience. Track updates: "
f"{event[&"cm">#039;tracking_url']}"
)
elif event["exception_type"] == "failed_attempt":
subject = f"Delivery attempted: Order "cm">#{event['order_id']}"
body = (
f"Hi {event[&"cm">#039;customer_name']}, delivery was attempted "
f"but could not be completed. A second attempt will be "
f"made on {event[&"cm">#039;retry_date']}.\n\n"
f"Need to reschedule? Reply to this email."
)
requests.post(
f"{API}/send",
headers=HEADERS,
json={
"from": "[email protected]",
"to": event["customer_email"],
"subject": subject,
"text_body": body,
"html_body": f"<p>{body}</p>"
}
)Send notifications for shipping delays or failed delivery attempts.
"cm">// Using MultiMail MCP tools for shipping updates
async function handleShippingEvent(event: ShippingEvent) {
const statusMessages: Record<string, string> = {
shipped: "has shipped and is on its way!",
in_transit: "is currently in transit.",
out_for_delivery: "is out for delivery today!",
delivered: "has been delivered."
};
"cm">// Send shipping update
await mcp.send_email({
to: event.customerEmail,
subject: `Your order #${event.orderId} ${event.status.replace("_", " ")}`,
text_body: [
`Hi ${event.customerName},`,
`Your order #${event.orderId} ${statusMessages[event.status]}`,
`Track your package: ${event.trackingUrl}`,
`Estimated delivery: ${event.eta}`
].join("\n\n")
});
"cm">// Update contact metadata
await mcp.add_contact({
email: event.customerEmail,
metadata: { last_shipping_status: event.status }
});
}Send shipping updates using MultiMail MCP tools.
Proactive shipping updates answer the customer's question before they ask it. Less 'where is my order?' means more time for your support team on real issues.
Autonomous mode sends updates the moment a shipping event occurs. Customers get notifications in real time, not in batches.
No human bottleneck means shipping updates flow at the same speed whether you ship 50 or 50,000 packages per day.
Delays, failed delivery attempts, and returned packages trigger appropriate customer communications automatically, with clear next steps and support options.
Email infrastructure built for AI agents. Verifiable identity, graduated oversight, and a 38-tool MCP server. Formally verified in Lean 4.