> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended**:
> ```bash
> npx @scalekit-inc/cli setup
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Webhooks

Scalekit sends these webhooks when a connected account changes. [Listen for account events](https://docs.scalekit.com/agentkit/account-events/) shows how to add an endpoint and verify each request.

One page per endpoint, each with its own markdown copy:

- [connected_account.created](https://docs.scalekit.com/agentkit/reference/events/connected-account-created.md)
- [connected_account.updated](https://docs.scalekit.com/agentkit/reference/events/connected-account-updated.md)
- [connected_account.deleted](https://docs.scalekit.com/agentkit/reference/events/connected-account-deleted.md)
- [connected_account.magic_link_generated](https://docs.scalekit.com/agentkit/reference/events/connected-account-magic-link-generated.md)
- [connected_account.oauth_tokens_fetched](https://docs.scalekit.com/agentkit/reference/events/connected-account-oauth-tokens-fetched.md)
- [connected_account.oauth_succeeded](https://docs.scalekit.com/agentkit/reference/events/connected-account-oauth-succeeded.md)
- [connected_account.token_refresh_succeeded](https://docs.scalekit.com/agentkit/reference/events/connected-account-token-refresh-succeeded.md)
- [connected_account.token_refresh_failed](https://docs.scalekit.com/agentkit/reference/events/connected-account-token-refresh-failed.md)
- [connected_account.status_updated](https://docs.scalekit.com/agentkit/reference/events/connected-account-status-updated.md)

## connected_account.created

Triggered when a new connected account is created

Scalekit sends the event as a JSON `POST` to your webhook endpoint, signed in the `webhook-id`, `webhook-timestamp` and `webhook-signature` headers. Verify the signature before you act on it; see [Listen for account events](https://docs.scalekit.com/agentkit/account-events/).

**Payload**

| Name | Type | Description |
| --- | --- | --- |
| `data` | object | The connected account the event is about. |
| `data.connection_id` | string | The connection's ID. |
| `data.id` | string | The connected account's ID. |
| `data.identifier` | string | Your app's ID for the user, the value passed when the account was created. |
| `data.provider` | string | The app, such as `GMAIL`. |
| `data.status` | string (enum) | Current connected account status. One of: `ACTIVE`, `EXPIRED`, `PENDING_AUTH`, `PENDING_VERIFICATION`, `DISCONNECTED`. |
| `data.authorization_type` | string (enum) | Authorization type of the connected account. One of: `OAUTH`, `API_KEY`, `BASIC_AUTH`, `BEARER_TOKEN`, `CUSTOM`, `BASIC`, `OAUTH_M2M`, `TRELLO_OAUTH1`, `GOOGLE_DWD`, `TRUSTED_IDP`, `SMART_FHIR`, `NO_AUTH`. |
| `data.connection_name` | string | The connection's name, as shown in AgentKit > Connections. Omitted when it can't be resolved. |
| `data.last_used_at` | string | When the connected account was last used. |
| `data.token_expires_at` | string | When the access token expires, if known. |
| `environment_id` | string | The environment ID where the event occurred. |
| `id` | string | Unique identifier for the webhook event (must be prefixed with "evt_"). |
| `object` | string (enum) | The type of object that triggered the webhook. One of: `ConnectedAccount`. |
| `occurred_at` | string | When the event occurred (ISO 8601 format). |
| `spec_version` | string | The webhook specification version. |
| `type` | string (enum) | The event type. One of: `connected_account.created`. |
| `display_name` | string | Human-readable display name for the event. |
| `organization_id` | string | The organization ID (if applicable). |

**Example**

```json
{
  "spec_version": "1",
  "id": "evt_101652975398683150",
  "type": "connected_account.created",
  "occurred_at": "2026-10-02T14:30:00.512Z",
  "environment_id": "env_88640229614813449",
  "object": "ConnectedAccount",
  "data": {
    "id": "ca_24834495392086178",
    "identifier": "user_123",
    "connection_id": "conn_70219645518265104",
    "connection_name": "gmail",
    "provider": "GMAIL",
    "authorization_type": "OAUTH",
    "status": "PENDING_AUTH"
  }
}
```

## connected_account.updated

Triggered when a connected account is updated

Scalekit sends the event as a JSON `POST` to your webhook endpoint, signed in the `webhook-id`, `webhook-timestamp` and `webhook-signature` headers. Verify the signature before you act on it; see [Listen for account events](https://docs.scalekit.com/agentkit/account-events/).

**Payload**

| Name | Type | Description |
| --- | --- | --- |
| `data` | object | The connected account the event is about. |
| `data.connection_id` | string | The connection's ID. |
| `data.id` | string | The connected account's ID. |
| `data.identifier` | string | Your app's ID for the user, the value passed when the account was created. |
| `data.provider` | string | The app, such as `GMAIL`. |
| `data.status` | string (enum) | Current connected account status. One of: `ACTIVE`, `EXPIRED`, `PENDING_AUTH`, `PENDING_VERIFICATION`, `DISCONNECTED`. |
| `data.authorization_type` | string (enum) | Authorization type of the connected account. One of: `OAUTH`, `API_KEY`, `BASIC_AUTH`, `BEARER_TOKEN`, `CUSTOM`, `BASIC`, `OAUTH_M2M`, `TRELLO_OAUTH1`, `GOOGLE_DWD`, `TRUSTED_IDP`, `SMART_FHIR`, `NO_AUTH`. |
| `data.connection_name` | string | The connection's name, as shown in AgentKit > Connections. Omitted when it can't be resolved. |
| `data.last_used_at` | string | When the connected account was last used. |
| `data.token_expires_at` | string | When the access token expires, if known. |
| `environment_id` | string | The environment ID where the event occurred. |
| `id` | string | Unique identifier for the webhook event (must be prefixed with "evt_"). |
| `object` | string (enum) | The type of object that triggered the webhook. One of: `ConnectedAccount`. |
| `occurred_at` | string | When the event occurred (ISO 8601 format). |
| `spec_version` | string | The webhook specification version. |
| `type` | string (enum) | The event type. One of: `connected_account.updated`. |
| `display_name` | string | Human-readable display name for the event. |
| `organization_id` | string | The organization ID (if applicable). |

**Example**

```json
{
  "spec_version": "1",
  "id": "evt_101652975398683154",
  "type": "connected_account.updated",
  "occurred_at": "2026-10-02T14:34:00.512Z",
  "environment_id": "env_88640229614813449",
  "object": "ConnectedAccount",
  "data": {
    "id": "ca_24834495392086178",
    "identifier": "user_123",
    "connection_id": "conn_70219645518265104",
    "connection_name": "gmail",
    "provider": "GMAIL",
    "authorization_type": "OAUTH",
    "status": "ACTIVE",
    "token_expires_at": "2026-10-02T15:30:00Z"
  }
}
```

## connected_account.deleted

Triggered when a connected account is deleted

Scalekit sends the event as a JSON `POST` to your webhook endpoint, signed in the `webhook-id`, `webhook-timestamp` and `webhook-signature` headers. Verify the signature before you act on it; see [Listen for account events](https://docs.scalekit.com/agentkit/account-events/).

**Payload**

| Name | Type | Description |
| --- | --- | --- |
| `data` | object | The connected account the event is about. |
| `data.connection_id` | string | The connection's ID. |
| `data.id` | string | The connected account's ID. |
| `data.identifier` | string | Your app's ID for the user, the value passed when the account was created. |
| `data.provider` | string | The app, such as `GMAIL`. |
| `data.status` | string (enum) | Current connected account status. One of: `ACTIVE`, `EXPIRED`, `PENDING_AUTH`, `PENDING_VERIFICATION`, `DISCONNECTED`. |
| `data.authorization_type` | string (enum) | Authorization type of the connected account. One of: `OAUTH`, `API_KEY`, `BASIC_AUTH`, `BEARER_TOKEN`, `CUSTOM`, `BASIC`, `OAUTH_M2M`, `TRELLO_OAUTH1`, `GOOGLE_DWD`, `TRUSTED_IDP`, `SMART_FHIR`, `NO_AUTH`. |
| `data.connection_name` | string | The connection's name, as shown in AgentKit > Connections. Omitted when it can't be resolved. |
| `data.last_used_at` | string | When the connected account was last used. |
| `data.token_expires_at` | string | When the access token expires, if known. |
| `environment_id` | string | The environment ID where the event occurred. |
| `id` | string | Unique identifier for the webhook event (must be prefixed with "evt_"). |
| `object` | string (enum) | The type of object that triggered the webhook. One of: `ConnectedAccount`. |
| `occurred_at` | string | When the event occurred (ISO 8601 format). |
| `spec_version` | string | The webhook specification version. |
| `type` | string (enum) | The event type. One of: `connected_account.deleted`. |
| `display_name` | string | Human-readable display name for the event. |
| `organization_id` | string | The organization ID (if applicable). |

**Example**

```json
{
  "spec_version": "1",
  "id": "evt_101652975398683157",
  "type": "connected_account.deleted",
  "occurred_at": "2026-10-02T14:37:00.512Z",
  "environment_id": "env_88640229614813449",
  "object": "ConnectedAccount",
  "data": {
    "id": "ca_24834495392086178",
    "identifier": "user_123",
    "connection_id": "conn_70219645518265104",
    "connection_name": "gmail",
    "provider": "GMAIL",
    "authorization_type": "OAUTH",
    "status": "ACTIVE",
    "token_expires_at": "2026-10-02T15:30:00Z"
  }
}
```

## connected_account.magic_link_generated

Triggered when an authorization link is created for a user

Scalekit sends the event as a JSON `POST` to your webhook endpoint, signed in the `webhook-id`, `webhook-timestamp` and `webhook-signature` headers. Verify the signature before you act on it; see [Listen for account events](https://docs.scalekit.com/agentkit/account-events/).

**Payload**

| Name | Type | Description |
| --- | --- | --- |
| `data` | object | The connected account the event is about. |
| `data.connection_id` | string | The connection's ID. |
| `data.id` | string | The connected account's ID. |
| `data.identifier` | string | Your app's ID for the user, the value passed when the account was created. |
| `data.provider` | string | The app, such as `GMAIL`. |
| `data.status` | string (enum) | Current connected account status. One of: `ACTIVE`, `EXPIRED`, `PENDING_AUTH`, `PENDING_VERIFICATION`, `DISCONNECTED`. |
| `data.authorization_type` | string (enum) | Authorization type of the connected account. One of: `OAUTH`, `API_KEY`, `BASIC_AUTH`, `BEARER_TOKEN`, `CUSTOM`, `BASIC`, `OAUTH_M2M`, `TRELLO_OAUTH1`, `GOOGLE_DWD`, `TRUSTED_IDP`, `SMART_FHIR`, `NO_AUTH`. |
| `data.connection_name` | string | The connection's name, as shown in AgentKit > Connections. Omitted when it can't be resolved. |
| `data.last_used_at` | string | When the connected account was last used. |
| `data.token_expires_at` | string | When the access token expires, if known. |
| `environment_id` | string | The environment ID where the event occurred. |
| `id` | string | Unique identifier for the webhook event (must be prefixed with "evt_"). |
| `object` | string (enum) | The type of object that triggered the webhook. One of: `ConnectedAccount`. |
| `occurred_at` | string | When the event occurred (ISO 8601 format). |
| `spec_version` | string | The webhook specification version. |
| `type` | string (enum) | The event type. One of: `connected_account.magic_link_generated`. |
| `display_name` | string | Human-readable display name for the event. |
| `organization_id` | string | The organization ID (if applicable). |

**Example**

```json
{
  "spec_version": "1",
  "id": "evt_101652975398683151",
  "type": "connected_account.magic_link_generated",
  "occurred_at": "2026-10-02T14:31:00.512Z",
  "environment_id": "env_88640229614813449",
  "object": "ConnectedAccount",
  "data": {
    "id": "ca_24834495392086178",
    "identifier": "user_123",
    "connection_id": "conn_70219645518265104",
    "connection_name": "gmail",
    "provider": "GMAIL",
    "authorization_type": "OAUTH",
    "status": "PENDING_AUTH"
  }
}
```

## connected_account.oauth_tokens_fetched

Triggered when OAuth tokens are successfully fetched

Scalekit sends the event as a JSON `POST` to your webhook endpoint, signed in the `webhook-id`, `webhook-timestamp` and `webhook-signature` headers. Verify the signature before you act on it; see [Listen for account events](https://docs.scalekit.com/agentkit/account-events/).

**Payload**

| Name | Type | Description |
| --- | --- | --- |
| `data` | object | The connected account the event is about. |
| `data.connection_id` | string | The connection's ID. |
| `data.id` | string | The connected account's ID. |
| `data.identifier` | string | Your app's ID for the user, the value passed when the account was created. |
| `data.provider` | string | The app, such as `GMAIL`. |
| `data.status` | string (enum) | Current connected account status. One of: `ACTIVE`, `EXPIRED`, `PENDING_AUTH`, `PENDING_VERIFICATION`, `DISCONNECTED`. |
| `data.authorization_type` | string (enum) | Authorization type of the connected account. One of: `OAUTH`, `API_KEY`, `BASIC_AUTH`, `BEARER_TOKEN`, `CUSTOM`, `BASIC`, `OAUTH_M2M`, `TRELLO_OAUTH1`, `GOOGLE_DWD`, `TRUSTED_IDP`, `SMART_FHIR`, `NO_AUTH`. |
| `data.connection_name` | string | The connection's name, as shown in AgentKit > Connections. Omitted when it can't be resolved. |
| `data.last_used_at` | string | When the connected account was last used. |
| `data.token_expires_at` | string | When the access token expires, if known. |
| `environment_id` | string | The environment ID where the event occurred. |
| `id` | string | Unique identifier for the webhook event (must be prefixed with "evt_"). |
| `object` | string (enum) | The type of object that triggered the webhook. One of: `ConnectedAccount`. |
| `occurred_at` | string | When the event occurred (ISO 8601 format). |
| `spec_version` | string | The webhook specification version. |
| `type` | string (enum) | The event type. One of: `connected_account.oauth_tokens_fetched`. |
| `display_name` | string | Human-readable display name for the event. |
| `organization_id` | string | The organization ID (if applicable). |

**Example**

```json
{
  "spec_version": "1",
  "id": "evt_101652975398683152",
  "type": "connected_account.oauth_tokens_fetched",
  "occurred_at": "2026-10-02T14:32:00.512Z",
  "environment_id": "env_88640229614813449",
  "object": "ConnectedAccount",
  "data": {
    "id": "ca_24834495392086178",
    "identifier": "user_123",
    "connection_id": "conn_70219645518265104",
    "connection_name": "gmail",
    "provider": "GMAIL",
    "authorization_type": "OAUTH",
    "status": "ACTIVE",
    "token_expires_at": "2026-10-02T15:30:00Z"
  }
}
```

## connected_account.oauth_succeeded

Triggered when OAuth authentication succeeds

Scalekit sends the event as a JSON `POST` to your webhook endpoint, signed in the `webhook-id`, `webhook-timestamp` and `webhook-signature` headers. Verify the signature before you act on it; see [Listen for account events](https://docs.scalekit.com/agentkit/account-events/).

**Payload**

| Name | Type | Description |
| --- | --- | --- |
| `data` | object | The connected account the event is about. |
| `data.connection_id` | string | The connection's ID. |
| `data.id` | string | The connected account's ID. |
| `data.identifier` | string | Your app's ID for the user, the value passed when the account was created. |
| `data.provider` | string | The app, such as `GMAIL`. |
| `data.status` | string (enum) | Current connected account status. One of: `ACTIVE`, `EXPIRED`, `PENDING_AUTH`, `PENDING_VERIFICATION`, `DISCONNECTED`. |
| `data.authorization_type` | string (enum) | Authorization type of the connected account. One of: `OAUTH`, `API_KEY`, `BASIC_AUTH`, `BEARER_TOKEN`, `CUSTOM`, `BASIC`, `OAUTH_M2M`, `TRELLO_OAUTH1`, `GOOGLE_DWD`, `TRUSTED_IDP`, `SMART_FHIR`, `NO_AUTH`. |
| `data.connection_name` | string | The connection's name, as shown in AgentKit > Connections. Omitted when it can't be resolved. |
| `data.last_used_at` | string | When the connected account was last used. |
| `data.token_expires_at` | string | When the access token expires, if known. |
| `environment_id` | string | The environment ID where the event occurred. |
| `id` | string | Unique identifier for the webhook event (must be prefixed with "evt_"). |
| `object` | string (enum) | The type of object that triggered the webhook. One of: `ConnectedAccount`. |
| `occurred_at` | string | When the event occurred (ISO 8601 format). |
| `spec_version` | string | The webhook specification version. |
| `type` | string (enum) | The event type. One of: `connected_account.oauth_succeeded`. |
| `display_name` | string | Human-readable display name for the event. |
| `organization_id` | string | The organization ID (if applicable). |

**Example**

```json
{
  "spec_version": "1",
  "id": "evt_101652975398683153",
  "type": "connected_account.oauth_succeeded",
  "occurred_at": "2026-10-02T14:33:00.512Z",
  "environment_id": "env_88640229614813449",
  "object": "ConnectedAccount",
  "data": {
    "id": "ca_24834495392086178",
    "identifier": "user_123",
    "connection_id": "conn_70219645518265104",
    "connection_name": "gmail",
    "provider": "GMAIL",
    "authorization_type": "OAUTH",
    "status": "ACTIVE",
    "token_expires_at": "2026-10-02T15:30:00Z"
  }
}
```

## connected_account.token_refresh_succeeded

Triggered when token refresh succeeds

Scalekit sends the event as a JSON `POST` to your webhook endpoint, signed in the `webhook-id`, `webhook-timestamp` and `webhook-signature` headers. Verify the signature before you act on it; see [Listen for account events](https://docs.scalekit.com/agentkit/account-events/).

**Payload**

| Name | Type | Description |
| --- | --- | --- |
| `data` | object | The connected account the event is about. |
| `data.connection_id` | string | The connection's ID. |
| `data.id` | string | The connected account's ID. |
| `data.identifier` | string | Your app's ID for the user, the value passed when the account was created. |
| `data.provider` | string | The app, such as `GMAIL`. |
| `data.status` | string (enum) | Current connected account status. One of: `ACTIVE`, `EXPIRED`, `PENDING_AUTH`, `PENDING_VERIFICATION`, `DISCONNECTED`. |
| `data.authorization_type` | string (enum) | Authorization type of the connected account. One of: `OAUTH`, `API_KEY`, `BASIC_AUTH`, `BEARER_TOKEN`, `CUSTOM`, `BASIC`, `OAUTH_M2M`, `TRELLO_OAUTH1`, `GOOGLE_DWD`, `TRUSTED_IDP`, `SMART_FHIR`, `NO_AUTH`. |
| `data.connection_name` | string | The connection's name, as shown in AgentKit > Connections. Omitted when it can't be resolved. |
| `data.last_used_at` | string | When the connected account was last used. |
| `data.token_expires_at` | string | When the access token expires, if known. |
| `environment_id` | string | The environment ID where the event occurred. |
| `id` | string | Unique identifier for the webhook event (must be prefixed with "evt_"). |
| `object` | string (enum) | The type of object that triggered the webhook. One of: `ConnectedAccount`. |
| `occurred_at` | string | When the event occurred (ISO 8601 format). |
| `spec_version` | string | The webhook specification version. |
| `type` | string (enum) | The event type. One of: `connected_account.token_refresh_succeeded`. |
| `display_name` | string | Human-readable display name for the event. |
| `organization_id` | string | The organization ID (if applicable). |

**Example**

```json
{
  "spec_version": "1",
  "id": "evt_101652975398683155",
  "type": "connected_account.token_refresh_succeeded",
  "occurred_at": "2026-10-02T14:35:00.512Z",
  "environment_id": "env_88640229614813449",
  "object": "ConnectedAccount",
  "data": {
    "id": "ca_24834495392086178",
    "identifier": "user_123",
    "connection_id": "conn_70219645518265104",
    "connection_name": "gmail",
    "provider": "GMAIL",
    "authorization_type": "OAUTH",
    "status": "ACTIVE",
    "token_expires_at": "2026-10-02T15:30:00Z"
  }
}
```

## connected_account.token_refresh_failed

Triggered when token refresh fails

Scalekit sends the event as a JSON `POST` to your webhook endpoint, signed in the `webhook-id`, `webhook-timestamp` and `webhook-signature` headers. Verify the signature before you act on it; see [Listen for account events](https://docs.scalekit.com/agentkit/account-events/).

**Payload**

| Name | Type | Description |
| --- | --- | --- |
| `data` | object | The connected account the event is about. |
| `data.connection_id` | string | The connection's ID. |
| `data.id` | string | The connected account's ID. |
| `data.identifier` | string | Your app's ID for the user, the value passed when the account was created. |
| `data.provider` | string | The app, such as `GMAIL`. |
| `data.status` | string (enum) | Current connected account status. One of: `ACTIVE`, `EXPIRED`, `PENDING_AUTH`, `PENDING_VERIFICATION`, `DISCONNECTED`. |
| `data.authorization_type` | string (enum) | Authorization type of the connected account. One of: `OAUTH`, `API_KEY`, `BASIC_AUTH`, `BEARER_TOKEN`, `CUSTOM`, `BASIC`, `OAUTH_M2M`, `TRELLO_OAUTH1`, `GOOGLE_DWD`, `TRUSTED_IDP`, `SMART_FHIR`, `NO_AUTH`. |
| `data.connection_name` | string | The connection's name, as shown in AgentKit > Connections. Omitted when it can't be resolved. |
| `data.last_used_at` | string | When the connected account was last used. |
| `data.token_expires_at` | string | When the access token expires, if known. |
| `environment_id` | string | The environment ID where the event occurred. |
| `id` | string | Unique identifier for the webhook event (must be prefixed with "evt_"). |
| `object` | string (enum) | The type of object that triggered the webhook. One of: `ConnectedAccount`. |
| `occurred_at` | string | When the event occurred (ISO 8601 format). |
| `spec_version` | string | The webhook specification version. |
| `type` | string (enum) | The event type. One of: `connected_account.token_refresh_failed`. |
| `display_name` | string | Human-readable display name for the event. |
| `organization_id` | string | The organization ID (if applicable). |

**Example**

```json
{
  "spec_version": "1",
  "id": "evt_101652975398683156",
  "type": "connected_account.token_refresh_failed",
  "occurred_at": "2026-10-02T14:36:00.512Z",
  "environment_id": "env_88640229614813449",
  "object": "ConnectedAccount",
  "data": {
    "id": "ca_24834495392086178",
    "identifier": "user_123",
    "connection_id": "conn_70219645518265104",
    "connection_name": "gmail",
    "provider": "GMAIL",
    "authorization_type": "OAUTH",
    "status": "EXPIRED"
  }
}
```

## connected_account.status_updated

Triggered when a connected account's status changes between two states (for example PENDING_AUTH to ACTIVE, ACTIVE to EXPIRED, or any state to DISCONNECTED). Not triggered on account creation.

Scalekit sends the event as a JSON `POST` to your webhook endpoint, signed in the `webhook-id`, `webhook-timestamp` and `webhook-signature` headers. Verify the signature before you act on it; see [Listen for account events](https://docs.scalekit.com/agentkit/account-events/).

**Payload**

| Name | Type | Description |
| --- | --- | --- |
| `data` | object | The connected account whose status changed, including its previous status. |
| `data.authorization_type` | string (enum) | The authorization type of the connected account. One of: `OAUTH`, `API_KEY`, `BASIC_AUTH`, `BEARER_TOKEN`, `CUSTOM`, `BASIC`, `OAUTH_M2M`, `TRELLO_OAUTH1`, `GOOGLE_DWD`, `TRUSTED_IDP`, `SMART_FHIR`, `NO_AUTH`. |
| `data.connection_id` | string | The connection's ID. |
| `data.id` | string | The connected account's ID. |
| `data.identifier` | string | Your app's ID for the user, the value passed when the account was created. |
| `data.old_status` | string (enum) | The previous status of the connected account. One of: `ACTIVE`, `EXPIRED`, `PENDING_AUTH`, `PENDING_VERIFICATION`, `DISCONNECTED`. |
| `data.provider` | string | The app, such as `GMAIL`. |
| `data.status` | string (enum) | The new status of the connected account. One of: `ACTIVE`, `EXPIRED`, `PENDING_AUTH`, `PENDING_VERIFICATION`, `DISCONNECTED`. |
| `data.connection_name` | string | The connection's name, as shown in AgentKit > Connections. Omitted when it cannot be resolved. |
| `environment_id` | string | The environment ID where the event occurred. |
| `id` | string | Unique identifier for the webhook event (must be prefixed with "evt_"). |
| `object` | string (enum) | The type of object that triggered the webhook. One of: `ConnectedAccount`. |
| `occurred_at` | string | When the event occurred (ISO 8601 format). |
| `spec_version` | string | The webhook specification version. |
| `type` | string (enum) | The event type. One of: `connected_account.status_updated`. |

**Example**

```json
{
  "spec_version": "1",
  "id": "evt_101652975398683149",
  "type": "connected_account.status_updated",
  "occurred_at": "2026-10-02T14:32:00.512Z",
  "environment_id": "env_88640229614813449",
  "object": "ConnectedAccount",
  "data": {
    "id": "ca_24834495392086178",
    "identifier": "user_123",
    "connection_id": "conn_70219645518265104",
    "connection_name": "gmail",
    "provider": "GMAIL",
    "authorization_type": "OAUTH",
    "status": "ACTIVE",
    "old_status": "PENDING_AUTH"
  }
}
```


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
