AllClearStack logoAllClearStack logo
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 reminder before a trial expires, then cancel the job if the customer upgrades early.

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

Trigger follow-up attempts after a failed invoice without putting billing recovery inside a polling 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 follow-up

Send product nudges after signup while keeping each delayed callback visible and cancellable.

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

Notify a customer before subscription renewal without adding another internal worker.

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 a few minutes for source data to settle before sending a CRM enrichment callback.

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

Run cleanup or reactivation logic when a signup remains incomplete after a fixed window.

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.