---
title: "A member's email change was confirmed (console server)"
method: POST
path: "/members:email-changed"
tags: ["Members"]
---

# A member's email change was confirmed (console server)

`POST /members:email-changed`

## Request

- Base URL: `https://api.customdomain.ai/v1`
- URL: `https://api.customdomain.ai/v1/members:email-changed`
- Auth: API key in header `X-Provision-Secret`

The console's server calls this once a person's email change is confirmed, guarded by the provision secret like `POST /tenants:provision`. By then the console has already corrected the member row it shares with the control plane, so `email` is the member's new, saved address. The control plane's one job here is to mirror the change to the CRM contact for that member (owner or teammate), best effort and never blocking the console: it answers `ok: true` as soon as the mirror is queued.

## Request body

- object
  - `tenant_id` string, required
  - `email` string, required: The member's new address. Lower cased by the control plane.

## Response `200`

Mirror queued

- object
  - `ok` boolean, required

## Other responses

- `400`: Error envelope: {code, title, details}.
- `401`: Error envelope: {code, title, details}.

---

[API](https://skmtc.dev/customdomain/apis/customdomain-control-plane-api.md) · [All operations](https://skmtc.dev/customdomain/apis/customdomain-control-plane-api/llms.txt) · [OpenAPI document](https://skmtc.dev/customdomain/apis/customdomain-control-plane-api/revisions/34d89cb7a7cd?raw)
