> ## Documentation Index
> Fetch the complete documentation index at: https://developers.perform.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Checkout Analytics

> Sessions, conversion rate and funnel drop-off per storefront domain on the Domains page, with self-serve widget assignment and implementation snippets.

**Available to all Checkout customers.**

## Summary

Checkout Analytics, the Domains page in the portal, is where you see how your checkout widgets are configured across your storefronts, copy the code to install them and measure how the resulting checkout journey performs. It organises every storefront as a domain with four funnel stages and reports sessions, conversion rate and funnel drop-off for the journey those widgets cover.

## Who it’s for

E-commerce leads and conversion owners who want to know what the delivery date does to conversion and where in the funnel shoppers leave, and engineering teams who need the right implementation snippet for each page without a round trip through support. Brands running several storefronts get one conversion rate per domain on one definition.

## Key benefits

* **One conversion rate per storefront.** Every domain shows total sessions and conversion rate for the rolling 14 days, with a pooled overall rate and a trend chart across domains.
* **The stage where shoppers leave.** The funnel drop-off chart shows how many sessions reached each of the four stages and the drop-off between them.
* **The funnel and the headline agree by construction.** The first bar is the conversion rate denominator and the Thank You bar is its numerator, so the two can never disagree.
* **Change widgets yourself.** Which widget sits on which funnel stage is changed in the portal, and the implementation snippet updates with it.
* **A missing widget reads as missing.** A stage with no widget renders as not configured rather than as a collapse in conversion.

## How it works

### Domains and funnel stages

A domain is a named grouping of one or more storefront URLs. Each domain carries a market and a language, and has four funnel stages that map to the checkout journey: **Product Page**, **Cart Page**, **Checkout Page** and **Thank You Page**. Each stage holds at most one widget, assigned independently.

Because market and language are properties of the domain, a storefront served in two languages is two domains with overlapping URLs. That is expected.

| Domain name | URLs | Market | Language |
| - | - | - | - |
| Storefront SG, English | shop.example.sg, shop.example.sg/men | Singapore | English |
| Storefront SG, German | shop.example.sg, shop.example.sg/men | Singapore | German |
| Storefront MY, English | shop.example.my | Malaysia | English |

A domain is **Active** if at least one widget is assigned to any funnel stage and **Inactive** if none are.

### What a session is

A session is one continuous visit by one shopper to one domain during which at least one Perform.AI widget loaded on a funnel stage. Sessions:

* end after 30 minutes of inactivity; the next widget event opens a new session
* are deduplicated across stages, so a shopper touching all four stages in one visit is one session
* are scoped to one domain, so the same shopper visiting two domains produces two sessions

Widgets on custom pages (mini-cart drawers, post-receipt upsell pages and similar) sit outside the four stages and are excluded from sessions and conversion rate.

### How conversion rate is calculated

Conversion rate is measured across the whole journey on a domain, not per widget.

* An **attributable session** is one in which at least one pre-conversion widget (Product, Cart or Checkout) loaded. This is the denominator.
* A **converted session** is an attributable session that also loaded the Thank You page widget before timing out. This is the numerator.
* Conversion rate is converted sessions divided by attributable sessions, shown to one decimal place.

A session that only ever hits the Thank You page, for example someone opening a confirmation link directly, is excluded from both. Where a figure covers more than one domain, sessions are pooled rather than averaged, so a high-volume storefront carries the weight it should.

Conversion rate requires full coverage: at least one pre-conversion widget and a Thank You page widget. Without both, the domain shows a dash.

### How the funnel drop-off chart works

Each bar counts the attributable sessions that reached that stage or any later stage, so every bar is smaller than or equal to the one before it and the funnel always steps down. Drop-off between two stages is the share of sessions that did not make it to the next one.

| Stage | Made it this far | Drop-off from previous stage |
| - | - | - |
| Product | 100,000 | First stage |
| Cart | 41,000 | 59.0% |
| Checkout | 24,000 | 41.5% |
| Thank You | 8,200 | 65.8% |

Thank You divided by Product is always the overall conversion rate: 8,200 divided by 100,000 is 8.2%. A shopper who enters at Cart from an email link, or jumps from Product straight to Checkout through an express buy flow, is counted in every bar they reached or passed, so a domain with heavy mid-funnel entry shows a low Product to Cart drop-off by design.

When a stage has no widget, its bar renders greyed out and labelled **NA** with no drop-off percentage, and the drop-off is measured from the last configured stage. A stage that is configured but has no sessions shows a genuine empty bar with zero sessions.

### Time period and refresh

All figures use a rolling 14-day window, which cannot be changed. Period-over-period deltas compare the current 14 days to the prior 14 days, so they need roughly 28 days of history before they appear. Figures refresh once a night at approximately 00:00 UTC; a change made during the day appears after the next refresh.

### What the page shows

**Overview for the Last 14 Days**, above the table:

* An **Overall Conversion Rate** card with a delta chip against the previous period. Domains without a measurable conversion rate are excluded.
* A **Conversion Rate by Domain** line chart plotting the top five domains by current conversion rate, one line per domain, with a legend you can use to show or hide lines. Hovering a point shows the domain, the date and the rate.

**Domains table**, one row per domain: domain name, URLs, total sessions and conversion rate with trend chips, and one column per funnel stage showing whether a widget is assigned. Trend chips are hidden when the value is unchanged, when conversion rate is a dash or when there is no prior-period history. The table has keyword search, pagination at 25 per page and an **Add Domain** button.

**Domain detail panel**, opened by selecting a row:

* **Analytics**: the domain’s conversion rate, its journey sessions (the attributable session count), a delta chip and the four-bar **Funnel Drop-Off** chart with drop-off percentages and cumulative share.
* **Configuration**: domain name, URLs, market, language, the widget assigned to each funnel stage and a **Widget Implementation** button.

**Widget Implementation modal**: one section per funnel stage with the stage name, the widget name and a copyable code block. A stage with no widget has a blank block.

The page is available in English, German, Spanish and French, following the portal language setting, on desktop browsers at 1280 px and above.

### Limits

| Limit | Detail |
| - | - |
| Coverage | Conversion rate needs a pre-conversion widget and a Thank You page widget. Pre-conversion widgets only: sessions tracked, conversion rate a dash, domain excluded from the trend chart. Thank You widget only: sessions tracked only where it loaded, no conversion rate. |
| Conversions | A conversion is a Thank You page widget load, not a verified order. A shopper who reopens an old receipt within the 30-minute window counts, so conversions can be slightly overstated. |
| Bots | Bot and crawler traffic is not excluded. It inflates sessions and depresses conversion rate. |
| Shopify app placements | Widgets implemented through the Shopify app have no metric coverage. Those stages show no sessions and no conversion rate. |
| `checkout_id` passthrough | Brands without `checkout_id` passthrough cannot be tracked. |
| History | No historical backfill. Data starts at installation, trend lines are sparse for the first 14 days and deltas are suppressed until roughly 28 days exist. |
| Mid-window changes | A domain added or removed mid-window is plotted only for the days it existed. A stage whose widget was live for part of the window can show near-full reach and near-zero drop-off, which the helper text under the funnel flags. Renaming a domain or moving widgets does not relabel past days. |
| Adding a widget | Adding a pre-conversion widget widens the denominator faster than conversions grow, so conversion rate can fall without any real change. |
| Widget health | The page cannot distinguish a widget that is firing correctly with no traffic from one that is broken. |
| Not available | Per-widget impression metrics, configurable periods, export of chart data, mobile and tablet layouts, real-time refresh, A/B testing per domain. |

## Set up in the portal

Go to **Checkout** > **Domains**. Domains are created by Perform.AI at your request; market and language are set during onboarding and are read-only afterwards.

1. To request a new domain, select **Add Domain** at the top right of the table, or on the empty state. The request goes to the customer service team.
2. Select a domain’s row to open the detail panel.
3. Select the pencil icon to enter edit mode, choose a widget for each funnel stage from the dropdowns and select **Save**. The implementation code modal opens with the updated snippets.
4. Copy the snippet for each stage and add it to the matching storefront page. Each snippet contains its own `data-variant-id` and the widget script, so the storefront must be updated whenever an assignment changes.
5. Return to the Analytics section once shopper traffic has accrued to verify that data is flowing.

Domain name and URLs are also editable in edit mode. To delete a domain, or change market or language, raise a request through **Add Domain**.

> [!TIP]
>
> Assign a widget to all four stages where possible. Full coverage is what makes conversion rate and the complete funnel available, and a Thank You page widget is the only way completed orders can be attributed to checkout sessions.

## Use via API and MCP

* MCP: `list_checkout_domains` returns your domains with their widget assignments, sessions and conversion rate. Documented on [MCP tools](https://developers.perform.ai/mcp/tools.md).
* There is no REST endpoint for domains or checkout analytics.

## FAQ

### Why does my conversion rate show a dash?

The domain does not have full coverage: it is missing either a pre-conversion widget (Product, Cart or Checkout) or a Thank You page widget. Both are needed.

### Why is one of my funnel bars showing NA?

No widget is assigned to that stage. The drop-off bridges over it and measures from the previous configured stage. A configured stage with zero sessions shows a real empty bar instead.

### My Product to Cart drop-off looks impossibly low. Is the data wrong?

Probably not. Each bar counts sessions that reached that stage or any later stage, so a shopper entering at Cart from an email link is still counted in the Product bar.

### Why did my conversion rate drop after I added a Cart widget?

Adding a pre-conversion widget widens the denominator; more sessions become attributable, usually faster than conversions grow. The rate falls even though nothing got worse.

### How up to date are the numbers?

They refresh once a night, around 00:00 UTC. Nothing on the page is real-time, so a change made today shows up tomorrow.

### Can I change the reporting period or export the data?

Not currently. All figures use a fixed rolling 14-day window, and chart data cannot be exported. Use **Reports & Analysis** for other date ranges on shipment data.

## Troubleshooting

| Symptom | Cause | Fix |
| - | - | - |
| Charts are empty although widgets are installed | No historical backfill; data starts accruing from installation | If the empty state says widgets are set up, wait for traffic. If it asks you to implement widgets, save the assignment and check the snippet is on the storefront. |
| Trend chips or deltas do not appear | Fewer than roughly 28 days of history | Wait for a full prior 14-day window. |
| Conversion rate dropped suddenly | The Thank You page widget stopped loading, for example after a snippet error | Check the storefront implementation of the Thank You page snippet before treating it as a performance change. |
| A Shopify stage shows no sessions | Widgets implemented through the Shopify app have no metric coverage | Expected. Measure the stages that use the embedded snippet. |
| The busiest domain is missing from the trend chart | The chart plots the top five domains by conversion rate, not by traffic | Read the domain’s rate in the table or its detail panel. |

## Related

* [Checkout EDD Widget](https://developers.perform.ai/products/checkout/checkout-edd-widget.md)
* [Checkout Widget A/B Testing](https://developers.perform.ai/products/checkout/checkout-widget-ab-testing.md)
* [EDD Prediction Model](https://developers.perform.ai/products/checkout/edd-prediction-model.md)
* [Checkout overview](https://developers.perform.ai/products/checkout/overview.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.