Using automation to manage leads and follow-ups when the tools get in the way

Using automation to manage leads and follow-ups when the tools get in the way

I’ve lost count of how many times my lead follow-up automations have just… stopped working. One day everything is fine — a Calendly booking triggers a Webflow CMS update, kicks off a MailerLite sequence, updates a Notion table for my own tracking, and sends a Slack message. Then silently, one of those hops breaks. Typically Zapier is still functioning, but the app changed something: HubSpot fields disappeared, MailerLite modified a required tag parameter without telling anyone, or a webhook setup just failed with no error. Classic.

1. Zap-based lead routing fails in random edge cases

I’ve had two Zaps that literally do the exact same thing: route all new Typeform submissions tagged “sales” into a lead Airtable base, then send a personalized email via Gmail. And yet one of them failed silently any time the field “Company name” was left blank. The weird thing? That field wasn’t even being used in the Zap logic. I dug through the logs and the only clue was a Typeform payload that had an unexpected NULL value. Digging into forums (and re-re-re-reading the Typeform output spec), it turns out their API chooses to omit blank fields rather than include them with an empty string. Zapier apparently chokes on that sometimes.

I fixed it by adding a conditional formatter step that injects “—” for every optional field before any filter runs. It’s hacky. But it’s either that or risk leads mysteriously disappearing without any notification. There is zero reason this should still be happening with how mature these APIs are. But alas, the humans behind them are still human.

2. Lead stages in Airtable fall out of sync without triggering updates

A screenshot of an Airtable dashboard shows lead stages that are out of sync, with highlighted discrepancies. A focused individual is reviewing the screen, creating an atmosphere of challenge in managing lead automation.

For a while I was doing lead stage tracking in Airtable with an automation that moved people between “Interested,” “Needs follow-up,” and “Closed” based on a checkbox being toggled inside my main review base. The idea is that once I manually updated the “Follow-Up Needed” flag, a Zap would fire to move data over to the correct view and adjust some properties.

Here’s where it melted down: Airtable’s trigger for “record updated” does not fire consistently if only a checkbox (boolean) is updated via another automation or formula update. I had a formula field controlling display visibility tied to lookup fields in another table — and that layer of indirection canceled out the update trigger.  It made no sense at first — my tests all passed fine when I did manual changes, but live usage messed it up silently.

Eventually I ditched the whole back-and-forth sync and created a single source of truth base for leads only. Then used Make (Integromat) to pull views from the main base entirely by scheduled fetches, reading the filtered view instead of listening for events. Airtable’s native automations were hungry for re-runs and silently skipped builds if anything was slightly off.

Don’t let Airtable’s “Updated record” trigger fool you. If the update is the result of a formula cascade and not a direct user action — it’s 50/50 whether automation sees it.

3. Follow-up emails fire twice when webhooks are chained

At some point I had a beautiful follow-up chain. A person downloads a lead magnet, they hit a webhook that logs their email to MailerLite and sends them a thank you message. If they click the link inside within 2 days, another webhook fires that registers a task in ClickUp. That task includes a linked MailerLite ID so I can track engagement.

Everything worked for months — then I noticed some leads were getting the “Hey, didn’t hear back” follow-up even when they’d already booked a call.

It turns out MailerLite made a change to how it fires webhooks on link clicks. Previously, it would only fire once per contact per workflow. Suddenly, it was firing once per *open*, not per *unique contact*. No announcement, no error. My webhook was receiving duplicate JSON payloads from the same user 12-18 hours apart.

I had to re-engineer the workflow so that the webhook triggers a Google Apps Script instead, logging a hash of the contact’s behavior. Now it checks recent entries and deduplicates if another webhook from that user already came in the past 48 hours. Again — WHY does this have to happen. But it does.

4. Tasks in ClickUp get stuck in wrong status due to template bugs

You’d think ClickUp would be the most reliable piece in the system. And normally it is. But when you start assigning tasks using pre-made templates triggered via Zapier, things get weird fast.

My Zap creates a new task in a pipeline folder and applies a custom template depending on the lead’s type (e.g., “High-Value,” “Fast-Track client,” etc). That template includes subtasks, checklists, assignment rules, and due dates.

Here’s the bug: if the template includes a webhook dependency itself (like triggering something in Slack when completed), and you trigger that task via a Zap — the embedded webhook silently fails. Worse, the Zap logs show a successful task creation, *but the webhook inside the template is skipped entirely.*

So I ended up with high-priority follow-ups marked as “done” with no alerts being raised. I only caught it because my Monday morning looked too quiet . I rebuilt the Zap to manually create each checklist item and assign users instead of using templates. Took longer, but at least it’s consistent.

Oh, also — if you try to assign due dates by formula relative to task creation inside ClickUp templates, be aware they sometimes lag behind creation by a few minutes. So a “due in 24 hours” rule might calculate off the wrong time if the Zap executes too fast. Lovely.

5. You cannot trust filters based on empty fields

This one burned me in a Notion-to-Zapier lead parsing flow. When parsing inbound webform supplement details (usually free-text question answers), I wanted to trigger a follow-up email only if people left the “budget” field empty — meaning they hadn’t provided concrete pricing info.

Seems simple: just make a filter step in Zapier where “budget” equals empty. But here’s the trap: Notion doesn’t *always* pass empty fields as literal empty strings. Depending on how the block was created in the original form, sometimes the field doesn’t arrive at all in the API payload

That means sometimes your filter fails — not because the field isn’t empty, but because it isn’t *there*. So it doesn’t match the condition.

To fix it, I had to add a Code by Zapier step that assigns default values to all fields before the filter step. In that code block, I iterate through the expected keys and manually add any missing ones with “” as the value.

We shouldn’t have to patch this manually but here we are. One missing property at runtime and your automation breaks without warning.

6. My favorite no-code automations still need weird workarounds

Look, I love automation. I love that as a solo operator I can coordinate email, landing pages, text messages, task managers, docs workspaces, and client CRM flows — all just by wiring stuff with Zaps and webhooks. But there’s still this persistent fragility in how things break silently.

My current stack, when it’s cooperating:

– Google Sheets as a transient cache layer for fuzzy matching data
– Calendly → Webhook → Notion + MailerLite split for contact capture
– AI summarization layer that rewrites Typeform submissions for follow-ups
– ClickUp task generator with lead-routing logic based on field words
– Slack summary batch sent every Friday with top “Needs Action” leads

But I’ve had to disable at least two automations visibly every week for the past month. Sometimes it’s Trigger A not firing. Other times it’s Format B failing because Zapier suddenly rejects string formatting that used to work.

There are fantastic setups out there if you like duct tape mixed with AI proxies and occasional Webhooks duplicating data like a drunk intern. Just know weird bugs are not rare — they’re kind of a feature ¯\_(ツ)_/¯