I spent the first half of my career writing custom PHP code for every CRM integration. Each client wanted their WordPress site talking to Keap or HubSpot, and I'd spin up a new plugin, write API wrappers, handle webhooks, build retry logic. It worked. But I was rebuilding the same patterns over and over.
Around 2019, I started tracking my time more carefully. A typical custom integration from WordPress to Keap would take me 18 to 24 hours. That included authentication, mapping form fields, error handling, and testing different scenarios. Multiply that across five or six projects a year and I was spending a quarter of my time on boilerplate.
The middleware shift
I tried Zapier first. Everyone does. It's fine for simple stuff but you hit the wall fast. The free tier gives you 100 tasks per month, which sounds like a lot until you realize that's roughly three leads per day if you're doing multi step workflows. And when something breaks, debugging a Zap is like trying to fix a car with the hood welded shut.
Then I tested Make (formerly Integromat). Better pricing at $9 per month for 10,000 operations. The visual builder actually shows you the data structure between steps, which saved me hours of guesswork. I built a WordPress to GoHighLevel sync that handled contact creation, tag assignment, and opportunity tracking. The whole thing took four hours instead of twenty.
For projects where the client already has a developer budget, I use n8n. It's self hosted, which means no monthly operation limits. I deployed an instance on a $12 DigitalOcean droplet and it's been running for two years handling multiple client integrations. The catch is you need to maintain it yourself. Updates, security patches, backups. For my agency clients who want to own their infrastructure, it's worth it. For small businesses, it's overkill.
What I still code by hand
Not everything belongs in middleware. If the integration is core to the product and runs hundreds of times per day, I still write custom code. I built a WordPress plugin last year that syncs membership data to HubSpot in real time. It processes about 800 contact updates daily. Running that through a third party service would cost more and add latency.
I also code custom solutions when the data transformation is complex. I had a client who needed to parse PDF invoices, extract line items, and create deals in Ontraport with custom fields based on product categories. The logic was too branching for a visual builder. I wrote a Python script that runs on a cron job. It's been solid for 18 months.
The part that didn't work
I tried using AI code generation tools to speed up custom integration work. I fed GPT-4 the API documentation for Keap and asked it to generate a webhook handler. The code looked good but had a subtle bug in how it handled rate limiting. The API has a limit of 125 requests per second, and the generated code didn't implement exponential backoff properly. I caught it in testing, but it reminded me that you can't just copy paste AI output for production integrations.
Practical takeaway
For most WordPress to CRM integrations, start with Make or n8n. Reserve custom code for high volume operations or complex business logic. Track your time honestly for three projects and you'll see where the trade off makes sense. I still write code every day, just not for problems that someone else already solved better than I would have.
