Developer reference

Accessing pickup point details

When a buyer selects a pickup point, Atlas saves the details to an order metafield. This metafield is always active and requires no configuration. We recommend treating it as the source of truth for pickup point details.

  • Metafield namespace: atlas_pickup_points
  • Metafield key: point

If you need to pass pickup point data to third-party systems in other formats (order custom attributes, shipping address, or custom metafields), see How to get pickup point data into my fulfillment software. For a list of pre-integrated apps, see the Integrations page.

Structure of the pickup point metafield

The metafield value is a JSON object with the following structure:

AttributeTypeDescription
providerProvider enumPoints provider, typically carrier name
codeStringCarrier given identifier of pickup point
detailsDetails objectPickup point details
addressAddress objectPickup point address
attributesAttributes object[]List of pickup point attributes, varies by carrier

Details object

AttributeTypeDescription
nameStringName of the pickup point
description1StringDescription
description2Nullable StringSecond line of the description

Address object

AttributeTypeDescription
address1StringFirst line of the address
address2Nullable StringSecond line of the address
cityStringCity
zipStringPostal code
provinceNullable StringProvince name
provinceCodeNullable StringProvince code
countryCodeStringCountry code ISO 3166-1 alpha-2
latitudeFloatLatitude
longitudeFloatLongitude

Attributes object

Attributes are carrier-specific and are used to pass additional information about the pickup point.

AttributeTypeDescription
keyStringKey of the attribute
valueString / Boolean / NumberValue of the attribute

Provider enum

Possible values for the provider field:

AN_POST BOX_NOW BPOST BRING BUDBEE CESKA_POSTA CHRONOPOST COLIS_PRIVE COLISSIMO CORREOS CTT CUSTOM DAO DHL DHL_GLOBAL DPD DPD_BULGARIA DPD_FRANCE DPD_NETHERLANDS DROPP ECONT EVRI FAN_COURIER FEDEX FOXPOST GLS GLS_HUNGARY GLS_SPAIN HELTHJEM HRVATSKA_POSTA INPOST INSTABOX LATVIJAS_PASTS LIETUVOS_PASTAS MAGYAR_POSTA MATKAHUOLTO MEEST MONDIAL_RELAY OMNIVA ONE_BY_ALLEGRO ORLEN OVERSEAS_EXPRESS PACKETA PAXY POCZTA_POLSKA POST_AG POSTA_SLOVENIJE POSTE_ITALIANE POSTI POSTNL POSTNORD PPL RELAIS_COLIS ROYAL_MAIL SAMEDAY SENDCLOUD SEUR SEVEN_SENDERS SHIPPYPRO SLOVAK_PARCEL_SERVICE SLOVENSKA_POSTA SPEEDEX SPRING TNT UNISEND UPS VENIPAK

Shopify API

You can access pickup point details via Shopify webhooks and the Shopify GraphQL Admin API.

Webhooks

If you receive order data through webhooks, update the webhook subscription to include the Atlas metafield namespace. Subscribe to orders/create and orders/updated webhook topics.

For example:

mutation WebhookSubscriptionUpdate($id: ID!, $webhookSubscription: WebhookSubscriptionInput!) {
  webhookSubscriptionUpdate(id: $id, webhookSubscription: $webhookSubscription) {
    userErrors {
      field
      message
    }
    webhookSubscription {
      id
      topic
      uri
    }
  }
}
{
  "id": "gid://shopify/WebhookSubscription/1234567890",
  "webhookSubscription": {
    "metafieldNamespaces": ["atlas_pickup_points"]
  }
}

Your webhook payload will then include a metafields array containing an object with namespace set to atlas_pickup_points and key set to point. The value attribute is a JSON string with pickup point details in the structure described above. See Shopify documentation for more information about webhook subscriptions.

GraphQL Admin API

To fetch an order with pickup point details, you can use the following query:

query GetOrder($orderId: ID!) {
  order(id: $orderId) {
    id
    pickupPoint: metafield(namespace: "atlas_pickup_points", key: "point") {
      jsonValue
    }
  }
}
{
  "id": "gid://shopify/Order/1234567890"
}

The response will include a pickupPoint object with jsonValue containing the pickup point details in the structure described above. See Shopify documentation for more information about the Order object.

Example response

{
  "data": {
    "order": {
      "id": "gid://shopify/Order/1234567890",
      "pickupPoint": {
        "jsonValue": {
          "provider": "CHRONOPOST",
          "code": "8912U",
          "details": {
            "name": "LIBRAIRIE PAPETERIE HENRI IV",
            "description1": "15 BOULEVARD HENRI IV, PARIS",
            "description2": null
          },
          "address": {
            "address1": "15 BOULEVARD HENRI IV",
            "address2": null,
            "city": "PARIS",
            "zip": "75004",
            "province": null,
            "provinceCode": null,
            "countryCode": "FR",
            "latitude": 48.851521,
            "longitude": 2.363166
          },
          "attributes": [
            {
              "key": "typeDePoint",
              "value": "P"
            }
          ]
        }
      }
    }
  }
}

Things to consider

  • The pickup point may be selected after the order is created. In that case, the metafield will be empty in the orders/create webhook.

  • The pickup point may be changed by shop staff after the order is created. Shopify will send an orders/updated webhook when the pickup point is changed.