← Long Nguyen
Automation Architecture · SGP / SI Media · 2025–Present

Decoupling a fragile CRM automation stack

One VA, pinged daily, versus three flows that just keep running.

n8nZapierActiveCampaignGHL

The problem

When I started, Spencer already had a solid machine running for his high-ticket clients — a VA monitored it, checked the data was good, and helped build new automations. He had to message that VA almost every day because something would break. The reason: every flow was one long chain from A to Z, 40+ nodes deep, with conditional logic scattered everywhere.

BEFORE 40+ nodes, one long chain, conditional logic everywhere Node 1 of 42 — no single ownerNode 2 of 42 — no single ownerNode 3 of 42 — no single ownerNode 4 of 42 — no single ownerNode 5 of 42 — no single ownerNode 6 of 42 — no single ownerNode 7 of 42 — no single ownerNode 8 of 42 — no single ownerNode 9 of 42 — no single ownerNode 10 of 42 — no single ownerNode 11 of 42 — no single ownerNode 12 of 42 — no single ownerNode 13 of 42 — no single ownerNode 14 of 42 — no single ownerNode 15 of 42 — no single ownerNode 16 of 42 — no single ownerNode 17 of 42 — no single ownerNode 18 of 42 — no single ownerNode 19 of 42 — no single ownerNode 20 of 42 — no single ownerNode 21 of 42 — no single ownerNode 22 of 42 — no single ownerNode 23 of 42 — no single ownerNode 24 of 42 — no single ownerNode 25 of 42 — no single ownerNode 26 of 42 — no single ownerNode 27 of 42 — no single ownerNode 28 of 42 — no single ownerNode 29 of 42 — no single ownerNode 30 of 42 — no single ownerNode 31 of 42 — no single ownerNode 32 of 42 — no single ownerNode 33 of 42 — no single ownerNode 34 of 42 — no single ownerNode 35 of 42 — no single ownerNode 36 of 42 — no single ownerNode 37 of 42 — no single ownerNode 38 of 42 — no single ownerNode 39 of 42 — no single ownerNode 40 of 42 — no single ownerNode 41 of 42 — no single ownerNode 42 of 42 — no single owner

Adding a new ad channel, a new ad, or a new form meant tracing through that whole chain and took a full day or more to implement and test safely.

What I did

I proposed a proper, scalable systems design instead of another patch on the chain: three decoupled workflows. Flow 1 receives input and transforms it into a standard format ready for the CRM. Flow 2 receives from Flow 1 and writes it into the CRM. Flow 3 receives from Flow 2 and notifies Slack.

AFTER3 decoupled flowsFLOW 1Intake & normalizeIN: New form or ad conversionINNew form or ad conversionSTEP: Standardize fieldsSTEPStandardize fieldsOUT: Standard payloadOUTStandard payloadFLOW 2Write to CRMIN: Standard payloadINStandard payloadSTEP: Map fieldsSTEPMap fieldsOUT: ActiveCampaign / GHLOUTActiveCampaign / GHLFLOW 3Notify SlackIN: CRM write confirmedINCRM write confirmedSTEP: Format messageSTEPFormat messageOUT: Slack channelOUTSlack channel

That separation buys freedom — a new form or ad only needs a new Flow 1, a new channel or CRM field only means updating Flow 2, and a new Slack channel only means updating Flow 3.

What happened

Spencer doesn't need to message much anymore — the system mostly runs itself, and he's free to focus on growth instead of firefighting. For me, the role changed too: I went from a VA checking in on a system to the person who designed it.

A short screen-recorded walkthrough of the rebuilt stack.
Days → hours to ship a new flow; grew from a support role into a technical partner scaling automation for 10+ clients
← Back to all projects