Work snippetMonitoring + reliability

n8n and Make error monitoring, with retries, a dead-letter queue and alerts

How I would approach 14 automations across n8n and Make for a five-branch group, so each failure is classified, retried only when safe, parked with its full payload, and reported to the right person by severity.

Work snippet with example figures.

Area
Monitoring + reliability
Tools
n8n · Make · Airtable · Slack
Typical scope
US$1,500–3,000
Timeline
About 4 weeks · 4 fixed milestones

Context and systems map

A 60-tech plumbing and electrical group with five branches and 14 automations spread across Make and n8n: job creation, invoice pushes, supplier bill intake, review requests and nightly reports. Failures are found by someone noticing that a number looks wrong.

The systems in play

In the example each automation is wrapped with the same error pattern: classify the failure, retry what is safe to retry, park what is not in a dead-letter queue with the full payload, and tell the right person in the right channel. Silent failures are caught by heartbeat checks.

Systems map: who uses what
SystemWhat it does for the business
Make scenariosEight scenarios that connect ServiceM8, Xero and HubSpot. Each gets the shared error handler.
n8n workflowsSix workflows for supplier bills, reports and webhooks. Each gets the same error workflow.
Error workflowOne shared workflow that classifies an error, decides retry or park, and writes the log.
Dead-letter queueAn Airtable table holding each failed item: payload, error, attempts, owner and status.
Alert channelsA Slack channel for operations and email for the finance lead, by severity.
Heartbeat monitorA scheduled check that expects each automation to have run inside its window.

How the data moves

  1. Automation step fails
  2. Error workflow
  3. Classify
  4. Retry with backoff
  5. Dead-letter queue
  6. Alert by severity
  7. Owner resolves
  8. Replay or close

Problem

What the owner sees

  1. An invoice push that failed three weeks ago and nobody knew
  2. A flood of alerts that people learn to ignore
  3. Failed items that vanish with no payload to replay
  4. Fixes that create duplicates when the item is replayed

Automations rarely stop with a bang. They fail on one record, return a rate-limit error at month end, or quietly stop being triggered after a credential expires. The business needs a pattern that makes each failure small, visible and replayable, without creating duplicates when it is retried.

Where the drift starts
Everyday situationWhat goes wrong
Rate limit at month endA burst of invoices fails and is never retried
Expired credentialEvery run fails the same way until someone logs in
Record missing in the targetThe error says 404 and the item is lost
Validation error from bad dataThe same bad record fails on every retry
Retry without a keyThe item is created twice when the first attempt actually succeeded
Scenario switched off by accidentNothing fails; nothing runs either

Approach

Four steps, in this order. Each one ends with a result that is checked.

  1. LookInventory of every automation: trigger, steps, owner, what a failure costs and how it is noticed today.
  2. Agree the rulesError types, retry schedule, severity levels, owners and the replay procedure are written down.
  3. Build and testThe shared error handler is added to each automation in a copy first, then forced to fail in every class.
  4. Go live in orderHighest-risk automations first. Alert thresholds are tuned for two weeks so noise does not train people to ignore it.
Rules agreed in writing (example settings)
ItemExample setting
Retry typesRate limit, server error and timeout are retried. Authentication, validation and missing record are not.
Retry scheduleFive attempts with backoff of 1, 2, 4 and 8 minutes
IdempotencyEvery write carries a key built from source id and action, so a replay never creates a second record
Dead-letter queueAny item that fails the last retry or a non-retry class is parked with its full payload
SeverityCritical: money or customers affected. Warning: delayed, will retry. Info: daily digest.
HeartbeatEach automation has an expected run window and a maximum gap
ReplayOnly from the queue, by a named person, with the cause recorded
OwnerEvery automation has one named owner and a backup

Flow and data mapping

The first table is the decision made for every error. The second shows what is stored with each failed item so it can be replayed safely.

Error class, decision and alert
Error classExampleDecisionAlert
Rate limitHTTP 429 from the accounting APIRetry with backoffWarning if all retries fail
Server error or timeoutHTTP 5xx, no response in 30 secondsRetry with backoffWarning, then Critical if the queue grows
AuthenticationHTTP 401 or 403, expired tokenNo retry; park and pause the automationCritical, immediately
ValidationHTTP 400, missing tax codeNo retry; park with the field namedWarning to the data owner
Missing recordHTTP 404, customer not foundNo retry; parkWarning to the data owner
Already existsHTTP 409 on a replayTreat as success, logNone
No run in windowHeartbeat missedAlertCritical for money flows, Warning otherwise
What is stored for each failed item (example settings)
FieldContentUse
Item idSource record id and actionIdempotency key
AutomationName and versionFind the owner and the steps
PayloadFull input as received, secrets removedReplay without asking the source again
ErrorClass, code and messageTriage
AttemptsCount and timesRetry history
Owner and statusOpen, in progress, replayed, closedQueue discipline
CauseOne of eight causes, chosen on closeMonthly review of the biggest causes

Edge cases handled

Agreed in advance with the finance lead and the operations manager, and tested before go-live.

Edge cases and how each is handled
SituationHow it is handled
Retry succeeds after the original actually workedIdempotency key makes the second write return the first record
Same bad record fails every dayParked once; the repeat is counted against the same item, not re-alerted
Credential expires at nightCritical alert at the first failure; the automation pauses so it does not fill the queue
Alert storm after an outageAlerts grouped by automation and sent as one message every 15 minutes
Webhook sent twice by the sourceDuplicate key found, second ignored and counted
Replay of an item that is now out of dateReplay checks the current state of the record first and asks for a decision
Error handler itself failsSecond-level email to Manaz Afzal and the owner, with the raw error
Maintenance windowAlerts muted for the named automations for a fixed time, with a log entry

Worked example

The tables below show one month for an example group with 14 automations. They show the shape of the checks, not a client result.

Retry schedule for a rate-limit error
AttemptWait before itElapsed since first failure
1Immediately0 min after first failure
21 min1 min after first failure
32 min3 min after first failure
44 min7 min after first failure
58 min15 min after first failure
Dead-letter queue by cause (example figures)
CauseItemsReplayedClosed without replay
Missing tax code on a bill11110
Customer not found in Xero642
Expired credential220
Source sent an invalid date312
Total22184
Alert volume by severity for the month (example figures)
SeverityAlerts sentWent to
Critical3Finance lead by email, operations on Slack
Warning31Operations on Slack, grouped
Info30One daily digest message
Heartbeat windows (example settings)
AutomationExpectedMaximum gap
Invoice push to XeroEvery 15 minutes, 06:00 to 20:0045 minutes
Supplier bill intakeEvery 30 minutes2 hours
Nightly branch reportOnce, 02:0026 hours
Review requestsDaily, 16:0026 hours

Monitoring and alerting

This whole piece is about monitoring, so the alerts are designed to be few. Each one names the automation, the item, the likely cause and the first action.

What is watched, and who hears about it
SignalThresholdAlert goes toFirst action
Critical failureAny money or customer flow fails its last retryFinance lead email and operations SlackOwner opens the item, fixes the cause, replays
Queue sizeMore than 10 open items or any older than 24 hoursOperations SlackOwner reviews the queue the same morning
Heartbeat missedGap above the maximumOwner and operations SlackTrigger and switch status checked
Credential expiry14 days before and on the dayOwner emailCredential renewed and tested
Error handler failureAnyManaz Afzal and owner by emailHandler fixed, items replayed
Weekly digestCounts by automation and causeOwner and finance leadReview of the top cause

Test plan

Every check has a written pass condition and a written fail condition before it is run. A FAIL stops the next step until it is cleared and re-run.

Test plan with PASS and FAIL conditions
IDCheckMethodPASS whenFAIL when
T1Rate limitForce a 429 in a copyFive attempts on the schedule, then success or parkFewer attempts or no park
T2AuthenticationRevoke a test tokenNo retry, paused, Critical alert at onceRetries or no alert
T3ValidationSend a bad recordParked with the field namedRetried or lost
T4IdempotencyReplay a successful itemNo second recordDuplicate created
T5HeartbeatSwitch off a test automationAlert inside the maximum gapNo alert
T6Alert groupingFail 20 items at onceOne grouped message per window20 messages
T7ReplayFix the cause and replayItem created once, queue closed with the causeItem stuck or duplicated
T8Handler failureBreak the handler in a copySecond-level email sentSilence

Go-live and rollback

The handler is added automation by automation. Each one can be unwrapped in minutes, because the original steps are unchanged.

Rollout order and rollback triggers
StepOwnerGate to continueRollback trigger
Invoice push and bill intakeManaz AfzalT1 to T4 pass in a copyAny duplicate in the target
Review requests and reportsManaz AfzalT5 passesMissed heartbeat not alerted
Remaining automationsOperations managerQueue worked for a weekQueue above 10 for three days
Alert tuningManaz Afzal and ownerTwo weeks of review, noise below 5 alerts a dayOwner asks to mute a Critical alert
RollbackOwnerHandler removed from the automation, original steps untouchedDecision recorded with the reason

Scope and milestones

A fixed scope agreed in writing before anything starts. Each milestone is paid when you sign off its deliverable.

Scope: what a project like this covers
AreaIncluded
Systems AuditRead-only review of every Make scenario and n8n workflow, owners and failure history, a 45-minute call, written findings and a fixed quote
InventoryEvery automation with owner, trigger, steps and failure cost
Shared error handlerOne pattern for Make and one for n8n, with types and retries
Dead-letter queueTable, views, owner and status, with replay steps
AlertsSlack and email by severity, grouped and tuned
HeartbeatsWindows and gaps for each automation
RunbookWhat to do for each alert, one page each
HandoverWritten SOPs, a recorded handover video and files you own, plus 14 days of fixes after go-live
Not includedTax filing and statutory returns.
Also outside the scopeRebuilding the automations themselves. Changing the tools. A 24-hour on-call service. Software subscriptions (billed to you by the vendors).
Fixed milestones
MilestoneDeliverableTimingShare
M1 Audit and rulesInventory, fixed quote, error rules in writingWeek 125%
M2 Handler and queueHandler and queue built and tested in a copyWeek 230%
M3 RolloutHandler live on all automations, heartbeats onWeek 330%
M4 Tuning and handoverAlert tuning, runbook, SOPs, handover video, 14 days of fixesWeek 415%

Typical scope for this kind of project: US$1,500–3,000

About 4 weeks across 4 fixed milestones. The Systems Audit (US$300, fixed) comes first and confirms the scope.

Describe what is going wrong between your job system and your books, and I will say where I would look first.

Send a short note through the form on the home page. I will reply with where I would start, and whether the US$300 Systems Audit is the right first step.

Hire me on Upwork (opens in a new tab)Hire me on Freelancer (opens in a new tab)