AutoBlocksCalm automation for everyday life

Notifications and activity

AutoBlocks keeps you informed through notification steps inside AutoBlocks, email alerts (via Resend), in-app inbox items, and the Activity dashboard at /activity.

API: apps/api/src/modules/notifications/routes.ts, apps/api/src/modules/executions/routes.ts. UI: apps/product-web/src/features/notifications/, apps/product-web/src/app/(dashboard)/activity/page.tsx.


Notification channels

ChannelTriggerConfigure at
In-app inboxRun events, failures/settings — in-app toggle
Email on failureFailed execution/settings — default on
Email on completeSuccessful run/settings — default off
Notification stepAutoBlock step configWizard — per AutoBlock

Production email sender: RESEND_FROM_EMAILAutoBlocks <notifications@autoblocks.pro> (render.yaml).


Settings preferences

PreferenceAPI fieldDefault
Email when run failsemailOnFailuretrue
Email when run completesemailOnRoutineCompletefalse
In-app notificationsinAppEnabledtrue
MethodPath
GET/tenants/:tenantId/notification-preferences
PATCH/tenants/:tenantId/notification-preferences

UI: apps/product-web/src/features/settings/settings-panel.tsx + InAppInbox component.


In-app inbox

flowchart TB
  Run["Execution completes or fails"]
  API["API writes in-app notification"]
  Inbox["Settings — In-app inbox"]
  You["You read + mark read"]

  Run --> API --> Inbox --> You
MethodPathPurpose
GET/tenants/:tenantId/notificationsList inbox items
PATCH/tenants/:tenantId/notifications/:id/readMark as read

Activity dashboard (/activity)

Every execution run appears in Activity with a status badge:

StatusMeaning
pendingQueued — worker has not finished
runningIn progress
succeededAll steps completed
failedError — see plain-language explanation
MethodPathPurpose
GET/executionsList runs for your tenant
GET/executions/:id/logsStep-level logs for a run

Activity use cases

GoalWhat to check
Verify schedule worksFilter recent runs — look for triggerKind: schedule
Debug webhookFind run after POST — inspect input payload in logs
Confirm notification sentsucceeded run + notification step log
Understand failurefailed badge → open logs → read explanation
flowchart LR
  Trigger["Trigger fires"]
  Run["Execution run"]
  Steps["Steps execute"]
  Activity["/activity"]
  Notify["Email / in-app"]

  Trigger --> Run --> Steps
  Steps --> Activity
  Steps --> Notify

Notification step (inside AutoBlock)

When you add a notification step in the wizard:

Config areaTypical fields
MessageTitle + body text
ChannelIn-app, email, or both per step design

Notification steps are actions, not account-wide preferences. Account preferences control automatic failure/completion emails.


Failure visibility

Phase 1 principle: trust over magic. Failed runs expose:

ElementLocation
Status badgeActivity list
Plain-language summaryRun detail
Step logsGET /executions/:id/logs
Email alertIf emailOnFailure enabled

Use Activity as the first stop when something "did not fire."


Related reading