Email Deep-Link Route Map · AppsFlyer OneLink

The single source of truth for which email link opens which app screen. Every OneLink used in a TMA email carries a deep_link_value from the table below. This is the artifact Task 26 (Nic) hands the RN team (Task 24 / RN‑6) and the email team.
v1.0 · 14 Jul 2026 · Part of the TMA Analytics Master Brief · Companion: RN Team Brief ↗
Locked, like event names — use these deep_link_value keys verbatim. Add a new value here before it's used in an email.
← Master Analytics Brief RN Team Brief →
How to read a row

Each OneLink email link sets one deep_link_value. On a phone with the app → it opens the Opens screen. On a phone without the app → App/Play Store → after install it lands on that same screen (deferred). On a desktop / laptop → it opens the Web fallback URL. Unknown or empty value → the app home (today). Never crash on an unmapped link.

The route map

deep_link_value Opens (screen) App route (proposed — RN confirms) Sub-params Web fallback (desktop / no app) Used by (email / lifecycle)
today default Today / Home tab — the progression room /(app)/(tabs)/home confirmed web app home / themovementathlete.com Welcome, generic "open the app", re-engagement. The fallback for any unknown value.
workout The day's workout (or a specific one) Home → workout player confirm sub1 = workout_id (omit = today's) web app workout, else app home "Your 3 free workouts are waiting" · no-workout nudge (Task 11 · segment B) · streak / return.
resume_assessment Resume / start the assessment (skill-tree placement) assessment route confirm web quiz / assessment (/start-training) Welcome "finish setup" · survey-unfinished (Task 11 · segment A).
upgrade In-app paywall / upgrade /(app)/pages/upgradePremium confirmed sub1 = offer / plan (optional) web checkout (offer URL, e.g. /30trial / /start-training) Trial nudges · paywall-seen-no-trial (Task 11 · segment D) · promos. Post-RN‑4 this renders the RevenueCat remote paywall.
update_payment high value Update card / billing store billing mgmt (app subs) / in-app billing route confirm web billing portal (account → billing) Dunning / failed-card recovery (Task 21). Never send dunning to home — this row is why the add-on pays for itself.
skills Skill tree (or a specific skill) skills route confirm sub1 = skill_id (optional) web skills Progression / education emails · "you unlocked…".
settings (optional) Settings (e.g. notifications) settings route confirm sub1 = section (optional) Account / notification-permission prompts. Lower priority.

confirmed route verified in the live MovementAthlete-RN repo · confirm proposed — RN team confirms the exact route in the confirm-pass before wiring.

The four rules (locked)

How a link is built

OneLink base (Task 26)      https://go.themovementathlete.com/<template>
  ?deep_link_value=workout        ← the key from the table
  &deep_link_sub1=1234            ← optional id / offer
  &af_web_dp=https://…            ← web fallback (desktop / no app)
  &pid=email&c=<campaign>&af_channel=<sequence>   ← attribution (which email drove it)

The email team uses the OneLink URL pattern (Task 26 provides it); they only choose the deep_link_value + optional sub-param. The attribution params (pid/c/af_channel) are what make "which email drove revenue" answerable — the same build, one artifact.

Who uses this table

TMA Email Deep-Link Route Map v1.0 · 14 Jul 2026 · Lives inside the Analytics Master Brief site · Change control: add a row here (and tell the RN team) before any new deep_link_value ships in an email.