{"version":"2.1.219","anchor":"upgrade-links-now-carry-a-per-surface-utm-campaign","canonical_anchor":"upgrade-links-now-carry-a-per-surface-utm-campaign","heading":"Upgrade links now carry a per-surface UTM campaign","tier":"internal","area":"Elsewhere","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.219\/e\/upgrade-links-now-carry-a-per-surface-utm-campaign","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.219","markdown":"### Upgrade links now carry a per-surface UTM campaign\n\nUpgrade links now include tracking parameters so each entry point is attributable.\n\n**What**\n\nEvery link into the Max upgrade flow is now built with source, medium and campaign query parameters instead of pointing at the bare upgrade URL, so each entry point is attributable.\n\n**Details**\n\n- The flow builds `https:\/\/claude.ai\/upgrade\/max?utm_source=claude_code&utm_medium=cli&utm_campaign=<surface>`.\n- Surfaces in use: `pro_trial_expired_dialog`, `rate_limit_options_menu`, and `upgrade_command` from the `\/upgrade` command.\n- The pro-trial-expired dialog was also switched to the same shared entry point the rate-limit options menu already used.\n- Active for everyone; no gate.\n\n**Evidence**\n\n`https:\/\/claude.ai\/upgrade\/max?utm_source=claude_code&utm_medium=cli&utm_campaign=`\n\n- Area: Elsewhere\n- Names: `\/upgrade`\n- Tier: Under the hood\n- Useful: 1\/5\n- Signal: 0\/5"}