Support Attachment Sync for Jira — Setup Guide

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.


Before you start

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

Step 1 — Create an app in Intercom

  1. Open Intercom → SettingsDeveloper HubNew app.
  2. Give it a name your team will recognise, for example Jira attachment sync.
  3. On the Authentication page, make sure the app has the 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.


Step 2 — Install the app in Jira

Install Support Attachment Sync from the Atlassian Marketplace onto your Jira site.

You are done when both of these appear:


Step 3 — Connect Intercom

  1. Go to Jira SettingsAppsSupport Attachment Sync.
  2. In Intercom, copy the Access Token from Developer Hub → your app → Authentication.
  3. Paste it into Intercom access token and click Connect.

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.


Step 4 — Save the webhook signing secret

The Webhook signing secret section appears once a token is stored.

  1. In Intercom, go to Developer Hub → your app → Basic information.
  2. Reveal and copy the Client secret. This is not the access token — it is a different value on a different page.
  3. Paste it into Client secret and click Save signing secret.

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.


Step 5 — Register the webhook in Intercom

  1. 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.

  2. In Intercom, go to Developer Hub → your app → Webhooks.

  3. Paste the URL into Endpoint URL.

  4. Subscribe to these two topics:

    You do not need conversation.user.created. A brand-new conversation is not linked to any Jira issue yet, so nothing would sync from it.

  5. 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.


Step 6 — Link a conversation to an issue

  1. Open the Jira issue that corresponds to an Intercom conversation.
  2. Open the Support attachments panel on that issue.
  3. Paste the Intercom conversation ID and click Link conversation.

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.

Step 7 — Sync

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.


What gets synced, and what does not

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.


What the panel shows

The panel reports counts and state, not a per-file log:


Troubleshooting

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 SettingsIssuesAttachments.


Removing the app

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.

Removing what the app recorded about an issue

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.