Weekly reports now run per-user, isolated from each other

Weekly and monthly report delivery has been moved off the single shared-budget Lambda and onto a per-user fan-out. One slow user can no longer push later users past the time budget — and a timeout mid-run no longer locks a user out of that week's report.

The weekly digest of your traffic, crawler activity, errors and trends used to be sent by a single Lambda invocation that iterated every user in turn. That worked at small scale, but as we added customers and Athena work per site, last few Mondays were spending 8–9½ minutes of the Lambda's 10-minute budget. On 2026-05-04 the run actually hit the late-budget guard with 29 seconds left and stopped early — at least one user was silently skipped, and because their idempotency slot was already claimed before the stop, they weren't picked up by any later tick either.

Architecture is now per-user, mirroring the alert-digest fan-out we shipped earlier today:

  • An hourly scheduler still runs once daily at 08:00 UTC. On report days (Mondays for weekly, 1st-of-month for monthly) it enumerates eligible users and pushes one SQS message per user. No emails are sent in the scheduler itself.
  • A worker Lambda picks one message off the queue, sends that user's reports across all their sites, and stops. Each invocation handles exactly one user with its own time budget.
  • The per-(user, period) idempotency slot is now claimed by the worker just before sending — a worker timeout no longer locks a user out of that period's report. The slot still prevents any duplicate sends on retry.

If you were due a report on 2026-05-04 and noticed it never arrived, that gap is now explained — and won't recur.

← Anomaly detection and storage rollups now run per-site tooTry LogLens with one click — anonymous live demo →
← All changelog entries