← Back to Dimensions

Free Shipping Eligibility

Also known as: Free Shipping Basis, Free Shipping Qualification, Free Shipping Reason, Free Shipping Status, free_shipping_eligibility

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

The basis on which an order qualified for free shipping: Threshold Met, Promotion, Member Benefit or Not Eligible. It records the offer the platform applied; Shipping Tier records service level and speed.

Business Use Case

1️⃣ Finance: at month end, totals shipping cost absorbed by basis and flags the basis whose cost outgrows its margin. 2️⃣ Merchandising: when Threshold Met orders bunch just above the threshold, tests raising it by one price step. 3️⃣ Marketing: after a free-shipping promotion, compares Promotion order AOV and conversion to baseline before rerunning it. 4️⃣ Loyalty team: tracks Member Benefit order share and revenue to justify the paid membership's shipping perk.

Business Criticality

Medium

Journey / Navigation Area

Checkout

Owning Function

Merchandising

Scope

Event

Calculation Notes

1️⃣ Source: the shipping rule the commerce platform applied at order placement, sent on purchase. Never infer it from shipping = 0 alone. 2️⃣ Values: Threshold Met, Promotion, Member Benefit, Not Eligible, Not Applicable, (not set). One value per order. 3️⃣ Several rules apply: record the one the platform applied; if it reports more than one, use Promotion, then Member Benefit, then Threshold Met. 4️⃣ Threshold Met follows the subtotal the platform evaluates, usually after discounts and before tax and shipping. Use the same basis in reports. 5️⃣ Eligibility, not choice: an eligible order upgraded to a paid express tier keeps its basis; the upgrade shows in Shipping Tier and shipping value. 6️⃣ Pickup (BOPIS, curbside) and digital-only orders have no shipment: Not Applicable, never Not Eligible. 7️⃣ Fixed at purchase: a refund or cancellation that drops an order below the threshold never changes it. Reconcile with platform shipping lines.

Technical Details

Data Typestring
Lookback WindowEvent, Daily, Weekly, Monthly

Events

PlatformEvent
Google Analytics 4purchase
Adobepurchase

Data Mappings

W3 Data Layer
{
  "transaction": {
    "transactionID": "txn-1",
    "total": {
      "basePrice": 100,
      "currency": "USD",
      "shipping": 0,
      "shippingMethod": "Standard",
      "transactionTotal": 100
    },
    "attributes": {
      "freeShippingEligibility": "Threshold Met"
    }
  }
}
GA4 Data Layer
{
  "event": "purchase",
  "ecommerce": {
    "transaction_id": "txn-1",
    "value": 100,
    "currency": "USD",
    "shipping": 0,
    "shipping_tier": "Standard",
    "items": [
      {
        "item_id": "SKU-1",
        "item_name": "item",
        "price": 100,
        "quantity": 1
      }
    ]
  },
  "free_shipping_eligibility": "Threshold Met"
}
Adobe Client Data Layer
{
  "event": "purchase",
  "xdm": {
    "commerce": {
      "purchases": {
        "value": 1
      },
      "order": {
        "purchaseID": "txn-1",
        "currencyCode": "USD",
        "priceTotal": 100
      }
    },
    "productListItems": [
      {
        "SKU": "SKU-1",
        "quantity": 1,
        "priceTotal": 100
      }
    ],
    "_tenantId": {
      "freeShippingEligibility": "Threshold Met"
    }
  }
}
XDM Mapping
{
  "commerce": {
    "purchases": {
      "value": 1
    },
    "order": {
      "purchaseID": "txn-1",
      "currencyCode": "USD"
    }
  },
  "_tenantId": {
    "freeShippingEligibility": "Threshold Met"
  }
}

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);

-- One value per order: the free_shipping_eligibility sent on the first purchase hit of each transaction_id (refunds never rewrite it)
WITH orders AS (
  SELECT
    ecommerce.transaction_id AS transaction_id,
    COALESCE(NULLIF(TRIM((SELECT ep.value.string_value FROM UNNEST(event_params) AS ep WHERE ep.key = 'free_shipping_eligibility')), ''), '(not set)') AS free_shipping_eligibility
  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 ecommerce.transaction_id IS NOT NULL
  QUALIFY ROW_NUMBER() OVER (PARTITION BY ecommerce.transaction_id ORDER BY event_timestamp) = 1
)
-- Orders by free shipping basis
SELECT
  free_shipping_eligibility,
  COUNT(*) AS orders
FROM orders
GROUP BY free_shipping_eligibility
ORDER BY orders DESC;
Adobe Experience Platform (AEP Query Service)
-- ==========================================
-- 2. ADOBE AEP QUERY SERVICE SQL
-- ==========================================
-- Relative reporting window: last 90 complete days
WITH params AS (
  SELECT date_sub(current_date(), 90) AS start_date,
         date_sub(current_date(), 1) AS end_date
),
-- One value per order: the freeShippingEligibility sent on the first purchase hit of each purchaseID (refunds never rewrite it)
orders AS (
  SELECT
    commerce.order.purchaseID AS transaction_id,
    COALESCE(NULLIF(TRIM(MIN_BY(_tenantId.freeShippingEligibility, timestamp)), ''), '(not set)') AS free_shipping_eligibility
  FROM aep_web_events_dataset, params
  WHERE commerce.purchases.value > 0
    AND commerce.order.purchaseID IS NOT NULL
    AND to_date(timestamp) BETWEEN params.start_date AND params.end_date
  GROUP BY commerce.order.purchaseID
)
-- Orders by free shipping basis
SELECT
  free_shipping_eligibility,
  COUNT(*) AS orders
FROM orders
GROUP BY free_shipping_eligibility
ORDER BY orders DESC;

Source Data

Digital Analytics (GA4) + Commerce Platform Orders (Shopify / Salesforce Commerce Cloud / Adobe Commerce)

Dependencies

Prerequisite: List the dependencies required for this Dimension

Events:

purchase

Report Attributes

Shipping Tier Fulfillment Method Coupon Code Loyalty Member Status Device Category Country

Segment Eligibility

true

Governance

Data SensitivityInternal

Governance

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

GitHub

View related Pull Requestcatalog/dimensions/free-shipping-eligibility.yml

Community Discussion