Owlmetry
CLI

Ads

Rank acquisition campaigns, ad groups, keywords, and ads by lifetime USD revenue from the terminal.

Advertising Insights rank acquisition campaigns, ad groups, keywords, and ads by lifetime USD revenue from attributed users. Aggregates app_users by attribution source and joins each user's lifetime RevenueCat revenue. Refreshed daily and on every subscription webhook. Requires a RevenueCat integration for revenue data and Apple Search Ads attribution for human-readable names.

Drill from campaigns into ad groups, then into keywords + ads.

List campaigns

owlmetry ads campaigns --project-id <id> [--app-id <id>] [--source apple_search_ads] [--limit <n>]

Lists campaigns ranked by total lifetime revenue desc.

FlagRequiredDescription
--project-id <id>YesProject UUID
--app-id <id>NoScope to users acquired into a single app
--source <source>NoAttribution network. Defaults to apple_search_ads (only value populated today)
--limit <n>NoMax rows (1–500, default 100)

Drill into a campaign

owlmetry ads ad-groups <campaignId> --project-id <id> [--app-id <id>] [--source <source>] [--limit <n>]

Lists ad groups within a campaign, ranked by revenue.

<campaignId> is the network-specific ID returned by ads campaigns (e.g. an Apple Search Ads campaign ID).

List keywords + ads in an ad group

owlmetry ads leaves <adGroupId> --campaign-id <id> --project-id <id> [--app-id <id>] [--source <source>] [--limit <n>]

Returns two ranked tables side-by-side: keywords and ads. Apple Search Ads attributes a user to one or the other depending on whether the install came from a search keyword or an auto-driven ad placement.

FlagRequiredDescription
<adGroupId>YesAd group ID (from ads ad-groups)
--campaign-id <id>YesParent campaign ID
--project-id <id>YesProject UUID

Trigger a manual sync

owlmetry ads sync --project-id <id>

Fires revenuecat_sync (refreshes lifetime revenue per user) and apple_ads_sync (resolves any unresolved ASA IDs to readable names) for the project. Admin-only.

The daily revenuecat_sync cron at 03:00 UTC runs automatically across every project — use this command to force-refresh between cron runs or right after onboarding a new RevenueCat integration.

Output

Default table format renders ranked tables with columns: name, users, paying users, revenue, ARPU. Pass --format json for the raw API response (structured AdsCampaignsResponse, AdsAdGroupsResponse, AdsLeavesResponse).

Ready to get started?

Connect your agent via MCP or CLI and start tracking.