Update Email Contact API
Update an email contact identity and custom fields by email address.
Update a subscriber's email, first name, last name, or custom fields. The target subscriber is selected by the email address in the URL.
Request
PATCH /api/v1/email/contacts/:emailBody:
| Field | Type | Required | Description |
|---|---|---|---|
email | string | No | New email address. Must be unique in the organization. |
firstName | string | No | First name, capped at 120 characters. |
lastName | string | No | Last name, capped at 120 characters. |
customFields | Record<string, string> | No | Replaces the current custom fields after sanitization. |
curl -X PATCH https://growth.example.com/api/v1/email/contacts/lead%40example.com \
-H "x-api-key: org_api_key" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","firstName":"Jane","customFields":{"plan":"pro"}}'Response
{
"contact": {
"id": "m57...",
"email": "[email protected]",
"firstName": "Jane",
"lastName": null,
"status": "subscribed",
"source": "api",
"customFields": { "plan": "pro" },
"tags": ["newsletter"],
"createdAt": 1783528574709,
"updatedAt": 1783528600000
}
}Error responses:
| Status | Meaning |
|---|---|
400 | Invalid JSON body or invalid email. |
401 | Missing or invalid API key. |
404 | Contact not found. |
409 | Another contact already uses the requested email. |
Notes
- If the email changes, suppression records move to the new address so unsubscribe/bounce/complaint state is preserved.
- Missing fields are left unchanged.