Background jobs

The scheduled work behind rank checks, crawls, uptime sweeps, digests and purges.

Some of the platform works without anyone pressing anything. Fourteen job kinds do the scheduled work behind rank checks, crawls, uptime, digests, contract expiry and account deletion. You do not configure them; this page exists so that when something has not happened, you know what was supposed to make it happen.

#How they run

Work is queued as rows and drained by an authenticated trigger, rather than by a timer inside the application. The reason is that the application runs as several containers: an in-process timer would run everything as many times as there are containers.

A job is claimed with a lease. If the container holding it dies, the job goes stalled and becomes claimable again when the lease expires — the queue heals itself rather than needing anybody to notice.

This is why closing a tab is safe A crawl started this afternoon is a queued job, not a request your browser is holding open. Close the tab, close the laptop, come back tomorrow — the results are there.

#The jobs

#Search

KindDoesSpends
seo.rank_check.dispatch The scheduled fan-out. Queues one job per client whose cadence is due. No
seo.rank_check.client Queues the per-keyword checks for one client. No
seo.keyword_check One ranking lookup. Yes
seo.keyword_metrics Volume and difficulty refresh. Deduplicated per client per day. Yes
seo.crawl.poll Self-rescheduling crawl poller: asks the provider whether a crawl has finished and reschedules itself until it has. One unanswered poll does not kill a crawl that is otherwise succeeding. No
seo.alert_sweep Daily. Reads data already bought and raises alerts and wins from it. No

Cadence is the only lever you control here, and it is set per client. See Limits and cost.

#Uptime

KindDoes
uptime.sweep One sweep checks every monitor whose interval has elapsed.
maintenance.purge_uptime_checks Trims individual check rows after seven days. Daily roll-ups and incident records are kept, so long-run uptime figures survive the trim.

#Contracts

KindDoes
contracts.expiry_sweep Sends the closing soon notice, and when a deadline passes writes the lapse into the contract's ledger and tells both sides. Expiry is a recorded event, not an inference from a date.

#Content

KindDoes
content.approval_digest The one notification in the approval flow, batched daily to each person with items waiting on them.

#Accounts

KindDoes
clients.deletion_reminder Warns seven days before a scheduled deletion becomes irreversible.
clients.purge The only irreversible job on the platform. It re-checks the deadline before destroying anything, so a retry after a fix cannot destroy an account whose deletion was cancelled in the meantime.

The reminder and the purge are separate jobs deliberately: a bounced reminder must not stop a purge, and a failed purge must not suppress a warning.

#Maintenance

KindDoes
maintenance.purge_expired_tokens Clears expired sign-in, signing and verification tokens.
email.sending_domain_recheck Re-checks pending domains through the day and verified ones daily, so a DKIM or SPF record that was tidied away is noticed rather than discovered by a client who never got their contract.
platform.attention_digest The platform's own daily digest. Agencies never receive it.

#When something has not happened

Almost every "this stopped working overnight" report resolves to one of four things, in this order of likelihood:

  1. The client's status. A paused or offboarded client stops all paid work by design. Check Account status first — it is free to check and it is usually the answer.
  2. The module. A disabled module stops the work behind it. A hidden one does not.
  3. A ceiling. A client at its monthly crawl limit stops being crawled until the month rolls over. See Limits and cost.
  4. The agency's own status. A past-due agency stops buying, because every billed call downstream lands on the platform's invoice.

If none of those explains it, the queue itself may have stopped draining — that is visible to platform operators and is worth raising with support. Nothing in the agency portal shows it, because from inside a tenant a stopped queue looks exactly like a quiet week.

Search the documentation

↑↓ to move · Enter to open · Esc to close

Sign in to your workspace

Every agency has its own address. Enter yours and we'll take you there.

Platform administrator? Sign in at admin.agencydash.cloud