Integrations overview
Integration setup and status, with workspace connections routed per project.
Integrations are connected once for the whole workspace, in Integrations in the sidebar, then routed per project.
Except for email, integrations require Pro or above.
What's available
Notify your team
| Integration | Setup | Page |
|---|---|---|
| Slack | Authorize Slack and choose a channel | Slack |
| Discord | Channel webhook URL | Discord |
| Microsoft Teams | Channel webhook URL | Teams |
| An address | ||
| Webhook | Any URL you control | Webhooks |
Create issues and tasks
| Integration | Setup | Page |
|---|---|---|
| Linear | Authorize Linear and choose a team | Linear |
| Jira | Authorize Atlassian and choose a site | Jira |
| GitHub | Authorize GitHub and choose a repository | GitHub |
| GitLab | Personal access token + project id | GitLab |
| Asana | Personal access token + project id | Asana |
| Trello | API key + token + list id | Trello |
Two ways feedback reaches a tool
Automatic, on every new thread. Every connected integration fires when feedback arrives on a project, unless that project has switched it off. Notification channels post a message; issue trackers create an issue, task, or card.
Connecting Linear, Jira, GitHub, GitLab, Asana, or Trello means every new thread becomes a ticket on every project that leaves it on. That's right for a dedicated triage board and wrong for a shared sprint board. If you only want some threads to become tickets, switch the tracker off for the project and create tickets on demand instead.
On demand, per thread. Right-click a thread in the inbox and choose Create issue to create one in Linear, Jira, or GitHub. The thread's detail panel offers the same under Links.
The on-demand path sends more: the thread's title, page path and URL, issue type, priority, status, expected and actual behaviour, and the element selector. The automatic path sends the comment, the author, and a link back to the page. Where you have the choice, on demand produces the better ticket.
For conditional routing — say, only critical production threads — use an automation or a webhook into your own logic.
Connecting one
Pick the provider
Integrations in the sidebar → pick the provider. Each provider's page walks through its setup.
- Slack, Linear, Jira, and GitHub use guided setup: authorize the provider, land back in the dashboard, and choose a channel, team, site, or repository from a list. Nothing to copy or paste.
- Discord and Microsoft Teams take a channel webhook URL, Email takes an address, and Webhook takes your own URL.
- GitLab, Asana, and Trello take an access token plus the destination's id.
Connect it
Finish the provider's flow and save. Stored credentials are encrypted at rest with AES-256-GCM. For guided providers, the OAuth tokens are held by the connection service and refreshed as needed, never stored in Annot8's database.
Test it
Hit Test. Alert integrations send a test message; issue trackers check access to the selected destination without creating a ticket. The integration row shows the result of the most recent check or delivery, so "is this actually working?" is visible instead of hidden in a log.
Route it to projects
A new connection is on for every project. Project → Integrations lists every workspace integration with a toggle: switch off the ones a project shouldn't use, such as a staging site.
Per-project overrides
A project can override the workspace configuration for an integration — most usefully, a different Slack channel per project or a different Linear team.
Set it in Project → Integrations: choose Route… next to the integration, pick the destination, and Save route. Use workspace default removes the override again. Routes are available for Slack (channel), Linear (team), GitHub (repository and branch), Jira (project key on the same site), and webhooks (URL).
That means one authorization and per-project routing, rather than a separate connection per project.
Delivery status and failures
Every integration records the outcome of its last delivery, with the error text when something went wrong.
A failing integration never blocks feedback. A thread is created and stored first; delivery is attempted afterwards, and a broken webhook produces a visible error on the integration rather than a lost thread.
Disconnecting
Disconnect removes the integration and its stored credentials. New feedback stops being delivered there. Threads, tickets, and messages that already exist are untouched.
Not seeing anything arrive?
In order:
- Is the integration switched off for this project?
- Does the integration row show Failing or Reconnect needed?
- Does the Test button succeed?
- Is the destination still there? Discord and Teams webhooks die with the channel they were created for, and archived Slack channels stop accepting posts.
- Is your plan still paid? Integrations stop when a subscription lapses.