# Prevent duplicate webhook processing with Postgres: n8n workflow

> Started by another system calling it, and works across Postgres. 9 steps, 1 branch: a working afternoon to understand properly.

Source: https://millionrounds.com/workflow/prevent-duplicate-webhook-processing-with-postgres (Millionrounds; every figure on the page links to its filing or article)

[Automation library](https://millionrounds.com/workflows) · [Content](https://millionrounds.com/workflows?category=Content#library)

# Prevent duplicate webhook processing with Postgres

Started by another system calling it, and works across Postgres. 9 steps, 1 branch: a working afternoon to understand properly.

Medium

[Download free](https://millionrounds.com/login?next=%2Fapp%2Fworkflow%2Fprevent-duplicate-webhook-processing-with-postgres)

**9 steps** Medium: a working afternoon

**1** Branch: places the flow splits

**0** Loops or waits

**1** Service it connects to

## The flow

Starts it 2 Logic 4 Service 3

The steps in the order they run, from what starts it.

- 1 **Webhook Trigger** Webhook *Starts it*
- 2 **Daily Cleanup** Schedule trigger *Starts it*
- 3 **Hash Payload** Crypto *Service*
- 4 **Config** Set *Logic*
- 5 **Claim (insert if new)** Postgres *Service*
- 6 **Cleanup Old Hashes** Postgres *Service*
- 7 **Is New?** If *Logic*
- 8 **Process Payload** Code *Logic*
- 9 **Skip Duplicate** Code *Logic*

## How it's built

- **Starts on:** Another system calling it
- **Steps:** 9, with 1 branch
- **Size:** Medium: a working afternoon
- **Connects to:** Postgres
- **Model:** None. This is plumbing, not judgement

## Questions

What does it need to run?

An n8n account, plus your own Postgres account. You connect your own accounts after importing it; none are included.

What starts it?

It starts on another system calling it.

Does it use AI?

No. Every step is fixed logic or a call to a service, so it does the same thing every time.

How long does it take to set up?

Plan an afternoon. 9 steps is enough that you should read each one before running it.

How do I import it?

Copy the workflow, open a new workflow in n8n and paste. The steps appear on the canvas, ready for your own accounts.

**Before you run it**

Nothing here has been tested by us. It is somebody's working automation, read and described from its own steps. Treat the connections it wants as a list of accounts it will touch, and read the 9 steps before you point it at anything that matters.

## Run it in n8n

- **Create your n8n account** Free to start. n8n is where the workflow runs. [Create an n8n account ↗](https://millionrounds.com/n8n)
- **Download the workflow** Free with a Millionrounds account. [Download free](https://millionrounds.com/login?next=%2Fapp%2Fworkflow%2Fprevent-duplicate-webhook-processing-with-postgres)
- **Paste it into n8n** Open a new workflow in n8n and paste. Then connect your own accounts.

Stored with the author's traces removed: canvas notes, instance identifiers, saved credential names and any live document they had left behind.

## Connects to

Each opens the other workflows that use it.

[Postgres](https://millionrounds.com/workflows?service=Postgres#library)

## Workflows like it

Also content, with the same services where possible, closest in size first.

- [**Build a personalized birthday AI companion with OpenAI** 9 steps · calls a model · Postgres](https://millionrounds.com/workflow/build-a-personalized-birthday-ai-companion-with-openai)
- [**Generate post-event reports with OpenAI** 9 steps · calls a model · Email, Postgres](https://millionrounds.com/workflow/generate-post-event-reports-with-openai)
- [**Breaking news aggregator with SendGrid and PostgreSQL** 10 steps · Postgres, SendGrid](https://millionrounds.com/workflow/breaking-news-aggregator-with-sendgrid-and-postgresql)
- [**Check and deactivate broken job apply URLs with Postgres** 8 steps · Google Sheets, Postgres](https://millionrounds.com/workflow/check-and-deactivate-broken-job-apply-urls-with-postgres)
- [**Check job apply URLs and deactivate dead links** 8 steps · Google Sheets, Postgres](https://millionrounds.com/workflow/check-job-apply-urls-and-deactivate-dead-links)
- [**Meetup registration system with PostgreSQL** 8 steps · Postgres](https://millionrounds.com/workflow/meetup-registration-system-with-postgresql)
