Quick Start

Send your first webhook in 5 minutes. This guide will walk you through creating an application, defining an event type, and sending a test webhook.

Prerequisites: You'll need a Hook Mesh account. Sign up for free at app.hookmesh.com.

Step 1: Get your API key

After signing up, navigate to Settings → API Keys and create a new API key. Copy it immediately - you won't see it again.

Set your API key
export HOOKMESH_API_KEY="sk_test_abc123..."
Keep your API key secret! Never commit it to version control or expose it in client-side code.

Step 2: Create an application

Applications represent your product or environment (e.g., "Production App", "Staging App"). Each application has its own endpoints and event types.

Create application
curl -X POST https://api.hookmesh.com/v1/applications \
  -H "Authorization: Bearer ${HOOKMESH_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My SaaS Product",
    "description": "Production webhooks"
  }'

Response:

{
  "id": "app_2Zy3X8qP9rK5mN1vB",
  "name": "My SaaS Product",
  "description": "Production webhooks",
  "created_at": "2026-01-20T15:30:00Z"
}

Save the id - you'll need it for the next steps.

Step 3: Define an event type

Event types define what kinds of webhooks you'll send. Use dot notation with past tense (e.g., "user.created", "invoice.paid").

Create event type
curl -X POST https://api.hookmesh.com/v1/event-types \
  -H "Authorization: Bearer ${HOOKMESH_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "application_id": "app_2Zy3X8qP9rK5mN1vB",
    "name": "user.created",
    "description": "Fired when a new user signs up"
  }'
Tip: You can define multiple event types for different actions in your product (user.created, user.updated, invoice.paid, etc.).

Step 4: Create a test endpoint

For testing, we'll use webhook.site, a free service that captures HTTP requests:

  1. Go to webhook.site
  2. Copy your unique URL (e.g., https://webhook.site/abc123...)
  3. Create an endpoint in Hook Mesh:
Create endpoint
curl -X POST https://api.hookmesh.com/v1/endpoints \
  -H "Authorization: Bearer ${HOOKMESH_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "application_id": "app_2Zy3X8qP9rK5mN1vB",
    "url": "https://webhook.site/your-unique-id",
    "description": "Test endpoint",
    "subscribed_events": ["user.created"]
  }'

Response includes the endpoint secret:

{
  "id": "ep_8mK3pL9qR2vN5xZ",
  "url": "https://webhook.site/your-unique-id",
  "secret": "whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLa",
  "status": "active",
  "subscribed_events": ["user.created"],
  "created_at": "2026-01-20T15:35:00Z"
}

Step 5: Send your first webhook

Now let's send a webhook event! This will be delivered to your webhook.site endpoint.

Send webhook
curl -X POST https://api.hookmesh.com/v1/webhook-jobs \
  -H "Authorization: Bearer ${HOOKMESH_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "application_id": "app_2Zy3X8qP9rK5mN1vB",
    "event_type": "user.created",
    "payload": {
      "user_id": "usr_xyz789",
      "email": "alice@example.com",
      "name": "Alice Johnson",
      "created_at": "2026-01-20T15:40:00Z"
    }
  }'

Response:

{
  "id": "job_5nM8pQ1rK3vL9xB",
  "application_id": "app_2Zy3X8qP9rK5mN1vB",
  "event_type": "user.created",
  "status": "created",
  "created_at": "2026-01-20T15:40:00Z",
  "expires_at": "2026-01-22T15:40:00Z"
}

Step 6: Verify delivery

Check your webhook.site page - you should see the webhook request with:

Webhook headers
Webhook-Id, Webhook-Timestamp, Webhook-Signature
Your payload
The JSON you sent in the request body
HMAC signature
Used to verify webhook authenticity
🎉 Congratulations! You've successfully sent your first webhook with Hook Mesh.

Using the SDK (Optional)

For a better developer experience, use our official SDKs:

JavaScript / Node.js

Install SDK
npm install @hookmesh/node
import { HookMesh } from '@hookmesh/node';

const hookmesh = new HookMesh({
  apiKey: process.env.HOOKMESH_API_KEY,
});

// Create application
const app = await hookmesh.applications.create({
  name: 'My SaaS Product',
  description: 'Production webhooks',
});

// Define event type
await hookmesh.eventTypes.create({
  applicationId: app.id,
  name: 'user.created',
  description: 'Fired when a new user signs up',
});

// Send webhook
await hookmesh.webhookJobs.create({
  applicationId: app.id,
  eventType: 'user.created',
  payload: {
    user_id: 'usr_xyz789',
    email: 'alice@example.com',
    name: 'Alice Johnson',
    created_at: new Date().toISOString(),
  },
});

Python

Install SDK
pip install hookmesh
from hookmesh import HookMesh

hookmesh = HookMesh(api_key=os.environ.get('HOOKMESH_API_KEY'))

# Create application
app = hookmesh.applications.create(
    name='My SaaS Product',
    description='Production webhooks'
)

# Define event type
hookmesh.event_types.create(
    application_id=app.id,
    name='user.created',
    description='Fired when a new user signs up'
)

# Send webhook
hookmesh.webhook_jobs.create(
    application_id=app.id,
    event_type='user.created',
    payload={
        'user_id': 'usr_xyz789',
        'email': 'alice@example.com',
        'name': 'Alice Johnson',
        'created_at': datetime.now().isoformat()
    }
)

Next steps

Now that you've sent your first webhook, here's what to explore next: