Skip to content
NEWError doctor and Watchtower: failed n8n runs explained in plain words, and emailed to you. See what is new

Library / Monitoring, Ops & Incidents

Monitoring, Ops & Incidents

Log workflow errors to Postgres and throttle Pushover and SMTP alerts

Runs when another workflow fails, logs every error to Postgres, and sends at most one Pushover or email alert every 5 minutes to prevent alert floods.

What it does

# Log errors and avoid sending too many emails ## Use case Most of the time, it’s necessary to log all errors that occur. However, in some cases, a scheduled task or service consuming excessive resources might trigger a surge of errors. To address this, we can log all errors but limit alerts to a maximum of one notification every 5 minutes. ## What this workflow does This workflow can be configured to receive error events, or you can integrate it before your own error-handling logic. If used as the primary error handler, note that this flow will only add a database log entry and take no further action. You’ll need to add your own alerts (e.g., email or push notifications). Below is an example of a notification setup I prefer to use. At the end, there’s an error cleanup option. This feature is particularly useful in development environments. If you already have an error-handling workflow, you can call this one as a sub-workflow. Its final steps include cleanup logic to reset the execution state and terminate the workflow. ## Setup Verify all Postgres nodes and credentials when using the 'Error Handling Sample' ## How to adjust it to your needs 1) You can set this workflow as a sub-workflow within your existing error-handling setup. 2) Alternatively, you can add the "Error Handling Sample" at the end of this workflow, which sends email and push notifications. Configuration Requirements: ⚠️ You must create a database table for this to work! DDL of this sample: create table p1gq6ljdsam3x1m."N8Err" ( id serial primary key, created_at timestamp, updated_at timestamp, created_by varchar, updated_by varchar, nc_order numeric, title text, "URL" text, "Stack" text, json json, "Message" text, "LastNode" text ); alter table p1gq6ljdsam3x1m."N8Err" owner to postgres; create index "N8Err_order_idx" on p1gq6ljdsam3x1m."N8Err" (nc_order); by Davi Saranszky Mesquita {{ $env.WEBHOOK_URL }}

The steps

  1. Error Trigger
  2. Insert Log
  3. Count for 5 minutes
  4. Principal E-Mail
  5. Fallback E-Mail
  6. Push mobile notification
  7. Truncate Log Database
  8. Sometimes... just cleanup
  9. Call this Sample - Prepend to your error catcher
  10. See below to prepend this at your error handling
  11. If there is no logs in 5 minutes
  12. CleanUp execution. See below if you will prepend this workfl
  13. Insert your error handling logic after this

Similar automations