Scheduler Webhooks
Scheduler Webhooks let CW notify an external service when a scheduled sync starts, succeeds or fails. Typical uses include:
Monitoring scheduled syncs with Healthchecks.io
Sending scheduled sync notifications through Notifiarr
Forwarding run information to an automation platform
Sending structured JSON to a custom monitoring service
Webhook delivery is best effort. A failed or unavailable webhook does not fail the sync itself.

Supported scheduled runs
Scheduler Webhooks are sent for these run types:
Standard scheduled syncs
Advanced timed sync pair jobs
Steps inside recurring workflows
Scheduler Webhooks are not sent for:
Syncs started from the normal Sync button
Scheduler event triggers
Scheduled captures
Scheduled backups
The feature monitors scheduled sync execution, not every Scheduler activity.
Available events
CW can send three events.
Start
Sent when a scheduled sync has been accepted and begins execution.
The JSON event is:
Success
Sent when the sync completes with exit code 0.
The JSON event is:
Failure
Sent when the sync completes with a nonzero exit code, does not produce a valid exit code, or the Scheduler cannot start an expected sync.
The JSON event is:
Basic setup
Open
SettingsOpen
SchedulingFind
Scheduler WebhooksEnable Scheduler Webhooks
Select the payload format
Enter the appropriate URL
Keep the timeout at
10seconds unless the receiver requires more timeSave the Scheduler configuration
CW accepts only complete http:// or https:// URLs.
Which URL field should I use
Compatible base URL
Use this for Healthchecks.io and other monitoring services that use the same URL convention.
CW derives the event URLs automatically:
For Healthchecks.io, this is normally the correct field.
Example base URL:
Do not paste this URL into All events URL. When All events URL is configured, all events are sent to exactly that URL and the compatible base URL is ignored.
All events URL
Use this when one webhook endpoint receives all events and uses the JSON event or status field to determine what happened.
Example:
CW sends start, success and failure events to the same URL.
Use this for:
Custom webhook receivers
Automation platforms with one incoming webhook
Logging or monitoring APIs that process JSON payloads
Services where the event type is determined from the request body
Start callback URL
Use this when the start event must be sent to a separate URL.
Example:
Success callback URL
Use this when successful runs must be sent to a separate URL.
Example:
Failure callback URL
Use this when failed runs must be sent to a separate URL.
Example:
The event specific callback URLs override the other URL options for their event.
URL priority
For the CW JSON payload format, CW selects a URL in this order:
The callback URL for the specific event
All events URL
Compatible base URL
Example:
In this configuration:
Healthchecks.io setup
Healthchecks.io expects a base ping URL and supports /start and /fail suffixes.
Configure CW as follows:
Create or open a check in Healthchecks.io
Copy its Ping URL
Select
CW JSONPaste the Ping URL into
Compatible base URLLeave
All events URLemptyLeave the three callback URL fields empty
Enable Scheduler Webhooks
Save the Scheduler configuration
Example:
CW sends:
Query parameters are preserved when CW adds /start or /fail.
Example:
CW does not expand variables inside URLs and does not automatically add the CW run ID as a query parameter.
Treat the complete Ping URL as a secret. Anyone with the URL can send events to the check.
Notifiarr setup
Notifiarr requires its own Passthrough payload format.
Configure CW as follows:
Select
Notifiarr PassthroughPaste the Notifiarr Passthrough URL into
Notifiarr passthrough URLOptionally enter a numeric Discord channel ID
Enable Scheduler Webhooks
Save the Scheduler configuration
Example endpoint:
Start, success and failure notifications are all sent to this same URL.
CW automatically generates the Notifiarr notification and Discord payload. It includes the run type, sync pair, workflow information, duration, exit code and available summary counters.
The channel ID is optional. Enter only the numeric Discord channel ID, without spaces or other characters.
Treat the Passthrough URL as a secret because it contains the Notifiarr API key.
Timeout
The timeout controls how long CW waits for the webhook receiver.
A timeout only affects the webhook request. It does not change the sync result.
Request behavior
CW sends webhooks using:
Each event is sent once.
CW does not currently provide:
Automatic retries
Configurable HTTP headers
Header based authentication
Payload templates
URL variable substitution
Webhook signing
Separate timeout values per event
A final HTTP 4xx or 5xx response is treated as a failed delivery.
Redirect handling follows the default HTTP client behavior.
Webhook delivery remains independent from the sync result.
CW JSON payload
A completed workflow step can produce a payload similar to this:
Empty values are omitted.
The possible top level fields are:
The summary object can contain:
Zero value counters are normally omitted.
Scheduler context values
The webhook service accepts these scheduler modes:
Other Scheduler modes do not generate Scheduler Webhooks.
Standard schedule
Advanced timed sync pair
Recurring workflow step
Configuration structure
Scheduler Webhooks are stored inside the scheduling configuration.
Configuration fields
enabled
Enables or disables Scheduler Webhook delivery.
url
The common URL for all events.
With payload_format set to notifiarr, this becomes the required Notifiarr Passthrough URL.
base_url
A Healthchecks.io compatible base URL.
CW adds /start and /fail when required.
start_url
Optional explicit destination for start events.
success_url
Optional explicit destination for successful completion events.
failure_url
Optional explicit destination for failed completion events.
payload_format
Supported values:
The legacy value notifiarr_passthrough is normalized to notifiarr.
notifiarr_channel_id
Optional numeric Discord channel ID added to the Notifiarr payload.
timeout_seconds
Webhook request timeout between 1 and 60 seconds.
Values below or above this range are limited to the supported range.
Healthchecks.io configuration example
Generic single endpoint configuration example
Separate callback configuration example
Notifiarr configuration example
When Notifiarr mode is selected, CW always uses url for all three events. The compatible base URL and event specific URLs are ignored.
Notifiarr event presentation
CW uses different notification colours for each event:
The generated Notifiarr payload contains:
The discord.ids.channel object is only added when a channel ID is configured.
Notification fields are limited to the first 25 fields.
Security
All Scheduler Webhook URL fields are treated as sensitive configuration values.
CW:
Encrypts these URL values when saving the configuration
Masks them in redacted configuration responses
Preserves the existing secret when a masked value is submitted again
Does not include the callback URL in Scheduler status logs
Logs only the event and delivery result
The channel ID and timeout are not secrets.
Logging
Successful delivery produces a log similar to:
Failed delivery produces a log similar to:
Only the exception type is logged. The secret URL and response body are not logged.
delivered means the configured receiver accepted the HTTP request. It does not guarantee that a downstream service displayed or processed the notification.
Troubleshooting
Healthchecks.io reports every event as successful
The Ping URL was probably entered in All events URL.
Move it to Compatible base URL and clear All events URL.
Healthchecks.io receives no events
Confirm:
Scheduler Webhooks are enabled
The URL is in
Compatible base URLThe URL starts with
http://orhttps://The run is a standard schedule, advanced timed sync or recurring workflow step
The Scheduler logs contain a delivery result
The custom receiver cannot determine the event
Use the event or status value in the JSON body.
Possible values are:
Notifiarr rejects the request
Confirm:
Payload format is
Notifiarr PassthroughThe URL is the Notifiarr Passthrough endpoint
The complete API key is present in the URL
The optional channel ID contains only numbers
The timeout is long enough for the Notifiarr request
Webhook delivery fails but the sync succeeds
This is expected. Scheduler Webhooks use best effort delivery and do not control the sync exit code.
Webhooks are enabled but no URL is configured
The UI prevents saving an enabled webhook configuration without an appropriate URL.
A directly edited configuration with no usable URL results in no callback being sent.
Scheduling API warning
The Scheduler configuration is available through:
The POST endpoint replaces the complete scheduling object. Sending only a webhooks object can remove the existing standard and advanced Scheduler configuration.
Read the existing scheduling configuration first, update its webhooks block, then submit the complete scheduling object.
Last updated
Was this helpful?