Webhooks fail at 30 seconds—and most automation never tells you

29 July 2026

The hum of a laptop fan in a quiet room, the third coffee going cold, and a Zapier run that says “success” but delivered nothing—somewhere between your trigger and your endpoint, thirty seconds elapsed and the platform gave up without logging why.

Most automation platforms silently drop webhooks that take longer than 30 seconds

Zapier, Make, and n8n all enforce hard timeout limits—but only one warns you when it happens.

When you build automation that chains together API calls—fetching subscriber data, enriching it with a third-party service, then writing it back to your CRM—you assume the webhook will wait until the job finishes. It won’t. Zapier cuts the connection at 30 seconds. Make (formerly Integromat) does the same. n8n gives you 120 seconds on paid plans, but 30 on free. If your workflow hasn’t returned a 200 response by then, the platform marks it as timed out, and depending on configuration, it either retries (creating duplicates) or silently moves on.

The fix isn’t to optimise your way under 30 seconds—it’s to architect around the limit. You split long-running tasks into two steps: the webhook receives the payload, writes it to a queue (Airtable, a database row, a Redis list), and returns immediately. A separate polling workflow picks up queued items every minute and processes them without time pressure. This pattern—called “acknowledge and defer”—is how Stripe, Shopify, and every payment provider handles webhooks, because they know network lag and downstream APIs are unpredictable. For solo operators running automations that call OpenAI, scrape URLs, or wait on third-party enrichment APIs, it’s the difference between 98% reliability and wondering why every fifth subscriber never gets tagged.

Read the full story

TACTIC

Zapier filters break silently when field types don’t match

You set a Zapier filter to continue only if “Total” is greater than 100, but the field arrives as text from your form provider—so Zapier compares strings, not numbers, and “95” wins because “9” is lexicographically larger than “1”. The zap proceeds when it shouldn’t, or stops when it shouldn’t, and the error log says nothing. This happens with dates stored as strings, booleans that arrive as “true” instead of true, and empty fields that Zapier interprets as null or as the string “null” depending on the source API. The fix is to add a formatter step before every filter that does arithmetic or date logic, explicitly casting the field to the type you need.

See the breakdown

READER QUESTION

Google Search Console click data arrives days late—here’s what updates fast

You published a post yesterday, it’s ranking on page one this morning, and Search Console still shows zero clicks. That’s normal. Click data lags by two to three days on average, sometimes longer for newer sites. What updates faster: impression data (usually within 24 hours) and the Performance report’s position metric, which reflects ranking changes within hours but lacks click confirmation until the delayed click batch arrives. If you’re testing title rewrites or trying to catch a traffic spike, you need to cross-reference real-time Google Analytics sessions with delayed Search Console clicks to see what’s actually working before the official numbers land.

Read more

FROM THE ARCHIVE

ConvertKit caps custom fields at 100—here’s how to segment without hitting it

If you’ve been adding a custom field for every lead magnet, product purchase, and content preference, you’ll hit ConvertKit’s 100-field ceiling faster than you expect. Once you’re there, you can’t create new fields until you delete old ones—and deleting a field erases the data for every subscriber. The better approach is to use tags for binary state (downloaded X, bought Y) and reserve custom fields for values you’ll actually filter on numerically or lexically: signup date, total spend, last engagement score. If you need to track which of fifty lead magnets someone downloaded, store a comma-separated list in a single “downloaded_magnets” field and filter with “contains” logic, or migrate that tracking to tags and use ConvertKit’s tag-based segments instead.

Try it yourself

Know someone who would like this? Forward today’s email—every operator we reach is one closer to running an online business with a little less friction.