Skip to content

Webhooks

Openfort uses webhooks to push real-time notifications to you about your transactions. All webhooks use HTTPS and deliver a JSON payload that can be used by your application. You can use webhook feeds to do things like:

  • Granting users a game item when a transaction is confirmed.
  • Store all transaction events in your own database for custom reporting/retention

Using Openfort Node SDK

Use the Openfort SDK's constructWebhookEvent method to verify an incoming webhook. Pass in the request body and the signature header. As an example, you can verify a webhook using the code below:

Node.js
app.post(
  '/webhook',
  express.raw({ type: 'application/json' }),
  async (req: Request, _res: Response) => {
    const openfort = new Openfort('OPENFORT_SECRET_KEY')
    try {
      const event = await openfort.constructWebhookEvent(
        req.body.toString(),
        req.headers['openfort-signature']
      )
      switch (event.type) {
        case "transaction_intent.succeeded":
          console.log(`TransactionIntent ID: ${event.data.id}`)
          break
        case "transaction_intent.failed":
          console.log(`TransactionIntent ID: ${event.data.id}`)
          break
        default:
          console.log(`Unhandled event type ${event.type}`);
      }
    } catch (e) {
      console.error((e as Error).message)
    }
  }
)

Webhook object

The webhook object contains the following fields as shown in the JSON tab above.

Where the type will be one of the following:

  • transaction_intent.succeeded: The transaction intent has arrived on-chain and is confirmed.
  • transaction_intent.failed: The transaction intent has arrived on-chain and is reverted.
  • transaction_intent.cancelled: The transaction intent parameters were not met.
  • transaction_intent.broadcast: The transaction intent was broadcasted.
  • balance. project: The project balance.
  • balance.contract: The contract balance.
  • balance.dev_account: The balance of your backend wallet.

The data will be a transaction intent object.

Register your development webhook endpoint

Register your publicly accessible HTTPS URL in the Openfort dashboard. Then decide the type of webhook you want to receive.

transaction_intent-sign

Test that your webhook endpoint is working properly

Send a few test transactions to check that your webhook endpoint is receiving the events.

You can specify the number of block confirmations you want to wait before getting notified of a transaction making it on chain. The default is 0 (i.e. as soon as the transaction arrives on chain).

To do so, you need to include the confirmationBlocks body parameter when creating the transaction intent.

transaction_intent-sign