Zoho Mail to Webhook

Forward every Zoho Mail email to your endpoint as structured JSON — headers, body, and attachments included. No polling, no MIME parsing, no infrastructure to maintain.

Table of Contents
  1. Why Route Zoho Mail Emails to a Webhook?
  2. How to Forward Zoho Mail to JsonHook
  3. Zoho Mail vs Zoho Mail API (IMAP + OAuth)
  4. JSON Payload Example
  5. Common Zoho Mail to Webhook Use Cases

Why Route Zoho Mail Emails to a Webhook?

Zoho Mail is a business email service integrated tightly with the Zoho productivity and CRM suite, popular among small and medium businesses. While Zoho Mail is a capable email platform, its native tooling for programmatic automation was not built for developers who need structured, reliable data delivery to backend systems.

The native approach — Zoho Mail API (IMAP + OAuth) — introduces significant operational overhead. You need to manage credentials, poll or maintain persistent connections, and write custom parsing logic for every message field you care about. When your team is moving fast, that friction adds up to hours of maintenance per integration.

JsonHook eliminates that overhead by accepting inbound mail on your behalf and immediately firing a structured JSON payload to any HTTPS endpoint you specify. The email is parsed, attachments are base64-encoded, and headers are normalised — so your webhook handler can focus entirely on business logic rather than MIME parsing.

Below are the core benefits of routing your Zoho Mail messages through JsonHook instead of relying on the native alternative:

  • Limitation avoided: Zoho Mail's API (part of Zoho CRM and Zoho Desk APIs) is tightly coupled to Zoho's own platform and does not expose a generic inbound webhook for non-Zoho endpoints.
  • Limitation avoided: Accessing Zoho Mail programmatically via IMAP requires OAuth authentication through Zoho's identity platform, which has a non-trivial setup flow and token expiration management.
  • Limitation avoided: Zoho's email automation features are locked behind paid Zoho One or Zoho CRM tiers, making lightweight webhook integration prohibitively expensive for simple use cases.
  • Zero-polling architecture: JsonHook pushes to your endpoint the moment mail arrives — no long-running background jobs needed.
  • Automatic attachment handling: PDFs, images, and other file types are extracted, base64-encoded, and included in the JSON payload with their original MIME type.
  • Retry with exponential back-off: If your endpoint is temporarily unavailable, JsonHook retries automatically — something the Zoho Mail API (IMAP + OAuth) does not do natively.
  • Webhook signatures for security: Every delivery includes an HMAC-SHA256 signature header so you can verify the payload originated from JsonHook.

Whether you are building a support-ticket ingestion pipeline, a lead-capture workflow, or an automated document processor, JsonHook gives you a consistent, typed interface to Zoho Mail messages without the fragility of raw SMTP or polling-based API integrations.

How to Forward Zoho Mail to JsonHook

Getting Zoho Mail emails delivered to your webhook takes about five minutes. The process has two parts: creating a JsonHook address via the API, and configuring Zoho Mail to forward a copy of each incoming message to that address.

  1. Log in to Zoho Mail and click the Settings gear, then select Mail Accounts.
  2. Choose the email account you want to configure, navigate to Email Forwarding, and enable forwarding.
  3. Enter your JsonHook inbound address as the forwarding destination and click Save.
  4. Zoho may require you to verify the destination address; check your JsonHook dashboard logs for the verification email and complete the confirmation step.

Once forwarding is active, every email that arrives in your Zoho Mail inbox (or matches your filter) will be relayed to your JsonHook address, parsed, and delivered to your endpoint as a JSON payload within seconds.

You can create your JsonHook inbound address with a single curl command. Replace YOUR_API_KEY with the key from your dashboard and set webhookUrl to your endpoint:

curl -X POST https://jsonhook.com/api/addresses \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "Zoho Mail inbound",
    "webhookUrl": "https://your-app.example.com/webhooks/email",
    "secret": "a-random-signing-secret"
  }'

The response includes your unique @in.jsonhook.com address. Copy that address and paste it into the forwarding field in your Zoho Mail settings. That is all the infrastructure you need to stand up.

Start Receiving Zoho Mail Webhooks in 5 Minutes

Free tier: 100 emails/month, 1 address. No credit card required.

Get Free API Key

Zoho Mail vs Zoho Mail API (IMAP + OAuth)

When developers first explore email-to-webhook automation they typically discover Zoho Mail API (IMAP + OAuth) — the official programmatic route provided by Zoho Corporation. The table below shows how it compares to using JsonHook as an intermediary.

Feature Zoho Mail Native (Zoho Mail API (IMAP + OAuth)) JsonHook
Structured JSON payload
Attachment parsing
Retry logic
Webhook signatures
Setup time Hours to days Under 5 minutes

The native approach through Zoho Mail API (IMAP + OAuth) requires you to set up OAuth credentials or API keys, maintain a long-running listener or polling job, write your own MIME parser, and implement your own retry queue. Any one of those steps can become a reliability bottleneck in production.

JsonHook handles all of that infrastructure on your behalf. You get a single HTTPS webhook call with a predictable JSON schema every time a Zoho Mail email arrives — no polling, no credential rotation, no MIME parsing, and no bespoke retry code to maintain.

JSON Payload Example

When a Zoho Mail email is forwarded to your JsonHook address and delivered to your endpoint, the request body looks like the following. All fields are consistently present; optional fields such as htmlBody and attachments are included when the source message contains them.

{
  "id": "msg_01j8xkr4p2vn3q7w",
  "receivedAt": "2026-03-15T14:32:07.412Z",
  "from": {
    "name": "Alice Smith",
    "address": "[email protected]"
  },
  "to": [
    {
      "name": "",
      "address": "[email protected]"
    }
  ],
  "subject": "Your Zoho Mail message subject here",
  "textBody": "Plain-text content of the email body.",
  "htmlBody": "<div>HTML version of the email body.</div>",
  "headers": {
    "message-id": "<[email protected]>",
    "x-mailer": "Zoho Corporation",
    "mime-version": "1.0"
  },
  "attachments": [
    {
      "filename": "document.pdf",
      "contentType": "application/pdf",
      "size": 84234,
      "content": "JVBERi0xLjQK..."
    }
  ],
  "spf": "pass",
  "dkim": "pass"
}

The id field is a unique, stable identifier you can use for idempotent processing. The spf and dkim fields reflect the authentication results JsonHook observed when receiving the message, which you can use to enforce additional trust policies in your handler.

Attachment content is standard base64. Decode it with a single call in any language — Buffer.from(att.content, 'base64') in Node.js, base64.b64decode(att.content) in Python, and so on.

Node.js handler for Zoho Mail messages forwarded through JsonHook:

import express from 'express';
import crypto from 'crypto';
import axios from 'axios';

const app = express();
app.use(express.json());

app.post('/webhooks/zoho', (req, res) => {
  const sig = req.headers['x-jsonhook-signature'] as string;
  const body = JSON.stringify(req.body);
  const expected = crypto
    .createHmac('sha256', process.env.JSONHOOK_SECRET!)
    .update(body).digest('hex');
  if (sig !== expected) return res.status(401).send('Forbidden');

  const { from, subject, textBody } = req.body;
  // Create Zoho CRM lead from email
  axios.post('https://www.zohoapis.com/crm/v3/Leads', {
    data: [{ Last_Name: from.name || from.address, Email: from.address, Lead_Source: 'Email' }]
  }, { headers: { Authorization: `Zoho-oauthtoken ${process.env.ZOHO_TOKEN}` } });

  res.sendStatus(200);
});

app.listen(3000);

Common Zoho Mail to Webhook Use Cases

Zoho Mail is widely used by small and medium businesses in the Zoho ecosystem. Many Zoho users also rely on Zoho CRM, Zoho Books, or Zoho Desk, and bridging email events into those applications — or into third-party tools — through a webhook dramatically reduces the manual work required to keep data synchronised.

  • CRM lead ingestion from email: Sales teams that receive inbound leads via Zoho Mail can forward those messages to a JsonHook webhook that automatically creates or updates contacts in Zoho CRM or an external CRM.
  • Invoice approval by reply: Finance teams using Zoho Books can forward approval-request emails to a webhook endpoint that listens for a "approved" reply and advances the invoice status via the Zoho Books API.
  • Support ticket triage: Zoho Desk users who also receive support emails at a Zoho Mail address can forward all new messages to a webhook for automated classification and priority assignment before they enter the Desk queue.
  • Automated document collection: Businesses that collect signed contracts or completed forms via email can forward those attachments through JsonHook to a document storage webhook that indexes and archives each file automatically.

Frequently Asked Questions

Can I forward Zoho Mail emails to a webhook?
Yes. Zoho Mail supports email forwarding rules that let you relay a copy of any incoming message to an external address. By forwarding to your JsonHook @in.jsonhook.com address, those messages are immediately parsed and delivered as a JSON POST to your webhook endpoint — no polling required.
Does JsonHook parse Zoho Mail attachments?
Yes. Every attachment in a forwarded Zoho Mail message is extracted from the MIME envelope, base64-encoded, and included in the attachments array of the JSON payload. Each entry contains the original filename, MIME content type, file size in bytes, and the base64-encoded content string. You can decode it with a single line in any language.
How fast does Zoho Mail forwarding work?
End-to-end delivery is near real-time. Once Zoho Mail forwards the message to your JsonHook inbound address, JsonHook parses and dispatches the webhook within a few seconds. The main variable is how quickly Zoho Mail itself applies your forwarding rule after a message arrives — this is typically instantaneous for filters and a few seconds for rule-based forwarding.
Can I use JsonHook to bridge Zoho Mail and Zoho CRM?
Yes. Forward inbound Zoho Mail messages to a JsonHook webhook, then in your webhook handler call the Zoho CRM API to create or update contacts, leads, or cases. This is simpler and more reliable than using Zoho's native mail-to-CRM features, and it works without a Zoho One subscription.