> Agent-readable docs index: /llms.txt. Download /docs.zip to grep all markdown files locally.

---
title: "Tracking shipments"
---

Tracking order shipments can be achieved through our [webhooks](/webhooks). If you set up webhooks for [product data syncing](/get-started/adding-products/syncing-products) then you don't need to do anything to receive tracking webhooks; they will be automatically sent to you for any order you have placed.

Otherwise, you should follow our guide on [setting up a webhook endpoint](/webhooks#getting-started-with-webhooks) and come back here after you have a working webhook endpoint.

## Tracking flow

Because orders are ultimately fulfilled by the vendor, order tracking is an inherently asynchronous process. You can expect to receive the following sequence of events:

<Steps>
  <Step title="Order placed">
    The [`ORDER_PLACED`](/webhooks/events#order-placed-and-failure-related-webhooks) event indicates that an order was successfully placed with the vendor, and is now awaiting fulfillment.
  </Step>

  <Step title="Tracking obtained">
    After receiving an order placed event, you will receive a [`TRACKING_OBTAINED`](/webhooks/events#tracking-related-webhooks) event which contains tracking information for the order. This includes details such as the tracking number, and the name of the carrier responsible for delivering the items. You can use this event to notify your customer.
  </Step>

  <Step title="Poll for updates">
    With the tracking number in hand, you can use a third-party API like [Aftership](https://www.aftership.com/) to receive further updates on your order's delivery status.
  </Step>
</Steps>

{/*
  TODO: `TrackingObtainedOrderEvent` has no useful information in it currently...

  ## Missed an event?

  If you haven't received tracking information after a few days, then you can check to see if you missed receiving the webhook by manually querying the order's event history.

  ```graphql
  query GetOrderEvents {
  orderByID(id: "an-order-id") {
    events {
      id
      createdAt

      ... on TrackingObtainedOrderEvent {
        #
      }
    }
  }
  }
  ```
  */}


---

*Powered by [holocron.so](https://holocron.so)*
