---
title: "Set Email"
method: POST
path: "/me/email"
tags: ["me"]
---

# Set Email

`POST /me/email`

Set primary email for phone-only or incomplete users.

Used during account completion and other email collection points. The email is:
1. Set as primary (unverified) - for communications TO user
2. Verification email sent - so they can use it for forwarding

Returns 409 if email already exists on another account.

The email is mandatory for account completion but verification remains optional.
get_user_by_email() checks both primary and verified emails, so an unverified
primary email set here still prevents another account from claiming it.

## Request body

- SetEmailRequest — Request to set the authenticated user's primary email.
  - `email` string, email, required
  - `tracking` RegistrationTrackingData — Tracking data sent FROM THE FRONTEND during registration.
    - `meta` MetaTrackingData — Meta-specific tracking data sent from the frontend.
      - `fbp` string, nullable
      - `fbc` string, nullable
      - `event_id` string, nullable
    - `attribution` AttributionData — First, latest, and separately preserved latest paid attribution.
      - `first_touch` AttributionTouch — A single captured attribution touch.
        - `attribution_version` integer
        - `captured_at` string, date-time, nullable
        - `landing_path` string, nullable
        - `referrer_path` string, nullable
        - `capture_state` 'observed_no_referrer', nullable
        - `utm_source` string, nullable
        - `utm_medium` string, nullable
        - `utm_campaign` string, nullable
        - `utm_content` string, nullable
        - `utm_term` string, nullable
        - `utm_id` string, nullable
        - `utm_adgroup` string, nullable
        - `utm_asset_group` string, nullable
        - `utm_creative` string, nullable
        - `utm_content_id` string, nullable
        - `utm_placement` string, nullable
        - `fbclid` string, nullable
        - `twclid` string, nullable
        - `oppref` string, nullable
        - `gclid` string, nullable
        - `gbraid` string, nullable
        - `wbraid` string, nullable
        - `partnership_code` string, nullable
        - `transaction_id` string, nullable
        - `creative_id` string, nullable
      - `last_touch` AttributionTouch — A single captured attribution touch.
        - `attribution_version` integer
        - `captured_at` string, date-time, nullable
        - `landing_path` string, nullable
        - `referrer_path` string, nullable
        - `capture_state` 'observed_no_referrer', nullable
        - `utm_source` string, nullable
        - `utm_medium` string, nullable
        - `utm_campaign` string, nullable
        - `utm_content` string, nullable
        - `utm_term` string, nullable
        - `utm_id` string, nullable
        - `utm_adgroup` string, nullable
        - `utm_asset_group` string, nullable
        - `utm_creative` string, nullable
        - `utm_content_id` string, nullable
        - `utm_placement` string, nullable
        - `fbclid` string, nullable
        - `twclid` string, nullable
        - `oppref` string, nullable
        - `gclid` string, nullable
        - `gbraid` string, nullable
        - `wbraid` string, nullable
        - `partnership_code` string, nullable
        - `transaction_id` string, nullable
        - `creative_id` string, nullable
      - `last_paid_touch` AttributionTouch — A single captured attribution touch.
        - `attribution_version` integer
        - `captured_at` string, date-time, nullable
        - `landing_path` string, nullable
        - `referrer_path` string, nullable
        - `capture_state` 'observed_no_referrer', nullable
        - `utm_source` string, nullable
        - `utm_medium` string, nullable
        - `utm_campaign` string, nullable
        - `utm_content` string, nullable
        - `utm_term` string, nullable
        - `utm_id` string, nullable
        - `utm_adgroup` string, nullable
        - `utm_asset_group` string, nullable
        - `utm_creative` string, nullable
        - `utm_content_id` string, nullable
        - `utm_placement` string, nullable
        - `fbclid` string, nullable
        - `twclid` string, nullable
        - `oppref` string, nullable
        - `gclid` string, nullable
        - `gbraid` string, nullable
        - `wbraid` string, nullable
        - `partnership_code` string, nullable
        - `transaction_id` string, nullable
        - `creative_id` string, nullable
    - `event_source_url` string, nullable

## Response `200`

Successful Response

- SetEmailResponse — Response after setting email.
  - `email` string, required
  - `verification_sent` boolean, required
  - `account_state` 'pending_email' | 'complete', required
  - `next_step` 'email' | 'app', required
  - `account_completed` boolean, required
  - `registration_event_id` string, nullable
  - `message` string, required

## Other responses

- `422` — Validation Error

## Changes

> 21 revisions in range; 1 not diffed.

- **2026-09-23** `5d2121d26b96` — 3 info
  - added the new optional request property `tracking/anyOf[subschema #1: RegistrationTrackingData]/attribution/anyOf[subschema #1: AttributionData]/first_touch/anyOf[subschema #1: AttributionTouch]/oppref`
  - added the new optional request property `tracking/anyOf[subschema #1: RegistrationTrackingData]/attribution/anyOf[subschema #1: AttributionData]/last_paid_touch/anyOf[subschema #1: AttributionTouch]/oppref`
  - added the new optional request property `tracking/anyOf[subschema #1: RegistrationTrackingData]/attribution/anyOf[subschema #1: AttributionData]/last_touch/anyOf[subschema #1: AttributionTouch]/oppref`
- …earlier changes not shown

[Full history](https://skmtc.dev/helloaxel/apis/client-api-gateway/changes/me/email/post.md)

---

[API](https://skmtc.dev/helloaxel/apis/client-api-gateway.md) · [All operations](https://skmtc.dev/helloaxel/apis/client-api-gateway/llms.txt) · [OpenAPI document](https://skmtc.dev/helloaxel/apis/client-api-gateway/revisions/82939784d881?raw)
