LogoLogo
AllClearStack

Templates

SaaS webhook workflows you should not run from cron.

Use these as implementation shapes for delayed billing, onboarding, renewal, and cleanup events. The point is not the cURL. The point is making the workflow visible, retryable, and safe.

Trial Ending Reminder

Schedule a webhook when a trial starts, then send a reminder before conversion day.

Event
trial.ends_soon
Delay
7 days before trial end
curl https://webhookscheduler.com/api/v1/schedule \
  -H "Authorization: Bearer wh_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://api.example.com/webhooks/trial.ends_soon",
    "runAt": "2026-05-15T09:00:00.000Z",
    "body": {
      "event": "trial.ends_soon",
      "delay": "7 days before trial end",
      "customerId": "cus_123"
    },
    "idempotencyKey": "trial.ends_soon-cus_123-2026-05-15"
  }'

Failed Payment Recovery

Create delayed billing follow-ups after a payment fails without running a billing cron.

Event
invoice.payment_failed
Delay
1 hour, 24 hours, 3 days
curl https://webhookscheduler.com/api/v1/schedule \
  -H "Authorization: Bearer wh_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://api.example.com/webhooks/invoice.payment_failed",
    "runAt": "2026-05-15T09:00:00.000Z",
    "body": {
      "event": "invoice.payment_failed",
      "delay": "1 hour, 24 hours, 3 days",
      "customerId": "cus_123"
    },
    "idempotencyKey": "invoice.payment_failed-cus_123-2026-05-15"
  }'

Onboarding Drip

Trigger product education, setup nudges, and activation checks after signup.

Event
user.signed_up
Delay
15 minutes, 1 day, 3 days
curl https://webhookscheduler.com/api/v1/schedule \
  -H "Authorization: Bearer wh_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://api.example.com/webhooks/user.signed_up",
    "runAt": "2026-05-15T09:00:00.000Z",
    "body": {
      "event": "user.signed_up",
      "delay": "15 minutes, 1 day, 3 days",
      "customerId": "cus_123"
    },
    "idempotencyKey": "user.signed_up-cus_123-2026-05-15"
  }'

Renewal Reminder

Schedule customer-visible renewal events from subscription lifecycle changes.

Event
subscription.renews_soon
Delay
14 days before renewal
curl https://webhookscheduler.com/api/v1/schedule \
  -H "Authorization: Bearer wh_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://api.example.com/webhooks/subscription.renews_soon",
    "runAt": "2026-05-15T09:00:00.000Z",
    "body": {
      "event": "subscription.renews_soon",
      "delay": "14 days before renewal",
      "customerId": "cus_123"
    },
    "idempotencyKey": "subscription.renews_soon-cus_123-2026-05-15"
  }'

Delayed CRM Sync

Wait for product data to settle before syncing enriched customer context downstream.

Event
customer.updated
Delay
10 minutes
curl https://webhookscheduler.com/api/v1/schedule \
  -H "Authorization: Bearer wh_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://api.example.com/webhooks/customer.updated",
    "runAt": "2026-05-15T09:00:00.000Z",
    "body": {
      "event": "customer.updated",
      "delay": "10 minutes",
      "customerId": "cus_123"
    },
    "idempotencyKey": "customer.updated-cus_123-2026-05-15"
  }'

Abandoned Signup Cleanup

Follow up or clean temporary resources when a signup never finishes onboarding.

Event
signup.abandoned
Delay
24 hours
curl https://webhookscheduler.com/api/v1/schedule \
  -H "Authorization: Bearer wh_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://api.example.com/webhooks/signup.abandoned",
    "runAt": "2026-05-15T09:00:00.000Z",
    "body": {
      "event": "signup.abandoned",
      "delay": "24 hours",
      "customerId": "cus_123"
    },
    "idempotencyKey": "signup.abandoned-cus_123-2026-05-15"
  }'

We built Webhook Scheduler for this exact use case. Start with the API docs, then compare pricing against the cost of maintaining queue workers, retry tables, delivery logs, and support tooling yourself.