Skip to content

Update a contact

Request

You can update an existing contact (ie. user or lead).

This endpoint handles both contact updates and custom object associations.

See update a contact with an association to a custom object instance in the request/response examples to see the custom object association format.

Requires the read_write_users or write_users_companies OAuth scope.

Security
bearerAuth
Path
contact_idstringrequired

id

Example:63a07ddf05a32042dffac965
Query
include_merge_historyboolean

Pass true to include the contact's merge history in the response. Returned for contacts of any role, with at most the 10 most recent merges.

Default:false
Headers
Intercom-Versionstring(intercom_version)

Intercom API version.
If you omit the header, the API uses the version set in your app package, and 1.0 if none is set.

Enum:"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example:2.17
Bodyapplication/json
One of:

You can update a contact

rolestring

The role of the contact, either user or lead. Any other value is ignored. A user can't be changed to a lead; sending lead for a user returns a 400 error.

external_idstring

A unique identifier for the contact which is given to Intercom

emailstring

The contacts email

Example:"jdoe@example.com"
email_verifiedboolean or null

Whether the contact has proved they own this email address, for example through a confirmation link or one-time code you sent. Send it together with email. email_verified without email is rejected.

Changing a contact's email resets it to not verified. Intercom reuses leads with a verified email when an inbound email, conversation or ticket matches the address.

Example:true
phonestring or null

The contacts phone

Example:"+353871234567"
namestring or null

The contacts name

Example:"John Doe"
avatarstring or null

An image URL containing the avatar of a contact

Example:"https://www.example.com/avatar_image.jpg"
signed_up_atinteger or null, (date-time)

(Unix timestamp in seconds) The time specified for when a contact signed up.

Example:1571672154
last_seen_atinteger or null, (date-time)

(Unix timestamp in seconds) The time when the contact was last seen (either where the Intercom Messenger was installed or when specified manually).

Example:1571672154
owner_idstring or null

The id of an admin that has been assigned account ownership of the contact

Example:"321"
unsubscribed_from_emailsboolean or null

Whether the contact is unsubscribed from emails

Example:true
unsubscribed_from_smsboolean

Whether the contact is unsubscribed from SMS messages.

Example:false
language_overridestring or null

A preferred language setting for the contact, used by the Intercom Messenger even if their browser settings change.

Example:"en"
custom_attributesobject or null

The custom attributes which are set for the contact

curl -i -X PUT \
  'https://api.intercom.io/contacts/63a07ddf05a32042dffac965?include_merge_history=false' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: 2.17' \
  -d '{
    "email": "joebloggs@intercom.io",
    "name": "joe bloggs"
  }'

Responses

successful

Bodyapplication/json
typestring

The type of object.

Example:"contact"
idstring

The unique identifier for the contact which is given by Intercom.

Example:"5ba682d23d7cf92bef87bfd4"
external_idstring or null

The unique identifier for the contact which is provided by the Client.

Example:"f3b87a2e09d514c6c2e79b9a"
workspace_idstring

The id of the workspace which the contact belongs to.

Example:"ecahpwf5"
rolestring

The role of the contact.

Example:"user"
emailstring

The contact's email.

Example:"joe@example.com"
email_domainstring

The contact's email domain.

Example:"example.com"
email_verifiedboolean

Whether the contact has proved they own their current email address. true only when this address was marked verified through the Contacts API (email_verified: true on create or update) and has not changed since; it becomes false again if the contact's email changes, until the new address is verified. Intercom reuses a lead with a verified email when it later matches an inbound email, or an outbound conversation or ticket, to that address, instead of creating a new lead. In List contacts and Search contacts responses it is left out only if the contact can't be loaded, for example when it is deleted while the request runs.

Example:true
phonestring or null

The contacts phone.

Example:"+1123456789"
namestring or null

The contacts name.

Example:"John Doe"
owner_idstring or null

The id of an admin that has been assigned account ownership of the contact.

Example:"321"
has_hard_bouncedboolean

Whether the contact has had an email sent to them hard bounce.

Example:true
marked_email_as_spamboolean

Whether the contact has marked an email sent to them as spam.

Example:true
unsubscribed_from_emailsboolean

Whether the contact is unsubscribed from emails.

Example:true
created_atinteger, (date-time)

(Unix timestamp in seconds) The time when the contact was created.

Example:1571672154
updated_atinteger, (date-time)

(Unix timestamp in seconds) The time when the contact was last updated.

Example:1571672154
signed_up_atinteger or null, (date-time)

(Unix timestamp in seconds) The time specified for when a contact signed up.

Example:1571672154
last_seen_atinteger or null, (date-time)

(Unix timestamp in seconds) The time when the contact was last seen (either where the Intercom Messenger was installed or when specified manually).

Example:1571672154
last_replied_atinteger or null, (date-time)

(Unix timestamp in seconds) The time when the contact last messaged in.

Example:1571672154
last_contacted_atinteger or null, (date-time)

(Unix timestamp in seconds) The time when the contact was last messaged.

Example:1571672154
last_email_opened_atinteger or null, (date-time)

(Unix timestamp in seconds) The time when the contact last opened an email.

Example:1571672154
last_email_clicked_atinteger or null, (date-time)

(Unix timestamp in seconds) The time when the contact last clicked a link in an email.

Example:1571672154
language_overridestring or null

A preferred language setting for the contact, used by the Intercom Messenger even if their browser settings change.

Example:"en"
browserstring or null

The name of the browser which the contact is using.

Example:"Chrome"
browser_versionstring or null

The version of the browser which the contact is using.

Example:"80.0.3987.132"
browser_languagestring or null

The language set by the browser which the contact is using.

Example:"en-US"
osstring or null

The operating system which the contact is using.

Example:"Mac OS X"
android_app_namestring or null

The name of the Android app which the contact is using.

Example:"Intercom"
android_app_versionstring or null

The version of the Android app which the contact is using.

Example:"5.0.0"
android_devicestring or null

The Android device which the contact is using.

Example:"Pixel 3"
android_os_versionstring or null

The version of the Android OS which the contact is using.

Example:"10"
android_sdk_versionstring or null

The version of the Android SDK which the contact is using.

Example:"28"
android_last_seen_atinteger or null, (date-time)

(Unix timestamp in seconds) The time when the contact was last seen on an Android device.

Example:1571672154
ios_app_namestring or null

The name of the iOS app which the contact is using.

Example:"Intercom"
ios_app_versionstring or null

The version of the iOS app which the contact is using.

Example:"5.0.0"
ios_devicestring or null

The iOS device which the contact is using.

Example:"iPhone 11"
ios_os_versionstring or null

The version of iOS which the contact is using.

Example:"13.3.1"
ios_sdk_versionstring or null

The version of the iOS SDK which the contact is using.

Example:"13.3.1"
ios_last_seen_atinteger or null, (date-time)

(Unix timestamp in seconds) The last time the contact used the iOS app.

Example:1571672154
custom_attributesobject

The custom attributes which are set for the contact.

avatarstring or null, (uri)

An image URL containing the avatar of a contact.

Example:"https://example.org/128Wash.jpg"
tagsobject or null(Contact Tags)

An object containing tags meta data about the tags that a contact has. Up to 10 will be displayed here. Use the url to get more.

notesobject(Contact notes)

An object containing notes meta data about the notes that a contact has. Up to 10 will be displayed here. Use the url to get more.

companiesobject(Contact companies)

An object with metadata about companies attached to a contact . Up to 10 will be displayed here. Use the url to get more.

locationobject(Contact Location)

An object containing location meta data about a Intercom contact.

social_profilesobject(Social Profile)

An object containing social profiles that a contact has.

opted_out_subscription_typesobject(Contact Subscription Types)

An object containing Subscription Types meta data about the SubscriptionTypes that a contact has.

opted_in_subscription_typesobject(Contact Subscription Types)

An object containing Subscription Types meta data about the SubscriptionTypes that a contact has.

utm_campaignstring or null

The utm_campaign value recorded for the contact.

Example:"spring_launch"
utm_contentstring or null

The utm_content value recorded for the contact.

Example:"banner_ad"
utm_mediumstring or null

The utm_medium value recorded for the contact.

Example:"email"
utm_sourcestring or null

The utm_source value recorded for the contact.

Example:"newsletter"
utm_termstring or null

The utm_term value recorded for the contact.

Example:"support_software"
referrerstring or null

The URL of the page the contact came from, as recorded by the Messenger.

Example:"https://example.com/pricing"
unsubscribed_from_smsboolean

Whether the contact is unsubscribed from SMS messages.

Example:false
enabled_push_messagingboolean or null

Whether the contact has a mobile device registered to receive push messages.

Example:true
merge_historyArray of objects or null(Merge History Item)

A list of contacts that were merged into this contact, most recent first, capped at 10. Only included in the response when include_merge_history=true is passed as a query parameter.

Response
{ "type": "contact", "id": "6762f0cd1bb69f9f2193bb7c", "workspace_id": "this_is_an_id279_that_should_be_at_least_", "external_id": "70", "role": "user", "email": "joebloggs@intercom.io", "email_domain": "intercom.io", "email_verified": false, "phone": null, "name": "joe bloggs", "avatar": null, "owner_id": null, "social_profiles": { "type": "list", "data": [] }, "has_hard_bounced": false, "marked_email_as_spam": false, "unsubscribed_from_emails": false, "created_at": 1734537421, "updated_at": 1734537422, "signed_up_at": 1734537421, "last_seen_at": null, "last_replied_at": null, "last_contacted_at": null, "last_email_opened_at": null, "last_email_clicked_at": null, "language_override": null, "browser": null, "browser_version": null, "browser_language": null, "os": null, "location": { "type": "location", "country": null, "region": null, "city": null, "country_code": null, "continent_code": null }, "android_app_name": null, "android_app_version": null, "android_device": null, "android_os_version": null, "android_sdk_version": null, "android_last_seen_at": null, "ios_app_name": null, "ios_app_version": null, "ios_device": null, "ios_os_version": null, "ios_sdk_version": null, "ios_last_seen_at": null, "custom_attributes": {}, "tags": { "type": "list", "data": [], "url": "/contacts/6762f0cd1bb69f9f2193bb7c/tags", "total_count": 0, "has_more": false }, "notes": { "type": "list", "data": [], "url": "/contacts/6762f0cd1bb69f9f2193bb7c/notes", "total_count": 0, "has_more": false }, "companies": { "type": "list", "data": [], "url": "/contacts/6762f0cd1bb69f9f2193bb7c/companies", "total_count": 0, "has_more": false }, "opted_out_subscription_types": { "type": "list", "data": [], "url": "/contacts/6762f0cd1bb69f9f2193bb7c/subscriptions", "total_count": 0, "has_more": false }, "opted_in_subscription_types": { "type": "list", "data": [], "url": "/contacts/6762f0cd1bb69f9f2193bb7c/subscriptions", "total_count": 0, "has_more": false }, "utm_campaign": null, "utm_content": null, "utm_medium": null, "utm_source": null, "utm_term": null, "referrer": null, "sms_consent": false, "unsubscribed_from_sms": false, "enabled_push_messaging": null }