# Zoho Functions Beyond Deluge: What Node.js, Java, and Python (via Catalyst) Actually Add
If you've built anything inside Zoho CRM or Zoho Creator, you've written Deluge — Zoho's own scripting language, the thing every workflow rule, button script, and scheduled job has run on since the beginning. For a long time, "writing a Zoho function" and "writing Deluge" were the same sentence.
That's no longer true. Zoho CRM and Zoho Creator's serverless function editor now lets you write the same event-driven functions in Node.js and Java, alongside Deluge. And if you go one level up, to Zoho Catalyst — Zoho's separate pro-code serverless platform — you get Python as a third option, plus a full backend (database, file store, authentication, cron) to build real microservices on, not just short scripts.
Here's the part that trips people up: those two things are often talked about as one update ("Zoho added Node, Python, and Java to Functions"), but they're actually two different expansions, in two different products, aimed at two different jobs. Getting that distinction right is the difference between picking the right tool and fighting the wrong one.
The Deluge-only era, and why it worked for so long
Deluge earned its place. It's synchronous, it's built into every Zoho app's editor with zero setup, and it talks to Zoho's own object model natively — `zoho.crm.create()`, `zoho.crm.searchRecords()`, and so on read like plain English. For the vast majority of "when X happens, do Y" automation — score a lead, send a notification, roll up a related list, gate a workflow on a condition — Deluge is still the fastest way to get from idea to working automation, and we still reach for it first for that class of problem.
Where it started to strain was anything that looked less like "automation" and more like "software": recursive parsing of deeply nested, inconsistently shaped JSON; CPU-heavy loops over tens of thousands of records; talking to an external service that only ships an SDK in another language; or logic complex enough that you actually want unit tests and a real dependency manager. Deluge can technically do a lot of this. It's just not what it was built for, and it shows.
What actually changed: Java and Node.js inside CRM and Creator
Zoho's own developer docs for CRM's serverless architecture now document three languages side by side for the same function types (Standalone, Button, Automation, Related List, Schedule): Deluge, Java, and Node.js. Zoho Creator's cloud functions follow the same pattern.
Node.js functions are the more dramatic shift. Instead of Deluge's `return` statement, a Node function exports an async module and writes its response through a `basicIO.write()` call, with `context.log.INFO()` standing in for Deluge's `info` debug statement:
```javascript module.exports = async function (context, basicIO) { const record = basicIO.getParameter("entity_object"); // async work, npm modules, real try/catch - the whole Node toolbox context.log.INFO("processing record " + record.id); basicIO.write({ status: "ok" }); context.close(); }; ```
That gets you async/await, npm modules bundled as node_modules in the deployed zip (up to a 10MB library cap), and non-blocking I/O — genuinely useful when a function is fanning out to two or three external APIs and shouldn't block on each one in sequence.
Java functions go the other direction — more ceremony, more control. The main class implements a `ZCFunction` interface and executes from a `runner(Context context, BasicIO basicIO)` method, with the same entity_object / organization_object / user_object parameter set Deluge and Node.js both get. You can write it inline in the CRM editor, or build a proper JAR in Eclipse (or your IDE of choice) and upload it. For anything that's genuinely compute-heavy — batch reconciliation over large record sets, numeric work where predictable typed collections beat dynamic maps — Java's the one that doesn't degrade as the data grows.
Partner write-ups from the Zoho ecosystem echo the same framing: guides on Creator's cloud functions walk through Node.js specifically for use cases "where Node.js outperforms Deluge scripting" — external API integration, async task handling, large dataset processing — while framing Cloud Functions overall as unlocking "functionalities previously unattainable through Deluge scripting," without giving up the "zero server management" promise that makes Zoho's low-code story work in the first place.
Where Python actually fits — and where it doesn't
Here's the thing worth being precise about, because a lot of secondhand summaries get it wrong: Python is not currently a documented language option for Zoho CRM or Creator's in-app serverless functions. Deluge, Java, and Node.js all have live, documented scripting pages under CRM's serverless-architecture section; there's no equivalent Python scripting page alongside them.
Python's real home is Zoho Catalyst, Zoho's separate full-stack serverless platform, which supports Java, Node.js, *and* Python for building actual backend services — not just event-triggered scripts, but functions backed by a real database, file storage, cron, and built-in auth. Zoho has described the intended flow as: when you hit a wall in Creator, Flow, or Orchestly, you switch to Catalyst, write your code, save it as a microservice, and plug that right back in — Catalyst functions become reusable services the rest of the Zoho stack calls into, not a fourth language bolted onto the same CRM function editor.
So the accurate version of "Zoho functions now support Node, Python, and Java" is really: CRM and Creator's Functions grew from Deluge-only to Deluge + Java + Node.js, and Python enters the picture one layer up, through Catalyst, when you need a real service rather than an event handler. That's not a smaller story — it's arguably a more useful one, because it tells you when to reach for each option instead of just that they exist.
A practical way to choose
We settled on a rule of thumb that's held up across a number of Zoho builds:
- Deluge — the default. Anything that's genuinely "when X happens, do Y" against Zoho's own data: workflow gates, field rollups, simple notifications, blueprint transitions. Zero setup, native to the object model, fastest to ship.
- Node.js function — when the logic needs to survive messy real-world input (inconsistent webhook payloads, recursive JSON, string or date wrangling) or make a few async calls out to other APIs without blocking.
- Java function — when you're processing volume: scheduled jobs walking tens of thousands of records, anything where a typed, predictable runtime matters more than quick iteration.
- Python on Catalyst — when the job isn't really a "function" anymore, it's a service: OCR, document or text processing, anything that wants Python's data and ML libraries, or logic several other systems need to call, not just one CRM event.
A small story from the field
Here's a scenario that shows up often enough to be worth telling as a composite, not a one-off: a scheduled Deluge function that pulls a batch of records every night — say, matching inbound leads against an external list — starts out fine on a few hundred rows. As the org grows, that batch grows too, and one night it just doesn't finish. Deluge functions run against a fixed execution-time ceiling, and a synchronous loop that was comfortably inside that limit at three hundred rows isn't anywhere close at nine thousand.
The fix usually isn't "write more Deluge, but cleverer." It's recognizing that a nightly batch job is a different kind of problem than the field-update trigger sitting three tabs over in the same app — one wants Zoho's native shorthand, the other wants real control over batching, concurrency, and memory. Split the schedule into a Node.js function that pages through records asynchronously in controlled chunks (or a Java function if the volume and the need for predictable throughput justify it), and the "it just stopped finishing" problem doesn't come back as the org keeps growing, because now the tool matches the job instead of being stretched to cover it.
That's really the whole shift in one sentence: Zoho didn't replace Deluge, it stopped asking Deluge to be everything.
How we approach this for clients
We don't start any Zoho engagement by picking a language — we start by mapping what each piece of automation actually needs to do, then match it: Deluge for the native, event-driven logic that's the bulk of most builds; Node.js where a function needs to survive messy external data or fan out to a few APIs; Java where a scheduled job needs to hold up at real volume; and Catalyst with Python when the requirement has actually grown past "function" into "service" — document processing, OCR, anything with a genuine data-science shape to it. See our case study on rebuilding a Zoho automation pipeline across all four for a concrete example of what that split looks like in a real system.
FAQ
Does Zoho CRM support Python functions? Not directly, as of this writing — Zoho CRM and Zoho Creator's built-in serverless functions support Deluge, Java, and Node.js. Python is available through Zoho Catalyst, Zoho's separate serverless backend platform, which CRM and Creator functions can call out to.
Is Deluge being phased out? No. Deluge remains the default, zero-setup language for native Zoho automation and is still the fastest path for the majority of workflow-style logic. Java and Node.js are additions for the cases Deluge handles less comfortably, not a replacement.
What's the practical difference between a CRM function and a Catalyst function? A CRM or Creator function is a short, event-triggered script tied to a specific app's data model. A Catalyst function is part of a standalone backend — with its own database, storage, and auth — that any part of the Zoho stack, or an outside system, can call as a service.
Do I need to rewrite my Deluge functions to take advantage of this? No — this is additive. Existing Deluge functions keep working exactly as they do today. The new languages are there for new functions where Deluge is genuinely the wrong tool, not a migration mandate.
Want help implementing this?
Tell us about your workflow and we'll put together a tailored plan.
Book a Free Auditarrow_forward