Context
Tracking issue for the extension side of the cross-platform Amplitude analytics refactor proposed in stellar/wallet-eng-monorepo#10. See the RFC for full event-mapping tables, property-bucketing rationale, and the shared schema catalog.
Goal: align the extension's Amplitude events with freighter-mobile on a shared domain.action_past schema, clean up the property model, and retire redundant events.
Dependency: This work is designed to land after the unified user ID project ships (sets Amplitude user_id to a stable cross-platform identifier). Do not start the migration before that lands.
Each checkbox below is a small, independently shippable task.
Amplitude taxonomy cleanup — account property limit ⚠️ (do now, NOT blocked by the unified user ID dependency)
The shared dev-sdf/freighter Amplitude project has hit its maximum number of event properties (dashboard warning), so we can't add new properties until we free some up. This is account-level taxonomy hygiene — it does not require new app code and is not gated on the unified user ID project. Prioritize it ahead of the schema migration so the refactor has property headroom to land into.
Schema migration
Property-model cleanup (RFC Part 2a)
Make swap a first-class domain (RFC Part 1.3)
Missing events to add (RFC Part 2c)
Remove / reclassify redundant events (RFC Part 2b)
Shared product/analytics decisions (cross-platform spike)
These need a product/analytics decision before implementation; resolve once and apply to both platforms:
Companion mobile tracking issue: see freighter-mobile.
Context
Tracking issue for the extension side of the cross-platform Amplitude analytics refactor proposed in stellar/wallet-eng-monorepo#10. See the RFC for full event-mapping tables, property-bucketing rationale, and the shared schema catalog.
Goal: align the extension's Amplitude events with freighter-mobile on a shared
domain.action_pastschema, clean up the property model, and retire redundant events.Each checkbox below is a small, independently shippable task.
Amplitude taxonomy cleanup — account property limit⚠️ (do now, NOT blocked by the unified user ID dependency)
The shared
dev-sdf/freighterAmplitude project has hit its maximum number of event properties (dashboard warning), so we can't add new properties until we free some up. This is account-level taxonomy hygiene — it does not require new app code and is not gated on the unified user ID project. Prioritize it ahead of the schema migration so the refactor has property headroom to land into.Schema migration
loaded screen: …events into a single canonicalscreen.viewedevent withscreen_name,flow,step,surfacepropertiesdomain.action_pastcatalog (payment.completed,signing.transaction_approved, etc.) per RFC Part 3blockaid: scanned domain/transaction/asset→blockaid.scan_completed+scan_target+resulttrustline removal error: *→trustline_remove.failed+reason_code(has_balance,buying_liabilities,low_reserve)send payment: selected type payment/… path payment→payment.type_selected+payment_typeadd token: confirmed/rejected→asset_add.responded+decisionschema_versionto every new-schema event (dual-write period); enables old-vs-new parity validationProperty-model cleanup (RFC Part 2a)
platform,platformVersion→os_version,appVersion→app_version) on every eventwallet_count,has_hardware_wallet,has_imported_account,bundle_id)network,account_type,account_funded,is_hardware_account,account_id_hash)hw_connected(currently a per-event property) →has_hardware_walletuser prop or explicit connection eventaccount_id_hashfor account-level analysisMake swap a first-class domain (RFC Part 1.3)
swap.completed/swap.faileddirectly; stop inferring swap success from send/path-payment eventsMissing events to add (RFC Part 2c)
app.opened(with one-time snapshot:surface,network,connection_type,effective_type,schema_version)transaction.submitted(distinct funnel step from approval, for sign-and-submit)collectible_send.completed/collectible_send.failedasset_remove.respondedscreen.viewedparity for transaction-details screensRemove / reclassify redundant events (RFC Part 2b)
user signed transaction,recover account finished: closed recover account flow,loaded screen: trustline errorloaded screen: debug,loaded screen: integration test; moveloaded screen: loadingto observability if keptuser cancelled signing flow,reviewed authorization entry,backup phrase: successloaded screen: confirm sidebar request→screen.viewed+surface=sidebarloaded screen: account migration*(5 events) — the Security-screen entry point is currently commented out, so they may emit ~zero; retire or keep based on event countsmanage asset: add token— keep only if funnel owners need an initiation stepShared product/analytics decisions (cross-platform spike)
These need a product/analytics decision before implementation; resolve once and apply to both platforms:
payment.*or alwaysswap.*?screen.viewed+ action outcomes?surfaceproperty vs separate screen names? (RFC recommendssurface)Companion mobile tracking issue: see freighter-mobile.