Services/Integrations
Your systems should talk to each other. Properly.
APIs, webhooks and two-way sync between the tools you already pay for, with the logging, retries and error handling that a chain of Zaps doesn’t have.

Sound familiar?
Orders here, invoices there, stock somewhere else
Three systems that each think they’re the source of truth, and a person reconciling them at the end of the week.
A Zapier chain that breaks at 2am
And nobody finds out until a customer asks where their order is.
Weekly CSV exports and imports by hand
It worked at 50 records a week. It doesn’t at 500.
A vendor API nobody wants to touch
Thin docs, odd rate limits, a sandbox that behaves differently to production. I’ve met a few.
What I build
Integrations that run as code you own, on your hosting or mine, with a log you can read when something looks off.
- WooCommerce and Square syncProducts, inventory and orders kept in step in both directions. I wrote a plugin that does this for stores worldwide, so the edge cases are familiar.
- Accounting: Xero and MYOBInvoices, payments and contacts created from the systems where the work actually happens, reconciled automatically.
- CRM sync: HubSpot, Salesforce and customContacts, deals and activity flowing in from forms, email, your site and your billing system, without duplicates.
- Payments: Stripe and SquareSubscriptions, invoicing, webhooks and the reconciliation that goes with them. I run my own products on Stripe billing.
- Replacing no-code chains with codeWhen Zapier or Make has become load-bearing, I move it into a small service with proper error handling and a monthly bill that doesn’t scale with tasks.
- Legacy bridges and migrationsGetting data out of the old system and into the new one, or keeping both alive while you move. Including the systems that only export CSVs.
How I approach it
1
Safe to rerun, always logged
Every sync can be run twice without creating duplicates, and every record carries a trail of where it came from and when.
2
Built for the failure case
APIs go down, webhooks go missing, rate limits bite. Queues, retries and alerts mean you hear about it before your customer does.
3
Done this at scale
SquareSync runs for WooCommerce stores around the world. I know Square’s API quirks, WordPress cron, and what happens when a webhook arrives twice.
Related work
All case studiesQuestions I get asked
Can you work with a system you haven’t used before?
If it has an API, a database, or even a CSV export, yes. The first step is a short look at the docs so I can tell you what’s possible before you commit to anything.
Why not just use Zapier?
For a simple one-way push, do. For anything involving money, stock, two directions or more than a few hundred records a month, you want code you own, with logs you can read.
Where does it run, and what does it cost monthly?
On your hosting or mine. If it’s mine, a care plan covers the server, monitoring and keeping it working as the APIs on either side change.
Which two systems should be talking already?
Name them and I’ll tell you how I’d connect them, what it would cost, and what could go wrong.