Skip to main content
Privy emits webhooks when the status of an intent changes, enabling your application to react to approval events in real time. Use these webhooks to notify reviewers, trigger automations, or keep external systems in sync with the approval flow.
Webhooks can be tested at no cost in development environments. To enable webhooks in production, upgrade to the Enterprise plan in the Privy Dashboard.

Setup

Follow the webhooks setup guide to register an endpoint, then enable the intent events your app needs. Privy will emit a signed webhook to your endpoint whenever an intent is created or authorized, and will retry delivery if the endpoint does not successfully respond. See the webhooks reference for details on delivery, idempotency, and retries.

Events

intent.created

Fired when an intent is proposed, either via the Privy Dashboard or the REST API. The payload includes the list of authorizers eligible to approve the request and an expires_at timestamp indicating when the intent will expire if the required approvals are not satisfied. Use this event to notify reviewers that a new intent is awaiting their approval.
authorization_details
array
List of key quorums assigned to the intent.
expires_at
number
UNIX timestamp after which the intent expires and can no longer be executed.
Intents expire 72 hours after creation by default. Build alerting around the expires_at field to remind reviewers before the window closes.

intent.authorized

Fired when a team member approves an intent. This event indicates that one reviewer has submitted their authorization. It does not guarantee the intent has been executed. If the approval meets the authorization threshold, the intent executes automatically. If more approvals are still required, the intent remains in the Pending state until the threshold is reached or the intent expires. Use this event to track approval progress or trigger follow-up actions once a specific reviewer has signed off.
Receiving an intent.authorized event does not mean the underlying action has completed. To confirm execution, listen for the intent.executed webhook or fetch the intent and check its status.
member
object
The team member who authorized the intent.
authorized_at
number
UNIX timestamp when the team member signed the intent.

Events reference