Skip to main content
Changelog

Surfaces & APIs

App Events: See all your app activity in one place

Send any app event to one API endpoint and see a holistic view of your app in one place.

Send any app event to one API endpoint and see a holistic view of your app in one place. With App Events, you can now track merchant behavior inside your app and see it in the same Dev Dashboard where you monitor webhook deliveries, Function executions, and API calls.

Anchor to App Events: Complete the pictureApp Events: Complete the picture

Until now, understanding how merchants use your app required separate analytics tools. Apps could receive data from Shopify (webhook deliveries, Function executions, API calls) but if a sync failed, a feature went unused, or a merchant hit an error, you had no way to log that back to Shopify. Debugging meant switching between your own monitoring tools, separate databases, and dashboards outside of Shopify.

App Events changes that.

Anchor to Send any event through one APISend any event through one API

The App Events API accepts any event from your app. You define the event_handle and attributes. There's no fixed list of event types. Track whatever matters to your app:

  • Feature usage: bulk_edit_completed, report_generated, automation_created
  • Workflows: onboarding_completed, campaign_sent, export_finished
  • Performance: sync_failed, api_timeout, rate_limit_hit
  • Conversion signals: limit_hit, premium_viewed, milestone_achieved
  • Billable activities: order_processed, email_sent, label_printed

Any event you send can also become a billable meter in Shopify App Pricing, but it doesn't have to be. You decide which events are for analytics and which ones power billing.

Anchor to See it all in one dashboardSee it all in one dashboard

App events flow into your Dev Dashboard Logs automatically, alongside your existing data — webhooks, Functions, GraphQL requests, REST requests. No separate analytics platform to maintain or multiple dashboards to juggle. You see what Shopify is doing for your app and what your app is doing for merchants, in one complete view.

Anchor to Build from real behaviorBuild from real behavior

The App Events API tracks first-party data happening inside the platform it runs on. See which features drive engagement, spot the usage patterns that predict retention, catch the drop-offs that lead to churn. Build what merchants actually use, based on data you own, not approximations from third-party tools with incomplete access.

Anchor to Unlock revenue from any eventUnlock revenue from any event

On Shopify App Pricing, any event your app already emits can be turned into a usage-based charge. Define a meter in the Partner Dashboard, match it to an event_handle, and Shopify handles the metering and invoicing from there. The same event that shows up in your Dev Dashboard analytics also drives the merchant's bill. No separate billing integration, no code changes.

Let's put this into practice:

Imagine you're building an inventory sync app. You ship a new bulk import feature and want to know if merchants are actually using it, and whether it's working.

You send events through the App Events API: bulk_import_started when a merchant kicks off an import, bulk_import_completed when it finishes, and bulk_import_failed when something goes wrong. Each event carries attributes like item_count and, for failures, an error_type.

/* POST /app/unstable/events */
const response = await fetch("https://api.shopify.com/app/unstable/event", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer {BEARER_TOKEN}",
},
body: JSON.stringify({
shop_id: 23423423,
event_handle: "bulk_import_failed",
timestamp: "2026-05-08T14:30:00Z",
idempotency_key: "evt_88012345",
attributes: {
item_count: 340,
error_type: "csv_parse_error",
},
}),
});

const data = await response.json();

A few days after launch, you open your Dev Dashboard and filter by bulk_import_failed. One shop stands out: they've triggered the same csv_parse_error six times in two days. You click into their event timeline and see the pattern: they start an import, it fails, they try again a few minutes later, same error. They're stuck.

You reach out, discover they're exporting from a system that adds non-standard column headers, and push a fix that handles the edge case. That merchant goes from six failures to a clean import the next day.

Without App Events, you'd have no idea that feature was broken for that shop. The import wasn't hitting your API error logs — it was failing inside your app's parsing logic, silently.

If you're charging per import with Shopify App Pricing, those same bulk_import_completed events can double as your billing meters. Filter by billable activities to validate charges in the same dashboard.

Anchor to One Dev Dashboard for your entire app businessOne Dev Dashboard for your entire app business

This is where it comes together.

App Events, alongside your current app data logs, gives you a more holistic view in your app business: data flowing in and data flowing out, both visible in one place.

For the first time, you get unified visibility into both infrastructure health and merchant behavior.

Start tracking app events with Shopify.

App Events gives you one endpoint, one dashboard, and the complete picture you need to make better decisions.

Was this page helpful?