← Back to Metrics

Ship-to-Store Orders

Also known as: Ship to Store Order Count, Site to Store Orders, STS Orders, Buy Online Ship to Store Orders, Ship-to-Store Pickup Orders

OperationsmetricRetail: Omnichannel (BOPIS - Buy Online Pick Up In Store)Retail

Distinct online orders shipped from a DC to the chosen store for pickup (Fulfillment Method = ship_to_store). Unlike BOPIS Orders, no store stock is used; it is the count behind Ship-to-Store Rate.

Business Use Case

1️⃣ Merchandising raises on-hand allocation for SKUs driving rising ship-to-store orders at a store.,2️⃣ Customer Service sizes hold-shelf space and pickup-desk staffing from weekly orders per store.,3️⃣ Finance compares ship-to-store with home-delivery orders to quantify parcel cost saved.

Business Criticality

Medium

Journey / Navigation Area

Checkout

Owning Function

Merchandising

Scope

Event

Formula

COUNT(DISTINCT transaction_id) on purchase events WHERE fulfillment_method = 'ship_to_store', by order date in the reporting period

Calculation Notes

1️⃣ COUNT(DISTINCT transaction_id) on purchase events with fulfillment_method = 'ship_to_store'; confirmation-page refires count once.,2️⃣ Counted on the order date, not the ship or pickup date; orders later cancelled or never collected stay in the count.,3️⃣ Pickups fulfilled from store stock (BOPIS, curbside) and home delivery are excluded; the split is the Fulfillment Method value set at checkout.,4️⃣ Mixed carts follow the order-level fulfillment_method, so an order is never counted in both Ship-to-Store Orders and BOPIS Orders.,5️⃣ Internal and test traffic (traffic_type = internal) and purchase events without a transaction_id are excluded.,6️⃣ BOPIS orders the order management system reroutes to ship-to-store after checkout are not reclassified here; reconcile with OMS sourcing data.,7️⃣ Numerator of Ship-to-Store Rate, whose denominator is all Orders; apply the same date range and traffic filters to both.

Technical Details

Measure TypeCounter
Aggregation WindowDaily, Weekly, Monthly

Events

PlatformEvent
Google Analytics 4purchase
Adobepurchase

Data Mappings

W3 Data Layer
{
  "digitalData": {
    "transaction": {
      "transactionID": "txn-1",
      "total": {
        "transactionTotal": 100,
        "currency": "USD"
      },
      "attributes": {
        "fulfillmentMethod": "ship_to_store",
        "trafficType": "external"
      },
      "item": [
        {
          "productInfo": {
            "productID": "SKU-1",
            "productName": "item"
          },
          "quantity": 1,
          "price": {
            "basePrice": 100
          }
        }
      ]
    },
    "event": [
      {
        "eventInfo": {
          "eventName": "purchase"
        }
      }
    ]
  }
}
GA4 Data Layer
{
  "event": "purchase",
  "ecommerce": {
    "transaction_id": "txn-1",
    "value": 100,
    "currency": "USD",
    "items": [
      {
        "item_id": "SKU-1",
        "item_name": "item",
        "price": 100,
        "quantity": 1
      }
    ]
  },
  "fulfillment_method": "ship_to_store",
  "traffic_type": "external"
}
Adobe Client Data Layer
{
  "event": "purchase",
  "eventInfo": {
    "fulfillmentMethod": "ship_to_store",
    "trafficType": "external"
  },
  "xdm": {
    "commerce": {
      "purchases": {
        "value": 1
      },
      "order": {
        "purchaseID": "txn-1",
        "currencyCode": "USD"
      }
    },
    "productListItems": [
      {
        "SKU": "SKU-1",
        "name": "item",
        "quantity": 1,
        "priceTotal": 100
      }
    ]
  }
}
XDM Mapping
{
  "eventType": "commerce.purchases",
  "commerce": {
    "purchases": {
      "value": 1
    },
    "order": {
      "purchaseID": "txn-1",
      "currencyCode": "USD"
    }
  },
  "productListItems": [
    {
      "SKU": "SKU-1",
      "name": "item",
      "quantity": 1,
      "priceTotal": 100
    }
  ],
  "_tenantId": {
    "fulfillmentMethod": "ship_to_store",
    "trafficType": "external"
  }
}

SQL Queries

Google Analytics 4 (BigQuery)
-- ==========================================
-- 1. GOOGLE BIGQUERY SQL
-- ==========================================
-- Reporting period: last 90 days to yesterday, by order (purchase event) date
DECLARE start_date DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY);
DECLARE end_date DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY);

-- Distinct ship-to-store orders: purchase events with a transaction_id, excluding internal/test traffic; refires collapse on transaction_id
SELECT
  COUNT(DISTINCT ecommerce.transaction_id) AS ship_to_store_orders
FROM `your-project.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', start_date) AND FORMAT_DATE('%Y%m%d', end_date)
  AND event_name = 'purchase'
  AND NULLIF(ecommerce.transaction_id, '(not set)') IS NOT NULL
  AND (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'fulfillment_method') = 'ship_to_store'
  AND COALESCE((SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'traffic_type'), '') != 'internal';
Adobe Experience Platform (AEP Query Service)
-- ==========================================
-- 2. ADOBE AEP QUERY SERVICE SQL
-- ==========================================
-- Distinct ship-to-store orders over the last 90 days to yesterday by order date: purchase events with a purchaseID, excluding internal/test traffic; refires collapse on purchaseID
SELECT
  COUNT(DISTINCT commerce.order.purchaseID) AS ship_to_store_orders
FROM aep_web_events_dataset
WHERE CAST(timestamp AS DATE) BETWEEN DATE_SUB(CURRENT_DATE, 90) AND DATE_SUB(CURRENT_DATE, 1)
  AND eventType = 'commerce.purchases'
  AND NULLIF(commerce.order.purchaseID, '') IS NOT NULL
  AND _tenantId.fulfillmentMethod = 'ship_to_store'
  AND COALESCE(_tenantId.trafficType, '') != 'internal';

Source Data

Digital Analytics (GA4)

Dependencies

Prerequisite: List the dependencies required for this Metric

Events:

purchase

Dimensions:

fulfillment-methodtransaction-id

Report Attributes

fulfillment-method store-name item-category device-category traffic-source

Recommended Reporting Views

Views
Omnichannel Fulfillment OverviewStore Pickup OperationsFulfillment Mix by Store

Segment Eligibility

true

Governance

Data SensitivityInternal

Derived KPIs

Governance

Created bydevyendarm
Created on10/11/2026
Last modified bydevyendarm
Last modified on10/11/2026
StatusPUBLISHED

GitHub

View related Pull Requestcatalog/metrics/ship-to-store-orders.yml

Community Discussion