Skip to content

Publish your first heartbeat

Send one HTTP request when your job finishes. If the requests stop, SignalSitter tells you.

Open the dashboard, create a project, then create a monitor. Copy its publish URL. It’s an ingest host plus the monitor’s ID:

https://ingest.signalsitter.com/nightly-backup

Then issue a credential. Keep it in an environment variable, SIGNALSITTER_PUBLISH_CREDENTIAL below, or in your secret store.

A write credential sends beats. A manage credential can also create and configure monitors from a beat: send to a new ID and the monitor is created.

Terminal window
curl --request POST \
--url https://ingest.signalsitter.com/nightly-backup \
--header "Authorization: Bearer ${SIGNALSITTER_PUBLISH_CREDENTIAL}"

That’s a complete beat. No body needed. Add this as the last step of your job.

The beat shows up on the monitor in the dashboard. The response says when the next one is due:

{
"accepted": true,
"observation": { "status": "on_time" },
"nextDeadline": "2026-07-28T12:05:30.000Z"
}

The monitor expects a beat every interval, plus a grace period (60 seconds by default). Miss that deadline and it opens an incident and sends your callback, if you’ve set one up.

No interval set? The monitor learns one from your first five regular beats, then starts watching. Only beats sent with a manage credential count toward learning. Until then, silence raises nothing.

Set the cadence on the beat: every 5 minutes, with 2 minutes of grace. Configuration headers need a manage credential. A write credential records the beat and ignores them.

Terminal window
curl --request POST \
--url https://ingest.signalsitter.com/nightly-backup \
--header "Authorization: Bearer ${SIGNALSITTER_PUBLISH_CREDENTIAL}" \
--header "Signalsitter-Interval: 300" \
--header "Signalsitter-Grace: 120"

Send measurements as a JSON object:

Terminal window
curl --request POST \
--url https://ingest.signalsitter.com/nightly-backup \
--header "Authorization: Bearer ${SIGNALSITTER_PUBLISH_CREDENTIAL}" \
--header "Content-Type: application/json" \
--data '{"files":42}'

To get an incident when a value crosses a limit, see Numeric rules.