Developer Changelog / For app developers

Shopify Analytics is now
a full-stack analytics platform that apps can build on

Chart libraries, a data warehouse, currency/locale handling, and UI that matches the admin. The stack you used to stand up yourself for every merchant-facing analytics feature can now be handed off to Shopify entirely. Your data lives where merchants already make decisions: the Shopify admin.

On this page
  1. In 30 seconds: what changed
  2. The big picture: how the 4 layers connect
  3. 1. Get data in: Metafields / App Events
  4. 2. Query it: ShopifyQL API + schema documentation
  5. 3. Embed it: Analytics Web Components
  6. 4. Add context: Annotations API / Metric Targets API
  7. The old DIY stack vs. the new setup
  8. 5 points developers should know
  9. 3 use cases you can put to work
  10. A one-line summary for your pitch

1In 30 seconds: what changed

Until now, putting a merchant-facing analytics view inside your app meant buildinga chart library, a data warehouse to sync merchant data, currency and locale handling, and a UI that never quite matched the Shopify admin all on your own.
With this round of updates, Shopify Analytics itself becomes a full-stack analytics platform that apps can build directly on top of, letting you offload the infrastructure to Shopify.

Before: build the stack yourself

Pick a chart library, stand up a DWH to sync merchant data, handle currency and locale yourself, and still end up with a UI that doesn't match the admin.

Now: build on Shopify Analytics

Map your app's data into the Shopify Analytics schema, query it with ShopifyQL, and render it with the same Web Components as the admin. Your app's data sits right where merchants already make decisions.

2The big picture: how the 4 layers connect

1. Model Metafields App Events (early access) Turn your app's data into analytics dimensions 2. Query ShopifyQL API Schema reference documentation A versioned query layer 3. Embed metric card metrics bar / date picker The same as the admin Web Components ④ Enrich Annotations API Metric Targets API Layer context and targets onto the numbers All inside Shopify: where merchants already make decisions
1

Model it with Metafields

(App Events is in early access)

2

Query it with the ShopifyQL API

The schema is documented

3

Embed it with Web Components

One element renders a chart

4

Enhance with Annotations / Targets

Layer annotations and targets on top

3① Get your data in: Metafields / App Events

Metafields: just mark the definition as analytics-queryable

Mark a metafield definition as analytics-queryable and it becomes available as a ShopifyQL dimension, right alongside store data.

Example

On orders campaign_source

Store which campaign an order came from in a metafield, then break sales down by campaign.

Example

On customers subscription_status

Store a customer's subscription status in a metafield, then group by status.

Merchants can then group, filter, and chart by it.No ETL, no separate schema(no ETL, no separate schema).
FROM sales
 SHOW total_sales
 GROUP BY order.metafields.my_app.campaign_source
 TIMESERIES day
VISUALIZE total_sales

App Events: pipe the events your app already emits into analytics Early access

App Events in Analytics makesthe custom events your app already emits queryable in Shopify Analytics. Three steps.

1. Declare

shopify.app.toml — declare your events in the new registry.

2. Send

Emit the events via the App Events API.

FROM

3. Get queried

Merchants can query FROM app_events in ShopifyQL, just like store data.

FROM app_events
 SHOW emails_sent
 GROUP BY app_name
 TIMESERIES day
VISUALIZE total_sales

* The above is copied verbatim from the sample in the original post.

4② Query : ShopifyQL API + developer documentation

Shopify's analytics query layer, the ShopifyQL API, is now a first-class building block of the platform , and shopify.dev now offers schema-level reference documentation . Every metric and dimension is defined with its type, description, and working examples.

What it means for developers

a stable, versioned, schema-documented surfaceis what you build against (stable, versioned, schema-documented surface).

What it means for LLMs / agents

Because the schema is public documentation,AI toolchains can generate ShopifyQL that actually runs.

5③ Embed : Analytics Web Components

Third-party apps can now embed the same Web Components that render analytics in the Shopify admin.

Sales
Metric card
<s-shopifyql-metric-card>
Metrics bar
<s-metrics-bar>
Date picker
<s-metrics-bar-date-picker>

One element and the chart appears

<s-shopifyql-metric-card
 heading="My weekly sales"
 query="FROM sales SHOW total_sales TIMESERIES week VISUALIZE total_sales TYPE bar">
</s-shopifyql-metric-card>
Step 1

analytics-ui.js must be loaded

after polaris.js. The load order is specified.

Step 2

Enable Direct API access

Required for the components to run queries.

Step 3

element on the page

From there it's just a drop-in.

No chart library. No currency/locale handling. No data-formatting code.
The components run the query, render the chart, andstay in sync with the Shopify admin.

6④ Add context : Annotations API / Metric Targets API

Two new APIs for layering context on top of the numbers. Usable by apps and merchants alike.

Annotations API

Partner apps can create annotations directly on a merchant's charts via the GraphQL Admin API .

  • Loyalty app : mark the program start date
  • Email app : mark a new campaign
  • Subscription app: mark a price change

In the chart panel, app attribution renders correctly.

Required scopes

read_analytics_annotations / write_analytics_annotations

Metric Targets API

Merchants can set targets on any metric and visually track progress inside reports and dashboards.

  • Example: total sales for next quarter
  • Example: ad-attributed sales this week

Targets are a new core primitive in the GraphQL Admin API. Apps can create and read them programmatically, and overlay them on charts.

7Traditional DIY stack vs. this setup

What you need to doTraditional (DIY stack)Shopify Analytics (this release)
How data is stored DIY Stand up a DWH to sync merchant data Not needed Metafields become analytics-queryable. No ETL, no separate schema
App-specific events DIY Store them on your own infrastructure and surface them yourself App Events FROM app_events lets merchants query them directly (early access)
Query layer DIY Design your own API ShopifyQL API Stable, versioned, and schema-documented
Chart rendering DIY Pick a chart library and implement it Web Components A single element. No library required
Currency and locale DIY Handle it yourself Not needed Handled by the component
UI consistency Approximate Not perfectly aligned with the admin Identical Same components as the admin, synced state
Adding context to the numbers Not documented (up to your own implementation) Annotations / Targets Layering annotations and goals via API

85 points developers need to know

1. Metafields get promoted to "analytics dimensions"

Just mark a definition as analytics-queryable and it becomes available to ShopifyQL GROUP BY .The essence of this feature is that merchants can slice and view the attributes your app attached, on their own. It has the potential to eliminate an entire ETL pipeline.

EARLY

2. App Events is early access — don't assume it's production-ready

The original post explicitly states early access (there is a sign-up link). Declarations go in the new shopify.app.toml registry, and delivery goes through the App Events API.In proposals, separate "features you can commit to today" from "features that require applying".

3. Load order and Direct API access are prerequisites

For Web Components, analytics-ui.js must be loaded after polaris.js , andDirect API access must be enabled before you place the elements. Both the order and the setting are spelled out as requirements, so this is the first thing to check when nothing renders.

4. Annotations come as a set of "scope" and "attribution"

The required scope is read_analytics_annotations / write_analytics_annotations.your app's attribution is rendered in the chart panel, so annotations double as a surface for app exposure. Note that adding a scope means re-authorization for existing apps.

5. Publishing the schema is aimed at letting LLMs write ShopifyQL

The original post splits the intent in two: for developers, "you can build against a stable, versioned, schema-documented surface",for LLMs and agents, "public schema documentation lets AI toolchains generate working ShopifyQL". That makes putting analytics query generation behind an in-app AI feature a realistic design option.
Note that the original post says nothing about available API versions, eligible plans, or pricing for each API. Check the relevant shopify.dev reference before you build.

93 use cases you can apply at work

DWH ETL chart
USE CASE 1

"Dismantle" your app's analytics screens and cut maintenance cost

Problem
For a merchant-facing dashboard, you're carrying a charting library, a DWH for syncing merchant data, currency/locale handling, and a UI built to mimic the admin — all in-house, which makes maintenance and changes expensive.
Approach
Move app-specific attributes into analytics-queryable metafields and replace rendering with <s-shopifyql-metric-card> / <s-metrics-bar> . Standardize all queries on the ShopifyQL API.
Impact
You can drop your chart library, currency/locale handling, and data-shaping code, and the UI matches the admin (staying in sync as well).
Technical notes
analytics-ui.js must load after polaris.js, with Direct API access enabled. Migration can run card by card in parallel, so you can peel it off incrementally.
Campaign start
USE CASE 2

Mark the moment a tactic worked, right on the merchant's chart

Problem
Even when you run tactics like email campaigns, loyalty, or subscriptions, the merchant's sales chart shows no trace of what happened when — making the impact hard to explain.
Approach
Use the Annotations API (GraphQL Admin API) to write campaign start dates, program launch dates, and price change dates onto the chart as annotations.
Impact
Changes in the numbers and the tactics behind them sit on the same screen. Annotations carry app attribution, so the merchant sees the app's contribution.
Technical notes
scope read_analytics_annotations / write_analytics_annotations is required. Plan on existing apps needing a re-authorization flow when adding the scope.
Targets
USE CASE 3

Turn app-specific KPIs into an operational tool by giving them targets

Problem
Apps surface metrics (emails sent, ad-attributed sales, subscription retention, and so on) but never connect them to the merchant's own goal-tracking cycle.
Approach
Use App Events (early access) to make app events queryable in FROM app_events , then use the Metric Targets API to set and overlay targets for quarterly sales or weekly ad-driven sales.
Impact
Merchants can track progress visually inside reports and dashboards. The app shifts from something they look at to something they work toward.
Technical notes
Targets are a new core primitive in the GraphQL Admin API, so apps can create them, read them, and overlay them on charts. App Events requires signing up for early access.

10A one-line summary you can use in a pitch

"The DWH, chart library, currency/locale handling, and lookalike UI you used to stand up yourself for merchant-facing analytics
can now be offloaded entirely to Shopify Analytics.
Model it with metafields → query it with the ShopifyQL API → embed it with Web Components → give it context with Annotations / Targets.
Your app's data now sits right inside the screens where merchants are already making decisions."

Links listed under "Get started" in the original post