There's a saying in Chennai. If you've learned to ride an autorickshaw through T. Nagar peak hour traffic — dodging Saravana Stores patrons, Food carts in tricycles, that one uncle who parks his Activa exactly in the middle of the road — then you can drive anywhere in the world
Zoho’s API is exactly like T. Nagar traffic.
If you successfully integrate with Zoho Campaigns API, I promise you — any other API in the world will feel like a quiet Sunday morning on Rajiv Gandhi Salai.
Let me tell you what happened yesterday.
Here’s what I ran into:
OAuth instead of simple API keys. Fine, understandable. But then — silent domain mismatch. My account was on .com, my calls were going to .in. No clear error. Just invalid client. Took a while to spot.
The truncated list key. Zoho helpfully shows you your mailing list key in their UI. What they don’t mention is that the UI shows you only part of it. The actual key is longer. Every API call I made with the “visible” key just quietly failed. Had to call the getmailinglists API to get the real, full key.
The mystery of topicId. If your account has topic management enabled — and mine did — topicId is a mandatory field when creating a campaign. Is this front and centre in the docs? Not really. You just get “mandatory fields missing” and start guessing which field. Fun game.
html_content that doesn’t work. You’d naturally pass your email HTML directly. The parameter exists. Zoho accepts it. And then quietly ignores it. Turns out you need to host the HTML on a public URL and pass that as content_url. Zoho fetches it remotely. Logical? Sure. Mentioned clearly? Debatable.
Case sensitive parameters with no warning. The docs show scheduleDate, scheduleHour, scheduleMinute. What actually works is scheduledate, schedulehour, scheduleminute. All lowercase. Get it wrong — you get an error that tells you nothing about why.
Each of these was a small puzzle. None of them were unsolvable. But together? Full day gone.
The end result.
A clean little tool sitting on our server. Open it in the morning, everything is pre-filled, paste the Google Drive link, click Schedule. Campaign created in Zoho. Email goes to 300 subscribers at 3:30 PM



I’m not a professional software developer. But I know enough to code what I need — learned it the hard way, out of necessity, over the years. What actually got me through yesterday wasn’t fancy coding skills. It was just thinking clearly about what each error was actually saying, and working through it one step at a time.
I’m planning to write more about these small builds — the Claude-assisted ones that worked cleanly, the ones that half-worked, and honestly, the ones that went completely sideways and taught me more than the successes did. Should be an entertaining series. 😄
If you’re stuck anywhere with Zoho Campaigns API — OAuth, scheduling, list management, any of it — feel free to reach out. I’ve made enough mistakes for both of us, and I’m happy to help you skip a few of them.
#ZohoCampaigns #Automation #NewProjectsTracker #BuildingInPublic #Chennai