How it works
Your job sends a check-in to Sentry when it starts and again when it finishes. Sentry compares those check-ins against the expected schedule and marks the run as ok, failed, missed, or timed out.Check-in statuses
| Status | What it means |
|---|---|
in_progress | The job sent an opening check-in and is currently running |
ok | The job completed successfully |
error | The job explicitly reported a failure |
missed | No check-in arrived within the expected window |
timeout | The job started (in_progress) but didn’t finish within max_runtime |
Creating a monitor
Create a monitor
Click Add Monitor. Give it a name and a unique slug — you’ll use the slug in your check-in calls.
Configure the schedule
Choose a schedule type and set the expression:
- Crontab: a standard 5-field cron expression (e.g.
0 * * * *for hourly) - Interval: a human-friendly interval (e.g. every 5 minutes, every 2 hours, every 1 day)
minute, hour, day, week, month, yearSet tolerances (optional)
- Check-in margin (
checkin_margin): How many minutes after the expected time to wait before marking a run as missed. Useful for jobs that take a moment to start. - Max runtime (
max_runtime): How many minutes a job can stayin_progressbefore Sentry marks it as timed out.
Sending check-ins
Via SDK (recommended)
The SDK handles opening and closing check-ins automatically, and reportserror status if an exception is raised.
Via HTTP API
You can also send check-ins directly to the Sentry API from any language or environment that can make HTTP requests.Via DSN (upsert)
If you’d rather not create monitors in the UI first, you can upsert a monitor directly from your check-in payload using your project DSN. Include the full monitor config in the check-in envelope:Python
Upsert check-ins create or update the monitor configuration automatically. This is useful when you manage monitors as code alongside your job definitions.
Schedule types
Crontab
Use standard 5-field cron syntax. Sentry also supports common aliases:| Alias | Equivalent |
|---|---|
@yearly / @annually | 0 0 1 1 * |
@monthly | 0 0 1 * * |
@weekly | 0 0 * * 0 |
@daily | 0 0 * * * |
@hourly | 0 * * * * |
Interval
Specify a count and a unit:Alerting
By default, Sentry creates an issue whenever a monitor enters a failed state (missed, error, or timeout). You can configure additional alert rules to notify your team:- Email — send to specific team members or the issue assignee
- Slack — post to a channel
- PagerDuty — page on-call
- Webhooks — call any HTTP endpoint
Environments
Each monitor tracks check-ins per environment. If the same job runs inproduction and staging, Sentry creates separate environment tracks under the same monitor. Set the environment in your check-in: