Skip to content

Performance

The Performance page blends your Shopify, Klaviyo, Meta Ads, and Google Ads data into one revenue view, then breaks it down by country, cohort, inventory risk, and product. It sits under the Dashboard group in the left navigation, alongside Paid Ads, Creative, and Email.

Open Performance in the left navigation. The page has these tabs along the top (the left navigation lists Overview, Countries, Products, and Website as shortcuts):

  • Overview - the blended revenue and paid-efficiency view (/performance)
  • Countries - Shopify revenue by shipping country (/performance/countries)
  • Cohorts - retention and cumulative customer LTV by first-order month (/performance/cohorts); see Cohorts
  • Inventory - stockout-risk alerts at canonical product grain (/performance/inventory); see Inventory
  • Products - Shopify sales by product, including margin and return rate (/performance/products)
  • Website - GA4 traffic acquisition, landing pages, devices, and shopping activity (/performance/website); see Website

Kreel’s app used to call this page Revenue, at a slightly different URL. Old links redirect automatically into the current Performance page.

Like the other Dashboard pages, Performance has an Analytics range bar above the content with a date range picker and a Compare control on the right. Presets include Yesterday, Month to Date, Last 7 days, Last 30 days, Last 90 days, and a custom range, plus Compare (Off, Previous Period, or Same Period Last Year). The default is Last 7 days, compared against Same Period Last Year. Every range covers whole calendar days and ends yesterday, except Month to Date, which runs through today. See Dates and comparisons for exactly how ranges and comparison windows are calculated, including the Month-to-Date and leap-year edge cases.

On the left of the same bar is the sales-channel filter, covered in its own section below since it matters more on this page than most.

If cached data is being shown while a background refresh runs, an amber banner appears at the top of the page naming when the data was last refreshed and noting that it’s refreshing in the background.

The sales-channel filter scopes only Shopify sales data - it has no effect on any ad or email metric on this page. The button reads All channels when every discovered channel is included, or a count of how many of the total channels are included when some are excluded.

Opening it shows a checkbox per channel Kreel has seen on your store, each with an order count, and the note “Shopify sales data only. Ads & email metrics are unaffected.” At least one channel must stay checked - you can’t filter down to zero, since that would zero out every revenue number on the page.

This is a session-only override: it changes what you’re looking at right now, without touching your brand’s saved channel policy. When your session selection differs from that saved policy, a Filtered view badge appears next to the selector with a reset button to go back to it.

Known channel labels:

| Shopify source | Shown as | |---|---| | web | Online Store | | pos | Point of Sale | | shopify_draft_order | Draft Orders |

Any other channel shows its raw name. Your brand’s default channel policy - which channels count unless you override them here for the session - is a separate, persistent setting.

The Overview tab is a blended snapshot of revenue and paid efficiency for the selected date range, across Shopify, Klaviyo, Meta, Google, and TikTok.

KPI row 1: Store revenue, Orders, AOV, New customers. KPI row 2: Ad spend (Meta, Google and TikTok), MER, New-customer CAC, Email revenue share.

Directly below the two KPI rows, a Website activity section shows Google Analytics 4 sessions, engagement rate, purchase session rate, and ecommerce purchases when GA4 is connected. It has its own scope: it is never filtered by the sales-channel or account filter, and it links to the Website tab.

Below that, a watch strip of four cards - Revenue pace, Paid efficiency, MER, Lifecycle contribution - each shows a short explanation and a colored left border (green, amber, red, or gray) flagging whether that read looks healthy.

Charts and tables:

  • Revenue over time - daily revenue and orders, in your brand’s reporting timezone.
  • Paid acquisition - Spend, Conv. value, ROAS, CPA, CTR, CPC.
  • Email - Email rev., Rev. share, Flow rev., Campaign rev., Sent, Recipients.
  • Revenue by source - Channel, Revenue, Spend, % of total, Conversions, AOV, and ROAS (green at 3 or higher, amber at 2 or higher, red below), with channel names normalized for readability - for example Klaviyo email shows as “Email (Klaviyo)”, Meta as “Meta Ads”, Google as “Google Ads”.
  • Day-of-week chart, plus a Best & slowest days card.

The Countries tab shows Shopify revenue by shipping country for the selected date range.

  • A Revenue share donut (top 8 countries, plus “Other”).
  • A Revenue over time stacked area chart (top 5 countries, plus “Other”).
  • A Revenue by country table - Country, Revenue, % of total, Orders, AOV, and a comparison delta - with a Total row. 15 rows per page.

A revenue basis chip under the title says what revenue on this tab includes, for example “Incl. tax & shipping · refund-adjusted”. It follows your brand’s revenue basis (see below), the same as Store revenue on the Overview tab.

The Cohorts tab shows a retention matrix and cumulative LTV curves built from your retained Shopify order history, with dimensions for first product, first-order discount code, first-order country, and acquisition channel. It’s substantial enough to have its own page - see Cohorts.

The Inventory tab flags products at risk of a stockout, based on recent sell-through velocity against current stock. See Inventory.

The Products tab shows Shopify sales by product for the selected date range.

  • A Revenue share donut.
  • A Totals card - Merchandise revenue (with a comparison delta) and Units sold.
  • A Revenue by product table, searchable by product name - Product, Units, Revenue, % of total, Discounts, Refunds, COGS, Margin, Margin %, Cost coverage, Return rate, and a comparison delta. 15 rows per page.

COGS, Margin, Margin %, and Cost coverage come from Kreel’s contribution-margin model: current unit costs against net merchandise revenue, always ex-tax/ex-shipping regardless of your brand’s revenue basis. A product shows “Insufficient coverage” instead of a margin figure when Kreel doesn’t have cost data for enough of its sold revenue - see Contribution margin for the coverage rule and where unit costs come from. A caption above the table explains Return rate: refunded units divided by sold units for the window, which can exceed 100% since a refund can relate to an order from an earlier period; a product running well above the store-wide baseline shows a “times store average” note, and one with a linked, actively-running Meta ad shows its daily spend alongside the rate.

Revenue basis is what counts as revenue for your brand: whether tax and shipping are included. It’s a setting on your brand, not a control on this page - the Overview and Countries tabs fully reflect your brand’s chosen basis, while the Products tab always excludes shipping regardless of that setting (see above); the Overview Store revenue tile and the Countries and Products tabs each show a basis chip saying exactly what they include. Select the chip to read how that revenue is counted, why it differs from Shopify’s Net sales and Total sales, and to jump to the Margin tab’s Net merchandise revenue row, which bridges store revenue to net merchandise.

Two independent options:

  • Include tax - whether tax collected on orders counts as revenue.
  • Include shipping - whether shipping charged to customers counts as revenue.

The default is both included, matching “whatever the customer paid” - the same figure as Shopify’s own Total Sales. Because this is a read-time setting rather than something baked into stored data, changing it restates every historical number on every surface immediately: dashboard, REST API, MCP, and the CLI.

See Revenue accounting for the full model, including why Kreel’s revenue can differ from Shopify’s own Total Sales report even at the default basis. Contribution margin uses a separate, fixed ex-tax/ex-shipping basis independent of this setting - see Contribution margin.

Every Performance tab has Save view in its header: save the date range, Compare, account and sales-channel filters, plus the tab’s own settings (for example the Cohorts dimension and metric, the Website filters, or the rows plotted on Countries and Products), then reopen them from the same menu or share them with your brand.

The Ask button in the header hands the view on screen to your agent. Its menu also offers Publish this as a report with your agent: your agent reads the same view and publishes it as a hosted Kreel report, keeping its range, comparison and filters.

Everything on this page - the blended KPIs, the revenue-by-source breakdown, and the country and product tables - is also available to your connected AI agent through MCP or the CLI, so you can ask for the same numbers in plain language instead of clicking through tabs. For exact metric formulas, see the metrics glossary.

Email support@kreel.ai.