Monitoring for AI agents & automations
Know when your automations stop working.
Monitor every scheduled AI task, workflow, and background job. Get alerted when a run is missed, delayed, fails, or returns nothing useful.
No credit card required · Free plan available
- Active watches
- 12
- Successful · 24h
- 46
- Missed
- 1
- Empty results
- 1
Recent activity
Today · EDTCRM sync · Zapier
9:30 AMMissed · No check-in by 9:30 AM
Changelog summary · Claude Code
9:16 AMEmpty · 0 items, expected ≥ 1
Lead enrichment · n8n
9:02 AMRan · 41 items
Weekly KPI report · Make
8:45 AMRan · 2.4 KB
Nightly backup · cron
2:00 AMRan · on schedule
Daily roll-call
8:00 AM- Ran9
- Missing1
- Empty1
- Waiting1
“CRM sync” did not run
Expected 9:15 AM EDT, 15 min grace. No check-in arrived.
Oct 19, 9:30 AM EDT · via Email
Works with the tools that power your workflows.
Connected with a check-in URL, never with your account credentials. ChatGPT tasks connect by relaying their notification email to the check-in URL; direct email check-ins are coming soon. Product names and logos are trademarks of their owners.
The silent failure problem
Most monitoring catches errors. What about the runs that never happen?
Scheduled work rarely crashes loudly. It skips a day, or it runs and produces nothing. Did It Run? expects each run on schedule and tells you when the signal doesn't arrive, or arrives empty.
It never starts
A paused workflow, a sleeping host or a dropped schedule. No run means no error to catch.
It runs, but returns nothing
A green run with zero items, a blank summary or an apology instead of a result.
A connection silently expires
Revoked auth stops the trigger, so the job just goes quiet.
It finishes late
The report lands after the meeting it was meant for.
It recovers after an outage
You want to know when it's healthy again, without checking by hand.
Before
Five tabs, no answer
- ZapierLast run?
- n8n executionsGreen, but how many items?
- crontabNo output
- ChatGPT tasksDid today's brief run?
- GitHub ActionsScheduled… maybe
After
Example data- Daily briefRan 8:59 AM
- Lead enrichmentRan · 41 items
- Invoice syncLate · in grace
- Changelog summaryEmpty · 0 items
- CRM syncMissed 9:15 AM
- Nightly backupRan 2:00 AM
Did It Run? detects these through the check-ins and output checks you configure. It doesn't execute, access or repair your jobs; it tells you when one needs your attention.
Product
One place to see whether your scheduled work actually happened.
Daily brief
Weekdays 9:00 AM · America/New_York
MonTueWedThuFriRanChecked in 8:59 AMInvoice sync
Weekdays 9:15 AM · America/New_York
MonTueWedThuFriLateDue 9:15 AM · inside 15 min graceCRM sync
Weekdays 9:15 AM · America/New_York
MonTueWedThuFriMissedNo check-in by 9:30 AM
Ran
A good check-in arrived in the run's window.
Late
Past the scheduled time, still inside grace.
Missed
Grace ended with no check-in. One alert is sent.
Every expected run, accounted for.
Each watch knows when the next run is due. A check-in inside the window marks it as ran; nothing by the end of the grace period marks it as missed.
- Cron expression or a simple schedule builder
- Your timezone, with a grace period per watch
- Optional late warning while still inside grace
How it works
Three steps. No agents to install.
Your jobs keep running where they run today. They just send a signal when they finish.
- 01
Define your schedule
Pick “every weekday at 9:15 AM” or paste a cron expression. Set your timezone and a grace period for normal run time.
- 02
Send a check-in
At the end of each run, call the watch's check-in URL. Email check-ins are coming soon. Add output for empty-result checks.
- 03
Know when something goes wrong
Missed, late, failed or empty runs raise an alert. You get a recovery notice when the next good run arrives.
Check-in URL · any language or tool
bash# at the end of a successful run
curl -fsS -m 10 --retry 3 https://diditrun.app/p/<token>
# send output so empty results are caught
curl -fsS -m 10 -X POST https://diditrun.app/p/<token> \
-d '{"items": 12, "text": "Daily digest ready"}'
# optional: mark the start, or report a failure
curl -fsS https://diditrun.app/p/<token>/start
curl -fsS https://diditrun.app/p/<token>/failNo-code: email-in Coming soon
Every watch has its own address. Forward a ChatGPT task notification with a Gmail filter, or send an email from Zapier or Make.
Until email-in launches, use an n8n HTTP Request node, a Make HTTP module or Webhooks by Zapier (paid Zapier plan) to call the check-in URL.
Use cases
Built for the places scheduled work quietly breaks.
AI agents
ChatGPT scheduled tasks and Claude Code routines that write briefs, digests and summaries.
Know when an agent skipped a day or answered with an apology instead of a result.
n8n
Lead enrichment and sync workflows on a Schedule Trigger, cloud or self-hosted.
Catch the green execution that processed zero items.
Zapier
Zaps that move form fills, invoices and CRM records between apps.
Hear about a Zap that stopped firing after a connection expired or it was turned off.
Make
Scheduled scenarios for reports, exports and data syncs.
Find out when a scenario stops running instead of discovering it a week later.
GitHub Actions
schedule: workflows for nightly builds, scrapers and reports.
Know when a scheduled workflow is delayed, dropped or auto-disabled.
Cron & background jobs
Backups, cleanups, queue workers and crontab scripts on any server.
One curl at the end of the job turns a silent failure into an alert.
Pricing
Start free. Upgrade when your fleet grows.
Free covers 3 watches. Paid plans add more watches, more alert channels and longer history.
Billed monthly. Switch to annual for 12 months at the yearly price.
Free
Try it on the automations you worry about most.
No credit card required
- 3 watches
- Ping URL source (email-in coming soon)
- Missed / late / failed / empty checks
- Email alerts
- 7-day history
Solo
RecommendedFor people running a fleet of agents and automations.
or $150/year billed annually
- 30 watches
- Email, Slack, Discord, Telegram alerts
- Daily roll-call digest
- Output sanity checks
- 30-day history
Pro
For automation agencies and teams watching client work.
or $390/year billed annually
- 150 watches
- Everything in Solo
- Client folders
- 90-day history
- Priority support
Prices in USD. Paid plans start after you create a free account; checkout is handled by Stripe. Change plans or cancel any time from the billing portal in Settings.
Transparency
You stay in control of what we see.
Did It Run? works from the signals you choose to send. Here is exactly what that means.
You configure the check-ins
You decide which jobs send a signal, when, and what output they include.
We only receive signals
Each check-in records its time, size, item count and the first 500 characters, kept for your plan's history window.
No code execution, no account access
We never run your code or connect to your ChatGPT, Claude, Zapier, Make, n8n or GitHub accounts.
Your schedules, your rules
Schedules, timezones, grace periods and output checks are set per watch and can be changed any time.
What is Did It Run?
Did It Run? is a watchdog for scheduled work: AI agents, no-code automations, scheduled CI workflows and cron jobs. You tell it when each run is expected, each run sends a check-in, and you're alerted when a run is missed, late, failed or comes back empty. A recovery notice follows when things are back to normal.
Which jobs can it monitor?
Anything that runs on a schedule and can make an HTTPS request at the end of a run: Claude Code routines, n8n workflows, Zapier Zaps, Make scenarios, GitHub Actions scheduled workflows, crontab entries and background workers. Tools that can only send email, such as ChatGPT scheduled tasks, can be monitored today by relaying their notification email to the check-in URL with n8n, Make or a paid Zapier plan; direct email check-ins are coming soon. For event-driven jobs, use the longest normal gap between runs as the schedule.
How does a monitoring URL work?
Every watch gets its own check-in URL, https://diditrun.app/p/<token>. Call it with GET or POST when a run finishes successfully. Call /start when a run begins and /fail when it fails. To use output checks, POST a body such as {"items": 12, "text": "..."} or add ?items=12. The URL answers "OK"; we only record that the signal arrived.
Can I monitor without code?
Mostly. Anything that can make an HTTP request can check in without custom code: an n8n HTTP Request node, a Make HTTP module, or Webhooks by Zapier (Webhooks and multi-step Zaps need a paid Zapier plan). No-code email check-ins, where you forward an email to a watch address like morning-brief-k3j9x2m4@in.diditrun.app, are coming soon.
How does it detect empty results?
Each watch can have optional output checks: a minimum output size in bytes, a minimum item count (sent as JSON like {"items": 12} or ?items=12), and a required keyword that must appear in the output. If a success check-in fails any of them, the run is flagged as empty and you get an alert.
What happens when a job misses its schedule?
If no check-in arrives by the scheduled time plus the watch's grace period, the run is marked missed and you get one alert, not a new alert every minute. You can also turn on a late warning for runs that are past due but still inside grace. When a good run arrives again, you get a recovery notice.
Where can alerts be delivered?
Email on every plan. Solo and Pro add Slack, Discord and Telegram, plus a daily roll-call digest that lists what ran, what's missing and what came back empty.
Does it execute my code?
No. Did It Run? never runs your code and never connects to your ChatGPT, Claude, Zapier, Make, n8n or GitHub accounts. Your job sends a check-in when it runs; we only receive and evaluate those signals against the schedule and output checks you configured.
Can I change or cancel my plan?
Yes. Upgrade from Settings, where checkout is handled by Stripe. Switch plans, change billing interval or cancel from the Stripe billing portal; a cancellation takes effect at the end of the paid period. On the Free plan, watches beyond its 3-watch limit are paused, never deleted.
Stop wondering whether your automations ran.
Monitor your scheduled work, catch silent failures, and get a clear signal when something needs your attention.