Testing Recurrences and Webhooks
A practical workflow to validate your schedule logic first, then verify real webhook deliveries. This guide uses rrule.net simulation plus two external tools: webhook.site and ntfy.sh.
Why test in two phases
Scheduling bugs and delivery bugs are different problems. If you test both at once, diagnosis is slower.
| Phase | Goal | Tool |
|---|---|---|
| 1. Schedule logic | Confirm dates/times are correct (DST, weekday rules, monthly rules) | rrule.net simulate |
| 2. Delivery | Confirm webhook is actually called and payload is what you expect | webhook.site / ntfy.sh |
Step 1 — Validate and simulate
Before creating a schedule, run validate and simulate. Make sure the next occurrences match your intent in the selected timezone.
// 1) Validate intent
POST /v1/schedules/validate
{
"input": "Every weekday at 9am",
"timezone": "Europe/Paris"
}
// 2) Preview real occurrences before creating
POST /v1/schedules/simulate
{
"rrule": {
"dtstart": "2026-03-01T08:00:00.000Z",
"rule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;BYHOUR=9;BYMINUTE=0;BYSECOND=0"
},
"timezone": "Europe/Paris",
"count": 10
}Step 2 — Verify webhook calls with webhook.site
webhook.site gives you a temporary URL and captures every incoming request.
- Open webhook.site.
- Copy the generated unique URL.
- Use it as your schedule webhook URL in rrule.net.
- Wait for the next occurrence.
- Inspect method, headers, and JSON body in webhook.site.
This is the fastest way to confirm the scheduler is triggering and your payload shape is correct.
Step 3 — Use ntfy.sh for quick push confirmation
If you want immediate notification feedback, you can use an ntfy topic URL as the webhook endpoint.
# Subscribe from terminal
curl -s https://ntfy.sh/rrule-net-test-topic/jsonThen set your webhook URL to:
https://ntfy.sh/rrule-net-test-topicEach schedule trigger posts to that topic and appears instantly in your terminal (or mobile app).
Use a random topic name for testing. Do not use predictable/public topics for sensitive data.
What to check when nothing arrives
Schedule status: must be active, not paused.
Next occurrence: confirm it is in the future and within your expected window.
Webhook URL: ensure it is reachable over HTTPS and returns a 2xx response quickly.
Execution history: check response code and response body for failures.
Circuit breaker: after repeated failures, the schedule auto-pauses and must be resumed manually.
Recommended order: simulate first, then test delivery with webhook.site, then run a live check with ntfy.sh.