Sentry
The Sentry integration lets Helios agents read and change issues, events, projects, releases, and alerts through Sentry's REST API, and start workflows from supported Sentry webhook events.
What your agents can do
Helios agents call Sentry's REST API using the connected integration's permissions. They can read and update issues, events, projects, releases, and alerts.
- Find the newest or most frequent issues in a project or release and summarize them
- Read an issue's events, stack trace, breadcrumbs, and tags, and suggest a fix
- Resolve, archive, assign, or delete issues, and change their priority
- Read an issue's comments and reply to them
- Create releases and deploys, and manage alerts, monitors, projects, and teams
Sentry's published spec doesn't include issue comments, so Helios describes them from Sentry's source. Agents can list and add comments, and change or delete comments that the integration wrote. Agents can only reach the Sentry server set on the connection.
Authentication
| Method | Type | Description |
|---|---|---|
| Sentry Auth Token | API Key | The token of an internal integration in your Sentry organization |
| Your own Sentry OAuth app | OAuth 2.0 | A public integration that you create and install in your organization |
See Integration authentication for how credentials are stored and injected.
Both methods have the same prerequisites:
- Role: you need the Owner role to give the integration every permission below. Sentry doesn't let you give an integration more permissions than your own, and only Owners have Organization: Admin. A Manager can set everything else. Sentry shows an integration's credentials only to Owners and Managers.
- Plan: Sentry's pricing page lists the API and alerts through integrations on the Team plan and higher. Error webhooks need the Business plan or higher.
Helios calls https://sentry.io by default, which works for organizations in both the US and the EU (DE) region. To use the region's own address or a self-hosted Sentry, fill in Base URL, below the method's fields, when you connect. Enter https://de.sentry.io or your server's address, such as https://sentry.example.com, without /api/0. The address must use https and must not be localhost or a private network address. Leave it empty to use https://sentry.io. To change the base URL later, enter the Auth Token or Client Secret again.
Permissions
Both methods get the permissions you set on the integration in Sentry. Helios doesn't request scopes of its own. Set each permission to the level below, for the operations described below:
| Permission | Set to | Scopes | Notes |
|---|---|---|---|
| Project | Admin | project:read, project:write, project:admin | Admin: deletes projects and their keys, code owners, and service hooks |
| Team | Admin | team:read, team:write, team:admin | Admin: deletes teams |
| Release | Admin | project:releases | The only level. Releases, commits, files, and deploys |
| Distribution | Read | project:distribution | Mobile builds for testers |
| Issue & Event | Admin | event:read, event:write, event:admin | Admin: deletes issues |
| Organization | Admin | org:read, org:write, org:admin, org:integrations | Admin: deletes custom integrations. Only Owners can set it |
| Member | Admin | member:read, member:write, member:admin | Admin: removes members |
| Alerts | Read & Write | alerts:read, alerts:write | Alerts and monitors |
| Continuous Integration (CI) | Selected | org:ci | Source map uploads, releases, and code mappings |
The Admin levels of Project, Team, Issue & Event, Organization, and Member only add the delete endpoints. Choose Read & Write for any of them if agents shouldn't delete in that area. Webhooks also need at least Read on Issue & Event for issue, error, comment, and Seer events, and on Project for mobile build events.
Sentry Auth Token
- In Sentry, open Settings → Developer Settings → Custom Integrations. Click Create New Integration, choose Internal Integration, and click Get started.
- Name it Helios. Leave Webhook URL empty for now.
- Under Permissions, set every permission as in the table above, and select Continuous Integration (CI).
- Click Save Changes. Copy the token under Tokens, and the Client Secret under Credentials. Sentry shows the client secret only briefly after you create the integration. You need it for triggers.
- In Helios, choose Sentry Auth Token. Paste the token into Auth Token, and enter your organization's slug, such as
acmeinacme.sentry.io, in Organization Slug. - Save.
Internal integration tokens don't expire. If you revoke the token, create a new one under Tokens and enter it in Helios through Manage.
Your own Sentry OAuth app
This method connects through a public integration that you create. It can stay unpublished, because only your organization installs it.
-
In Sentry, open Settings → Developer Settings → Custom Integrations. Click Create New Integration, choose Public Integration, and click Get started.
-
Fill in Name and Author. Set Redirect URL to:
https://api.heliosapp.com/integrations/sentry/oauth_callback -
Sentry requires a Webhook URL for public integrations. Use this until you connect:
https://api.heliosapp.com/integrations/sentry/webhooks/pending -
Leave Verify Installation off. Under Permissions, set every permission as in the table above, and select Continuous Integration (CI). Click Save Changes.
-
Copy the integration's slug from its URL in Developer Settings, and the Client ID and Client Secret under Credentials. Sentry shows the client secret only briefly after you create the integration.
-
In Helios, choose Your own Sentry OAuth app. Enter the slug in Integration Slug, and fill in Client ID and Client Secret.
-
Save. Sentry shows the integration's permissions and asks you to install it in your organization. If it's already installed, uninstall it in Sentry first.
Helios gets the organization from the installation, so this method has no organization field. Sentry's tokens expire after eight hours, and Helios refreshes them with the client secret. Helios also saves the client secret as the webhook secret, because Sentry signs webhooks with it.
If you rotate the client secret, enter the new one in Helios through Manage. After that, or after you change the integration's permissions, uninstall the integration in Sentry and connect again.
When you delete the connection in Helios, Helios also uninstalls the integration in Sentry. This needs Organization set to Read & Write or Admin. If the uninstall fails, Helios still deletes the connection, and you can uninstall the integration in Sentry yourself.
Sentry records changes made with either method as the integration, so the agent's changes show up under the integration's name in an issue's activity.
Triggers
Sentry can start a Workflow when something happens in your organization. Sentry sets an integration's webhook URL and events only in its own settings, so you set them up by hand. Events come from the integration you connected: the internal integration for Sentry Auth Token, or the public integration for Your own Sentry OAuth app.
Each integration sends webhooks to one URL. A Helios connection that needs triggers needs its own integration in Sentry.
With Sentry Auth Token
- In Helios, open the Sentry connection, click Manage, and open Advanced Configuration. Under Webhook Setup, paste the internal integration's Client Secret into the secret field and save. Then copy the webhook URL.
- In Sentry, open the internal integration under Settings → Developer Settings → Custom Integrations.
- Paste the URL into Webhook URL and turn on Alert Action.
- Under Webhooks, select every event. Select the Issues, Errors, Comments, Seer, and Preprod Artifacts boxes. Each box selects all of its events.
- Click Save Changes.
With your own Sentry OAuth app
Helios has already saved the client secret as the webhook secret.
- In Helios, open the Sentry connection, click Manage, and open Advanced Configuration. Copy the URL under Webhook Setup.
- In Sentry, open the public integration under Settings → Developer Settings → Custom Integrations.
- Replace the
pendingWebhook URL with the copied URL, and turn on Alert Action. - Under Webhooks, select every event. Select the Issues, Errors, Comments, Seer, and Preprod Artifacts boxes. Each box selects all of its events.
- Click Save Changes.
Sentry sends installation events only to public integrations. installation.deleted arrives when the integration is uninstalled, and Helios then marks the connection Disconnected. installation.created arrives only when the integration is installed after its Webhook URL points at Helios, such as when you reinstall it.
If the Errors box can't be selected, your Sentry plan doesn't include error webhooks.
Alerts
Issue, error, comment, Seer, mobile build, and installation events arrive once the webhook is set up. Alert events arrive only from Sentry Alerts that send a notification through the integration you connected.
- In Sentry, go to Monitors → Alerts and click Create Alert.
- Choose the source. To be alerted by a Metric Monitor, choose Alert on specific monitors and connect it.
- Under When, choose the triggers. Triggers on issue activity, such as An issue is resolved or Seer runs on an issue and reaches the stage..., send
activity_alert.triggered. The others sendissue_alert.triggered. - Under Then, add Send a notification via an integration and choose the integration you connected to Helios. If the integration has the schema for metric alerts, add its own action instead. With Your own Sentry OAuth app, choose the public integration, not an internal one.
- Click Create Alert.
To use an existing Alert, edit it and add the same action.
A Metric Monitor's Alert also arrives as these two events. issue_alert.triggered arrives when the monitor opens an issue, and activity_alert.triggered arrives when the issue resolves, if the Alert triggers on An issue is resolved. For metric_alert.triggered and metric_alert.resolved, set up the integration's own action as described below.
Metric alerts
Sentry sends metric_alert.triggered and metric_alert.resolved only through an integration's own Alert action. The integration gets that action when its schema has an alert rule action.
-
In Helios, open the Sentry connection, click Manage, and copy the webhook URL under Webhook Setup. The last part of the URL is the connection's ID.
-
In Sentry, open the integration under Settings → Developer Settings → Custom Integrations, and check that Alert Action is on.
-
Paste this into Schema. Replace
<connection ID>with the connection's ID.{ "elements": [ { "type": "alert-rule-action", "title": "Helios", "settings": { "type": "alert-rule-settings", "uri": "/integrations/sentry/webhooks/<connection ID>?alert-rule-action=1", "required_fields": [ { "type": "select", "name": "target", "label": "Send to", "options": [["workflows", "Helios workflows"]] } ] } } ] }If an existing schema uses
/integrations/sentry/alert-rule-action/<connection ID>, replace itsuriwith the webhook path and query string shown above before saving an Alert. -
Click Save Changes.
-
In the Metric Monitor's Alert, under Then, add the action named after the integration, and choose Helios workflows in Send to. Save the Alert. Sentry asks Helios to confirm the action when you save it.
After you add the schema, Sentry lists the integration as its own action, and no longer under Send a notification via an integration. Alerts that already use that action keep working. The integration's own action also sends issue and activity alerts, as issue_alert.triggered and activity_alert.triggered.
Events
| Event | Description | Filters |
|---|---|---|
issue.created | An issue was created | project, level |
issue.resolved | An issue was resolved | project, level |
issue.assigned | An issue was assigned to a member or team | project, level |
issue.archived | An issue was archived | project, level |
issue.unresolved | A resolved or archived issue became unresolved again | project, level |
error.created | Sentry received an error event. Business plan and higher | project, level, environment (pattern) |
comment.created | A comment was added to an issue | project |
comment.updated | A comment on an issue was edited | project |
comment.deleted | A comment on an issue was deleted | project |
issue_alert.triggered | An issue alert sent a notification to the integration | project, level, environment (pattern), alert rule (pattern) |
metric_alert.triggered | A metric alert reached its warning or critical threshold | project, environment (pattern), alert rule (pattern), severity |
metric_alert.resolved | A metric alert was resolved | project, environment (pattern), alert rule (pattern) |
activity_alert.triggered | An alert fired on an issue's status or Seer stage | project, level, alert rule (pattern), activity |
seer.root_cause_started | Seer started looking for the root cause of an issue | none |
seer.root_cause_completed | Seer found the root cause of an issue | none |
seer.solution_started | Seer started planning a fix | none |
seer.solution_completed | Seer finished planning a fix | none |
seer.coding_started | Seer started writing the code for a fix | none |
seer.coding_completed | Seer finished writing the code for a fix | none |
seer.pr_created | Seer opened pull requests for a fix | none |
seer.iteration_started | Seer started updating its pull request | none |
seer.iteration_completed | Seer finished updating its pull request | none |
preprod_artifact.size_analysis_completed | Size analysis of a mobile build finished or failed | project |
preprod_artifact.build_distribution_completed | A mobile build's distribution processing ended | project |
installation.created | The public integration was installed | none |
installation.deleted | The public integration was uninstalled. Helios marks the connection Disconnected | none |
All filters are optional. An empty filter matches every event.
- Project matches the project's slug. The list shows the organization's projects, up to 5,000. A metric alert that covers several projects matches when any of them is selected.
- Level is the issue's or event's level:
fatal,error,warning,info, ordebug. - Environment matches the event's or the metric alert's environment, such as
productionorstaging-*. - Alert rule matches the Alert's name, such as
Checkout *. - Severity is the threshold a metric alert reached:
criticalorwarning. - Activity is the issue activity that fired an activity alert, such as Resolved, Regressed, Root cause analysis completed or Pull request created.
Environment and alert rule are patterns, and case matters. An event with no environment never matches an environment filter. Seer events name the issue only by its ID, so they have no filters.
When you save the connection, Helios checks which events can reach it. The trigger picker shows the others as unavailable, with the reason:
installation.createdandinstallation.deletedon Sentry Auth Token connections, because Sentry sends them only to public integrations.error.createdwhen your Sentry plan doesn't include error webhooks.
Helios can't check whether the integration has the schema for metric alerts, so metric_alert.triggered and metric_alert.resolved are always available.
Deliveries are verified with the HMAC-SHA256 Sentry-Hook-Signature header, signed with the integration's client secret.
If a workflow subscribes to the corresponding event, resolving, archiving, or assigning an issue can start another issue.resolved, issue.archived, or issue.assigned run. Say in the prompt which events to ignore, such as changes the agent made. See Guarding against events you don't want.
Check that it works
- The connection: after you save, the connection's status shows Connected. Error means Sentry rejected the token or the organization slug.
- The webhook: in Sentry, open Settings → Developer Settings → Custom Integrations and click Dashboard next to the integration. The Request Log lists each delivery to Helios with its status code.
- A trigger:
- Add
issue.createdto a workflow with no filters. - Send a new error to a Sentry project so that a new issue is created.
- Check that a run starts. Then open the connection in Helios and click Webhook events to see the event.
- Add
- An alert: repeat the steps with
issue_alert.triggeredand an Alert that fires on new issues.
Common errors
| What you see | Cause | Fix |
|---|---|---|
The connection's status shows Error, or an error that starts with Failed to call API | Sentry rejected the token, Organization Slug is wrong, or Base URL points at the wrong server | Check the slug in your Sentry URL and the base URL. Create a new token if it was revoked |
Sentry shows Requested permission of org:admin exceeds requester's permission when you save the integration | Only Owners can set Organization: Admin | Ask an Owner to set it, or choose Read & Write |
| Sentry shows a not found page when you connect | Integration Slug doesn't match the public integration | Copy the slug from the integration's URL in Developer Settings |
Sentry returned … for a token request: … | Client ID or Client Secret is wrong, or the client secret was rotated | Enter the current values through Manage, uninstall the integration in Sentry, and connect again |
The Sentry connection is not installed | The OAuth install wasn't finished | Connect again and install the integration in Sentry |
| The connection's status shows Disconnected | The public integration was uninstalled in Sentry | Connect again and install the integration in Sentry |
| No run starts after an event | The Webhook URL in Sentry is empty or still pending, the event isn't selected under Webhooks, the filters don't match, or the plan doesn't include the event, such as error webhooks below the Business plan | Follow the trigger steps above, and try the trigger with no filters |
| An event shows as unavailable in the trigger picker | The connection can't receive it. The picker shows the reason | Use Your own Sentry OAuth app for installation events, or a Business plan for error events. Then save the connection again |
| Issue events start runs, but alerts don't | Alert Action is off, the Alert sends to a different integration, such as an internal one when you connected your own OAuth app, or the Sentry plan doesn't include alerts through integrations | Turn on Alert Action, and choose the connected integration in the Alert's Send a notification via an integration action, or add the integration's own action. Sentry lists these alerts on the Team plan and higher |
The Request Log shows 401 | The webhook secret in Helios isn't this integration's client secret | Enter the integration's Client Secret under Webhook Setup. With your own OAuth app, connect again |
The Request Log shows 400 | No webhook secret is saved in Helios | Enter the integration's Client Secret under Webhook Setup |
The Request Log shows 404 | The Webhook URL is still pending, or belongs to a deleted connection | Paste the URL from the connection's Webhook Setup |
| Sentry can't save an Alert with the integration's own action | The schema's uri has the wrong connection ID, or the webhook secret in Helios isn't the integration's client secret | Copy the ID from the end of the webhook URL into the schema. Enter the integration's Client Secret under Webhook Setup |
An agent gets 403 from an endpoint | The integration lacks that endpoint's permission, such as Issue & Event: Admin for deleting issues | Raise the permission on the integration. With your own OAuth app, uninstall it in Sentry and connect again |
Limits
Sentry rate limits each API endpoint separately, per caller. Responses carry X-Sentry-Rate-Limit-* headers that show the limit and what's left. See Sentry's rate limits.
Last updated on
Resend
The Resend integration lets Helios agents search the Resend API and call any endpoint to send email, check delivery status, and manage domains and contacts.
Zoho CRM
The Zoho CRM integration lets Helios agents call the Zoho CRM REST API through your own OAuth app, and run agents automatically when records in Zoho CRM's built-in modules are created, updated, or deleted.