Webhooks

Chronos has no Webhooks screen. The Scheduler left nav is Schedules and Events only. You configure those two forms; Chronos then accepts incoming fire requests and registers the Core Hub callbacks the forms need.

Outbound “notify this URL” webhooks (endpoint, signing secret, custom headers, Send test, delivery logs) are a Core Hub setting, not a Chronos one. Use Settings → Notifications → Webhooks. See Webhooks and Webhook alerting.

Where webhooks appear in the Scheduler UI

Screen What you actually set

Scheduler → Events

Create, edit, delete, enable/disable. Trigger type tabs: Platform event or Webhook trigger (tabs lock after the first save). One action per event, including Query Studio (query_studio). After a webhook-trigger save: one-time secret token and trigger URL. Table: Fire now, enable/disable, Regenerate token (webhook-trigger only), edit, delete, expandable execution logs.

Scheduler → Schedules

Chained Events editor: execution mode Async or Sync, and webhook timeout (seconds) when Sync is selected. Default timeout is 3600. Chronos registers the completion callback when you save the schedule.

The Events form does not show execution mode, webhook timeout, or more than one action. Those controls belong to Schedules chained events.

There is no Chronos field for an outbound webhook URL, HTTP method, custom headers, signing secret, SSL, retries, severity, object filters, or Send test.

Incoming fire URL (webhook trigger)

On Scheduler → Events → New, choose the Webhook trigger tab.

Every event has a stable fire URL. The UI shows it as:

{origin}/chronos/api/triggers/{id}/fire

Call it with POST and the secret token in the X-Trigger-Token header. The token is shown once, in the modal after Save. Copy it with the URL. Later reads return the token as <redacted>.

From the events table you can:

  • Fire now — runs the event immediately (Control Plane call; no token)

  • Enable / Disable — a disabled event rejects fire requests and skips platform-event callbacks

  • Regenerate token — webhook-trigger events only; invalidates the old token

  • Edit / Delete — Trigger type cannot be changed after create

Optional query parameters on the fire URL (API, not on the form): wait (default false) and wait_timeout_seconds (default 120, range 1–3600).

For create/update fields and curl examples, see Events.

A webhook-triggered event can run a Query Studio action. See Query Studio actions for query selection and write safeguards.

Platform events

On Scheduler → Events → New, choose the Platform event tab. The combo box lists Core Hub event types from GET /global-config/webhooks/event-types. Chronos does not keep its own list. Required on that tab.

The published types are in Enabled events.

When you save, Chronos registers a Core Hub webhook (chronos-platform-{id}) that POSTs to Chronos at /api/webhooks/platform-event with:

  • EXT_MODULE: chronos

  • X-Trigger-Flow-ID: <event id>

You do not type a callback URL. The registration has empty pipeline / group / entity filters (cluster-wide). Scope the work with the single action on the event.

If the event is disabled, Chronos acknowledges the callback and does not run. Changing the platform event updates the Core Hub webhook. Deleting the event removes it.

This tab has no secret token and no trigger URL.

A platform event can run the same Query Studio (query_studio) action as a schedule or webhook-triggered event.

Sync chained events on schedules

On Scheduler → Schedules, expand Chained Events. For each extra step:

  • Execution mode — Async (continue immediately) or Sync (wait for the previous step)

  • Webhook timeout — Sync only, seconds, default 3600

  • Action — Pause, CDC, Snapshot with/without truncate, Snapshot + CDC with/without truncate, Put under maintenance, Resume from maintenance, or Query Studio (query_studio)

  • Target — pipeline (required), optional groups and entities. Query Studio is pipeline plus one SQL-capable agent only; groups and entities are hidden.

Query Studio has no Core Hub completion webhook. Sync waits on the HTTP execute (120 seconds). When Query Studio is the preceding step, the next sync event skips the webhook wait.

You do not create that webhook. Saving a schedule with Sync steps makes Chronos register a persistent Core Hub webhook per Sync step (chronos-sync-{eventId}) pointing at {{chronos_address}}/api/webhooks/notify. Chronos removes stale ones at startup.

The callback uses:

  • EXT_MODULE: chronos

  • X-Event-ID: <chained event id>

The body is optional. Chronos only logs user if present. Callbacks outside the active listening window are acknowledged (acknowledged: false) so Core Hub does not retry; they do not advance a later run.

Sync wait on these persistent webhooks applies to schedules. An Event’s single action does not wait on them.

Completion events Chronos waits for (schedules)

The preceding step’s action determines which Core Hub events Chronos listens for:

UI action (preceding step) Core Hub events Chronos waits for

CDC

ENTITY_CDC_STARTED (entity or pipeline), GROUP_CDC_STARTED (group)

Pause

ENTITY_CDC_STOPPED (entity or pipeline), GROUP_CDC_STOPPED (group)

Snapshot with/without truncate, Snapshot + CDC

ENTITY_SNAPSHOT_COMPLETED and ENTITY_SNAPSHOT_FAILED (entity or pipeline); GROUP_SNAPSHOT_COMPLETED and ENTITY_SNAPSHOT_FAILED (group)

Put under maintenance

PIPELINE_ENTER_MAINTENANCE

Resume from maintenance

PIPELINE_EXIT_MAINTENANCE

The Sync webhook is filtered to the step’s pipeline, plus group or entity when those are selected.

PIPELINE_ENTER_MAINTENANCE and PIPELINE_EXIT_MAINTENANCE are the names Chronos registers for those two UI actions. They are not in the published Core Hub webhook-alerting table.

Callback URL

Core Hub must reach Chronos. Set CHRONOS_CALLBACK_URL when the derived host is wrong. If unset, Chronos builds the base from SCHEDULER_INTERNAL_HOST, PORT, and SSL_ENABLED.

The Events UI trigger URL uses the Control Plane origin (/chronos/api/triggers/{id}/fire), not that env var.

What this page does not cover

These exist only on Settings → Notifications → Webhooks:

  • Endpoint URL (POST only)

  • Signing secret (X-Gluesync-Signature)

  • Custom headers

  • Severity filter

  • Skip TLS verification

  • Send test

  • Delivery logs, dead letters, retention

Do not edit Chronos-managed rows (chronos-sync-, chronos-platform-) by hand.

Troubleshooting

Issue Possible cause Resolution

Platform event does not run the event

Event disabled, or Core Hub cannot reach Chronos

Enable the event. Confirm Core Hub can POST to the Chronos module address

Sync step on a schedule times out

Preceding action longer than the webhook timeout

Increase webhook timeout on that Sync step, or check Core Hub that the preceding action finished

Incoming fire returns 401

Missing or old X-Trigger-Token

Regenerate token on a webhook-trigger event and copy the new value

Orphaned Chronos rows under Core Hub Webhooks

Schedules or events deleted while Chronos was down

Restart Chronos; it drops stale registrations on startup