Sales report
Two pages on one tab row. Carts shows what was added to carts, with and without a conversation, with amounts and median cart value. Orders shows revenue attributed to the assistant next to your site's, its conversion rate and average order value.
Open Reports in the sidebar and choose Sales. It's the third item in the Reports section, after Overview and Conversations. The report is two pages, switched by a tab row under the title:
- Carts, at
/dashboard/sites/{siteId}/reports/sales/carts. Choosing Sales in the sidebar opens it. It counts add-to-carts: those the assistant makes in a shopper's cart and, if you installed the Shopify pixel, those shoppers make on your own pages. - Orders, at
/dashboard/sites/{siteId}/reports/sales. It shows the revenue of your orders next to the part credited to the assistant, with the assistant's conversion rate and the average order value. It used to be the lower half of the single Sales page. Its address did not change, so an old link opens Orders.
Both pages cover the period you pick. Neither shows per-order detail or a conversion funnel.
Both describe what happened around the assistant, never what it caused. A shopper who talked to the assistant may have added the product, or bought it, anyway.
Carts
What the figures count
An add-to-cart is an event, one per cart line added. It is not a click on a button and it is not a number of units: adding three of the same product in one line is one add-to-cart.
The page covers add-to-carts made in the assistant's panel on web and AI Storefront conversations, and on your storefront (Shopify only).
Four tiles sit at the top:
- Add-to-carts: the panel's and your pages' adds, together, with their amount under the count.
- Attributed to the assistant: the share of add-to-carts made in a session that had a conversation, rounded to a whole percent, with the count (
12 of 40 add-to-carts) and the amount of those add-to-carts under it. It is an indicator, not what the assistant added on top of what would have happened anyway. - Add-to-cart rate: the share of sessions that added to the cart. See The add-to-cart rate.
- Median cart value: see The median cart value.
With Compare to previous period on, each tile shows the change against the preceding stretch of the same length.
- Add-to-carts shows a change in percent. It shows none when the previous count was 0, because there is no relative change from zero.
- Attributed to the assistant and Add-to-cart rate show a change in percentage points, worked out on the figures the tile displays (whole percents for the share, one decimal for the rate). 70.4% and 69.6% both read 70%, so the share's change reads +0 pts, not +1 pt.
- Attributed to the assistant shows no change when the previous period had no add-to-cart. Add-to-cart rate shows none when the previous period had no session with a conversation.
- Median cart value shows a change in percent. It shows none when the previous period had no cart with a conversation and an amount in that currency.
- No count tile shows a change when the previous period had an origin that was not measured.
The add-to-cart rate
The rate counts sessions, not conversations. A session is what the tracking groups under one session id. It can hold a conversation or not.
- With a conversation: the sessions in which a conversation started during the period. One of them counts as having added to the cart when the assistant made an add in the panel, or when an add on your pages was received after the conversation started. A storefront add before the first message does not count.
- Without a conversation: the sessions in which the assistant was shown and no conversation started. One of them counts as having added when it made an add on your pages.
The tile shows the rate of the first group, with the second beside it: 18.5% with a conversation, against 6.2% without. The rate has one decimal. The Add-to-cart rate card below the tiles shows both rates with the counts behind them (37 of 200).
Sessions where the assistant was not shown, and that had no conversation, are in neither group. The two groups are not a fair comparison: shoppers who start a conversation are not a random sample of your visitors, and they may have been more likely to buy before. The report says so on the card. Read the gap as an observation, not as the assistant's effect.
States:
- If either origin of add-to-carts is not measured for the period, the tile and the card read Not measured. See Not measured is not zero.
- If no session had a conversation, the tile says No conversation in this period.
- A group with no session shows no rate. The tile says there is no session without a conversation.
The median cart value
A cart is the set of add-to-carts that carry the same cart token. Its value is the sum of its lines' amounts in the selected currency. A cart is with a conversation when one of its lines is: a panel add, or a storefront add after a conversation started in the same session. The tile shows the median value of the carts with a conversation, with the median of the other carts beside it: €94 with a conversation, against €71 without. A median is the middle cart, so one very large cart does not move it. The tooltip gives how many carts are behind each figure.
What is left out:
- An add-to-cart without a cart token is in no cart. An assistant add carries a cart token only when the cart reference is available; on a shared Shopify cart it is not, so those adds are not in the median.
- A line with no amount, or no currency, adds nothing to its cart's value.
- Carts in another currency than the selected one.
If no cart carries an amount in the currency, the tile says No cart with an amount in this period. If none of them is with a conversation, it says No cart with a conversation in this period. The tile follows the Currency filter: while it asks you to choose, the tile does too.
The amount under the count
The first two tiles, Add-to-carts and Attributed to the assistant, show the amount of their add-to-carts as a second figure under the count, in the currency chosen in the Currency filter. Amounts on this page are written in whole units of the currency, rounded to the nearest unit: 1,249.60 EUR reads €1,250. It is the value of what was added to carts. It is not revenue and not what was bought: a cart can be abandoned.
- Never a sum across currencies. A figure is always in one currency. Add-to-carts in another currency are not in it.
- Coverage is in the tooltip. Hover the tile's info icon to read how many add-to-carts carry an amount, for example "12 of 30 add-to-carts have an amount." An add-to-cart without an amount (or without a currency) is counted in the count and not valued in the amount, so the amount can cover fewer add-to-carts than the count.
- Storefront amounts are declared, not verified. On your pages, the pixel declares the amount and the platform does not verify it.
- The conversation amount is an indicator. The Attributed to the assistant amount is the value of the add-to-carts made in a session that had a conversation. It is not what the assistant added on top of what would have happened anyway.
- Not measured shows no amount. A tile that reads Not measured has no amount under it.
- Compare to previous period. With the comparison on, the amount shows its own change in percent against the previous period, in the same currency. It shows none when the previous period had no add-to-cart with an amount in that currency.
When there is no amount to show, the line under the count says why:
- Choose a currency: the period has several currencies and none is chosen yet.
- No amount for this period: no add-to-cart of the period carries an amount.
Charts and cards
Below the tiles:
- Add-to-carts over time: all add-to-carts, per day, or per hour on a period of two days or fewer.
- With a conversation: the add-to-carts made in a session that had a conversation, over the same steps.
- Add-to-carts by origin: a ring splitting the add-to-carts into Site, without a conversation, Site, after a conversation and Assistant panel. An origin that is not measured is left out and named in the card's description. If neither is measured, the card says Not measured.
- Add-to-cart rate: the two rates described above.
- Devices: the add-to-carts by shopper device (Desktop, Mobile, Tablet, Unknown), highest first. Unknown means the event recorded no identifiable device.
- Price of what is added: the add-to-carts that carry an amount, in five bands of unit price. The unit price is the amount divided by the quantity added (1 when none was recorded). The bands are under 25, 25 to 49, 50 to 99, 100 to 199 and 200 and over, in whole units of the currency, whatever the currency (49 JPY is in the 25 to 49 band). The card follows the Currency filter and asks you to choose when the period has several currencies.
- Peak hours: the add-to-carts per hour of the day, in your time zone, which the card names. Set it in your settings. The other cards and the days of the period stay in UTC.
With Compare to previous period on, the two charts over time draw the previous period as a second line. The tiles count the whole period. The charts follow the measurement step by step, so they can differ from the tiles:
- With a conversation counts the panel's adds only (a minimum) on the steps when your pages are not measured yet. That part is dashed and labeled With a conversation (panel only, minimum). It turns solid on the first step both origins are measured.
- Add-to-carts starts on the first step both origins are measured. Before that it is a gap, because the total cannot be known without your pages.
- A day or hour that has not started yet has no value, not zero.
If no step of the period is measured, the chart is replaced by a Not measured message.
The Currency filter
The Currency filter sits in the filter bar next to the date range. It is always there, and it is not in the Add a filter menu or counted by Reset. It sets the currency of the add-to-cart amounts, the median cart value and the price bands. Its options are the currencies of the add-to-carts of the selected period that carry an amount, so they change with the period.
- One currency in the period. It is selected and the control is locked on it (shown as Currency: EUR).
- Several currencies. The control reads Choose a currency and there is no default: you pick one, and the amounts, the median and the price bands show Choose a currency until you do. Once chosen, the control reads Currency: USD, for example.
- No currency. No add-to-cart of the period carries an amount. The control reads No currency, is locked and the amounts read No amount for this period.
The choice is in the page's URL (?currency=EUR), so you can share or bookmark the view. A code that is not one of the period's currencies is ignored. It is not saved between visits like the date range, so a link without it asks you to choose again when the period has several currencies.
The Orders page has its own Currency filter, with the currencies of its orders. See Currencies.
The Device filter
Add Device from Add a filter to restrict the Carts page to one or more of Desktop, Mobile, Tablet and Unknown. It reads the device each add-to-cart event recorded. Every figure on the page follows it: the counts, the amounts, the charts, the add-to-cart rate (the sessions are counted from the events of the chosen devices), the median cart value, the cards and the peak hours. The dates from which amounts and cart tokens are recorded do not. Selecting no device, or all four, restricts nothing. See The Device filter for what each value means.
The Carts bar offers no Source, Agents, Customer feedback, Panel language or Subject or keyword filter. The adds on your pages carry none of those, so a filter over the totals could not be honored. The Orders page offers no Device filter.
Not measured is not zero
A figure that could not have been recorded reads Not measured, never 0. An origin is measured from the moment its first add-to-cart was recorded for the site. Until then it has no figure. The notices below show that moment as a date.
- If either origin is not measured for the period, Add-to-carts, Attributed to the assistant, Add-to-cart rate and the cards below the tiles read Not measured. A total missing one origin would read as an assistant share of 100%, so the report does not show one. Add-to-carts by origin still draws the origin that is measured.
- If both origins are measured and there was no add-to-cart, Add-to-carts shows 0 and the share tile says No add-to-cart in this period.
A site with no Shopify pixel installed has no measured storefront, so those figures stay on Not measured. See Count add-to-carts and orders on your Shopify store.
Notices above the tiles
A notice sits above the tiles and always repeats what the page covers. It adds a sentence when:
- the period begins before an origin is counted: Panel add-to-carts are counted from {date}. or Add-to-carts on your pages are counted from {date}.
- an origin has never recorded an add-to-cart: No panel add-to-cart has been recorded yet. or No add-to-cart on your pages has been recorded yet.
- amounts and cart tokens are recorded from part-way through the period: Amounts and cart tokens are recorded from {date}. Or, if none has been: No amount or cart token has been recorded yet.
A second notice appears when counting add-to-carts on your pages is switched off for the site: Counting add-to-carts on your pages is switched off. The figures already recorded stay, but they no longer grow, so the share attributed to the assistant is overstated. The notice links to Open Site access settings. The switch is Count add-to-carts on your pages in Site settings > Site access. See Switch the counting off for a site.
Orders
The Orders page shows what your site sold and what the assistant is credited with.
Revenue is attributed, never incremental. An order counts for the assistant when it follows a conversation within the attribution window, by default 24 hours (last touch). It says an order followed a conversation, not that the conversation caused it. A shopper who would have bought anyway counts the same. A note at the top of this part states the window.
Amounts are net: after the refunds and cancellations recorded for the order, after discounts and before shipping. A cancelled order is not counted as an order. The site's figures cover every recorded order, assisted or not.
Orders come from the Shopify order webhooks and from the Shopify pixel. An order both reported counts once, with the webhook's figures. An order only the pixel reported is read with the pixel's figures, which differ: on a store that shows prices with tax its amount includes tax, a test order counts, an unpaid order counts, it has no refund or cancellation, and an order from the assistant's checkout link is not credited to the assistant. See Limits of an order only the pixel reported.
Three tiles:
- Revenue: the revenue of the orders credited to the assistant, with the site's revenue beside it (
attributed to the assistant, against … for the site). - Assistant conversion rate: the share of qualifying conversations followed by an order credited to the assistant, with the count (
12 of 340 qualifying conversations ended in an order credited to the assistant). A qualifying conversation is a conversation on the web or AI Storefront channel with at least one shopper message. Playground conversations are left out, and so are shoppers who objected to measurement. The rate shows one decimal, rounded to the nearest tenth (0.3%, never 0%). - Average order value: net revenue divided by the number of orders, for the assistant and for the site.
With Compare to previous period on, each tile shows the change against the preceding stretch of the same length. Revenue and average order value change in percent, once per side (assistant and site). The conversion rate changes in percentage points with one decimal, worked out on the percents on screen: 0.3% against 0.5% reads -0.2 pts. A tile shows no change when the previous figure was not measured or was 0.
Currencies
A site can sell in several currencies. Amounts are never added across them: the figures are in one currency, and the previous period is read in that same currency. This page reads in the currency of its own Currency filter in the filter bar, whose options are the currencies of the orders of the selected period. It works like the Carts one: one currency locks it, several ask you to choose, and none reads No currency. When the period holds several currencies and none is chosen, the three tiles read Choose a currency and the two charts invite you to pick one: the report never picks a currency for you. The REST API and the MCP report have no filter, so they default to the currency with the most orders.
When a figure reads not measured
The assistant's figures need a join key: the tag that links an order to a conversation. Until your site has started a conversation that carries one, the report cannot credit any order, so it shows:
- on Revenue: the site's revenue and order count, with the note Assistant revenue: not measured. No order can be linked to a conversation yet.
- on Average order value: the site's value, with the matching note.
- on Assistant conversion rate: Not measured: no order can be linked to a conversation yet. The rate also stays unmeasured until the site has a recorded order.
This is not zero. The site's revenue shows anyway. Once the join key exists, the assistant's figures appear for periods that end after it.
Two more states are not a failure. With no order in the period, the tiles say No order in this period. With the assistant measured but no order credited to it, Revenue shows 0 and Average order value shows the site's value with the note No order credited to the assistant in this period.
The join key is written for every shopper who hasn't objected to measurement. See How sales are attributed and The conversation join key. Before your site has one, expect not measured on the assistant's figures.
Revenue and conversion over time
Two charts follow the tiles. Both are per day, or per hour on a period of two days or fewer.
- Revenue over time: the site's revenue and the revenue attributed to the assistant, in the currency chosen in the Currency filter. If the assistant is not measured, only the site is drawn and the card says so. With no order in the period the card reads No order. An hour or day that has not started yet has no value, not zero.
- Assistant conversion rate over time: a conversation counts on the day (or hour) it started, whenever the order lands inside the window. The latest days can still rise as orders come in. A day with no qualifying conversation is a gap, not 0%.
A footnote under the charts repeats that revenue is net, after discounts and before shipping, and that amounts are never added across currencies.
Filters and time
The Orders bar carries the period (with the compare checkbox) and the Currency filter. It offers no Source, Agents, Customer feedback, Panel language, Subject or keyword, or Device, and no Add a filter button.
Days are UTC days on both pages: the period runs from midnight UTC of its first day to midnight UTC of the day after its last. The one exception is the Carts page's Peak hours, counted in your time zone.
How sales are attributed
Attribution is conservative. An order counts for a conversation only when the order itself carries a tag linking it back to that conversation. It is never inferred, not even from a product the assistant recommended.
An order is attributed whoever built the cart:
- Your store's own cart, on your site. When a shopper talks to the assistant through the web tag, the tag marks your store's cart with the conversation as soon as the assistant's reply to the shopper's first message reaches the page. An order checked out from that cart, through your usual checkout, counts for the conversation.
- The assistant's cart. When the assistant creates or updates a cart for a shopper, that cart is tagged with the conversation it came from, and an order placed from the checkout link the assistant gave counts too. On your site's web tag, on a Shopify store, the assistant works on your store's own cart, so the two are the same cart there (see The shopper's own cart on Shopify). The separate assistant cart remains on the AI Storefront, the Playground and a turn where the store's cart could not be used. The assistant's cart is separate from your store's cart.
Your AI Storefront has no store cart of its own, so there only orders placed from the assistant's checkout link are attributed.
The rules that apply to both carts:
- Shopify stores only. Neither cart is tagged unless your site has a Shopify connector. The assistant's cart is tagged through that connector. Your store's own cart also needs the shopper to be on your Shopify storefront. Orders on other platforms aren't attributed.
- Shopper conversations only. Conversations on your site and on your AI Storefront can tag a cart. Playground conversations never do, so a test order on your own store never counts as a sale.
- A failed tag never blocks the cart. If the tag can't be recorded, the cart works as usual: the assistant still creates or updates its cart, and your store's cart is left as it was. The shopper can still buy; that order just isn't attributed.
Some orders are never attributed, by design:
- orders from a store where the tag can't write to the cart: a store not on Shopify, or a headless Shopify storefront;
- an order checked out before the assistant's first reply reached the page;
- every order from a shopper who objected to measurement before a cart was tagged;
- an order from your store's cart when the shopper objects after that cart was tagged, on the same page: the tag is removed from the cart, so the order isn't attributed from it.
Carts are tagged for every shopper who hasn't objected
From 2026-10-23, a Shopify store's conversation gets its key at the shopper's first message, and carts carry it, unless the shopper objected. See The conversation join key. The revenue credited to the assistant on this page rests on that tag.
What changes in your Shopify reports
When an order is placed from the assistant's checkout link, Shopify records the order's landing page as a link carrying the iAdvize tag. In Shopify's own marketing reports, that replaces the landing page the shopper originally arrived on, along with its campaign (UTM) parameters. Shopify doesn't document this behavior; it's what we observed on test orders.
Orders placed from your store's own cart keep their original landing page and UTM parameters. The tag travels on the order as an order attribute instead.
iAdvize adds no campaign parameters of its own, on either cart.
What it shares with the other reports
The page header is the same shell used by Insights: the same date range picker and compare-to-previous-period checkbox.
Read it over the API
The Orders figures are also on the REST API, as Get a site's revenue and the assistant's share, and in the sales report of the MCP server. Both read the same figures as the Orders page.
The Carts figures are on the REST API as Get a site's add-to-cart counts and Get a site's add-to-cart insights, and in the add_to_cart and add_to_cart_insights reports of the MCP server. Unlike the page, the API returns amounts in minor units and the rate as counts of sessions, and its hours of the day are counted in the timeZone you send, UTC by default.
Purchase objections
The judge marks a purchase objection when a shopper raised a criterion before buying, as a doubt or as a condition their decision depends on. The nine objections are Price, Size or fit, Suitability, Delivery, Returns, Stock, Authenticity, Compatibility and Competitor. Every figure counts labeled conversations only, so the figures are a Beta read.
The overview shows two things:
- Raised a purchase objection: the share of labeled conversations where the shopper raised at least one of the nine. A conversation with several objections counts once.
- Purchase objections: the top three objections, each with its share. Full ranking opens the Purchase Objection tab.
The Purchase Objection tab
The Purchase Objection tab sits beside Sales, at /dashboard/sites/{siteId}/reports/sales/objection. It lists all nine objections.
- Count and share. The count is the number of labeled conversations that raised the objection. The share is that count divided by all labeled conversations in the period. One conversation can raise several objections, so the shares add up to more than 100%.
- Order. Most frequent first. On a tie, the order of the list above.
- Bar. Sized against the most frequent row, not against 100%.
- Each row opens the Conversations list. The row links to the list's Log tab with the period carried over and the Objection filter set to that objection. The Conversations page explains that filter.
- Change. With Compare to previous period on, each row shows its share's change in points against the period before. The change appears only when both periods have at least 30 labeled conversations.
The tab's filter bar offers the period and the compare checkbox only. It has no Currency filter and no other filters.
Two limits apply, as on the Conversations page. The tab reads at most the 10,000 newest labeled conversations in its scope, and it shows "Not enough labeled conversations yet" instead of the ranking until 30 are labeled. Conversations that aren't labeled yet, or whose shopper objected to measurement, aren't in any figure.
The objections describe what shoppers raised. They don't say whether the shopper bought, what the objection cost you, or how the assistant answered it.
Activity report
How many shoppers talked to your assistant over a date range you choose, how many used a tool, and when conversations start, compared against the period before it.
Engagement report
How many shoppers were exposed to your assistant, saw an engagement widget, opened a conversation, and started one, with the engagement rate (opened over views). Split in four tabs: the report, starter question performance, the raw exposure events and the most viewed pages.