Webhook Scheduler
Log inStart free

Quickstart

Schedule your first webhook in five minutes.

This quickstart takes you from account creation to a real scheduled HTTPS delivery with retries, logs, cancellation, and dashboard monitoring.

API request
HTTPS only
curl -X POST https://webhookscheduler.com/api/v1/schedule \
  -H "Content-Type: application/json" \
  -H "x-api-key: wh_live_YOUR_KEY" \
  -d '{
    "url": "https://api.example.com/webhook",
    "method": "POST",
    "body": { "event": "trial.reminder" },
    "runAt": "2026-06-04T09:00:00.000Z",
    "idempotencyKey": "trial-reminder:user_123"
  }'

Create one job

Send a target URL, JSON body, and future run time to the scheduling API.

Watch the result

Open the dashboard to inspect queued, delivered, failed, retrying, and canceled jobs.

Keep delivery safe

Use HTTPS targets, idempotency keys, retries, and visible logs from the start.

1. Create an account

Start from the webhook scheduler tool or create a free account directly. The dashboard is where you confirm jobs, inspect delivery attempts, and manage API keys.

2. Generate an API key

Open /dashboard/api-keys, create one API key, and store it in your backend environment. Never expose live API keys in frontend code or public no-code pages.

3. Schedule a webhook

Use POST /api/v1/schedule to create a delayed HTTP job. The request body contains the public HTTPS URL, method, JSON payload, optional idempotency key, and ISO run time.

await fetch("https://webhookscheduler.com/api/v1/schedule", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": process.env.WEBHOOK_SCHEDULER_API_KEY
  },
  body: JSON.stringify({
    url: "https://api.example.com/webhook",
    method: "POST",
    body: { event: "trial.reminder" },
    runAt: new Date(Date.now() + 60 * 60 * 1000).toISOString(),
    idempotencyKey: "trial-reminder:user_123"
  })
});

4. View the job

After scheduling, open the dashboard to see status, target host, timing, attempts, response code, latency, and retry state. Use the job detail page when a customer or automation needs proof of what happened.

5. Retry or cancel when needed

Pending jobs can be canceled before dispatch. Failed deliveries can retry according to your plan limits, with each attempt kept visible for debugging.

import fetch from "node-fetch";

export async function scheduleWebhook() {
  return fetch("https://webhookscheduler.com/api/v1/schedule", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "x-api-key": process.env.WEBHOOK_SCHEDULER_API_KEY!
    },
    body: JSON.stringify({
      url: "https://api.example.com/webhook",
      body: { event: "follow_up" },
      runAt: new Date(Date.now() + 10 * 60 * 1000).toISOString()
    })
  });
}

FAQ

Can I test a webhook before writing code?

Yes. Use the /try page to prepare a scheduled webhook, then confirm it from the dashboard after signup.

Can I use Discord webhooks?

Yes, as long as the destination is a public HTTPS webhook URL and the payload is valid JSON.

Do scheduled webhooks retry automatically?

Failed deliveries can retry according to plan limits, and each attempt is visible in the dashboard.

Ship delayed webhooks without maintaining queue infrastructure.

Start with the free plan, test a real delivery, then upgrade when the workflow becomes production critical.

Try a webhook