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).
This endpoint uses the same base URL and Bearer token as the Shipping Labels API: https://api.baback.co.
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
| Limit | Window |
|---|---|
| 100 requests | 60 seconds |
Going over the limit returns 429 Too Many Requests.
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 parceltrackingNumbers[]— 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
trackingIdandtrackingNumbers[].
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
idfor 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.
nulluntil 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
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
| Status | Description |
|---|---|
FULFILLED | Order shipped — parcel handed to the carrier |
IN_TRANSIT | Parcel in transit |
OUT_FOR_DELIVERY | Out for delivery |
DELIVERED | Delivered |
DELIVERY_FAILURE | Delivery attempt failed |
WAITING_FOR_PICKUP | Awaiting pickup at a relay / pickup point |
RETURN_TO_SENDER | Parcel being returned to sender |
RETURNED_TO_SENDER | Parcel returned to sender |
EXCEPTION | Carrier 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 PIIgiftConfig,crossSellRecommendations,webTemplate— reserved for the customer-facing tracking page
Error handling
| HTTP code | Cause |
|---|---|
403 Forbidden | Missing or invalid Bearer token |
404 Not Found | No parcel found with this tracking number for your shop |
429 Too Many Requests | Rate limit exceeded (100 req / 60 s) |
500 Internal Server Error | Baback-side error |
Error payloads use the following shape:
{
"message": "Parcel not found with trackingId: 8C12345678901",
"statusCode": 404,
"timestamp": "2026-04-29T12:00:00.000Z"
}