Update a contact
Update an existing contact identified by its unique id.
Include one or more fields to change. Field updates and consent changes
can be combined in a single request.
Mutable fields: first_name, last_name, email, phone_number, tags, custom_fields.
email and phone_number can only be set when the existing value is
null. Once populated, they cannot be changed or cleared.
Consent fields: email_consent, sms_consent. Use these to subscribe,
unsubscribe, or otherwise manage a contact’s marketing consent.
When sms_consent is set to subscribed and the contact transitions to
a confirmed opt-in state, Privy automatically sends a TCPA-required
welcome SMS. Pass send_welcome_sms: false to suppress this message if
you have already collected consent outside of Privy.
Required scope: contacts_write
Documentation Index
Fetch the complete documentation index at: https://help.privy.com/llms.txt
Use this file to discover all available pages before exploring further.
Authorizations
Send either an API token or an OAuth access token as
Authorization: Bearer <token>. See the Authentication page for details.
Path Parameters
The contact's unique identifier (returned as id in contact responses).
Body
Include one or more fields to update. The contact is identified
by the id path parameter. Field updates and consent changes can be
combined in a single request.
Mutable fields: first_name, last_name, email, phone_number, tags, custom_fields.
email and phone_number can only be set when the existing value is
null. Once populated, they cannot be changed or cleared.
Consent fields: email_consent, sms_consent. Use these to manage a
contact's marketing consent instead of the deprecated unsubscribe endpoint.
Updated first name.
"Janet"
Updated last name.
"Smith"
Sets the contact's email address. Only allowed when the contact's
current email is null; once populated, email is immutable.
"janet@example.com"
Sets the contact's phone number in E.164 format. Only allowed when
the contact's current phone_number is null; once populated,
phone_number is immutable.
"+15551234567"
Replaces all existing tags.
["vip", "wholesale"]Replaces all existing custom fields. Must be a flat key-value object.
{ "loyalty_tier": "platinum" }Update the contact's email marketing consent.
compliance_suppressed is read-only — any write to a
compliance-suppressed contact returns 422.
For merchant-suppressed contacts, writing any consent value first
unsuppresses, then applies the requested transition (e.g.
subscribed unsuppresses then subscribes).
subscribed, unsubscribed, never_subscribed, suppressed "unsubscribed"
Update the contact's SMS marketing consent. pending is read-only.
subscribed, single_opt_in, and unsubscribed require the contact
to have a phone number. single_opt_in is idempotent when the contact
is already in that state, and returns 422 from terminal states
(pending, confirmed, or unsubscribed).
subscribed, unsubscribed, never_subscribed, single_opt_in "unsubscribed"
When sms_consent is set to subscribed and the contact transitions
to a confirmed SMS opt-in state, Privy sends a TCPA-required welcome
SMS. Set to false to suppress this message when you have already
collected consent outside of Privy.
false
Response
Contact updated successfully.