Most Make.com scenarios are designed as if everything will work.
That assumption holds—right until one API returns a malformed payload, a webhook times out, or a downstream system rejects data. Then your “automation” becomes a black hole where failures disappear and nobody knows what was lost.
A Dead Letter Queue (DLQ) fixes that. Not by preventing errors, but by capturing them, preserving context, and making them replayable.
A DLQ is not a built-in feature. You design it.
It’s a separate, isolated system that receives failed executions and stores:
Think of it as a buffer between failure and recovery.
| Component | Role |
|---|---|
| Main scenario | Executes business logic |
| Error handler | Intercepts failures |
| DLQ scenario | Stores failed payloads |
| Storage layer | Google Sheets / DB |
| Replay mechanism | Manual or automated |
Most teams try to log errors inside the same scenario.
That’s the first mistake.
If your main scenario breaks, your logging logic might never execute. Or worse—it triggers another failure.
You want decoupling.
What the screenshot shows:
A Make.com scenario using an error handler that routes failed executions to a webhook module, triggering a completely separate logging scenario.
| Step | Action |
|---|---|
| Error occurs | Scenario fails at module |
| Error handler triggers | Captures payload + error |
| Webhook call | Sends data to DLQ scenario |
| DLQ scenario runs | Stores error safely |
{
"scenario": "lead-processing-v2",
"module": "hubspot-create-contact",
"error": "400 Bad Request",
"payload": {
"email": "test@example.com",
"company": "Example Ltd"
},
"timestamp": "2026-01-01T10:00:00Z"
}
Notice one thing: you store the original payload.
Without it, replay is impossible.
Now that errors are captured, they need to be stored somewhere usable.
Not logs. Not console output.
Structured storage.
What the screenshot shows:
A Make.com module writing error data into Google Sheets, with structured columns for payload, error, and timestamp.
| ID | Scenario | Error | Payload | Status | Retry Count | Timestamp |
|---|---|---|---|---|---|---|
| 1 | lead-flow | 400 | JSON | pending | 0 | 10:00 |
| 2 | billing | 401 | JSON | failed | 2 | 10:05 |
Use when:
Example schema:
CREATE TABLE dlq_events (
id SERIAL PRIMARY KEY,
scenario TEXT,
error TEXT,
payload JSONB,
status TEXT DEFAULT 'pending',
retry_count INT DEFAULT 0,
created_at TIMESTAMP DEFAULT NOW()
);
Without structured storage:
You’re blind.
Capturing errors is easy.
Recovering from them is where systems either mature—or collapse.
You build a second scenario:
What the screenshot shows:
A Make.com scenario reading rows from Google Sheets, iterating through failed payloads, and retrying the original workflow logic.
if (retry_count < 3) {
process(payload);
updateStatus("success");
} else {
updateStatus("failed_permanent");
}
Never replay blindly.
Always:
Otherwise, you create chaos.
This is where most “DLQ implementations” fail.
You build:
But forget:
what if replay fails again?
| Step | Result |
|---|---|
| Original flow fails | Sent to DLQ |
| Replay runs | Fails again |
| Error handler triggers | Sends back to DLQ |
| Loop begins | Forever |
You need loop protection logic.
if (retry_count >= 3) {
stopProcessing();
markAsPermanentFailure();
}
What the screenshot shows:
A filter condition in Make.com that prevents further retries when retry count exceeds a defined threshold.
| Status | Meaning |
|---|---|
| pending | Waiting for replay |
| processing | Currently retrying |
| success | Recovered |
| failed_permanent | Stop retrying |
What the screenshot shows:
A full DLQ architecture: main scenario → error handler → webhook → logging scenario → storage → replay scenario with retry limits.
| Stage | Action |
|---|---|
| Execution | Main scenario runs |
| Failure | Error handler triggers |
| Logging | Sent to DLQ scenario |
| Storage | Saved in Sheets/DB |
| Replay | Separate scenario processes |
| Control | Retry limits applied |
Before DLQ:
After DLQ:
You don’t need a DLQ when things work.
You need it when:
Which is to say—always.
If your Make.com setup:
you didn’t build automation.
You built a system that works exactly until it doesn’t…
and then quietly loses data while pretending everything is fine.
Marketing automation ROI is one of those figures every marketer quotes and almost nobody verifies.…
⚡ TL;DR If your website depends on APIs, structured content, custom fields, and external data…
⚡ TL;DR The clean way to do automated internal linking wordpress is not to install…
There are two kinds of teams: those who rotate API keys intentionally, and those who…
Automation ROI compares the time saved by a workflow against the cost of building, running,…
⚡ TL;DR If you need to manage multiple wordpress sites without logging into five dashboards…