Skip to content

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

Overview
Example data
Active watches
12
Successful · 24h
46
Missed
1
Empty results
1

Recent activity

Today · EDT
  1. CRM sync · Zapier

    9:30 AM

    Missed · No check-in by 9:30 AM

  2. Changelog summary · Claude Code

    9:16 AM

    Empty · 0 items, expected ≥ 1

  3. Lead enrichment · n8n

    9:02 AM

    Ran · 41 items

  4. Weekly KPI report · Make

    8:45 AM

    Ran · 2.4 KB

  5. Nightly backup · cron

    2:00 AM

    Ran · 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

Illustrative example of the Did It Run? dashboard. Not real customer data.

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
3 ran2 need a look1 missed
  • 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
Before: scheduled jobs spread across many tools with no shared status. After: one dashboard showing which runs ran, are late, came back empty or were missed.

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.

Never Miss a RunExample data
  • Daily brief

    Weekdays 9:00 AM · America/New_York

    MonTueWedThuFri
    RanChecked in 8:59 AM
  • Invoice sync

    Weekdays 9:15 AM · America/New_York

    MonTueWedThuFri
    LateDue 9:15 AM · inside 15 min grace
  • CRM sync

    Weekdays 9:15 AM · America/New_York

    MonTueWedThuFri
    MissedNo 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
1 / 4

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.

  1. 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.

  2. 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.

  3. 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>/fail

No-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.

FromChatGPT task notificationTomorning-brief-k3j9x2m4@in.diditrun.appSubjectYour morning brief is ready

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.

$0forever

No credit card required

  • 3 watches
  • Ping URL source (email-in coming soon)
  • Missed / late / failed / empty checks
  • Email alerts
  • 7-day history

Solo

Recommended

For people running a fleet of agents and automations.

$15per month

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.

$39per month

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.

FAQ

Questions, answered.

Something else? Email diditrun@mail.grokbot.com.

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.