Skip to main content

Full-stack capabilities to power app analytics

Shopify Analytics is now a full-stack platform for apps. Model, query, embed, and enrich analytics on Shopify without managing your own data infrastructure.

For app developers, building merchant-facing analytics has always meant standing up your own stack: a charting library, a data warehouse to sync merchant data into, handling currencies and locales, and a UI that never quite matched the Shopify admin. With these updates, Shopify Analytics becomes a full-stack analytics platform that apps can build on directly, offloading the infrastructure to Shopify and putting your app's data where merchants already make decisions.

Here's what shipped, and how it fits together.


Anchor to Bring your app's data into Shopify AnalyticsBring your app's data into Shopify Analytics

Metafields

Mark a metafield definition as analytics-queryable, and it becomes a dimension in ShopifyQL alongside store data. Add, for example, a campaign_source metafield to an order or a subscription_status metafield to a customer. Merchants can group, filter, and chart on it—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 (early access)

App Events in Analytics makes the custom events your app already emits queryable in Shopify Analytics. Declare events from the new registry in shopify.app.toml, emit them through the App Events API, and merchants can query FROM app_events in ShopifyQL the same way they query their store data.

FROM app_events
SHOW emails_sent
GROUP BY app_name
TIMESERIES day
VISUALIZE total_sales

Anchor to Query it: ShopifyQL API + dev docsQuery it: ShopifyQL API + dev docs

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

Why it matters:

  • For developers: Build against a stable, versioned, schema-documented surface.
  • For LLMs and agents: Public schema docs mean AI toolchains can generate working ShopifyQL.

Anchor to Embed it: Analytics Web ComponentsEmbed it: Analytics Web Components

The same web components that render analytics in the Shopify admin— the metric card (<s-shopifyql-metric-card>), the metrics bar (<s-metrics-bar>), and its date picker (<s-metrics-bar-date-picker>)—are now available for third-party apps to embed. Render a chart with a single element:

<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>

Load analytics-ui.js (after polaris.js), enable Direct API access, then drop in the element. No charting library. No currency or locale handling. No data-formatting code. The component runs the query, renders the chart, and stays in sync with the Shopify admin.


Anchor to Enrich it: Annotations API + Metric Targets APIEnrich it: Annotations API + Metric Targets API

Two new APIs let apps and merchants add context on top of the numbers.

Annotations API

Partner apps can now create annotations directly on merchant charts through the GraphQL Admin API. Loyalty apps can mark the day a program launched; email apps can mark a new campaign; subscription apps can mark a pricing change—with proper app attribution rendered in the chart panel.

Required scopes: read_analytics_annotations, write_analytics_annotations.

Metric Targets API

Merchants can now set targets on any metric—total sales next quarter, ad-attributed revenue this week—and track progress visually inside reports and dashboards. Targets are a new core primitive in the GraphQL Admin API, so apps can create, read, and overlay them on charts programmatically.


How it fits together

  1. Model your data with Metafields (and App Events, in early access).
  2. Query with the ShopifyQL API.
  3. Embed with Analytics Web Components.
  4. Enrich with Annotations and Metric Targets.

All inside Shopify, where merchants already make decisions.


Was this page helpful?