Connect your toolsSources

Connect Sentry

Connect a Sentry organisation so Adduce reads the errors your users hit and the feedback they send from inside your app.

Adduce reads the errors your users are hitting in Sentry, and the feedback they send through Sentry's feedback widget, and turns both into evidence in this project.

Before you begin

  • Role: project Editor or Lead. A workspace Admin is a lead on every project.
  • In Sentry: an organisation where you can create an auth token.
  • To hand: the organisation slug from your Sentry URL, and an auth token with the three read scopes below.
  • Time: five minutes.

What Adduce reads

SurfaceWhat it becomes
Error issuesEvidence naming the error and where it happens, with the event count and how many people it hit
User FeedbackOne piece of evidence per submission, in the words the person wrote

An error at error or fatal level becomes a pain point; anything quieter becomes an observation. Resolving an issue in Sentry does not remove its evidence — the pain was real, so it stays.

Permissions the token needs

ScopeWhy
org:readresolve the organisation you named
project:readlist your projects and match the slugs you chose
event:readread the issues and the feedback behind them

No write scope is requested, and Adduce never changes anything in Sentry.

Steps

In Sentry, open Settings → Auth Tokens and create a token with the three scopes above. Copy it; it starts sntryu_.

Take the organisation slug out of your Sentry URL — the part after /organizations/.

In Adduce, open the project, choose Sources, then Add source, and choose the Sentry tile.

Callout 1: the Sentry tile, in Observability.

On Connection details, name the source and paste the slug and the token. Leave API host empty for sentry.io; an EU account uses https://de.sentry.io, and a self-hosted install takes its own address.

Callout 1: the organization slug. Callout 2: the auth token.

Narrow the sync if you want to. Projects takes a comma-separated list of project slugs, and an empty box means every project the token can read. Issue query takes Sentry search syntax, and an empty box means is:unresolved.

The Issue query field. Leave it empty and Adduce reads unresolved issues only.

Choose Continue. Adduce asks Sentry for the organisation using your token, so the token, the slug and the host are all proved before anything is saved.

Back on Sources, the new row shows Connected, and a signal count once the first sync has run.

Callout 1: the status of the Sentry row — Connected, and the signal count.

First sync and cadence

The first sync reads ninety days of matching issues and feedback, up to 2,000 issues in one run. After that Adduce keeps a watermark on the newest activity it has seen and reads only what has moved since, so a new error and a new burst on an old error both come through. Adduce syncs once a day at 03:00 UTC, and Sync now on the source page runs one immediately.

Issues and feedback are pulled separately. If one of the two fails, the other still lands and the watermark is held back, so the failed window is read again on the next run rather than skipped.

Disconnect or replace credentials

Delete the source from its page and type its name to confirm. Deleting removes the evidence it produced. To rotate the token, delete the source and add it again; the next sync backfills ninety days.

If it did not work

Why was the token rejected?

Sentry answered that the token is not valid for this organisation. Either it was revoked, or it is missing one of the three scopes. Create a fresh token with org:read, project:read and event:read, and check it starts sntryu_.

Why is there no organisation with that slug?

The slug is misspelled, or your account is in a different region. An EU organisation is invisible on https://sentry.io; set API host to https://de.sentry.io and try again.

Why are there errors but no feedback?

Feedback evidence exists only where people have used Sentry's feedback widget. If nobody has submitted anything in the window Adduce read, the error half arrives on its own, which is a normal result rather than a fault.

What's next

On this page