From campaign to revenue: where do our installs come from – and which of them pay?
Not just how many shops a campaign brings, but which of them upgrade – and how much MRR that creates.
Click on /install?utm_… → row in install_attribution, cookie with install_uid
OAuth callback after install → install_uid is assigned to the shop
Plan change → shop_plan_event + GA4 event with UTM data
/v2/api/staff/report, JWT with scope report
KPIs, revenue & MRR per source, journeys, PDF
shop_id is setattribution_install_uidOnly new installs and re-installs are linked – logins into existing shops change nothing.
utm_source … utm_term, landing_url, refererNULLreferrer_domain = host without www.{ "success": true,
"install_uid": "3f6c2a1e-…" }
remote-auth) + Shopify HMAClink()shop_id and install_dateupgrade, downgrade or cancelattribution_install_uid → link to the campaignplan_change and plan_<target>install_source, install_campaign, …client_id = sha1(shopId) – pseudonymous, per shopintern.lovely-app.com/report · role reporting or admin · live from the API, 1 h Redis cache
Attributions (of which linked), plan events, breakdown by source, medium, campaign
per source, per plan, revenue lost to cancellations and downgrades
Plan history per shop: stable, cancelled, switchers, trial only, reactivated
Click a source or medium to filter the table; linked only via linked=1
same period one year earlier, via compare=1
all filters, A4 landscape, ready to share
shop_id is UNIQUE; a second link() for the same shop fails.
Blocked cookies, a different browser or direct App Store installs → unknown.
debug_mode=true in GA4All events land in the DebugView – review for production.
install_* parameters must be registered; no link to the web session.
Full documentation with endpoints, data model and SQL examples: Documentation (HTML / PDF)