Webhooks

Webhooks allows your service to receive requests about specific resources, depending on your selection.

Headers

All webhooks will contain the following set of request headers:

Copied
{
  "Content-Type": "application/json",
  "Request-ID": "<request_uuid>",
  "Sentry-Hook-Resource": "<resource>",
  "Sentry-Hook-Timestamp": "<timestamp>",
  "Sentry-Hook-Signature": "<generated_signature>"
}

Sentry-Hook-Resource

This is the resource that triggered the action. The action will be in the payload.

Resources

  • installation
  • event_alert (payload will be a serialized event)
  • issue
  • metric_alert

Sentry-Hook-Signature

A hash generated using your Client Secret and the request itself – used to verify the authenticity of the request.

Verifying the Signature

The platform or SDK you've selected either does not support this functionality, or it is missing from documentation.

If you think this is an error, feel free to let us know on GitHub.

Request Structure

All webhook requests have some common elements.

action
The action that corresponds with the resource in the header. For example, if the resource is issue the action could be created (among other options).

installation
The installation is just an object with the uuid of the installation so that you know to map the webhook request to the appropriate installation.

data
The data object contains information about the resource and will differ in content depending on the type of webhook.

actor
The actor is who, if anyone, triggered the webhook. If a user in Sentry triggered the action, then the actor is the user. If the Sentry App itself triggers the action, then the actor is the Application. And if the action is triggered automatically somehow within Sentry, then the actor is ‘Sentry.’

Copied
    # Samples cases:

    # user installs sentry app

    "actor": {
      'type': 'user',
      'id': <user-id>,
      'name': <user-name>,
    }

    # sentry app makes request assign an issue

    "actor": {
      'type': 'application',
      'id': <sentry-app-uuid>,
      'name': <sentry-app-name>,
    },

    # sentry (sentry.io) auto resolves an issue

    "actor": {
      'type': 'application',
      'id': 'sentry',
      'name': 'Sentry',
    },

Event Types

[Un]Installation

'Sentry-Hook-Resource': 'installation'

'Sentry-Hook-Resource': 'uninstallation'

Attributes

action

  • type: string
  • description: will either be created or deleted

actor

  • type: object
  • description: The user who either installed or uninstalled the integration

data['installation']

  • type: object
  • description: The installation

Payload

Copied
{
    "action": "created",
    "actor": {
        "id": 1,
        "name": "Meredith Heller",
        "type": "user",
    },
    "data": {
        "installation": {
            "status": "pending",
            "organization": {
                "slug": "test-org"
            },
            "app": {
                "uuid": "2ebf071f-28df-4989-aca9-c37c763b278f",
                "slug": "webhooks-galore"
            },
            "code": "f3c71b491e3949b6b033ae45312a4fcb",
            "uuid": "a8e5d37a-696c-4c54-adb5-b3f28d64c7de"
        }
    },
    "installation": {
        "uuid": "a8e5d37a-696c-4c54-adb5-b3f28d64c7de"
    }
}

Issue Alerts

'Sentry-Hook-Resource': 'event_alert'

Attributes

action

  • type: string
  • description: will always be triggered

data['event']

  • type: object
  • description: the event that triggered the alert rule

data['event']['url']

  • type: string
  • description: the api url for the event

data['event']['web_url']

  • type: string
  • description: the web url for the event

data['event']['issue_url']

  • type: string
  • description: the api url for the associated issue

data['triggered_rule']

  • type: string
  • description: The label of the rule that was triggered

Payload

Copied
{
  "action": "triggered",
  "actor": {
    "id": "sentry",
    "name": "Sentry",
    "type": "application"
  },
  "data": {
    "event": {
      "_ref": 1,
      "_ref_version": 2,
      "contexts": {
        "browser": {
          "name": "Chrome",
          "type": "browser",
          "version": "75.0.3770"
        },
        "os": {
          "name": "Mac OS X",
          "type": "os",
          "version": "10.14.0"
        }
      },
      "culprit": "?(<anonymous>)",
      "datetime": "2019-08-19T21:06:17.677000Z",
      "dist": null,
      "event_id": "e4874d664c3540c1a32eab185f12c5ab",
      "exception": {
        "values": [
          {
            "mechanism": {
              "data": {
                "message": "heck is not defined",
                "mode": "stack",
                "name": "ReferenceError"
              },
              "description": null,
              "handled": false,
              "help_link": null,
              "meta": null,
              "synthetic": null,
              "type": "onerror"
            },
            "stacktrace": {
              "frames": [
                {
                  "abs_path": "https://static.jsbin.com/js/prod/runner-4.1.7.min.js",
                  "colno": 10866,
                  "context_line": "{snip} e(a.old),a.active=b,e(a.target,b),setTimeout(function(){c&&c();for(var b,d=a.target.getElementsByTagName(\"iframe\"),e=d.length,f=0,g=a.active {snip}",
                  "data": {
                    "orig_in_app": 1
                  },
                  "errors": null,
                  "filename": "/js/prod/runner-4.1.7.min.js",
                  "function": null,
                  "image_addr": null,
                  "in_app": false,
                  "instruction_addr": null,
                  "lineno": 1,
                  "module": "prod/runner-4.1.7",
                  "package": null,
                  "platform": null,
                  "post_context": null,
                  "pre_context": null,
                  "raw_function": null,
                  "symbol": null,
                  "symbol_addr": null,
                  "trust": null,
                  "vars": null
                },
                {
                  "abs_path": "https://static.jsbin.com/js/prod/runner-4.1.7.min.js",
                  "colno": 13924,
                  "context_line": "{snip} e){i._raw(\"error\",e&&e.stack?e.stack:a+\" (line \"+c+\")\")},c.write(f),c.close(),b.postMessage(\"complete\"),k.wrap(e,a.options)})},b[\"console:ru {snip}",
                  "data": {
                    "orig_in_app": 1
                  },
                  "errors": null,
                  "filename": "/js/prod/runner-4.1.7.min.js",
                  "function": null,
                  "image_addr": null,
                  "in_app": false,
                  "instruction_addr": null,
                  "lineno": 1,
                  "module": "prod/runner-4.1.7",
                  "package": null,
                  "platform": null,
                  "post_context": null,
                  "pre_context": null,
                  "raw_function": null,
                  "symbol": null,
                  "symbol_addr": null,
                  "trust": null,
                  "vars": null
                },
                {
                  "abs_path": "<anonymous>",
                  "colno": 5,
                  "context_line": null,
                  "data": {
                    "orig_in_app": 1
                  },
                  "errors": null,
                  "filename": "<anonymous>",
                  "function": null,
                  "image_addr": null,
                  "in_app": false,
                  "instruction_addr": null,
                  "lineno": 3,
                  "module": null,
                  "package": null,
                  "platform": null,
                  "post_context": null,
                  "pre_context": null,
                  "raw_function": null,
                  "symbol": null,
                  "symbol_addr": null,
                  "trust": null,
                  "vars": null
                }
              ]
            },
            "type": "ReferenceError",
            "value": "heck is not defined"
          }
        ]
      },
      "fingerprint": ["{{ default }}"],
      "grouping_config": {
        "enhancements": "eJybzDhxY05qemJypZWRgaGlroGxrqHRBABbEwcC",
        "id": "legacy:2019-03-12"
      },
      "hashes": ["29f7ffc4903a8a990408b80a3b4c95a2"],
      "issue_url": "https://sentry.io/api/0/issues/1117540176/",
      "key_id": "667532",
      "level": "error",
      "location": "<anonymous>",
      "logger": "",
      "message": "",
      "metadata": {
        "filename": "<anonymous>",
        "type": "ReferenceError",
        "value": "heck is not defined"
      },
      "platform": "javascript",
      "project": 1,
      "received": 1566248777.677,
      "release": null,
      "request": {
        "cookies": null,
        "data": null,
        "env": null,
        "fragment": null,
        "headers": [
          [
            "User-Agent",
            "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
          ]
        ],
        "inferred_content_type": null,
        "method": null,
        "query_string": [],
        "url": "https://null.jsbin.com/runner"
      },
      "sdk": {
        "integrations": [
          "InboundFilters",
          "FunctionToString",
          "TryCatch",
          "Breadcrumbs",
          "GlobalHandlers",
          "LinkedErrors",
          "UserAgent"
        ],
        "name": "sentry.javascript.browser",
        "packages": [
          {
            "name": "npm:@sentry/browser",
            "version": "5.5.0"
          }
        ],
        "version": "5.5.0"
      },
      "tags": [
        ["browser", "Chrome 75.0.3770"],
        ["browser.name", "Chrome"],
        ["handled", "no"],
        ["level", "error"],
        ["mechanism", "onerror"],
        ["os", "Mac OS X 10.14.0"],
        ["os.name", "Mac OS X"],
        ["user", "ip:162.217.75.90"],
        ["url", "https://null.jsbin.com/runner"]
      ],
      "time_spent": null,
      "timestamp": 1566248777.677,
      "title": "ReferenceError: heck is not defined",
      "type": "error",
      "url": "https://sentry.io/api/0/projects/test-org/front-end/events/e4874d664c3540c1a32eab185f12c5ab/",
      "user": {
        "ip_address": "162.218.85.90"
      },
      "version": "7",
      "web_url": "https://sentry.io/organizations/test-org/issues/1117540176/events/e4874d664c3540c1a32eab185f12c5ab/"
    },
    "triggered_rule": "Very Important Alert Rule!"
  },
  "installation": {
    "uuid": "a8e5d37a-696c-4c54-adb5-b3f28d64c7de"
  }
}

Metric Alerts

'Sentry-Hook-Resource': 'metric_alert'

Attributes

action

  • type: string
  • description: will be one of (critical, warning, resolved)

data['metric_alert']

  • type: object
  • description: the incident that triggered the alert rule

data['description_text']

  • type: string
  • description: a human-readable description of the alert

data['description_title']

  • type: string
  • description: a human-readable title for the alert

data['web_url']

  • type: string
  • description: the api url for the incident

Payload

Copied
{
  "action": "resolved",
  "actor": {
    "id": "sentry",
    "name": "Sentry",
    "type": "application"
  },
  "data": {
    "description_text": "1000 events in the last 10 minutes\\nFilter: level:error",
    "description_title": "Resolved: Too many errors",
    "metric_alert": {
      "alert_rule": {
        "aggregate": "count()",
        "created_by": null,
        "dataset": "events",
        "date_created": "2020-09-13T12:26:40.000000Z",
        "date_modified": "2020-09-13T12:26:40.000000Z",
        "environment": null,
        "id": "7",
        "include_all_projects": false,
        "name": "Too many errors",
        "organization_id": "5",
        "projects": [
          "bar"
        ],
        "query": "level:error",
        "resolution": 1,
        "resolve_threshold": null,
        "status": 0,
        "threshold_period": 1,
        "threshold_type": 0,
        "time_window": 10,
        "triggers": []
      },
      "date_closed": null,
      "date_created": "2020-09-13T12:26:40.000000Z",
      "date_detected": "2020-09-13T12:26:40.000000Z",
      "date_started": "2020-09-13T12:26:40.000000Z",
      "id": "4",
      "identifier": "1",
      "organization_id": "5",
      "projects": [
        "bar"
      ],
      "status": 2,
      "status_method": 3,
      "title": "Sacred Marmot",
      "type": 2
    },
    "web_url": "https://sentry.io/organizations/baz/alerts/1/",
  },
  "installation": {
    "uuid": "a8e5d37a-696c-4c54-adb5-b3f28d64c7de"
  }
}

Issues

'Sentry-Hook-Resource': 'issue'

Attributes

action

  • type: string
  • description: can be created, resolved, assigned, or ignored

data['issue']

  • type: object
  • description: the issue

data['issue']['url']

  • type: string
  • description: the api url for the issue

data['issue']['web_url']

  • type: string
  • description: the web url for the issue

data['issue']['project_url']

  • type: string
  • description: the api url to the project the issue is a part of

Payload

Copied
{
  "action": "created",
  "actor": {
    "id": "sentry",
    "name": "Sentry",
    "type": "application"
  },
  "data": {
    "issue": {
      "annotations": [],
      "assignedTo": null,
      "count": "1",
      "culprit": "?(runner)",
      "firstSeen": "2019-08-19T20:58:37.391000Z",
      "hasSeen": false,
      "id": "1170820242",
      "isBookmarked": false,
      "isPublic": false,
      "isSubscribed": false,
      "lastSeen": "2019-08-19T20:58:37.391000Z",
      "level": "error",
      "logger": null,
      "metadata": {
        "filename": "/runner",
        "type": "ReferenceError",
        "value": "blooopy is not defined"
      },
      "numComments": 0,
      "permalink": null,
      "platform": "javascript",
      "project": {
        "id": "1",
        "name": "front-end",
        "platform": "",
        "slug": "front-end"
      },
      "shareId": null,
      "shortId": "FRONT-END-9",
      "status": "unresolved",
      "statusDetails": {},
      "subscriptionDetails": null,
      "title": "ReferenceError: blooopy is not defined",
      "type": "error",
      "userCount": 1
    }
  },
  "installation": {
    "uuid": "a8e5d37a-696c-4c54-adb5-b3f28d64c7de"
  }
}

Error

The error.created resource subscription is only available for Business plans and above.

'Sentry-Hook-Resource': 'error'

Attributes

action

  • type: string
  • description: only option currently is created

data['error']

  • type: object
  • description: the error that was created

data['error']['url']

  • type: string
  • description: the api url for the error

data['error']['web_url']

  • type: string
  • description: the web url for the error

data['error']['issue_url']

  • type: string
  • description: the api url for the associated issue

If you've set up user identification you can find the user attributes under data['error']['user'].

Payload

Copied
{
  "action": "created",
  "actor": {
    "id": "sentry",
    "name": "Sentry",
    "type": "application"
  },
  "data": {
    "error": {
      "_ref": 1293919,
      "_ref_version": 2,
      "contexts": {
        "browser": {
          "name": "Chrome",
          "type": "browser",
          "version": "75.0.3770"
        },
        "os": {
          "name": "Mac OS X",
          "type": "os",
          "version": "10.14.0"
        }
      },
      "culprit": "?(runner)",
      "datetime": "2019-08-19T20:58:37.391000Z",
      "dist": null,
      "event_id": "bb78c1407cea4519aa397afc059c793d",
      "exception": {
        "values": [
          {
            "mechanism": {
              "data": {
                "message": "blooopy is not defined",
                "mode": "stack",
                "name": "ReferenceError"
              },
              "description": null,
              "handled": false,
              "help_link": null,
              "meta": null,
              "synthetic": null,
              "type": "onerror"
            },
            "stacktrace": {
              "frames": [
                {
                  "abs_path": "https://null.jsbin.com/runner",
                  "colno": 5,
                  "context_line": "<meta charset=utf-8>",
                  "data": {
                    "orig_in_app": 1
                  },
                  "errors": null,
                  "filename": "/runner",
                  "function": null,
                  "image_addr": null,
                  "in_app": false,
                  "instruction_addr": null,
                  "lineno": 3,
                  "module": "runner",
                  "package": null,
                  "platform": null,
                  "post_context": [
                    "<title>JS Bin Runner</title>",
                    "",
                    "<style type=\"text/css\">",
                    "  body {",
                    "    margin: 0;"
                  ],
                  "pre_context": ["<!doctype html>", "<html>"],
                  "raw_function": null,
                  "symbol": null,
                  "symbol_addr": null,
                  "trust": null,
                  "vars": null
                }
              ]
            },
            "type": "ReferenceError",
            "value": "blooopy is not defined"
          }
        ]
      },
      "fingerprint": ["{{ default }}"],
      "grouping_config": {
        "enhancements": "eJybzDhxY05qemJypZWRgaGlroGxrqHRBABbEwcC",
        "id": "legacy:2019-03-12"
      },
      "hashes": ["07d2da329989f6cd310eb5f1c5e828a4"],
      "issue_url": "https://sentry.io/api/0/issues/1170820242/",
      "key_id": "667532",
      "level": "error",
      "location": "/runner",
      "logger": "",
      "message": "",
      "metadata": {
        "filename": "/runner",
        "type": "ReferenceError",
        "value": "blooopy is not defined"
      },
      "platform": "javascript",
      "project": 1,
      "received": 1566248317.391,
      "release": null,
      "request": {
        "cookies": null,
        "data": null,
        "env": null,
        "fragment": null,
        "headers": [
          [
            "User-Agent",
            "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
          ]
        ],
        "inferred_content_type": null,
        "method": null,
        "query_string": [],
        "url": "https://null.jsbin.com/runner"
      },
      "sdk": {
        "integrations": [
          "InboundFilters",
          "FunctionToString",
          "TryCatch",
          "Breadcrumbs",
          "GlobalHandlers",
          "LinkedErrors",
          "UserAgent"
        ],
        "name": "sentry.javascript.browser",
        "packages": [
          {
            "name": "npm:@sentry/browser",
            "version": "5.5.0"
          }
        ],
        "version": "5.5.0"
      },
      "tags": [
        ["browser", "Chrome 75.0.3770"],
        ["browser.name", "Chrome"],
        ["handled", "no"],
        ["level", "error"],
        ["mechanism", "onerror"],
        ["os", "Mac OS X 10.14.0"],
        ["os.name", "Mac OS X"],
        ["user", "ip:162.217.75.90"],
        ["url", "https://null.jsbin.com/runner"]
      ],
      "time_spent": null,
      "timestamp": 1566248317.391,
      "title": "ReferenceError: blooopy is not defined",
      "type": "error",
      "url": "https://sentry.io/api/0/projects/test-org/front-end/events/bb78c1407cea4519aa397afc059c793d/",
      "user": {
        "ip_address": "162.218.85.90"
      },
      "version": "7",
      "web_url": "https://sentry.io/organizations/test-org/issues/1170820242/events/bb78c1407cea4519aa397afc059c793d/"
    }
  },
  "installation": {
    "uuid": "a8e5d37a-696c-4c54-adb5-b3f28d64c7de"
  }
}
You can edit this page on GitHub.