Sync attachments from Intercom conversations — the screenshots, images, and videos your customers send — into Jira issues as native Jira attachments.
Setup takes about 15 minutes and has to be done once, by someone who is both a Jira administrator and able to create an app in Intercom's Developer Hub.
You will need:
You will move two different values from Intercom into Jira. They live on two different pages and are easy to confuse:
| Value | Where it lives in Intercom | What it is for |
|---|---|---|
| Access Token | Developer Hub → your app → Authentication | Letting the app read conversations and download attachments |
| Client Secret | Developer Hub → your app → Basic information | Proving that incoming webhooks really came from Intercom |
Jira attachment sync.read_conversations
permission. Without it the app cannot read attachments, and the connection check in
step 3 will refuse to save your token.You are done when: the app exists and shows an Access Token on the Authentication page.
Install Support Attachment Sync from the Atlassian Marketplace onto your Jira site.
You are done when both of these appear:
You are done when: the status shows Connected followed by your Intercom workspace name and region.
If it refuses to connect:
| Message | What it means |
|---|---|
| That token was rejected by Intercom | The token is wrong, expired, or was revoked. Copy it again from the Authentication page. |
| This token cannot read conversations | The token is valid but the app lacks the read_conversations permission. Enable it in step 1 and try again. |
| Could not reach Intercom | A temporary network problem. Try again in a moment. |
The app checks both that the token works and that it can actually read conversations before saving it, so a token that passes this step is a token that can sync.
The Webhook signing secret section appears once a token is stored.
You are done when: the status next to Webhook signing secret shows Configured.
Why this matters: the webhook endpoint is a public URL that anyone can send requests to. This secret is what lets the app tell a genuine Intercom notification from a forged one. Until it is saved, every notification is discarded and no attachment will sync automatically.
The settings screen shows whether notifications are arriving and, if the signature does not match, says so — which is how you confirm you copied the right value.
Still on the Jira settings screen, find the Webhook endpoint section and copy the URL shown there.
This URL is unique to your Jira site. Do not reuse a URL from documentation or from another site, and do not share it.
In Intercom, go to Developer Hub → your app → Webhooks.
Paste the URL into Endpoint URL.
Subscribe to these two topics:
conversation.user.replied — a customer replies, often with a screenshotconversation.admin.replied — a teammate repliesYou do not need conversation.user.created. A brand-new conversation is not linked to
any Jira issue yet, so nothing would sync from it.
Save.
You are done when: Intercom accepts the endpoint and both topics show as subscribed.
The single most common setup mistake: registering the Endpoint URL but leaving Topics empty. Intercom then sends nothing at all, and the app looks broken while being perfectly healthy. If automatic sync does nothing, check Topics first.
To find a conversation ID: open the conversation in Intercom and read it from the browser address bar — it is the long number at the end of the URL.
The app checks that the conversation actually exists in Intercom before saving the link, so a mistyped ID is rejected immediately rather than failing silently later.
You are done when: the panel shows Linked, the conversation ID, and a list of the attachments currently in that Intercom conversation.
If linking is refused:
| Message | What it means |
|---|---|
| Connect Intercom first | Step 3 has not been completed. |
| No conversation with that ID exists in Intercom | The ID is wrong, or the conversation belongs to a different Intercom workspace. |
| Could not check that conversation with Intercom | A temporary problem reaching Intercom. Try again. |
Click Sync attachments in the panel. The panel shows Syncing… while it runs and then reports the result.
From this point on, whenever someone replies in that Intercom conversation, the app syncs new attachments automatically. You do not need to press the button again.
Skipped — already in Jira. A file counts as already synced when both its name and its
byte size match something on the issue. A file with the same name but different contents is
still uploaded, under a modified name (image (2).png). Running a sync twice never creates
duplicates — including for files the app itself renamed.
Skipped — too large. Two limits apply and the app respects the stricter one:
Files without a name. Some attachments arrive from Intercom without a file name. The app generates one, adding a file extension based on the file type.
Failures are retried, but not forever. A temporary failure is retried automatically with an increasing delay, up to five times. Failures that cannot succeed on retry — a file above the Jira size limit, an expired token, a deleted issue — are not retried at all.
The panel reports counts and state, not a per-file log:
Nothing syncs automatically, but the manual button works. Intercom is not sending webhooks. In order of likelihood: (1) no Topics subscribed in Developer Hub — this is the usual cause; (2) the Endpoint URL is missing or is from a different Jira site; (3) the signing secret in Jira does not match the Client secret in Intercom.
An attachment visible in Intercom never appears on the issue. Look at the panel's status line. It will be one of: skipped because an attachment with the same name and size is already on the issue; skipped because the file exceeds your Jira site's attachment limit (raise the limit or accept that the file cannot be synced); or failed while downloading. Failures are retried automatically, but errors that cannot succeed on retry — a file over the site limit, an expired token, a deleted issue — stop after the first attempt rather than looping.
The Client secret field has disappeared. It is shown once a token is stored. If the section is gone entirely, no token is stored — go back to step 3.
The connection says the saved token is no longer valid. Click Disconnect, then connect again with a fresh token. Note that disconnecting clears the signing secret too, so redo step 4 afterwards.
Everything looks configured but large files fail. Your Jira site's attachment limit is almost certainly below the file size. Jira Settings → Issues → Attachments.
Click Disconnect on the settings screen to delete the stored access token and signing secret immediately. Do this before uninstalling if you want the credentials gone at a specific moment — uninstalling leaves cleanup to the Atlassian platform's own schedule.
Attachments that were already synced stay on their Jira issues as ordinary attachments.
Disconnect clears the credentials only. The link between an issue and a conversation, and the sync record for that issue — which includes the file names — are removed by clicking Unlink on that issue's panel. Linking the issue to a different conversation clears the previous record too. This is the route to use for a data subject erasure request that touches the app's own records; see the privacy policy §7.