Skip to content

Scheduled jobs ​

This page lists the jobs an installation runs, how to change or pause each one, and what catch-up after downtime does and does not do.

Before you begin ​

  • A running installation (pnpm os:status shows it healthy).

What runs, and when ​

Times are the product defaults, in UTC. Your installation shows the saved schedule and the next run beside each job.

JobDefaultWhat it does
Live traffic and countersevery 15 minutesRefreshes the live Google Analytics and Search Console readings
Ad revenue10, 30 and 50 minutes past each hourChecks for a new Mediavine revenue report when one is due
Subscription revenue20 past each hourRecords each completed UTC day's Stripe sales less refunds for the site that names the account; asks Stripe only when a day is missing
Data freshness checksevery hourFlags a site whose report is late or whose connection stopped
Operator notifications5 past each hourSends what changed since its last run
Nightly reports02:30Collects the daily provider reports, including Bing Webmaster
NoticeOS report03:00The installation's own report about itself
Outcome checks03:30Reads the follow-up window of each shipped change
Search accessibility checks04:00Robots, sitemap, indexing and security-header checks, and a read of the light and dark icons each site's home page declares
Backups04:00The nightly backup; see Backups and restore
Page speed04:15Reads each site's Chrome UX Report page speed; runs once a Chrome UX Report key is connected
Clarity recordings summary04:30Summarises Microsoft Clarity data
Traffic and search archives12:15Archives the day's Google Analytics, Search Console and Bing reports
Product analytics archives12:30Archives PostHog reports
Search rankings and backlinksMondays 12:45The weekly DataForSEO collection. This one spends money; see Budgets
Local research summaries13:10Refreshes each site's local research files and publishes the summary
Task board refreshevery minuteCopies the task service's current tasks into the store for the Tasks page
Task service healthevery 15 minutesChecks that the task service responds
Task project checks5 past each hourChecks every declared task project still exists
Search review tasks25 past each hourFiles a review task when a new search collection arrives
Unpublished commit checks40 past each hourFiles a task when a project has commits that are not pushed
Outcome task updates50 past each hourUpdates the tasks that track an outcome window

Catch-up after downtime ​

While the service is down, a due job is skipped and recorded. At the next start the service runs at most one missed run per job, and only when the missed run is recent enough:

JobsCaught up when the last due run is within
Live traffic and counters1 hour
Data freshness checks, Operator notifications2 hours
Daily collections, archives and backups36 hours
Ad revenue36 hours, and only if a report is actually due
Search rankings and backlinks (weekly)8 days

The pass runs cheapest job first, so a reboot is not a burst of provider calls. It never replays every missed run: one missed day of a 15-minute job is one refresh, not 96. A failed run still counts as a run, so catch-up never loops on a failure.

Some things are never caught up, by design: database migrations, restores, settings imports, deployments and any change to alert rules or measurement. Those are your explicit actions and stay that way.

Change a schedule ​

  1. Open System health > Background operations (/health/operations).
  2. Select the job, then Edit schedule.
  3. Change the frequency, local time or weekday, or set the job to Paused. The editor previews the next three runs and saves with Undo. Restore default removes your override.

A collection fed by a provider connection is changed with that connection: open Integrations, select the connection, and use its Manage panel. A collection no connection feeds is changed under Settings > Data collection.

The Workflows page (/workflows) lists the operator automations with their history; their schedules are edited the same way. Saved schedules are kept across restarts and deploys. A time you save uses your browser's time zone; the product default is UTC.

Pausing fully stops a job

A paused job does not run on its schedule, is not caught up after downtime, and blocks Start collecting on a connection panel until you resume it.

Run one job by hand ​

  1. In the checkout, run the jobs scheduled on that expression:

    sh
    pnpm os:run-job -- "15 12 * * *"

A connection's Start collecting button runs that provider's first collection at once and previews the cost of a metered step first.

Verify ​

  • The job's row under Background operations shows the saved schedule and the next run.
  • pnpm os:logs -- noticeos shows each job firing, including what the catch-up ran after a restart.
  • pnpm os:run-job prints the jobs it runs when you pass an expression.

If it didn't work ​

  • pnpm os:run-job rejects the expression and prints it: no job runs on it. Use one of the expressions the command prints.
  • Start collecting is blocked on a connection panel: the job is Paused. Resume it under Background operations first.
  • A provider job records paused before the monthly data cap: the metered spend would cross the cap. Raise it under Settings > General > Budget, or wait for next month. See Troubleshooting.

The runner's contract, including the port map and the exact recovery policy, is on GitHub: https://github.com/notice-cx/NoticeOS/blob/main/scripts/README.md#bounded-catch-up-after-downtime.

Next steps ​

Released under the AGPL-3.0 license.