Event Types

Event Types

Every event Envless can emit, grouped by entity.

All event types use the format entity.action. There are 48 of them. Each webhook endpoint subscribes to a subset; only matching events are delivered.

GET /v1/webhooks/event-types returns the live list plus a totalCount, so you never have to hardcode this page.

Delivery is scoped to the workspace the event belongs to. On top of that, an event that resolves to a private product is only delivered to endpoints whose creator can access that product.

Workspace

TypeFires when
workspace.createdA new workspace is created
workspace.updatedName, slug, icon or the Virtual Envs flag changes
workspace.deletedThe workspace is soft-deleted

An endpoint can only be created inside a workspace that already exists, so nothing is subscribed at the moment workspace.created fires. The event is recorded, but it has no endpoint to reach in its own workspace.

Product

TypeFires when
product.createdA new product is created, including by Duplicate
product.updatedName, slug, icon or isPrivate changes
product.deletedThe product is deleted

Product access

TypeFires when
product_access.grantedA member is granted access to a product (payload carries product with id, name and slug, plus member.userId)
product_access.revokedA member's access to a product is revoked (same payload shape)

Both fire for every grant and revoke, not only on private products. Marking a product private is what makes the grant list load-bearing; the events are emitted either way. A grant that changes nothing, because the member already had access, emits nothing.

Project

TypeFires when
project.createdA new project is created, including by Duplicate
project.updatedName, slug or icon changes
project.deletedThe project is deleted

Environment

TypeFires when
environment.createdA new environment is created in a project, including by Duplicate
environment.updatedName or slug changes
environment.deletedThe environment is deleted
environment.exposedThe environment is turned into a public encrypted feed
environment.unexposedExposure is turned off, one event per environment when a workspace disables Virtual Envs
environment.example_enabledThe environment starts publishing a blank-value .env.example at a public URL
environment.example_disabledThe example link is turned off

Variable

TypeFires when
variable.createdA new variable is created
variable.updatedValue, name, type, isSecret, visibility, required or defaultValue changes
variable.deletedThe variable is deleted
variable.bulk_createdVariables created via the bulk endpoint (payload includes environmentId, count and a variables array of id and name)
variable.bulk_deletedVariables deleted via the bulk endpoint (same payload shape)
variable.bulk_updatedOne metadata patch is applied to many variables at once (payload adds fields and changes, and never carries names or values)
variable.appliedAn apply call writes creates, updates and deletes to an environment in one request (payload includes added, updated and removed counts)

Variable payloads never include the encrypted value or the plaintext. They carry ids and names, plus type, isSecret and environmentId on the single-variable events, and counts on the batch events.

Version

TypeFires when
variable_version.createdA version snapshot is published
variable_version.rolled_backAn environment is rolled back to an earlier version (payload includes versionLabel and stats with added, updated and removed counts)

Member

TypeFires when
member.invitedA new email invite is sent
member.invite_resentThe invite email is resent
member.invite_revokedA pending invite is revoked
member.acceptedThe invitee accepts and joins the workspace
member.updatedThe member's role changes
member.removedThe member is removed, or leaves on their own (only the self-leave payload carries left: true)

API key

TypeFires when
key.createdA new API key is created
key.updatedName, scopes, projectIds, or active state changes
key.rotatedThe key value is rotated
key.deletedThe key is deleted

CLI token

TypeFires when
cli_token.createdA device-code flow completes and a CLI token is issued
cli_token.revokedA CLI token is revoked (dashboard or envless logout)

Role

TypeFires when
role.createdA custom role is created
role.updatedName, description, or permissions change
role.deletedA custom role is deleted

Subscription

TypeFires when
subscription.createdA workspace's first subscription is created (Polar)
subscription.updatedStatus, billing period, cancellation or revocation is recorded
subscription.duplicate_detectedPolar sent a second subscription for a workspace that already has a live one. Nothing is written; the payload carries duplicate and existing, each with polarSubscriptionId, polarProductId, status, currentPeriodStart and currentPeriodEnd, so you can refund and cancel the duplicate in Polar

Subscription events have no actor because they originate from Polar webhooks, not a dashboard user. The delivered body still carries the actor object, with userId, name and email all null. webhook.delivery_failed is the same.

Webhook

TypeFires when
webhook.createdA new webhook endpoint is configured
webhook.updatedName, URL, description, event subscriptions or enabled state changes
webhook.deletedA webhook endpoint is removed
webhook.secret_rotatedThe signing secret is rotated (the new secret is never in the payload, only secretLastFour and secretRolledAt)
webhook.delivery_failedA delivery exhausts all 5 attempts and gives up

To prevent infinite loops, webhook.delivery_failed is not emitted for a failed webhook.delivery_failed delivery.