← Back to KPIs

Checkout completion rate

Also known as: Purchase Completion Rate, Checkout Success Rate

ConversionecommercecheckoutpurchaseE-commerce

Measures the percentage of initiated checkout sessions that result in a completed purchase. This KPI helps assess the effectiveness of the checkout process.

Business Use Case

Executives use this KPI to identify and address bottlenecks in the checkout process, aiming to improve conversion rates.

Business Criticality

High

Journey / Navigation Area

Checkout

Owning Function

Data Architecture Team

Scope

Session

Formula

(Completed Checkouts / Initiated Checkouts) × 100

Calculation Notes

Exclude sessions with technical errors or timeouts exceeding 30 minutes.

Technical Details

Measure Typepercentage
Aggregation WindowTime based - Daily

Events

PlatformEvent
Google Analytics 4purchase
Adobepurchase

Data Mappings

W3 Data Layer
{
  "event": "purchase",
  "ecommerce": {
    "purchase": {
      "products": [
        {
          "id": "12345",
          "name": "Triblend Android T-Shirt",
          "brand": "Google",
          "price": "15.25",
          "coupon": "",
          "variant": "Gray",
          "category": "Apparel",
          "quantity": 1
        }
      ],
      "actionField": {
        "id": "T12345",
        "tax": "4.90",
        "coupon": "SUMMER_SALE",
        "revenue": "35.43",
        "shipping": "5.99",
        "affiliation": "Online Store"
      }
    }
  }
}
GA4 Data Layer
{
  "event": "purchase",
  "ecommerce": {
    "tax": 4.9,
    "items": [
      {
        "price": 15.25,
        "item_id": "12345",
        "quantity": 1,
        "item_name": "Triblend Android T-Shirt",
        "item_brand": "Google",
        "item_variant": "Gray",
        "item_category": "Apparel"
      }
    ],
    "value": 35.43,
    "coupon": "SUMMER_SALE",
    "currency": "USD",
    "shipping": 5.99,
    "affiliation": "Online Store",
    "transaction_id": "T12345"
  }
}
Adobe Client Data Layer
{
  "event": "purchase",
  "ecommerce": {
    "purchase": {
      "tax": "4.90",
      "coupon": "SUMMER_SALE",
      "revenue": "35.43",
      "products": [
        {
          "brand": "Google",
          "price": "15.25",
          "variant": "Gray",
          "category": "Apparel",
          "quantity": 1,
          "productID": "12345",
          "productName": "Triblend Android T-Shirt"
        }
      ],
      "shipping": "5.99",
      "affiliation": "Online Store",
      "transactionID": "T12345"
    }
  }
}
XDM Mapping
{
  "_experience": {
    "analytics": {
      "event1": {
        "purchase": {
          "tax": 4.9,
          "items": [
            {
              "id": "12345",
              "name": "Triblend Android T-Shirt",
              "brand": "Google",
              "price": 15.25,
              "variant": "Gray",
              "category": "Apparel",
              "quantity": 1
            }
          ],
          "value": 35.43,
          "coupon": "SUMMER_SALE",
          "currency": "USD",
          "shipping": 5.99,
          "affiliation": "Online Store",
          "transactionID": "T12345"
        }
      }
    }
  }
}

SQL Queries

Google Analytics 4 (BigQuery)
-- ==========================================
-- 1. GOOGLE BIGQUERY SQL
-- ==========================================
SELECT COUNT(DISTINCT CASE WHEN event_name = 'purchase' THEN user_pseudo_id END) AS completed_checkouts,
       COUNT(DISTINCT CASE WHEN event_name = 'begin_checkout' THEN user_pseudo_id END) AS initiated_checkouts,
       SAFE_DIVIDE(COUNT(DISTINCT CASE WHEN event_name = 'purchase' THEN user_pseudo_id END), COUNT(DISTINCT CASE WHEN event_name = 'begin_checkout' THEN user_pseudo_id END)) AS checkout_completion_rate
FROM `your-project.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20230101' AND '20231231'
  AND event_name IN ('purchase', 'begin_checkout')
Adobe Experience Platform (AEP Query Service)
-- ==========================================
-- 2. ADOBE AEP QUERY SERVICE SQL
-- ==========================================
SELECT COUNT(DISTINCT CASE WHEN event = 'purchase' THEN user_id END) AS completed_checkouts,
       COUNT(DISTINCT CASE WHEN event = 'begin_checkout' THEN user_id END) AS initiated_checkouts,
       SAFE_DIVIDE(COUNT(DISTINCT CASE WHEN event = 'purchase' THEN user_id END), COUNT(DISTINCT CASE WHEN event = 'begin_checkout' THEN user_id END)) AS checkout_completion_rate
FROM aep_dataset.events
WHERE event IN ('purchase', 'begin_checkout')
  AND event_date BETWEEN '2023-01-01' AND '2023-12-31'

Source Data

Digital Analytics

Dependencies

[ "initiated-checkouts", "completed-checkouts" ]

Report Attributes

Device Type Geography User Type

Recommended Reporting Views

Views
E-commerce Performance Dashboard

Segment Eligibility

true

Governance

Data Sensitivityinternal

Governance

Created bydevyendarm
Created on5/6/2026
Last modified bydevyendarm
StatusPUBLISHED

GitHub

View related Pull Requestcatalog/kpis/checkout-completion-rate.yml

Community Discussion