Developer / App Events API

App Events API
Make your app's "usage" visible in the Dev Dashboard

Just send any in-app event to a single endpoint, and it shows up in the Dev Dashboard Logs alongside Webhooks, Function runs, and API calls. You can also optionally tie it into "pay for what you use" billing.

What's on this page
  1. What actually changes (a 30-second take)
  2. How it works: how an event reaches the Dev Dashboard
  3. The 5 categories of events you can send, with examples
  4. Get started in 3 steps
  5. App Events → pay for what you use (optional)
  6. 5 points developers should know
  7. 3 use cases you can put to work
  8. A one-line summary for your pitch

1What actually changes

Until now, things like Webhooks, Function runs, and API calls — the observation points provided by Shopifywere all that flowed into the Dev Dashboard.
The App Events API lets you send in what happens on your app's side yourself (feature usage, workflow completion, performance, conversion, billable actions). And Shopify connects it all the way through to billing.

Before: Shopify's perspective only

Webhooks, Function runs, API calls — you could only see the "called / received" that's visible from Shopify's side.

App Events: your app's perspective integrated too

Just send facts from inside your app — like "feature X was used" or "workflow Y completed" — to a single endpoint, and they line up in the Dev Dashboard.

2How it works: how an event reaches the Dev Dashboard

Your app bulk_edit_completed report_generated order_processed Facts that occur inside the app POST event_handle + attributes App Events API A single endpoint receives them Shopify relays them Dev Dashboard Logs ▣ Webhooks ▣ Function executions ▣ API calls ▣ App Events ★ ... monitoring / debugging optional Shopify App Pricing meter ↔ event_handle for usage-based billing Metering / billing handled by Shopify
The minimum payload is event_handle + attributes — these two.
Just decide and send "what happened (the handle)" and "what extra info there is (attributes)," and it mixes in with the other Shopify logs in the Dev Dashboard, lined up chronologically.

3The 5 categories of events you can send, with examples

Feature usage
Feature usage
bulk_edit_completed report_generated automation_created
Workflows
Business workflow
onboarding_completed campaign_sent export_finished
Performance
Performance & failures
sync_failed api_timeout rate_limit_hit
Conversion
Conversion signals
limit_hit premium_viewed milestone_achieved
¥
Billable
Billable actions
order_processed email_sent label_printed
The categories above are explicitly stated in the article as examples. The events you can actually send are "any fact that happens in your app" — a free-form design not bound to categories.

4Getting started in 3 steps

1
handle

Define an event

Decide on the event_handle and attributes you want to track (e.g. bulk_edit_completed).

2

POST to the API endpoint

Send to a single endpoint. It automatically flows into the Dev Dashboard Logs.

3

Check it in the Dev Dashboard

View it as a chronological log alongside Webhook / Function / API calls.

Concept: the structure of the payload you send (only the minimal elements, taken from the article's description)
// POST {App Events API endpoint}
{
 "event_handle": "bulk_edit_completed",
 "attributes": {
 // 追跡したい付帯情報を任意に詰める
 }
}
* Specs such as the exact endpoint URL / authentication method / rate limits are not described in this article. Before implementing, be sure to check the documentation linked from "Learn more".

5App Events → pay only for what you use (optional)

Shopify App Pricing , you canlink any App Event directly to a usage-based charge.
Just define a "meter" in the Partner Dashboard and link it to the corresponding event_handle . Shopify handles both metering and billing = no extra code.
App Event event_handle : "email_sent" match Partner Dashboard Define a meter meter → event_handle Unit price / cap / name Shopify automatically... ① Counts the number of events ② Adds it to the invoice ③ Charges the merchant Merchant Pays only for what they use
App Events is available now for all apps, regardless of billing method.
It's not "this doesn't apply because my app is free" — you can use it even just for metering and monitoring.

65 points engineers should keep in mind

1 EP

1. The destination is a single endpoint

Rather than preparing a different URL for each event type,use a single API endpoint and distinguish them by event_handleapproach. The sending logic takes very little to implement.

2. Into Dev Dashboard Logs, automaticallymerged

After receipt, it's shown alongside Webhooks / Function executions / API calls on the same screen. Because it unifies your observation point, when an incident occurs you can quickly tell whether it's "on Shopify's side or the app's side."

3. Standardizing performance measurement

sync_failedapi_timeoutrate_limit_hit . If you make a practice of sending these, you can track the "when / what / how much" of anomalies in the Dev Dashboard without building your own APM.

meter

4. Link a meter so that "measurement = billing"

When you link an event_handle to a meter in the Partner Dashboard,a single send produces both the log and the billing at once. There's no need to build a second implementation just for billing.

{ }

5. How you design event_handle namesdirectly becomes your analysis axis

When you later turn them into meters / aggregate reports / set alert conditions, inconsistent handle names fragment your analysis. Verb_pastTense (order_processedlabel_printed) and the like— lock in a naming convention from the start. Note that the per-handle quantities, limits, and schema specifications are not covered in this article.

73 use cases you can put to work

USE CASE 1

Deliver an "actual-usage dashboard" for a contracted custom app with zero implementation

Challenge
You want to visualize "which features are used, when, and how much" for a custom app you built in-house for a merchant, but standing up a separate logging backend adds maintenance overhead.
Approach
Embed App Events in the triggers of your main features (e.g., report_generatedautomation_created). Run Dev Dashboard Logs as an "actual-usage monitor."
Result
Visualize usage without your own aggregation backend or storage. In regular merchant meetings, you can make evidence-backed replacement proposals.
Technical note
Because they line up chronologically on the same screen as Webhooks / Function executions / API calls, you can trace everything from user actions to system behavior in a single view.
Number of incidents timeout sync rate
USE CASE 2

Consolidate "incident monitoring" for an external-service integration app into the Dev Dashboard

Challenge
In an app that hits many external APIs—inventory sync, carriers, core-system integration—it takes a long time to isolate where things got stuck when an incident occurs.
Approach
sync_failedapi_timeoutrate_limit_hit Send them with attributes. In the Dev Dashboard, cross-reference them with Webhook receipts and Function executions and trace them chronologically.
Result
Shorten the time from support inquiry to root-cause identification. It also serves as evidence logs for SLA violations.
Technical note
The article doesn't specify event retention, searchability, or alert integration. If deep incident analysis is required, it's safest to design with an external APM in mind.
¥ per event
USE CASE 3

From "flat-rate" to "outcome-based": rebuilding your app's pricing model to be data-driven

The problem
The app shipped as a SaaS product on flat-rate billing, but the gap in actual cost between heavy and light users was large, so profitability stayed unstable.
The approach
Send the actions that directly drive revenue (order_processedemail_sentlabel_printed) via App Events. Define a meter in the Partner Dashboard, tie it to an event_handle, and bill it as usage-based charges through Shopify App Pricing.
The result
Because Shopify takes over metering, billing, and dunning, the cost of building and running your own billing logic disappears. A/B testing pricing plan changes also becomes easier.
Technical notes
It's explicitly stated to be available for apps with any billing method (regardless of billing method). Retrofitting it onto an existing flat-rate app is a realistic migration design.

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

"Just send any in-app event to a single endpoint and you can observe it in the Dev Dashboard alongside Webhook / Function / API calls, and by tying it directly to a meter,
Shopify automatically handles metering and billing for you.
Available now for every app and every billing method."