← Back to Metrics

Order Status Checks

Also known as: Order Tracking Lookups, Order Status Lookups, Track Order Views, WISMO Lookups, Where Is My Order Checks

OperationsmetricE-commerce: Post-Purchase Logistics & FulfillmentE-commerce

Count of self-service lookups in which a customer viewed the status of an existing order, via the account order page or the guest order-lookup form. Feeds the WISMO Rate KPI.

Business Use Case

1️⃣ Customer Service sees checks per order jump after a carrier delay and sends proactive delay emails to affected orders.,2️⃣ Customer Service splits checks by order status and adds tracking detail to the stage that draws most repeat lookups.,3️⃣ Product watches guest-lookup share rise and shortens the lookup form or adds a tracking link to the confirmation email.

Business Criticality

Medium

Journey / Navigation Area

Engagement

Owning Function

Customer Service

Scope

Event

Formula

COUNT(DISTINCT CONCAT(session_id, transaction_id)) over order status check events in the reporting period

Calculation Notes

1️⃣ One check = one transaction_id viewed in one session; refreshes and repeat views of the same order in that session are not counted again.,2️⃣ Counts successful lookups only: guest lookups that fail on order number or email match are excluded.,3️⃣ Account and guest lookups both count; checks started from a shipping email link count once the status page loads.,4️⃣ Carrier-site tracking views and contact-centre status enquiries are out of scope; they are not visible in site analytics.,5️⃣ Exclude internal and test traffic (traffic_type = 'internal') and lookups with no transaction_id.,6️⃣ Attribute each check to the date it occurred, not the order date; one order checked on three days counts three times.

Technical Details

Measure TypeCounter
Aggregation WindowDaily, Weekly, Monthly

Events

PlatformEvent
Google Analytics 4page_view
AdobepageView

Data Mappings

W3 Data Layer
{
  "page": {
    "pageInfo": {
      "pageName": "Order Status",
      "pageType": "order_status",
      "destinationURL": "https://www.example.com/account/orders/status?transaction_id=1029384"
    }
  },
  "user": [
    {
      "profile": [
        {
          "profileInfo": {
            "loginStatus": "logged_in"
          }
        }
      ]
    }
  ],
  "event": [
    {
      "eventInfo": {
        "eventName": "page_view",
        "session_id": "{{session_id}}",
        "transaction_id": "{{transaction_id}}",
        "order_status": "{{order_status}}",
        "login_status": "logged_in",
        "lookup_success": true,
        "entry_source": "account_menu",
        "traffic_type": "external"
      }
    }
  ]
}
GA4 Data Layer
{
  "event": "page_view",
  "page_title": "Order Status",
  "page_location": "https://www.example.com/account/orders/status?transaction_id=1029384",
  "page_path": "/account/orders/status",
  "page_referrer": "https://www.example.com/account/orders",
  "page_type": "order_status",
  "session_id": "{{session_id}}",
  "transaction_id": "{{transaction_id}}",
  "order_status": "{{order_status}}",
  "login_status": "logged_in",
  "lookup_success": true,
  "entry_source": "account_menu",
  "traffic_type": "external"
}
Adobe Client Data Layer
{
  "event": "pageView",
  "page": {
    "pageName": "Order Status",
    "pageType": "order_status"
  },
  "session_id": "{{session_id}}",
  "transaction_id": "{{transaction_id}}",
  "order_status": "{{order_status}}",
  "login_status": "logged_in",
  "lookup_success": true,
  "entry_source": "account_menu",
  "traffic_type": "external"
}
XDM Mapping
{
  "eventType": "web.webpagedetails.pageViews",
  "web": {
    "webPageDetails": {
      "name": "Order Status",
      "pageViews": {
        "value": 1
      }
    }
  },
  "_experience": {
    "analytics": {
      "session_id": "{{session_id}}",
      "transaction_id": "{{transaction_id}}",
      "order_status": "{{order_status}}",
      "login_status": "logged_in",
      "lookup_success": true,
      "entry_source": "account_menu",
      "traffic_type": "external"
    }
  }
}

SQL Queries

Google Analytics 4 (BigQuery)
-- ==========================================
-- 1. GOOGLE BIGQUERY SQL
-- ==========================================
DECLARE start_date DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY);
DECLARE end_date DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY);

-- Order status page views with their parameters pivoted to one row per event
WITH status_views AS (
  SELECT
    PARSE_DATE('%Y%m%d', event_date) AS check_date,
    MAX(IF(ep.key = 'page_type', ep.value.string_value, NULL)) AS page_type,
    MAX(IF(ep.key = 'session_id', COALESCE(ep.value.string_value, CAST(ep.value.int_value AS STRING)), NULL)) AS session_id,
    MAX(IF(ep.key = 'transaction_id', COALESCE(ep.value.string_value, CAST(ep.value.int_value AS STRING)), NULL)) AS transaction_id,
    MAX(IF(ep.key = 'lookup_success', COALESCE(ep.value.string_value, CAST(ep.value.int_value AS STRING)), NULL)) AS lookup_success,
    MAX(IF(ep.key = 'traffic_type', ep.value.string_value, NULL)) AS traffic_type
  FROM `your-project.analytics_123456789.events_*`,
    UNNEST(event_params) AS ep
  WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', start_date) AND FORMAT_DATE('%Y%m%d', end_date)
    AND event_name = 'page_view'
  GROUP BY event_date, user_pseudo_id, event_timestamp, event_bundle_sequence_id
)
-- One check per order per session, successful lookups only, external traffic with a transaction_id, attributed to the check date
SELECT
  check_date,
  COUNT(DISTINCT CONCAT(session_id, '|', transaction_id)) AS order_status_checks
FROM status_views
WHERE page_type = 'order_status'
  AND lookup_success IN ('true', '1')
  AND COALESCE(traffic_type, 'external') != 'internal'
  AND transaction_id IS NOT NULL AND transaction_id != ''
  AND session_id IS NOT NULL
GROUP BY check_date
ORDER BY check_date;
Adobe Experience Platform (AEP Query Service)
-- ==========================================
-- 2. ADOBE AEP QUERY SERVICE SQL
-- ==========================================
-- Relative reporting window: the last 90 complete days
WITH params AS (
  SELECT date_sub(current_date(), 90) AS start_date, date_sub(current_date(), 1) AS end_date
),
-- Order status page views with the lookup fields captured on each event
status_views AS (
  SELECT
    to_date(e.timestamp) AS check_date,
    CAST(e._experience.analytics.session_id AS STRING) AS session_id,
    CAST(e._experience.analytics.transaction_id AS STRING) AS transaction_id,
    lower(CAST(e._experience.analytics.lookup_success AS STRING)) AS lookup_success,
    e._experience.analytics.traffic_type AS traffic_type
  FROM aep_web_events_dataset e
  CROSS JOIN params p
  WHERE e.eventType = 'web.webpagedetails.pageViews'
    AND e.web.webPageDetails.name = 'Order Status'
    AND to_date(e.timestamp) BETWEEN p.start_date AND p.end_date
)
-- One check per order per session, successful lookups only, external traffic with a transaction_id, attributed to the check date
SELECT
  check_date,
  COUNT(DISTINCT concat(session_id, '|', transaction_id)) AS order_status_checks
FROM status_views
WHERE lookup_success IN ('true', '1')
  AND COALESCE(traffic_type, 'external') <> 'internal'
  AND transaction_id IS NOT NULL AND transaction_id <> ''
  AND session_id IS NOT NULL
GROUP BY check_date
ORDER BY check_date;

Source Data

Digital Analytics (GA4)

Dependencies

Prerequisite: List the dependencies required for this Metric

Events:

order-status-check

Dimensions:

order-status

Report Attributes

order-status shipment-status carrier fulfillment-method device-category delivery-region

Recommended Reporting Views

Views
Post-Purchase ExperienceWISMO & Contact DeflectionFulfillment Operations

Segment Eligibility

true

Governance

Data SensitivityInternal

Derived KPIs

Governance

Created bydevyendarm
Created on9/27/2026
Last modified bydevyendarm
Last modified on9/27/2026
Version1.0.0
Validation stateqa passed
StatusPUBLISHED

GitHub

View related Pull Requestcatalog/metrics/order-status-checks.yml

Community Discussion