Tracking — Parcels

The Tracking Parcels endpoint lets you fetch the current status, carrier events, and line items of any parcel owned by your shop, using the tracking number you already have (e.g. from the carrier label or the Baback dashboard).

Authentication

Every request uses a Bearer token — the same token you use for the Returns and Shipping Labels APIs.

Authorization: Bearer 

The token automatically identifies your shop. A missing or invalid token returns 403 Forbidden.

Rate limiting

LimitWindow
100 requests60 seconds

Going over the limit returns 429 Too Many Requests.


GET/public/v1/tracking/parcels/:trackingNumber

Get a parcel by tracking number

Returns parcel info — carrier status, events, destination address, and line items — for a given tracking number, strictly scoped to the authenticated shop. A tracking number that belongs to another shop returns 404 (and does not reveal its existence).

The :trackingNumber parameter is matched against two fields:

  • trackingId — the primary tracking number of the parcel
  • trackingNumbers[] — the array of tracking numbers for multi-package shipments

If multiple parcels of the same shop match, the most recently created one is returned (orderBy: createdAt desc).

Path parameters

  • Name
    trackingNumber
    Type
    string
    Description

    The tracking number to look up. Matched against trackingId and trackingNumbers[].

Response attributes

  • Name
    id
    Type
    string
    Description

    Unique identifier of the parcel (primary key in database).

  • Name
    shopId
    Type
    string
    Description

    Identifier of the shop that owns this parcel.

  • Name
    orderId
    Type
    string
    Description

    Identifier of the order this parcel belongs to.

  • Name
    orderNumber
    Type
    string
    Description

    Human-readable order number (e.g. 1042).

  • Name
    trackingId
    Type
    string
    Description

    Primary tracking number of the parcel. Note: this is not the primary key — use id for unambiguous lookups.

  • Name
    trackingNumbers
    Type
    string[]
    Description

    All tracking numbers associated with this parcel (multi-package shipments may have more than one).

  • Name
    carrierCode
    Type
    string
    Description

    Carrier code (e.g. colissimo, chronopost).

  • Name
    carrierProduct
    Type
    string | null
    Description

    Carrier product code, if available (e.g. DOM).

  • Name
    carrierDisplayName
    Type
    string | null
    Description

    Human-readable carrier name (e.g. Colissimo Domicile).

  • Name
    lastStatus
    Type
    TrackingStatus | null
    Description

    Current Baback tracking status. See the status list below.

  • Name
    lastStatusUpdatedAt
    Type
    number | null
    Description

    Unix timestamp (ms) of the last status update.

  • Name
    deliveryDate
    Type
    number | null
    Description

    Unix timestamp (ms) when the parcel was actually delivered. null until delivery is confirmed.

  • Name
    endDepositDate
    Type
    number | null
    Description

    Unix timestamp (ms) after which the parcel is returned to sender if unclaimed.

  • Name
    createdAt
    Type
    number
    Description

    Unix timestamp (ms) when the parcel was created in Baback.

  • Name
    updatedAt
    Type
    number
    Description

    Unix timestamp (ms) of the last update.

Request

GET
/public/v1/tracking/parcels/:trackingNumber
curl https://api.baback.co/public/v1/tracking/parcels/8C12345678901 \
  -H "Authorization: Bearer {token}"

Response: 200 OK

{
  "id": "parcel_abc123",
  "shopId": "shop_1",
  "orderId": "shopify_4567890123",
  "orderNumber": "1042",
  "trackingId": "8C12345678901",
  "trackingNumbers": ["8C12345678901"],
  "carrierCode": "colissimo",
  "carrierProduct": "DOM",
  "carrierDisplayName": "Colissimo Domicile",
  "lastStatus": "IN_TRANSIT",
  "lastStatusUpdatedAt": 1714377600000,
  "carrierLastStatus": {
    "code": "PCH",
    "description": "Pris en charge par le transporteur",
    "date": 1714377600000
  },
  "estimatedDeliveryDateWindow": {
    "exactDeliveryDay": 1714723200000,
    "minimumDeliveryDate": 1714636800000,
    "maximumDeliveryDate": 1714809600000
  },
  "deliveryDate": null,
  "endDepositDate": 1715241600000,
  "destination": {
    "firstName": "Jane",
    "lastName": "Doe",
    "name": "Jane Doe",
    "company": "",
    "address1": "5 avenue des Champs-Élysées",
    "address2": null,
    "city": "Paris",
    "zip": "75008",
    "province": "Île-de-France",
    "provinceCode": "IDF",
    "country": "France",
    "countryCode": "FR",
    "phone": "+33698765432",
    "latitude": null,
    "longitude": null,
    "isPickupPoint": false
  },
  "lineItems": [
    {
      "lineItemId": "li_001",
      "name": "T-shirt Acme — taille M",
      "imageUrl": "https://cdn.shopify.com/.../tshirt.jpg",
      "sku": "TSHIRT-M-001",
      "quantity": 2,
      "price": 29.9,
      "productId": "prod_42",
      "metadata": null
    }
  ],
  "events": [
    {
      "status": "IN_TRANSIT",
      "createdAt": 1714377600000,
      "label": "Pris en charge par le transporteur",
      "carrierStatusCode": "PCH",
      "isNotificationSkipped": false,
      "notifications": []
    },
    {
      "status": "FULFILLED",
      "createdAt": 1714291200000,
      "label": "Commande expédiée",
      "carrierStatusCode": null,
      "isNotificationSkipped": false,
      "notifications": []
    }
  ],
  "createdAt": 1714291200000,
  "updatedAt": 1714377600000
}

Tracking statuses

StatusDescription
FULFILLEDOrder shipped — parcel handed to the carrier
IN_TRANSITParcel in transit
OUT_FOR_DELIVERYOut for delivery
DELIVEREDDelivered
DELIVERY_FAILUREDelivery attempt failed
WAITING_FOR_PICKUPAwaiting pickup at a relay / pickup point
RETURN_TO_SENDERParcel being returned to sender
RETURNED_TO_SENDERParcel returned to sender
EXCEPTIONCarrier exception (lost, damaged, etc.)

Privacy

The following fields are present internally on a parcel but are never exposed through this endpoint:

  • customerEmail, customerLocale, previousEmails — customer PII
  • giftConfig, crossSellRecommendations, webTemplate — reserved for the customer-facing tracking page

Error handling

HTTP codeCause
403 ForbiddenMissing or invalid Bearer token
404 Not FoundNo parcel found with this tracking number for your shop
429 Too Many RequestsRate limit exceeded (100 req / 60 s)
500 Internal Server ErrorBaback-side error

Error payloads use the following shape:

{
  "message": "Parcel not found with trackingId: 8C12345678901",
  "statusCode": 404,
  "timestamp": "2026-04-29T12:00:00.000Z"
}