Meta API Live Tracking 

  1. Call Parameters and Body

    The Meta API tracking service allows to track parcels in transit or delivered. The data is retrieved from our central servers which are updated constantly. You can extract the status and integrate it for your custom use.

    This service is only available to customers who are shipping with DPD. The service allows to track any DPD Parcel which you shipped, not just the ones which have been created with Meta API. So it can be used is a solution for your entire DPD tracking follow-up.

    Unfortunately, the Meta API tracking doesn’t provide with all the details as to why a parcel couldn’t be delivered successfully.
    Please note that you can also consult the MyDPD4Business tool to get an overview of your shipments.

    Attention – The Meta API tracking is limited in it’s possible use cases. It is not allowed to use it for data mining and tracking other parcels than your own. Rate limiting applies and you can be blocked from this functionality in case of failure to align with these guidelines. Full details will be provided by the Meta API onboarding team.
    For large tracking data consumption, please request Statusdata via EDI.

  2. Customer Onboarding – Meta API Tracking

    Integration with the Meta API Tracking service is fully managed by the Geopost central team.
    To ensure a smooth and quick setup, please follow the steps below.

    Steps to follow

    1. Activation request
      Send an email to metaapi@geopost.com with the subject:
      Request – Meta API Tracking account setup

      Please include the following details in your message:

      • Customer name (legal entity)

      • Contact email address (for delivery of the API key)

      • Name of IT partner or third-party integrator (if the connection is handled externally)

      • Sample parcel numbers for each account used within the BU

      • Estimated call volumes (relevant for large shippers)

    2. Validation & configuration

      • The central team will configure access and link all known customer accounts.

      • A dedicated API key will be generated and sent to the provided contact email.

      • For multiple accounts, please provide at least one parcel example per account to ensure proper synchronization.

    3. Documentation access

      • Swagger UI is available here:
        Swagger UI – Tracking
        ⚠️ Note: an API key must be injected into the HTTP header (e.g. with the ModHeader Chrome plugin)

    4. Testing & go-live

      • Start with test calls using a limited batch of parcels (max. 100 per request).

      • Once validated, the API can be used in production for all configured accounts.

    Best practices

    • Refresh frequency: do not refresh the entire parcel base more than once per hour
      (e.g. 3,000 active parcels = batch of 100 every 2 minutes).

    • Volume considerations: for very large shippers (>100,000 active parcels), please consult Geopost before integration.

    • Account management: always provide new account numbers and parcel samples when requesting additional account linkage.

  3. LIVE - Sample call & Response

    Method:

    • POST

    URL:

    Parameters:

    • debug: true

    Authorization:

    • no auth

    Headers

    • apiKey: 36 characters (provide your unique Fasttrack API key)
    • Content-Type: application/json

    Body:              

    • Object JSON (raw)
      Call:

      {
      "language": "EN",
      "parcelNumbers": ["05328817355211"]
      }


      Response
      :

      [
      {
      "parcelNumber": "05328817355211",
      "service": {
      "code": "359",
      "description": "normal parcel Exapaq"
      },
      "weight": "10",
      "parcelEvents": [
      {
      "eventDateTime": "2024-02-29 09:49:00+01:00",
      "country": "FRANCE",
      "city": "Ajaccio",
      "statusFamilyLabel": "DELIVERED",
      "statusLabel": "Delivery - Delivered",
      "statusId": "DEY",
      "translation": "Your parcel has been delivered successfully"
      },
      {
      "eventDateTime": "2024-02-29 09:09:00+01:00",
      "country": "FRANCE",
      "city": "Ajaccio",
      "statusFamilyLabel": "PARCEL OUT FOR DELIVERY",
      "statusLabel": "Destination depot - Out for delivery",
      "statusId": "DLO",
      "translation": "Your parcel is out for delivery"
      },
      {
      "eventDateTime": "2024-02-29 06:30:00+01:00",
      "country": "FRANCE",
      "city": "Ajaccio",
      "statusFamilyLabel": "AT DELIVERY CENTER",
      "statusLabel": "Destination depot - Inbound",
      "statusId": "DLI",
      "translation": "Your parcel arrived at our delivery depot"
      },
      {
      "eventDateTime": "2024-02-27 11:03:00+01:00",
      "country": "FRANCE",
      "city": "Ajaccio",
      "statusFamilyLabel": "PARCEL HANDED TO DPD",
      "statusLabel": "Origin depot - Parcel loaded in the trailer",
      "statusId": "ORL",
      "translation": "Your parcel is ready to be transported to our next premises"
      },
      {
      "eventDateTime": "2024-02-27 10:12:00+01:00",
      "country": "FRANCE",
      "city": "Ajaccio",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Status parcel - Labelling process",
      "statusId": "SPP",
      "translation": "We have successfully labelled your parcel"
      },
      {
      "eventDateTime": "2024-02-26 15:24:13+01:00",
      "country": "FRANCE",
      "city": "Saint-Rambert d'Albon",
      "statusFamilyLabel": "IN TRANSIT",
      "statusLabel": "Hub or other premises - Parcel loaded",
      "statusId": "HUL",
      "translation": "Your parcel is ready to leave our hub"
      },
      {
      "eventDateTime": "2024-02-23 15:52:58+01:00",
      "country": "FRANCE",
      "city": "Issy les Moulineaux",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Message Notification - Destination Location: Notification of delivery",
      "statusId": "MSDLO",
      "translation": "You received a notification with your delivery details"
      },
      {
      "eventDateTime": "2024-02-23 15:27:29+01:00",
      "country": "FRANCE",
      "city": "Issy les Moulineaux",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Status parcel - Information",
      "statusId": "SPE",
      "translation": "Your parcel data was updated and it is on its way"
      },
      {
      "eventDateTime": "2024-02-23 15:00:00+01:00",
      "country": null,
      "city": null,
      "statusFamilyLabel": "IN TRANSIT",
      "statusLabel": "Linehaul - Arrival",
      "statusId": "LHI",
      "translation": "Your parcel is on its way"
      },
      {
      "eventDateTime": "2024-02-23 15:00:00+01:00",
      "country": null,
      "city": null,
      "statusFamilyLabel": "IN TRANSIT",
      "statusLabel": "Linehaul - Start unloading",
      "statusId": "LHS",
      "translation": "Your parcel is on its way"
      },
      {
      "eventDateTime": "2024-02-23 14:42:31+01:00",
      "country": "FRANCE",
      "city": "St Geours de Maremne",
      "statusFamilyLabel": "IN TRANSIT",
      "statusLabel": "Hub or other premises - Import",
      "statusId": "HUM",
      "translation": "We are proceeding to the import process"
      },
      {
      "eventDateTime": "2024-02-23 14:42:30+01:00",
      "country": "FRANCE",
      "city": "St Geours de Maremne",
      "statusFamilyLabel": "PARCEL HANDED TO DPD",
      "statusLabel": "Origin depot - Parcel loaded in the trailer",
      "statusId": "ORL",
      "translation": "Your parcel is ready to be transported to our next premises"
      },
      {
      "eventDateTime": "2024-02-23 14:42:29+01:00",
      "country": "FRANCE",
      "city": "St Geours de Maremne",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Status parcel - Information",
      "statusId": "SPE",
      "translation": "We are collecting the required information about the relabelling of your parcel"
      },
      {
      "eventDateTime": "2024-02-23 10:40:00+01:00",
      "country": null,
      "city": null,
      "statusFamilyLabel": "IN TRANSIT",
      "statusLabel": "Linehaul - Departure",
      "statusId": "LHO",
      "translation": "Your parcel is on its way"
      },
      {
      "eventDateTime": "2024-02-23 10:35:56+01:00",
      "country": "SPAIN",
      "city": "Miranda de Ebro",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Data exchange - Scan",
      "statusId": "ENZ",
      "translation": "We are exchanging data internally"
      },
      {
      "eventDateTime": "2024-02-23 10:35:56+01:00",
      "country": "SPAIN",
      "city": "Miranda de Ebro",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Status parcel - Information",
      "statusId": "SPE",
      "translation": "We are collecting the required information"
      },
      {
      "eventDateTime": "2024-02-23 10:35:49+01:00",
      "country": "SPAIN",
      "city": "Miranda de Ebro",
      "statusFamilyLabel": "IN TRANSIT",
      "statusLabel": "Hub or other premises - Parcel loaded",
      "statusId": "HUL",
      "translation": "Your parcel is ready to leave our hub"
      },
      {
      "eventDateTime": "2024-02-23 10:05:15+01:00",
      "country": "SPAIN",
      "city": "Miranda de Ebro",
      "statusFamilyLabel": "IN TRANSIT",
      "statusLabel": "Hub or other premises - Parcel loaded",
      "statusId": "HUL",
      "translation": "Your parcel is ready to leave our hub"
      },
      {
      "eventDateTime": "2024-02-23 08:32:29+01:00",
      "country": "SPAIN",
      "city": "Miranda de Ebro",
      "statusFamilyLabel": "IN TRANSIT",
      "statusLabel": "Hub or other premises - Sorted",
      "statusId": "HUS",
      "translation": "Your parcel is ready to be transported to our next premises"
      },
      {
      "eventDateTime": "2024-02-23 08:32:22+01:00",
      "country": "SPAIN",
      "city": "Miranda de Ebro",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Data exchange - Scan",
      "statusId": "ENZ",
      "translation": "We are exchanging data internally"
      },
      {
      "eventDateTime": "2024-02-23 08:32:22+01:00",
      "country": "SPAIN",
      "city": "Miranda de Ebro",
      "statusFamilyLabel": "IN TRANSIT",
      "statusLabel": "Hub or other premises - Inbound",
      "statusId": "HUI",
      "translation": "Your parcel arrived at our hub"
      },
      {
      "eventDateTime": "2024-02-23 08:26:29+01:00",
      "country": "SPAIN",
      "city": "Miranda de Ebro",
      "statusFamilyLabel": "IN TRANSIT",
      "statusLabel": "Hub or other premises - Parcel loaded",
      "statusId": "HUL",
      "translation": "Your parcel is ready to leave our hub"
      },
      {
      "eventDateTime": "2024-02-23 03:12:45+01:00",
      "country": "SPAIN",
      "city": "Getafe",
      "statusFamilyLabel": "IN TRANSIT",
      "statusLabel": "Hub or other premises - Parcel loaded",
      "statusId": "HUL",
      "translation": "Your parcel is ready to leave our hub"
      },
      {
      "eventDateTime": "2024-02-23 01:16:56+01:00",
      "country": "SPAIN",
      "city": "El Prat de Llobregat (Barcelona)",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Status parcel - Information",
      "statusId": "SPE",
      "translation": "We're sorry but there is a problem with your parcel"
      },
      {
      "eventDateTime": "2024-02-22 23:27:32+01:00",
      "country": "SPAIN",
      "city": "Getafe",
      "statusFamilyLabel": "IN TRANSIT",
      "statusLabel": "Hub or other premises - Scan",
      "statusId": "HUZ",
      "translation": "Your parcel is at our hub"
      },
      {
      "eventDateTime": "2024-02-22 11:22:06+01:00",
      "country": "SPAIN",
      "city": "Segovia",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Data exchange - Control",
      "statusId": "ENV",
      "translation": "We are exchanging data internally"
      },
      {
      "eventDateTime": "2024-02-22 11:22:04+01:00",
      "country": "SPAIN",
      "city": "Segovia",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Data exchange - Data received and integrated",
      "statusId": "ENA",
      "translation": "We are exchanging data internally"
      },
      {
      "eventDateTime": "2024-02-22 11:21:57+01:00",
      "country": "FRANCE",
      "city": "Issy les Moulineaux",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Information from customer-customer prealert - customer prealertrealert received",
      "statusId": "CNA",
      "translation": "We received your parcel data"
      },
      {
      "eventDateTime": "2024-02-22 11:21:06+01:00",
      "country": "SPAIN",
      "city": "Segovia",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Data exchange - Control",
      "statusId": "ENV",
      "translation": "We are proceeding to standard checks"
      },
      {
      "eventDateTime": "2024-02-22 11:18:29+01:00",
      "country": "SPAIN",
      "city": "Segovia",
      "statusFamilyLabel": "PARCEL HANDED TO DPD",
      "statusLabel": "Origin depot - Inbound",
      "statusId": "ORI",
      "translation": "Your parcel arrived at our depot"
      },
      {
      "eventDateTime": "2024-02-22 11:18:29+01:00",
      "country": "SPAIN",
      "city": "Segovia",
      "statusFamilyLabel": "PARCEL HANDED TO DPD",
      "statusLabel": "Origin depot - Sorted",
      "statusId": "ORS",
      "translation": "Your parcel is ready to be transported to our next premises"
      },
      {
      "eventDateTime": "2024-02-22 11:18:29+01:00",
      "country": "SPAIN",
      "city": "Segovia",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Status parcel - Scan",
      "statusId": "SPZ",
      "translation": "Your parcel is on our premises"
      },
      {
      "eventDateTime": "2024-02-21 18:40:22+01:00",
      "country": "SPAIN",
      "city": "Segovia",
      "statusFamilyLabel": "NEUTRAL",
      "statusLabel": "Data exchange - Scan",
      "statusId": "ENZ",
      "translation": "We are exchanging data internally"
      }
      ],
      "error": null
      }
      ]
  4. STAGE - Sample call & Response

    Method:

    • POST

    URL:

    (stage)

    Parameters:

    • debug true

    Authorization:

    • no auth

    Headers

    • apiKey Fasttrack API Key
    • Content-Type application/json

    Body:              

    • Object JSON (raw)

     

    {
        "language": "EN",
        "parcelNumberAndReceiverZipcodeList": [
            {
                "parcelNumber": "05328817355211",
                "receiverZipcode": "1160"
            }
        ]
    }


    Body
    :

    [
        {
            "parcelNumber": "05328817355211",
            "service": {
                "code": "327",
                "description": "normal parcel, B2C"
            },
            "weight": "68300",
            "parcelEvents": [
                {
                    "eventDateTime": "2022-02-08",
                    "country": "BELGIUM",
                    "statusFamilyLabel": "PARCEL OUT FOR DELIVERY",
                    "statusLabel": "Destination depot - Out for delivery",
                    "statusId": "DLO",
                    "translation": "Your parcel is on its way"
                },
                {
                    "eventDateTime": "2022-02-08",
                    "country": "BELGIUM",
                    "statusFamilyLabel": "NEUTRAL",
                    "statusLabel": "Message Notification - Destination Location: Notification of delivery",
                    "statusId": "MSDLO",
                    "translation": "We informed you that your parcel will be delivered on  "
                },
                {
                    "eventDateTime": "2022-02-08",
                    "country": "BELGIUM",
                    "statusFamilyLabel": "AT DELIVERY CENTER",
                    "statusLabel": "Destination depot - Inbound",
                    "statusId": "DLI",
                    "translation": "Your parcel arrived at our delivery depot"
                },
                {
                    "eventDateTime": "2022-02-07",
                    "country": "BELGIUM",
                    "statusFamilyLabel": "NEUTRAL",
                    "statusLabel": "Status parcel - Loaded",
                    "statusId": "SPL",
                    "translation": "Your parcel is on its way"
                },
                {
                    "eventDateTime": "2022-02-07",
                    "country": "BELGIUM",
                    "statusFamilyLabel": "IN TRANSIT",
                    "statusLabel": "Hub or other premises - Sorted",
                    "statusId": "HUS",
                    "translation": "Your parcel was sorted for transport to our next premises"
                },
                {
                    "eventDateTime": "2022-02-07",
                    "country": "BELGIUM",
                    "statusFamilyLabel": "PARCEL HANDED TO DPD",
                    "statusLabel": "Origin depot - Inbound",
                    "statusId": "ORI",
                    "translation": "Your parcel entered our network"
                },
                {
                    "eventDateTime": "2022-02-04",
                    "country": "GERMANY",
                    "statusFamilyLabel": "NEUTRAL",
                    "statusLabel": "Data exchange - Data received and integrated",
                    "statusId": "ENA",
                    "translation": "We have successfully integrated your data"
                }
            ]
        }
    ]
    
  5. Meaning and mapping the statusID field

    As you can see in the responses, each status has fields that are self-explanatory, except the statusId field. This field is the Geopost Group code for the status and some customers might want to use that value to know the status of their shipping.

    The full list of all the StatusID’s an be downloaded here. Customers are free to use it and map the codes in their own systems as they see fit. The Geopost-related columns in the list are the ones marked in blue (col A to J)

     

     

Was this post helpful?(Required)