decentraland / decentraland/godot-explorer
[Data] Client Open Source Tracking - Segment event + deeplink parameters
- Dominant language
- Rust
- Stars
- 18
- Forks
- 19
- Avg merge
- 4d 2h
- Merged PRs (30d)
- 43
Description
## **⚠️ Problem:**
No way to tell an organic open from a push open, an ad open or a shared link. The Day-1 notification (#1651) has shipped for months with no measurable CTR, and no campaign on #2585 can be judged without this. Blocks the Retention metric on every push issue.
## **🏁 Scope:**
`client_open` Segment event on every app open carrying a resolved `source`, parsed from the launch deeplink, landing in a Snowflake table joinable to the send log (#2838). Dashboard included. Not an attribution SDK — parameters we set, on links we control.
## **📝 Deliverables:**
- [ ] `client_open` Segment event on every app open — cold and warm
- [ ] `source` resolved to `organic` | `push` | `deeplink` | `ad` | `share` | `unknown`
- [ ] Parse deeplink params — `campaign_id`, `notification_id`, `source`, `position`, `realm`
- [ ] Warm-start opens attributed, not only cold start
- [ ] `session_id`, platform, app_version, guest vs wallet on the event
- [ ] Snowflake table under `"DCL"."PROD"` + Segment → Snowflake mapping
- [ ] Attribution window defined — session credited to a push within N hours
- [ ] Metabase dashboard — opens by source, push CTR, reactivations per campaign
- [ ] Opens predating this ship as `unknown`, never `organic`
## Metrics
This is the measurement job. Target: 100% of app opens carry a `source`; every push open joins to a `campaign_id` in the #2838 send log. Verified by a reconciliation query — sends vs attributed opens — on the first campaign.
## **🔗 References:**
- [#2477](https://github.com/decentraland/godot-explorer/issues/2477) — states the Segment pipeline already exists and was hardened in #2440; emit through that path, do not add a second one
- [#1919](https://github.com/decentraland/godot-explorer/issues/1919) — deeplink ignored on a foregrounded app; the warm-start case this event must cover
- [#1913](https://github.com/decentraland/godot-explorer/issues/1913) — Day-1 deeplink pointed at a dead spawn for weeks with no signal; the gap this closes
- [#2664](https://github.com/decentraland/godot-explorer/issues/2664) — PRD analytics section; event schema and attribution window originate there
Contributor guide
Assessment
This issue has not been assessed yet.