Skip to main content
When your application executes a wallet action via one of the available action APIs, Privy creates a wallet action resource that models the action asynchronously. This page covers how a wallet action progresses from creation to completion, the statuses it occupies, and the steps it executes along the way.

Action statuses

Every wallet action has a top-level status field that represents its overall progress. Privy derives this status from the outcomes of the action’s individual steps.
Generally, the overall wallet action status should be sufficient. However, your application can use the get wallet action endpoint with ?include=steps to inspect step-level details when a wallet action fails.

Status transitions

A wallet action begins in pending and transitions to exactly one terminal state: succeeded, rejected, or failed.

Step types

Each wallet action is composed of one or more steps. A step represents a discrete operation, typically mapping to a single on-chain state change (e.g., a transaction or user operation). Privy executes steps sequentially — the next step begins only after the previous one confirms. To include step details in the response, your application passes ?include=steps as a query parameter when fetching the wallet action status.

Step statuses

Each step has its own status field indicating where it is in its execution lifecycle. The available statuses vary by step type, since different blockchain environments have different failure modes.

EVM step statuses (evm_transaction and evm_user_operation)

SVM step statuses (svm_transaction)

External transaction step statuses (external_transaction)

Steps by action type

Privy treats the specific steps for each action type as an implementation detail, subject to change. This allows Privy to optimize how transactions land on-chain most effectively. Your application should be robust to varying steps for any wallet action type.

How Privy derives the top-level status

Privy computes the top-level wallet action status from the statuses of its steps:
  • succeeded: All steps reached confirmed.
  • rejected: Privy rejected the action during preparation (before creating any steps), or a step reached rejected without any post-broadcast failures.
  • failed: At least one step reached a post-broadcast failure state (reverted, replaced, abandoned, or failed).
  • pending: None of the above conditions apply — the action is still in progress.

Webhooks

Your application can subscribe to wallet action webhooks to receive real-time notifications when an action reaches a terminal state, rather than polling for status updates.