Skip to main content
Privy creates an automation execution after a trigger is matched on an enabled attachment. The execution records why the automation ran and links to the wallet action that it executed.

Execution flow

Relationship to wallet actions

The execution’s wallet_action_id identifies the action created by the automation. The wallet action contains the detailed onchain lifecycle, including steps and transaction identifiers. The wallet_automation.submitted webhook is emitted when the execution reaches triggered. It does not indicate that the swap completed. To observe the final outcome:
  1. Read action_id from the submitted webhook or wallet_action_id from the execution.
  2. Fetch the wallet action status.
  3. Subscribe to the corresponding wallet_action.* events.

List executions

Use GET /v1/wallet_automations/executions to list executions across the app. Pass wallet_id to restrict results to one source wallet.
Results are ordered from newest to oldest. The Node SDK automatically requests subsequent pages during iteration, and the Python example explicitly follows next_cursor. With cURL, pass the returned next_cursor as cursor in the next request until it is null. Each execution includes:
  • The source wallet_id and matched automation_attachment_id.
  • The triggering information (e.g. transaction, block, chain, and asset).
  • The linked wallet_action_id after submission.
  • Status timestamps and an optional failure_reason.

Delivery and concurrency

Privy deduplicates repeated delivery of the same detected triggers. Apps should also process webhook deliveries idempotently by trigger_id. Only one automation runs for a wallet at a time. If another matching trigger arrives while the first execution is executing, the later execution can become skipped because the remaining balance is zero.

Troubleshooting