{"command":{"effect":"write","timeoutSeconds":30,"inputSchema":{"type":"object","description":"You can bulk update contacts by submitting an array of contact objects with the fields to update. Each contact must include an `id` field identifying the contact to update. You can also add or remove tags on each contact by including a `tags` object.\n\nOnly the fields listed in the request schema below can be set. Any other fields in a contact object are ignored.\n\nThe endpoint creates an async job that processes the updates in the background. Use the returned job ID with `GET /contacts/bulk/{id}` to check the job status.\n\n{% admonition type=\"info\" name=\"Limits\" %}\n  - Maximum of 100 contacts per request.\n  - You can append tasks to an existing job by including `job.id` in the request body.\n  - Tag application is best-effort and processed asynchronously: unknown tag IDs are skipped, and per-tag results are not returned in the job status.\n{% /admonition %}\n\nRequires the `read_write_users` or `write_users_companies` OAuth scope.\n","properties":{"headers":{"type":"object","properties":{"Intercom-Version":{"$ref":"#/definitions/intercom_version","enum":["2.17"]}},"required":[],"additionalProperties":false},"body":{"$ref":"#/definitions/bulk_update_contacts_request","examples":[{"contacts":[{"id":"abc123","external_id":"ext123","email":"joe@bloggs.com","name":"Joe Bloggs","phone":"+353871234567","avatar":"https://www.example.com/avatar_image.jpg","owner_id":"321","unsubscribed_from_emails":false,"language_override":"fr","custom_attributes":{"plan":"pro"},"companies":[{"company_id":"6","name":"Blue Sun"}],"tags":{"add":[{"id":"123"}],"remove":[{"id":"987"}]}}]}]}},"required":[],"additionalProperties":false,"definitions":{"intercom_version":{"description":"Intercom API version.</br>If you omit the header, the API uses the version set in your app package, and 1.0 if none is set.","type":"string","enum":["1.0","1.1","1.2","1.3","1.4","2.0","2.1","2.2","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17"],"examples":["2.17"]},"bulk_update_contacts_request":{"title":"Bulk Update Contacts Request","type":"object","description":"Request body for bulk updating contacts.","required":["contacts"],"properties":{"contacts":{"type":"array","description":"An array of contact objects to update. Each must include an `id` and the fields to update. Maximum 100 contacts per request.","maxItems":100,"items":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The unique identifier for the contact.","examples":["abc123"]},"external_id":{"type":"string","description":"A unique identifier for the contact which you have defined.","examples":["abc123"]},"email":{"type":"string","description":"The contact's email address.","examples":["joe@example.com"]},"email_verified":{"type":["boolean","null"],"description":"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.\n\nChanging 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.","examples":[true]},"name":{"type":"string","description":"The contact's name.","examples":["Joe Bloggs"]},"phone":{"type":"string","description":"The contact's phone number."},"avatar":{"type":"string","description":"An image URL containing the avatar of the contact.","examples":["https://www.example.com/avatar_image.jpg"]},"owner_id":{"type":"string","description":"The ID of an admin that has been assigned account ownership of the contact.","examples":["321"]},"unsubscribed_from_emails":{"type":"boolean","description":"Whether the contact is unsubscribed from emails.","examples":[true]},"language_override":{"type":"string","description":"A preferred language setting for the contact, used by the Intercom Messenger.","examples":["fr"]},"custom_attributes":{"type":"object","description":"Custom attributes to update on the contact."},"companies":{"type":"array","description":"A list of companies to associate with the contact. Each company is identified by the `company_id` you have defined. A company that does not exist is created, and one that already exists has the supplied attributes applied to it.","items":{"type":"object","required":["company_id"],"properties":{"company_id":{"type":"string","description":"The company ID you have defined for the company.","examples":["6"]},"name":{"type":"string","description":"The name of the company.","examples":["Blue Sun"]},"remove":{"type":"boolean","description":"Set to true to detach this company from the contact instead of attaching it.","examples":[true]}}}},"tags":{"type":"object","description":"Tags to add to or remove from the contact. Each tag is identified by its `id`, which must be a positive integer for a tag that already exists in your workspace. Tag application is best-effort: unknown tag IDs are skipped while the rest of the contact update still applies. Per-tag results are not yet returned in the job status.\n","properties":{"add":{"type":"array","description":"Tags to add to the contact.","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of an existing tag to add to the contact.","examples":["123"]}}}},"remove":{"type":"array","description":"Tags to remove from the contact.","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of an existing tag to remove from the contact.","examples":["789"]}}}}}}}}},"job":{"type":"object","description":"Optional. Include to append tasks to an existing job.","properties":{"id":{"type":"string","description":"The ID of an existing bulk job to append to.","examples":["job_v2_1"]}}}}}}},"name":"Bulk update contacts","id":"intercom.bulkupdatecontacts","example":{},"maxRequests":1,"summary":false}}