Skip to main content

Webhooks Overview

This document describes the webhook implementation for Hub. Webhooks enable real-time notifications of events occurring in the Holaplex system, allowing for seamless integration with other services and applications. Create a webhook, similar to how to you created your API keys, and follow along!

Table of Contents

  1. Overview
  2. Events
  3. Payloads
  4. Handling Webhooks
  5. Verification

Overview

The Holaplex Hub provides webhook notifications for specific events. When such an event occurs, the system sends an HTTP POST request to your specified webhook URL, containing a JSON payload with details about the event.

Events

As an example, this guide will focus on the following webhook event:

  • customer_treasury.created: This event is triggered when a customer's treasury is created.

Payloads

Webhook payloads contain the following fields:

  • event_type: A string representing the type of event that occurred (e.g., customer_treasury.created).
  • payload: An object containing details about the event.

For the customer_treasury.created event, the payload contains these fields:

  • customer_id: The ID of the customer.
  • treasury_id: The ID of the created treasury.
  • project_id: The ID of the project associated with the customer.

Handling Webhooks

To handle webhook events, you need to create an API route that listens for incoming HTTP POST requests. In this example, the route is implemented using Next.js API routes:

import type { NextApiRequest, NextApiResponse } from "next";
import holaplex from "@/modules/holaplex";
import { Webhook, WebhookRequiredHeaders } from "svix";
import { buffer } from "micro";
// ... other imports ...

// ... export config ...

export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
// ... implementation ...
}

In the handler function, you should:

  1. Read the payload and headers from the incoming request.
  2. Verify the authenticity of the request using the webhook secret.
  3. Process the event based on its event_type.
  4. Respond with an appropriate HTTP status code.

Verification

To ensure the authenticity of webhook requests, you should verify the signature included in the HTTP headers. In this example, the svix library is used to perform the verification:

const secret = process.env.HOLAPLEX_WEBHOOK_SECRET as string;

// ...

const payload = (await buffer(req)).toString();
const headers = req.headers as unknown as WebhookRequiredHeaders;

const wh = new Webhook(secret);
let msg;

try {
msg = wh.verify(payload, headers) as HolaplexWebhookEventResponse;
} catch (err) {
res.status(400).json({});
}

Make sure to use the webhook secret provided by Holaplex when setting up the webhook.


This documentation should give you a basic understanding of how to implement and handle webhooks for the Holaplex Hub. Remember to adjust the details and explanations to better fit your specific use case or project.