---
title: "Alert Rule Action"
description: "Learn about the alert rule action UI component."
url: https://docs.sentry.io/integrations/integration-platform/ui-components/alert-rule-action/
---

# Alert Rule Action

The alert rule action component gives you to access to parameters to define routing or configuration in alert rules for your service. When alert rules are triggered for a user, the configured service will receive [issue alert](https://docs.sentry.io/integrations/integration-platform/webhooks/issue-alerts.md) and [metric alert](https://docs.sentry.io/integrations/integration-platform/webhooks/metric-alerts.md) webhook events, with the specified settings for that service, to further route the alert.

## [Schema](https://docs.sentry.io/integrations/integration-platform/ui-components/alert-rule-action.md#schema)

```json
{
  "elements": [
    {
      "type": "alert-rule-action",
      "title": <String>,
      "settings": {
        "type": "alert-rule-settings",
        "uri": <URI>,
        "required_fields": <Array<FormField>>,
        "optional_fields": <Array<FormField>>,
        "description": <String>
      }
    }
  ]
}
```

## [Attributes](https://docs.sentry.io/integrations/integration-platform/ui-components/alert-rule-action.md#attributes)

* `title` - (Required) The title shown in the UI component.
* `uri` - (Required) Sentry will make a POST request to the URI when the User submits the form. If the services fails to process the request (status code >= 400), this component will bubble up the error to the User with the provided response text. Check out our [URI Guidelines](https://docs.sentry.io/integrations/integration-platform/ui-components.md#uri-guidelines) documentation for formatting help.
* `required_fields` - (Required) List of [FormField](https://docs.sentry.io/integrations/integration-platform/ui-components/formfield.md) components the User is required to complete.
* `optional_fields` - (Optional) List of [FormField](https://docs.sentry.io/integrations/integration-platform/ui-components/formfield.md) components the User may complete.
* `description` - (Optional) Text that will be displayed above the form. Limited to 140 characters.

## [Example](https://docs.sentry.io/integrations/integration-platform/ui-components/alert-rule-action.md#example)

```json
{
  "elements": [
    {
      "type": "alert-rule-action",
      "title": "Create a Rekall Inc task",
      "settings": {
        "type": "alert-rule-settings",
        "uri": "/sentry/alert-rule",
        "required_fields": [
          {
            "type": "select",
            "label": "Project",
            "name": "project",
            "options": [["1", "cornflakes"]]
          },
          {
            "type": "select",
            "label": "Assignee",
            "name": "assignee",
            "uri": "/sentry/alert-rule/options/users/"
          }
        ]
      }
    }
  ]
}
```

## [Issue Alert Request Format](https://docs.sentry.io/integrations/integration-platform/ui-components/alert-rule-action.md#issue-alert-request-format)

When an issue alert fires, your service will need to read the settings from the alert payload. The `settings` are in `data.issue_alert.settings`. Check out the full [Issue Alert webhook documentation](https://docs.sentry.io/integrations/integration-platform/webhooks/issue-alerts.md) for more information.

```json
{
  ...
  "data": {
    ...
    "issue_alert": {
      ...
      "settings": [
        {
          "name": "title",
          "value": "Ticket Title"
        },
        {
          "name": "description",
          "value": "Ticket Description"
        }
      ]
    }
  }
}
```

## [Metric Alert Request Format](https://docs.sentry.io/integrations/integration-platform/ui-components/alert-rule-action.md#metric-alert-request-format)

When a metric alert fires, your service will need to read the settings from the alert payload. The `settings` in this example are nested in `data.metric_alert.alert_rule.triggers[1].actions[0].settings`. You will have to identify which trigger and action contains your settings based on the webhook type, so `triggers[1]` and `actions[0]` may not be accurate in your case. Check out the full [Metric Alert webhook documentation](https://docs.sentry.io/integrations/integration-platform/webhooks/metric-alerts.md) for more information.

```json
{
  ...
  "data": {
    ...
    "metric_alert": {
      ...
      "alert_rule": {
        ...
        "triggers": [
          ...
          {
            ...
            "actions": [
              {
                ...
                "settings": [
                  {
                    "name": "title",
                    "value": "Critical Trigger"
                  },
                  {
                    "name": "description",
                    "value": "Critical Description"
                  }
                ]
              }
            ]
          }
        ]
      }
    }
  }
}
```

## [Surfacing Errors](https://docs.sentry.io/integrations/integration-platform/ui-components/alert-rule-action.md#surfacing-errors)

When a request to your service fails, you can show the user a specific error message in [sentry.io](https://sentry.io) by responding with a JSON body in this shape:

```json
{ "message": "Channel no longer exists!" }
```

Sentry forwards your service's status code and shows the `message` from the response body. If you return an error status without a `message`, the user sees a generic error message. If your service doesn't respond at all (for example, the request times out), Sentry returns a `502`. In all cases, the user's action won't complete until the request succeeds.
