If you’re exposing n8n webhooks to the public (like WordPress forms or public APIs), n8n’s built-in throttling isn’t always enough because it doesn’t persist state across workflow restarts.
The Solution: Use the Redis Increment (INCR) pattern with Upstash.
-
Node: Redis Node (Operation: Increment).
-
Key:
rate_limit:{{$json.body.email}} -
TTL:
60(seconds). -
The Logic: If the returned value is
> 1, use a Respond to Webhook node with a429status code to block the spammer before they hit your Google Sheets or Airtable quotas.
Why? It’s atomic, serverless (Upstash has a huge free tier), and works even if your n8n instance reboots.
Here’s the full tutorial guide: Building a Rate Limiter With Upstash Redis and n8n