The following functionality exists for wallets reconstituted server-side. More on Privy architecture here
Privy emits webhooks whenever the status of a transaction sent by a server wallet changes. This helps your application track the status of the transaction after it has been broadcasted to the network, and be notified when the transaction is confirmed or reverts.
Webhooks is currently a scale feature. To use webhooks, please upgrade your account in the Privy Dashboard.
To set up transaction webhooks, follow the guide below.

Events

Privy allows you to subscribe to webhooks on the following transaction events:
  • 'broadcasted' refers to when a transaction has been submitted to the network but has not yet been included in a block
  • 'still_pending' refers to when a transaction has been submitted to the network but is taking longer than expected to be confirmed. To ensure that the transaction gets included, we recommend listening to this webhook to trigger transaction speed-ups.
  • 'confirmed' refers to when a transaction has been included in at least one block that has been confirmed on the network.
  • 'execution_reverted' refers to when a transaction has reverted in execution.
  • 'replaced' refers to when a transaction has been replaced by another transaction with the same nonce. This is only applicable to EVM chains.
  • 'failed' refers to when a transaction has been pending for too long, signaling that it will not be included on-chain. This can happen when the gas fee is too low given the current activity on the blockchain and is only triggered for chains that have a defined pending time limit (e.g. Base, Solana, Flow.).
Failures are uncommon overall, but more likely to occur on Base and Polygon than other chains (<1% of transactions). To ensure transactions get confirmed, follow our guide on transaction replacement to speed up stalled transactions.

Setup

To start, go to the Webhooks page for your app in the Privy Dashboard and provide a destination URL for receiving webhooks. Then, enable the 'transaction.broadcasted', transaction.still_pending, 'transaction.confirmed', 'transaction.execution_reverted', 'transaction.replaced', and/or 'transaction.failed' events depending on the transaction events you’d like to be notified of. Privy will emit a signed webhook to this URL whenever transaction status updates, and will retry delivery if the endpoint does not successfully respond to the original webhook.

Payload

When the status of a transaction updates, Privy will emit a webhooks payload with the following fields:
type
'transaction.{broadcasted, still_pending, confirmed, execution_reverted, replaced, failed}'
Event for the transaction.
transaction_id
string
ID for the transaction.
wallet_id
string
ID of the server wallet that sent the transaction.
transaction_hash
string
Hash for the transaction.
caip2
string
CAIP-2 chain ID of the network that the transaction was broadcasted on.

Example

Below is a sample webhooks payload that Privy will send on a 'transaction.confirmed' event.
{
  "type": "transaction.confirmed",
  "transaction_id": "fmfdj6yqly31huorjqzq38zc",
  "wallet_id": "cm4db8x9t000ccn87pctvcg9j",
  "transaction_hash": "0x2446f1fd773fbb9f080e674b60c6a033c7ed7427b8b9413cf28a2a4a6da9b56c",
  "chain_id": "eip155:8453"
}