Onward pushes 15 distinct tracking events to your Klaviyo account — 11 shipment tracking events that follow the delivery lifecycle, and 4 shipping exception events that fire when something goes wrong. This article covers every event, when it fires, and the data included with each one.
Shipment Tracking Events
These events fire as a shipment moves through the delivery lifecycle. Each event corresponds to a specific carrier milestone.
Event Name | When It Fires |
Onward Shipment Label Printed | A shipping label has been printed for the order. |
Onward Shipment Label Purchased | A shipping label has been purchased. |
Onward Shipment Confirmed | The carrier has confirmed receipt of the shipment. |
Onward Shipment Carrier Picked Up | The carrier has physically picked up the package. |
Onward Shipment In Transit | The package is in transit to the destination. |
Onward Shipment Out for Delivery | The package is on the delivery vehicle and out for delivery today. |
Onward Shipment Delivered | The package has been successfully delivered. |
Onward Shipment Available for Pickup | The package is at a pickup location (e.g., post office, locker) waiting for the customer. |
Onward Shipment Picked Up | The customer has picked up the package from the pickup location. |
Onward Shipment Delayed | The carrier has reported a delay in transit. |
Onward Delivery Error | The carrier has reported a delivery failure (e.g., wrong address, damaged in transit, returned to sender). |
Typical Event Sequence
For a standard delivery, events fire in this order:
Label Printed/Purchased → Confirmed → Carrier Picked Up → In Transit → Out for Delivery → Delivered
Not every shipment triggers all events — it depends on the carrier and the shipment type. For example, some carriers skip "Confirmed" and go straight from label creation to "In Transit."
Shipping Exception Events
These events fire when Onward detects a potential shipping problem. Unlike tracking events (which come from carrier data), exception events are detected by Onward's monitoring system based on elapsed business days without updates.
Event Name | When It Fires |
Onward Fulfillment Stalled | A shipping label was created but the carrier hasn't picked up the package. Fires after 4 business days with no carrier pickup. |
Onward Shipment Stalled | The shipment has had no tracking update for an extended period. Fires after 3 business days (domestic) or 5 business days (international). |
Onward Shipment Stuck | The shipment has been stuck in transit with no updates for a prolonged period. Fires after 7 business days (domestic) or 20 business days (international). |
Onward Attempted Delivery | The carrier attempted delivery but was unable to complete it (e.g., no one home, access issue). Fires immediately when the carrier reports the attempt. |
How Exceptions Are Detected
Onward checks packages on a regular schedule, calculating business days (excluding weekends) since the last tracking update.
Domestic and international shipments have different thresholds because international shipping naturally takes longer.
Each exception fires once per package — you won't get duplicate alerts for the same issue (except attempted delivery, which has a 24-hour cooldown between alerts).
Exceptions are suppressed if the package has already been delivered or if the order has been refunded.
Event Data Properties
Every tracking event sent to Klaviyo includes a rich set of data properties you can use in your flows, templates, and segments.
Order Information
Property | Description | Example |
| The Shopify order ID. |
|
| The order number shown to the customer. |
|
| The order total amount. |
|
| The currency code of the order. |
|
| The customer's first name. |
|
Shipment Details
Property | Description | Example |
| The carrier tracking number. |
|
| The carrier's tracking URL. |
|
| The carrier name. |
|
| The estimated delivery date (ISO 8601). |
|
| The current shipment status. |
|
| The carrier's status message. |
|
| Where the event happened (city, state, country). |
|
Additional Context
Property | Description | Example |
| Link to the customer's tracking page (if configured). |
|
| Whether the order has Onward shipping protection. |
|
| Whether the shipment is international. |
|
| The destination city. |
|
| The destination country code. |
|
Line Items
Each event also includes an array of line_items with product details:
Property | Description |
| Product name. |
| Item quantity. |
| Price per unit. |
| Product image URL. |
| Shopify product ID. |
| Shopify variant ID. |
Exception-Specific Properties
Shipping exception events include additional properties:
Property | Description |
| The type of exception ( |
| Business days since the last tracking update or fulfillment creation. |
Using Events in Klaviyo Flows
Building a Flow
In Klaviyo, go to Flows > Create Flow.
Choose "Metric Triggered" as the trigger type.
Search for the Onward event name (e.g., "Onward Shipment Delivered").
Build your flow steps — email, SMS, time delay, conditional split, etc.
Personalizing Messages with Event Data
Use Klaviyo's template variables to insert event data into your messages. For example:
{{ event.order_number }}— The order number.{{ event.tracking_url }}— A link to carrier tracking.{{ event.track_page_url }}— A link to your branded tracking page.{{ event.carrier_message }}— The latest carrier status message.{{ event.estimated_delivery_at }}— The estimated delivery date.
Example Flow Ideas
Event | Flow Idea |
Shipment Confirmed | Send "Your order is on its way!" with tracking link. |
Out for Delivery | Send "Your package arrives today!" with delivery tips. |
Delivered | Send "Your order was delivered!" with a review request or cross-sell. |
Delayed | Send "We noticed a delay" with reassurance and support contact. |
Delivery Error | Send "There was a delivery issue" with next steps and claims link (if protected). |
Shipment Stalled | Send "Your shipment update" explaining the delay and what you're doing about it. |
Fulfillment Stalled | Internal alert to your operations team to investigate unfulfilled orders. |
Enabling and Disabling Events
Each event can be individually toggled on or off in Order Tracking > Settings under the "Klaviyo Notifications" section.
Enabled (default): The event is pushed to Klaviyo whenever it occurs.
Disabled: The event is not pushed. Klaviyo flows using this event as a trigger will stop receiving new entries.
Disabling an event does not affect events that have already been sent — only future occurrences are suppressed.
