> ## Documentation Index
> Fetch the complete documentation index at: https://www.dynamic.xyz/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Admin and environment events

> Webhook events fired by developer-dashboard admin actions and environment changes

## Event object

**eventId**
The unique id of the event that triggered the webhook message. A single event in a project can trigger one or more webhook messages if there is more than one webhook configured.

**messageId**
The unique id of the message sent. This key should be used as the idempotency key in order to handle redeliveries.

**webhookId**
The unique id of the configured webhook that sent the message.

**userId**
The unique id of the user who triggered the event. This can be different than `userId`'s in the event payload. For instance, when creating users via developer APIs the triggerer will be the developer's userId and the event payload will contain the id of the created user. This parameter will be `undefined` if the event is triggered using an API key.

**externalUserId**
The external user id associated with the user who triggered the event. This field is only present when [external authentication](/docs/auth/bring-your-own-auth) is enabled for the environment and the user has an associated external user id. Useful for correlating Dynamic webhook events with users in your own system.

**eventName**
The name of the event that triggered the message. Events always conform to the following convention `{resourceType}.{action}`. For example with the event name of `user.created`, `user` is the resource type and `created` is the action performed on the resource. The full list of event names can be retrieved by using the `/eventTypes` endpoint in the API [here](/docs/api-reference/events/get-event-types).

**environmentId**
The unique id of the environment from which the event originated.

**environmentName**
The name of the environment from which the event originated. This can be used to have the same systems handle both `live` and `sandbox` events.

**timestamp**
Timestamp when the event occurred.

**redelivery**
If the message is a redelivery, this will be set to true.

**data**
The data object contains the event payload. The structure of the data object will depend on the event that triggered the message. The product event catalogs below list each event's payload.

#### Example Event Object

Below is an example of a `user.created` event

```json theme={"system"}
{
  "eventId": "2a92c161-3167-44ad-8fce-4c6cdaed8129",
  "messageId": "5a2a5360-bb7e-4ea6-9bd3-0146bf2f734f",
  "webhookId": "a86acea4-e050-4846-8e4f-0ae039f6e37c",
  "userId": "a5914498-7a8b-4c58-b04c-9624fef2897c",
  "externalUserId": "usr_abc123",
  "eventName": "user.created",
  "environmentId": "123e4567-e89b-12d3-a456-426614174000",
  "environmentName": "sandbox",
  "timestamp": "2023-10-26T14:30:59.210Z",
  "data": {
    "chain": "EVM",
    "origin": null,
    "ipAddress": "::1",
    "verifiedCredentialId": "b13f337d-a8dc-41a7-96f5-5e5d76ad864a",
    "userId": "a5914498-7a8b-4c58-b04c-9624fef2897c",
    "expiresAt": null,
    "walletPublicKey": "0x3FcE1F4F28DbA209344072867134A3a7F547C7f1",
    "createdAt": "2023-10-26T14:30:02.909Z",
    "projectEnvironmentId": "7181a853-fb76-4dc2-9af8-6aeb6d2b818b",
    "provider": "browserExtension",
    "walletName": "metamask",
    "id": "484e49ba-3026-4e2c-9bf0-ed98ae224833",
    "revokedAt": "2023-10-26T14:30:59.204Z",
    "verifiedCredentialType": "wallet"
  }
}
```

## Event types

This is the list of all the types of events we send as part of webhook payloads. We may add more at any time, so when developing and maintaining your code, you should not assume that only these types exist. The current list of event types can be fetched from the [event types endpoint](/docs/api-reference/events/get-event-types).

The events follow the pattern: `resource.event`. Our goal is to design a consistent system that makes it easy to anticipate and understand.

<Note>
  Events that occur on subresources like user.session will include the parent id
  but do not trigger the parent's update event.
</Note>

## Product event catalogs

Product-scoped event types are documented with their product:

* [Auth webhooks](/docs/auth/webhooks): `user.*` lifecycle, sessions, sign-in, linked credentials, and `visit.created`.
* [Embedded wallet webhooks](/docs/embedded-wallets/webhooks): `wallet.*` lifecycle, signatures, on-chain activity, key share, and recovery events.
* [Agent webhooks](/docs/agents/webhooks): `wallet.delegation.*` events.
* [Business account webhooks](/docs/business-accounts/webhooks): all `businessAccount.*` events.
* [Policy and screening webhooks](/docs/embedded-wallets/mpc/policies/webhooks): `waas.policy.violation`, screening verdicts, and `wallet.addressScreening.*`.
* [Flow webhooks](/docs/flow/webhooks): `flow.*` state-transition events, `user.exchangeTransfer.*`, and legacy `checkout.transaction.*` events.

Admin and environment events, which fire on developer-dashboard actions rather than end-user activity, are listed below.

### Admin

#### WAAS Policy

<ParamField body="admin.waas.policy.created" type="object">
  Occurs whenever a WAAS policy is created by an admin. Is a
  [WaasPolicyResponse.](/docs/api-reference/schemas/WaasPolicyResponse)
</ParamField>

<ParamField body="admin.waas.policy.updated" type="object">
  Occurs whenever a WAAS policy is updated by an admin. Is a
  [WaasPolicyResponse.](/docs/api-reference/schemas/WaasPolicyResponse)
</ParamField>

<ParamField body="admin.waas.policy.rule.created" type="object">
  Occurs whenever a WAAS policy rule is created by an admin. Is a
  [WaasPolicyRule.](/docs/api-reference/schemas/WaasPolicyRule)
</ParamField>

<ParamField body="admin.waas.policy.rule.updated" type="object">
  Occurs whenever a WAAS policy rule is updated by an admin. Is a
  [WaasPolicyRule.](/docs/api-reference/schemas/WaasPolicyRule)
</ParamField>

<ParamField body="admin.waas.policy.rule.deleted" type="object">
  Occurs whenever a WAAS policy rule is deleted by an admin. Contains the deleted
  rule information.
</ParamField>

#### Domain

<ParamField body="admin.environment.domain.created" type="object">
  Occurs whenever a custom domain is created by an admin. Is a
  [CustomHostname.](/docs/api-reference/schemas/CustomHostname)
</ParamField>

<ParamField body="admin.environment.domain.deleted" type="object">
  Occurs whenever a custom domain is deleted by an admin. Contains the deleted
  domain information.
</ParamField>

<ParamField body="admin.environment.domain.updated" type="object">
  Occurs whenever a custom domain is updated by an admin. Is a
  [CustomHostname.](/docs/api-reference/schemas/CustomHostname)
</ParamField>

#### Environment

<ParamField body="admin.environment.apiToken.created" type="object">
  Occurs whenever an API token is created by an admin. Is a
  [Token.](/docs/api-reference/schemas/Token)
</ParamField>

<ParamField body="admin.environment.apiToken.deleted" type="object">
  Occurs whenever an API token is deleted by an admin. Contains the deleted
  token information.
</ParamField>

<ParamField body="admin.environment.settings.updated" type="object">
  Occurs whenever environment settings are updated by an admin. Is a
  [ProjectEnvironment.](/docs/api-reference/schemas/ProjectEnvironment)
</ParamField>

<ParamField body="admin.environment.mfa.deleted" type="object">
  Occurs whenever an admin deletes a user's MFA device. Contains the user ID and
  MFA device information.
</ParamField>

<ParamField body="admin.environment.sessions.revoked" type="object">
  Occurs whenever all user sessions in an environment are revoked by an admin.
</ParamField>

#### Organization

<ParamField body="admin.organization.created" type="object">
  Occurs whenever an organization is created by an admin. Is an
  [Organization.](/docs/api-reference/schemas/Organization)
</ParamField>

<ParamField body="admin.organization.updated" type="object">
  Occurs whenever an organization is updated by an admin. Is an
  [Organization.](/docs/api-reference/schemas/Organization)
</ParamField>

<ParamField body="admin.organization.billing.updated" type="object">
  Occurs whenever an organization's billing settings are updated by an admin. Is a
  [BillingSubscription.](/docs/api-reference/schemas/BillingSubscription)
</ParamField>

<ParamField body="admin.organization.member.invited" type="object">
  Occurs whenever a member is invited to an organization by an admin. Is an
  [Invite.](/docs/api-reference/schemas/Invite)
</ParamField>

<ParamField body="admin.organization.member.joined" type="object">
  Occurs whenever a member joins an organization. Is an
  [OrganizationMember.](/docs/api-reference/schemas/OrganizationMember)
</ParamField>

<ParamField body="admin.organization.member.removed" type="object">
  Occurs whenever a member is removed from an organization by an admin. Contains
  the removed member information.
</ParamField>

#### Project

<ParamField body="admin.project.created" type="object">
  Occurs whenever a project is created by an admin. Is a
  [Project.](/docs/api-reference/schemas/Project)
</ParamField>

<ParamField body="admin.project.deleted" type="object">
  Occurs whenever a project is deleted by an admin. Contains the deleted
  project information.
</ParamField>

<ParamField body="admin.project.updated" type="object">
  Occurs whenever a project is updated by an admin. Is a
  [Project.](/docs/api-reference/schemas/Project)
</ParamField>

#### User

<ParamField body="admin.user.created" type="object">
  Occurs whenever a user is created by an admin. Is a
  [User.](/docs/api-reference/schemas/User)
</ParamField>

<ParamField body="admin.user.deleted" type="object">
  Occurs whenever a user is deleted by an admin. Contains the deleted
  user information.
</ParamField>

<ParamField body="admin.user.updated" type="object">
  Occurs whenever a user is updated by an admin. Is a
  [User.](/docs/api-reference/schemas/User)
</ParamField>

<ParamField body="admin.user.session.revoked" type="object">
  Occurs whenever a user session is revoked by an admin. Is a
  [Session.](/docs/api-reference/schemas/Session)
</ParamField>

#### Webhook

<ParamField body="admin.webhook.created" type="object">
  Occurs whenever a webhook is created by an admin. Is a
  [Webhook.](/docs/api-reference/schemas/Webhook)
</ParamField>

<ParamField body="admin.webhook.deleted" type="object">
  Occurs whenever a webhook is deleted by an admin. Contains the deleted
  webhook information.
</ParamField>

<ParamField body="admin.webhook.updated" type="object">
  Occurs whenever a webhook is updated by an admin. Is a
  [Webhook.](/docs/api-reference/schemas/Webhook)
</ParamField>

#### Security

<ParamField body="admin.security.accessControl.created" type="object">
  Occurs whenever security access control settings are created by an admin. Is an
  [AdminSecurityAccessControl.](/docs/api-reference/schemas/AdminSecurityAccessControl)
</ParamField>

<ParamField body="admin.security.cookieDomain.created" type="object">
  Occurs whenever a cookie domain is created by an admin. Is an
  [AdminSecurityCookieDomain.](/docs/api-reference/schemas/AdminSecurityCookieDomain)
</ParamField>

<ParamField body="admin.security.cors.created" type="object">
  Occurs whenever a CORS origin is created by an admin. Is an
  [OriginResponse.](/docs/api-reference/schemas/OriginResponse)
</ParamField>

<ParamField body="admin.security.cors.deleted" type="object">
  Occurs whenever a CORS origin is deleted by an admin. Contains the deleted
  CORS origin information.
</ParamField>

<ParamField body="admin.security.cors.updated" type="object">
  Occurs whenever a CORS origin is updated by an admin. Is an
  [OriginResponse.](/docs/api-reference/schemas/OriginResponse)
</ParamField>

<ParamField body="admin.security.ipSettings.updated" type="object">
  Occurs whenever IP settings are updated by an admin. Is an
  [AdminSecurityIpSettings.](/docs/api-reference/schemas/AdminSecurityIpSettings)
</ParamField>

<ParamField body="admin.security.jwtSettings.updated" type="object">
  Occurs whenever JWT settings are updated by an admin. Is an
  [AdminSecurityJwtSettings.](/docs/api-reference/schemas/AdminSecurityJwtSettings)
</ParamField>

#### Address screening

<ParamField body="admin.addressScreening.byok.created" type="object">
  Occurs whenever a bring-your-own-key address screening key is created by an
  admin.
</ParamField>

<ParamField body="admin.addressScreening.byok.rotated" type="object">
  Occurs whenever a bring-your-own-key address screening key is rotated by an
  admin.
</ParamField>

<ParamField body="admin.addressScreening.byok.disabled" type="object">
  Occurs whenever a bring-your-own-key address screening key is disabled by an
  admin.
</ParamField>

<ParamField body="admin.addressScreening.policy.created" type="object">
  Occurs whenever an address screening policy is created by an admin.
</ParamField>

<ParamField body="admin.addressScreening.policy.updated" type="object">
  Occurs whenever an address screening policy is updated by an admin. Covers
  both a rules edit and an address-exception change; the payload's `change`
  field says which.
</ParamField>

<ParamField body="admin.addressScreening.policy.deleted" type="object">
  Occurs whenever an address screening policy is deleted by an admin.
</ParamField>

### Environment

<ParamField body="environment.updated" type="object">
  Occurs whenever an environment is updated, including updates made through
  the SDK API rather than the developer dashboard. Is a
  [ProjectEnvironment.](/docs/api-reference/schemas/ProjectEnvironment)
</ParamField>
