# Update email domain allowlist

Replace the allowed email domains for public self-service subscribe on a dashboard.

Source: https://statusdashboard.com/docs/api/status-dashboards/dashboards/subscriptions/email-domain-allowlist-update

`PUT /app/dashboards/{id}/subscriptions/email-domain-allowlist`

Replaces the full domain list for a dashboard without changing the `enabled` flag. Requires the **Email** plan capability (`emailEnabled`).

***

## Path parameters
| Parameter | Description                |
| --------- | -------------------------- |
| `id`      | The UUID of the dashboard. |

***

## Request
See [API Basics](/docs/api) for required headers.

### Request body
| Field     | Type       | Description                                                                                                                                                            |
| --------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `domains` | `string[]` | Normalized lowercase FQDNs (e.g. `company.com`, `mail.company.com`). Exact match only — parent domains do not imply subdomains. Max length is your organization limit. |

Duplicate domains are rejected with `400`.

***

## Sample request
```bash
curl -X PUT https://api.statusdashboard.com/app/dashboards/a1b2c3d4-e5f6-7890-abcd-ef1234567890/subscriptions/email-domain-allowlist \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{ "domains": ["gmail.com", "acme.com"] }'
```

## Sample response
**Status: `200 OK`**

```json
{
  "enabled": false,
  "domains": ["gmail.com", "acme.com"],
  "limits": {
    "emailDomainAllowlist": 5
  }
}
```

***

## Error responses
| Status | When                                                                        |
| ------ | --------------------------------------------------------------------------- |
| `400`  | Invalid domain shape, duplicate domain, or malformed JSON                   |
| `403`  | Domain count exceeds organization limit, or org plan does not include email |
| `404`  | Dashboard not found or not owned by your organization                       |
