Features Pricing
Start My Free Trial

Webhooks & Integrations

Get real-time notifications via webhooks, Slack, and Discord.

!
Pro Plan Required Webhooks and integrations require a Pro plan.

Overview

MakeEmWait can send real-time notifications when events happen on your waitlist. Three notification channels are available:

Channel Format Setup
Webhook JSON POST to your URL Any HTTPS endpoint
Slack Formatted message via incoming webhook Slack incoming webhook URL
Discord Embedded message via webhook Discord webhook URL

All notifications are fire-and-forget with a 5-second timeout. If a notification fails, it does not block the signup or affect the user experience.

Webhook Events

Two events are available:

Event Fires When
signup.created A new person signs up for the waitlist
referral.credited A referrer receives credit for a new referral

Configure which events trigger webhooks in your waitlist settings.

Generic Webhooks

Set a webhook_url in your waitlist settings to receive JSON payloads at your own endpoint.

Setup

  1. Go to the Dashboard and click Edit on your waitlist
  2. Enter your HTTPS webhook URL
  3. Select which events to receive: signup.created, referral.credited, or both

Payload Format

All webhooks are sent as POST requests with Content-Type: application/json. The top-level structure is the same for every event:

Field Type Description
event string The event type (signup.created or referral.credited)
waitlist_id string The ID of the waitlist where the event occurred
timestamp string ISO 8601 timestamp of when the event fired
data object Event-specific data (see below)

signup.created

Fires when a new person signs up for the waitlist. The data object contains the signup details:

{
  "event": "signup.created",
  "waitlist_id": "abc123def456",
  "timestamp": "2024-01-15T10:30:00.000Z",
  "data": {
    "email": "user@example.com",
    "first_name": "Jane",
    "last_name": "Doe",
    "position": 42,
    "referral_token": "a1b2c3d4e5f6..."
  }
}
Field Type Description
email string The signup’s email address
first_name string First name (may be empty if not collected)
last_name string Last name (may be empty if not collected)
position number The signup’s position in the waitlist
referral_token string Unique referral token for this signup

referral.credited

Fires when a referrer receives credit for bringing in a new signup. The data object contains the referrer’s updated stats:

{
  "event": "referral.credited",
  "waitlist_id": "abc123def456",
  "timestamp": "2024-01-15T10:30:00.000Z",
  "data": {
    "email": "referrer@example.com",
    "referral_count": 5,
    "position": 3
  }
}
Field Type Description
email string The referrer’s email address
referral_count number Total number of successful referrals
position number The referrer’s updated position (moves up with each referral)

URL Validation

All webhook URLs must be HTTPS. This is validated when you save your waitlist settings, not at the time the webhook fires.

Webhook URLs are also validated against SSRF (Server-Side Request Forgery). The following are blocked:

  • localhost, 127.0.0.1, ::1
  • Private IP ranges: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
  • Link-local addresses: 169.254.0.0/16 (including cloud metadata endpoints)

If you need to test webhooks locally, use a service like webhook.site or ngrok to create a public HTTPS endpoint.

Retry Behavior

Webhook delivery is fire-and-forget with a 5-second timeout using fetch() and AbortController. There are no retries. If your webhook endpoint is down, slow, or returns an error, the event is lost. The signup still succeeds regardless of whether the webhook was delivered successfully.

If you need reliable delivery with retries, consider using a webhook relay service that queues and retries on your behalf.

Slack Integration (Pro)

!
Pro Plan Required Slack notifications require a Pro plan.

Send formatted notifications to a Slack channel whenever someone joins your waitlist. Slack notifications only fire for signup.created events, not for referral.credited.

Setup

  1. Create an incoming webhook in your Slack workspace
  2. Copy the webhook URL (starts with https://hooks.slack.com/)
  3. Paste it into the Slack Webhook URL field in your waitlist settings

Message Format

Slack notifications are formatted using Slack Block Kit with a section block. Only signup.created events are sent to Slack – referral.credited events are not included.

The message includes:

  • Email address
  • Position number
  • Waitlist ID

Example Slack payload:

{
  "text": "New signup on waitlist abc123def456: user@example.com",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*New Signup* on waitlist `abc123def456`\n*Email:* user@example.com\n*Position:* #42"
      }
    }
  ]
}

Discord Integration (Pro)

!
Pro Plan Required Discord notifications require a Pro plan.

Send embedded notifications to a Discord channel whenever someone joins your waitlist. Discord notifications only fire for signup.created events, not for referral.credited.

Setup

  1. In your Discord server, go to Server Settings > Integrations > Webhooks
  2. Create a new webhook and choose the target channel
  3. Copy the webhook URL
  4. Paste it into the Discord Webhook URL field in your waitlist settings

Message Format

Discord notifications are sent as rich embeds using the MakeEmWait brand color #6366f1 (indigo/purple). Only signup.created events are sent to Discord – referral.credited events are not included.

The embed includes:

  • Email address
  • Position number
  • A timestamp

Example Discord payload:

{
  "embeds": [
    {
      "title": "New Signup",
      "description": "**Email:** user@example.com\n**Position:** #42",
      "color": 6513393,
      "timestamp": "2024-01-15T10:30:00.000Z"
    }
  ]
}

The color value 6513393 is the decimal representation of #6366f1.

Webhook Authenticity

i
No Signature Verification Outbound webhooks do not include an HMAC signature or shared secret for verification. This is a deliberate simplicity trade-off.

MakeEmWait webhook payloads are not signed. If you need to verify that a webhook request genuinely came from MakeEmWait, consider these approaches:

  • Secret URL path — use a long, random URL path as your webhook endpoint (e.g., https://yoursite.com/webhooks/mew-a1b2c3d4e5f6). Anyone who doesn’t know the URL can’t send fake events.
  • Cross-check via API — when you receive a signup.created webhook, verify the signup exists by calling GET /public/waitlists/{id}/signups/{email}/status.

Testing Webhooks

To test your webhook integration:

  1. Set up your webhook URL, Slack, or Discord webhook in your waitlist settings
  2. Submit a test signup on your waitlist
  3. Check that the notification arrived at your endpoint
*
Use a service like webhook.site or requestbin.com to test generic webhooks before pointing them at your production server.