Expand Fin to email is now live on Fin Academy!
Get more out of Intercom using our API and webhooks
Recently active
Hello,I’ve been successfully using the Intercom API to tag multiple contacts at once using the /tags endpoint. However, I’m now facing a challenge: I need to remove tags from multiple contacts, but I can’t find a straightforward solution in the documentation.Here’s the snippet I’ve been using to tag contacts:const resp = await fetch( `https://api.intercom.io/tags`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Intercom-Version': '2.10', Authorization: 'Bearer <YOUR_TOKEN_HERE>' }, body: JSON.stringify({name: 'test', users: [{ id: 'userId1' }, { id: 'userId2' }] }) } );https://developers.intercom.com/docs/references/rest-api/api.intercom.io/Tags/createTag/ Now, I’d like to perform the reverse operation: remove tags from multiple contacts. Is there an equivalent endpoint for this task? I’ve checked the documentation, but it seems that the /contacts/{contact_id}/tags endpoint is not suitable for bulk removal due
Intercom(‘trackEvent’, ‘myevent’).on(‘fired’, function () { // The event has fired.}).on(‘unscheduled’, function () { // The event rules met but unable to fire based on schedule.});See example above: Is there a way to track an event not firing based on not being scheduled but meeting the rules? (meeting rules but not in schedule to be fired)The reason being that I’m working with javascript where there would need to be default behavior if the Intercom banner doesn’t show.intercom banner → close banner → redirect to url (no banner) → redirect to url
I’m trying to create a conversation with https://api.intercom.io/conversations REQUST BODY:{ "from": { "type": "contact", "user_id": "123456789" }, "body": "Hello"},HEADER PARAMETERS:Intercom-Version: 2.10Authorization: Bearer <access_token> RESPONSE:{ "type": "error.list", "request_id": "0002sf5fchfdlt2eus20", "errors": [ { "code": "not_found", "message": "User Not Found" } ]} Could I be missing something?
Hello Intercom Community,I am currently designing an ETL job to ingest daily customer conversation data from Intercom and have a specific question regarding the merging of lead and user profiles, as documented here: Merge Lead and User Profiles.When a lead profile is merged with a user profile and the lead's conversations are transferred to the user's profile, how is this process implemented in the background regarding the conversation_id and the intercom_id of the transferred conversation? Specifically, are the conversations from the lead profile:Copied as new conversations with new conversation IDs [conversation_id], but now associated with the user's Intercom ID [intercom_id]? Or is the existing conversation (originally under the lead's profile) simply updated to reflect the user's Intercom ID [intercom_id], retaining the original conversation ID [conversation_id]?Understanding this process is important for my ETL design. If conversations are copied as new with new conversation IDs
Hello,I trying to search by using the “POST /contacts/search” API. If I call the API from either POSTMAN or form the JSON as string, everything works fine. But when I trying to serialize an object to JSON and call the API, I get the error “Query body must contain a query hash”.This is from .NET API.Scenario which worksvar json = JObject.Parse($@"{{ ""query"": {{ ""operator"": ""AND"", ""value"": [ {{ ""field"": ""email"", ""operator"": ""="", ""value"": ""{email}"" }} ] }}}}");var jsonStr = json.ToString();var postData = new StringContent(jsonStr, Encoding.UTF8, "application/json");using (HttpResponseMessage response = await httpClient.PostAsync($"/contacts/search", postData)){ … }Scenario which results in the errorvar searchQuery = new IntercomSearchQuery{ Operator = "AND", Value = new List<IntercomSearchValue> { new IntercomSearchValue { Field = "email
Hello, I’ve successfully subscribed my url to the conversation.rating.added topic, and I’m getting the data.However, I’ve noticed that the conversation_rating object which is supposed to contain the “rating” and “remark” is always null.How can I get the “rating” and “remark” directly from the webhook each time a rating is added to a conversation? Thanks!
We do have our app published in intercom store and our customers gonna use that app to install / use it to interact with our system, we do ask customers to configure the our endpoint under webhook for interaction purpose. I do have questions, as per this documentation https://developers.intercom.com/docs/references/webhooks/webhook-models/#signed-notifications they mentioned “your app’s client secret” do that mean client secret of published app or we should get customer’s intercom workspace app’s client secret
Hello intercom support team,we successfully integrated the intercom widget in our react application and we would like to make use of the showArticles(...) function to display certain articles on button click. Is there a possibility to navigate back to the home tab directly after opening multiple articles via the showArticles(...) function? Because at the moment, If a user opens multiple articles on a button click the user has to navigate back through all articles which got opened.Another thing we experienced was that, after the user navigated all the way back, the help tab of the widget was shown without any possibility to select another tab or was blank without any content. Is there a possibility to avoid that? Messanger without content in the help tabScaled home tab without navigation possibilities after back navigation in an article.
Hi! In my report, I have "Median response time" Chart (Response time, Reply sent at, Median aggregation)I want to calculate the same metric via Intercom API. In the conversations schema, I found statistics.median_time_to_reply attribute. However, the results I'm getting while using this attribute is different from the chart, like +20 minutes. Can you please suggest what can be wrong here? Are there any other ways to calculate this via Intercom API?
I’m new to Intercom and I’m setting up my first Custom Actions. The app that I use the most is called Simplero so it is my top priority for getting set up.It uses Basic authentication (ref https://github.com/Simplero/Simplero-API?tab=readme-ov-file#authentication) and I’ve set up an authentication text token (ref https://www.intercom.com/help/en/articles/6615543-setting-up-custom-actions-authentication#h_7c58d5179f) in Intercom: In the Token value box, I pasted my API key. The API key that I have works. I’ve tested it in other apps (i.e. Pipedream) and it works just fine. I’ve also tried generating new API keys and I’ve tried 3 different ones. All of them return the following error: 401 Unauthorized{"error":"Bad API key"}The setup appears so simple, I can’t imagine what I might be doing wrong. So I tried setting up another Authentication Token for a different app I also use, and that one works fine, although it’s a Bearer token not Basic. So I’m not completely a newbie, but I’m by no m
My current understanding of webhooks in Intercom is when we specify them in our app, they get enabled for the workspace upon install. However, we offer a two-week trial and after this point, we'd like to silence webhooks from workspaces that are not customers / dormant. I understand we can reply to a webhook with an HTTP 410 and the Intercom will disable them for us. However, how do we re-enable them if a customer subsequently subscribes? Does the customer have to go through the install flow again? Given webhooks are no longer part of the API, I assume we can't do it on our side.
I am using react native and I am using the following code: Intercom.updateUser({ email: userInfo.email ?? '', userId: userInfo.id, name: (userInfo && userInfo.first_name) ?? '', phone: userInfo.phones[0].number, avatar: 'https://www.w3schools.com/howto/img_avatar.png', custom_attributes: { date_of_birth: userInfo.dob ?? '', user_connected_from: App' }}) EVERYTHING, absolutely everything works, except the avatar attribute, could you please tell me how to make that image be my client's profile picture here in the red circle? Thank you.
We are syncing User data from Segment to Intercom via Identify calls.We want to update company name for User from Segment to Intercom.When we Identify call for updating Company name in user. we can see that fields are passed to Intercom from Segment, but when we see Qualification Section in User details. Company Name is not updated. but when we export user details, latest company name is shown in Excel file.
Hello Intercom Community,I’m relatively new to interacting with APIs. I’m trying to extract the list of all contacts following the instructions from the API documentation.My ultimate goal is to run this GET request every let’s say 1 hour and then from the resulting set to get the data I need for the contacts who have an “updated_at” value later than a <fixed threshold_time> (ie. the most recently updated items). If I understood correctly it is not possible to provide sorting parameters for this GET request (eg. based on descending “updated_at”).So my question is: What is the default sorting method that defines the order of items in the resulting list of contacts. I’m not not if that’s “updated_at” or “last_seen_at” or any other field. If I know for instance that contacts are by default sorted based on descending “updated_at” then I can paginate through the results, and get the data from each page, until I reach a page with “updated_at” values earlier than my <fixed threshold_t
I am using the API. When I retrieve a conversation and inspect each of its conversation_parts, I see each of them has an author. However, there seems to be no information regarding who this message is addressed to. Is it possible to get that information? Or at least to know wheter it is internal or external communication.
API 2.3 via PHP+cURL: I can SET or CHANGE the external_id but any attempt to set the external_id to empty posting {'external_id':''} to https://api.intercom.io/contacts/... is returned with a 200 OK but the external_id retains the former value. I have tried with '' and null to no avail.
Hi,I’m trying to make a flow with Shopify Flow to update phone number and other data to Intercom.Do you know how to do it?On shopify Flow:Action: Send HTTP requestHTTP Method: POST (?)https://api.eu.intercom.io/contacts (for Europe)Key:authorization: Bearer KEY(Intercom / create an app / access token)content-type: application/jsonBody:{ ….. data…..}What is wrong? everything? 😁 I was doing it with Zapier but I would like to do it with Shopify Flow to decrease my Zapier account thanks
Hello!I’m trying to create, using Intercom API, a ticket with one or more attachments.I’ve created a Ticket Type that contains one Ticket Type Attribute (named Files) of data_type ‘files’.Then, following the API documentation for the POST request to create a ticket, I’ve created this payload:That, as long as the Files are an empty array ([]) works out.If I try to add the files data, I always receive this kind of error: Couple of details:I’ve read the other similar question here with no luck I have tried all the combinations for Files, like, a list of objects with one entry, an object containing a files property that is a list of objects and so on and so forth. Nothing. I’ve checked the API documentation and this entry https://developers.intercom.com/docs/references/2.9/rest-api/api.intercom.io/Models/file_attribute/ is aligned with what I did, but still not working I wasn’t able to find anywhere a specifics for the files data_type I checked the github repos but I always find info rel
Hey there, I am currently building an intercom integration to sync tickets. I have a custom ticket attribute called “priority” of type list which has the options “urgent”, “high”, “normal”, and “low”.I try to update the ticket attribute like this via the Dev Docs and the try out button. Without the attribute the flow works fine (so my Bearer token and the rest is set up correctly):Json body:{ "ticket_attributes": { "_default_title_": "example", "_default_description_": "there is a problem", "priority": "urgent" }, "state": "in_progress"} I get the following error message:{ "type": "error.list", "request_id": "0016erd0q33c1jgjf750","errors": [{ "code": "parameter_invalid", "message": "'urgent' is not a valid value for attribute 'priority' of type 'list'" } ] } I also tried “priority”: [“urgent”], “priority”: “[urgent]” and more. Could you tell me which schema is expected for the list attribute?Kind RegardsIan
Hey there,We’re trying to create Intercom reporting within Looker.I have a few questions and was wondering if anybody else already tried to do this.Median Response Time- The conversation_history.statistics_median_response_time is a median already, but when aggregating this as a measure within Looker (to group per assignee_id or team_name), you’d get the average median response time or median median response time. These numbers could differ from the regular median response time within Intercom. Anybody who could think of a solution for this? - Anybody knows which timestamp is used within Intercom report filters for Median Response Time?Is Intercom’s timestamp the created_at, statistics_last_admin_reply or something else? Volume metric- We’re also looking into a volume metric where we want to understand how many NEW answered conversations were assigned to a specific person in a specific week. The issue here is that conversation ID’s are not necessarily unique within conversation_history.
We are getting a lot of “Conflict” 409 errors when trying to create a contact via API. When a little bit different ‘external_id’ is provided (other data is the same) there is no error. Seems like intercom has a record in place with this external_id but: - It’s not being returned when searching via API (using external_id) - User can’t be found on intercom website - User doesn’t exist in the export file (all conctacts)
I can’t export my help desk communication correspondence data and articles.Can you help me ?
Hey there,When using the Intercom API via Fivetran to get conversation_part_history data, we get it in correctly but not the very first message.The first message creates the conversation and usually comes from a customer or lead. But when getting the full conversation in, the API doesn’t return this very first message for some reason.This message can be found within conversation_history, but we don’t see why it’s not part of conversation_part_history.Are we missing something?Thanks in advance!Levi
Hi there,I hope this message finds you well. I've been using the Intercom platform for managing my conversations, and I'm wondering if there's a way to disable replies in the chat if the conversation didn't originate within the Intercom platform.I have a specific endpoint configured for receiving replies, and I'd like to ensure that replies are only sent to this endpoint.E.g. This chat didn't start in the intercom platform, but once I replied, it sends in a new chat. If anyone has experience with this or knows of a solution, I would greatly appreciate your insights and guidance. Please share any tips, best practices, or relevant documentation that might help me achieve this.Thank you in advance for your assistance!Best regards,
Hello there !We're in the process of implementing tickets and ticket portal system, and to achieve this, we need to import customer tickets from another provider into Intercom.While we've successfully created tickets using the API, we've encountered a challenge in linking a company to the ticket. Currently, an admin can manually link a company in the inbox, but I haven't discovered a way to make it a mandatory step.It's crucial to note that if a customer ticket lacks a linked company, the customer won't be able to access it through the ticket portal. Although the customer can still access their ticket via the messenger, we want to avoid any potential confusion.Additionally, we've faced difficulties in retrieving the company linked to a specific ticket using the GET /tickets/{id} endpoint.These challenges prompt a few important questions:Is there a way to link a company to a ticket through the API? Can we retrieve information about a company linked to a ticket via the API? Is there a wa
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.