Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.privy.io/llms.txt

Use this file to discover all available pages before exploring further.

Privy emits webhooks when wallet actions change status, allowing your app to react to swaps, transfers, and earn activity in real time without polling.

Setup

Subscribe to wallet action events from the Configuration > Webhooks page in the Privy Dashboard. For general webhook setup instructions, payload verification, and retry behavior, see the webhooks overview.
Webhooks can be tested at no cost in development environments. To enable webhooks in production, upgrade to the Enterprise plan in the Privy Dashboard.

Statuses

Every wallet action moves through a predictable status lifecycle. Privy emits a webhook at each status update.
StatusDescription
'created'Wallet action has been queued for execution and resource ID has been returned to the caller.
'succeeded'All steps of the wallet action have successfully executed. This is a terminal state.
'rejected'The wallet action was rejected prior to executing any steps, e.g. due to a policy violation. This is a terminal state and safe to retry.
'failed'The wallet action failed during execution of one of its steps. Use the get wallet action endpoint with ?include=steps to inspect what went wrong at the step level.

Action-specific payloads

All wallet action webhook payloads include a type (event name), status, and action id. Beyond these fields, payloads will include the fields present in that wallet action’s resource.
For example, the payloads for wallet_action.transfer.* webhooks include the fields when calling fetching the transfer action resource via GET /v1/actions/{action_id} where action_id corresponds to a transfer.
View the payloads for specific wallet actions below. Click the webhook event name to be redirected to its payload schema.

Transfer

EventDescription
wallet_action.transfer.createdA transfer action is created and queued
wallet_action.transfer.succeededThe transfer transaction confirms onchain
wallet_action.transfer.rejectedThe transfer is rejected before broadcast
wallet_action.transfer.failedThe transfer transaction fails after broadcast

Swap

EventDescription
wallet_action.swap.createdA swap action is created and queued
wallet_action.swap.succeededThe swap transaction confirms onchain
wallet_action.swap.rejectedThe swap is rejected before broadcast
wallet_action.swap.failedThe swap transaction fails after broadcast

Earn

Deposit

EventDescription
wallet_action.earn_deposit.createdA deposit action is created and queued
wallet_action.earn_deposit.succeededThe deposit transaction confirms onchain
wallet_action.earn_deposit.rejectedThe deposit is rejected before broadcast
wallet_action.earn_deposit.failedThe deposit transaction fails after broadcast

Withdraw

EventDescription
wallet_action.earn_withdraw.createdA withdrawal action is created and queued
wallet_action.earn_withdraw.succeededThe withdrawal transaction confirms onchain
wallet_action.earn_withdraw.rejectedThe withdrawal is rejected before broadcast
wallet_action.earn_withdraw.failedThe withdrawal transaction fails after broadcast

Claim incentive

EventDescription
wallet_action.earn_incentive_claim.createdA claim action is created and queued
wallet_action.earn_incentive_claim.succeededThe claim transaction confirms onchain
wallet_action.earn_incentive_claim.rejectedThe claim is rejected before broadcast
wallet_action.earn_incentive_claim.failedThe claim transaction fails after broadcast