SMSTunnel for Zoho CRM

Lead texts from your own phone and number

Built into Zoho CRM · no extension
Workflow rule › Webhook
Zoho webhooks help

Answer new leads while they're still waiting

When a lead comes in, Zoho CRM hands a text to your SMSTunnel account and your own Android phone sends it from your own number: to you, with the lead's details, or to the person who just asked, so they know you got their request and can reply to a number they'll see again.

1. Get your key

  1. 1. Install the SMSTunnel app from Google Play on your Android phone and sign in.
  2. 2. In your dashboard, open Apps → Add an app, pick Script or server, name it (for example "Zoho CRM") and click Create the key.
  3. 3. Copy the key right away: it's shown only once. You can stop or delete the app there anytime, and Zoho CRM can't send texts anymore.

Get the steps with your key in them

It opens Add an app with Script or server picked. Once the key is made, the dashboard shows every step and command with the key already filled in, ready to copy.

2. Create the webhook

Open Setup → Automation → Actions → Webhooks and click Configure Webhook:

Name
SMS to me (or "SMS to the lead")
Method
POST
URL to Notify
https://smstunnel.io/api/v1/sms/send
Authorization Type
General
Module
Leads
Header › Custom Parameters
X-API-Key = your key
Header › Module Parameters
X-Zoho-Record-Id = Lead Id (Zoho saves headers only with one of these)
Body
Type Raw, Format JSON, one of the bodies below
A text to you: your number in to
{"to": "+14155550123", "message": "New lead: ${Leads.First Name} ${Leads.Last Name}, ${Leads.Mobile}"}
A confirmation to the person who asked
{"to": "${Leads.Mobile}", "defaultCountryCode": "1", "message": "Hi ${Leads.First Name}, thanks for getting in touch. We will call you today."}
  • Type # in the body to pick merge fields. Zoho sends numbers as they're stored: defaultCountryCode completes the ones saved without + (use your country's code).
  • Click Save.

3. Run it from a workflow rule

  1. 1. Setup → Automation → Workflow Rules → Create Rule, module Leads, then Next.
  2. 2. Run it when a record is Created, with a condition such as Mobile is not empty.
  3. 3. Instant Actions → Webhook, pick your webhook, Associate, and Save.
  4. 4. Test it: create a lead with your own number.

Worth knowing

  • Only text people who asked. A confirmation to someone who just filled in your form is expected; texts to a list of leads aren't, and break your carrier's terms.
  • Quotes in fields. Zoho doesn't say whether it escapes merge fields for JSON: a double quote in a name could break the body, and SMSTunnel would answer 400.
  • Retries. Zoho waits 10 seconds for an answer and tries once more after 15 minutes. Webhooks are part of Zoho CRM's paid editions.
  • Phone offline? The text waits and goes out as soon as the phone is back.

If it doesn't work

  • Zoho won't save the headers: add one Module Parameter to the Header section (see above).
  • 401 "Invalid or expired API key": the key is wrong or was deleted. "API key is required. Use X-API-Key header.": the key isn't in an X-API-Key header. SMSTunnel reads the key only from that header: Bearer or Basic authentication won't work.
  • 403 with PERMISSION_REQUIRED: the key may not send texts. Make a new one under Apps → Add an app.
  • 400 "property … should not exist": the body has a field SMSTunnel doesn't know. Send only to and message (and, if you need them, deviceId and defaultCountryCode). "message must be shorter than or equal to 1600 characters": shorten the text. "Phone number must contain…": put the number in international format, like +14155550123.
  • 400 with "to must be a string" and "message must be a string": the body didn't arrive as JSON. Add the header Content-Type: application/json.
  • 404 "Cannot GET /api/v1/sms/send": the tool sent a GET. Choose POST.
  • 429: too many texts at once. SMSTunnel takes 30 send requests a minute. Wait a minute and try again.
  • No text, but no error? If your phone is offline, the text waits and goes out as soon as the phone is back online. Open the SMSTunnel app on the phone to check it's linked.

Build it with an AI assistant

Copy this prompt into Claude, ChatGPT, Cursor or Copilot and replace the part in [brackets]. Don't paste your API key into the chat: the prompt doesn't need it.

Help me send Zoho CRM texts from my own phone with SMSTunnel: a text to me when a lead comes in, and a confirmation to the person who just asked.

About SMSTunnel (https://smstunnel.io): my own apps and tools hand text messages (SMS) to my SMSTunnel account, and my own Android phone sends them from my own number, on my own SIM and plan. The phone runs the SMSTunnel app from Google Play (https://play.google.com/store/apps/details?id=io.smstunnel.app), signed in to my account.

What I want: [describe what should send a text, to whom, and when]

How it works:
- No extension: Zoho CRM webhooks (paid editions). Setup → Automation → Actions → Webhooks → Configure Webhook.
- Method: POST. URL to Notify: https://smstunnel.io/api/v1/sms/send. Authorization Type: General. Module: Leads.
- Header: Custom Parameters X-API-Key = <my key>. Zoho only saves headers when the Header section also has at least one Module Parameter, so add one, e.g. X-Zoho-Record-Id = Lead Id.
- Body: Type Raw, Format JSON. To me: {"to": "+14155550123", "message": "New lead: ${Leads.First Name} ${Leads.Last Name}, ${Leads.Mobile}"}. To the lead: {"to": "${Leads.Mobile}", "defaultCountryCode": "1", "message": "Hi ${Leads.First Name}, thanks for getting in touch. We will call you today."}. Merge fields are typed with # and look like ${Leads.Mobile}.
- Zoho sends numbers as stored; "defaultCountryCode" completes numbers stored without + or 00. Zoho doesn't document whether merge values are escaped for JSON: a double quote in a field could break the body.
- Attach it: Setup → Automation → Workflow Rules → Create Rule → Module Leads → when a record is Created → condition (e.g. Mobile is not empty) → Instant Actions → Webhook → Associate → Save.
- Zoho waits 10 seconds and retries once after 15 minutes.
- One recipient per request: SMSTunnel sends one text to one number. For several people, one request (or one notification) per number.
- Answers: 200 {"success": true, "messageId": "…"}; 401 wrong or deleted key; 403 the key lacks a permission ("code": "PERMISSION_REQUIRED"); 400 a missing, unknown or too long field; 429 too many requests (30 sends a minute, with Retry-After): wait and retry; without Retry-After, the plan's limit for the day or month is reached. If my phone is offline the text waits and goes out when it is back, within 3 days.
- The API key comes from my SMSTunnel dashboard (https://dashboard.smstunnel.io): Apps → Add an app → Create the key. It is shown only once and can send texts and check whether they went out.

Rules for your answer:
- Do not ask for my SMSTunnel password or API key and do not put a real key in your answer; I will not paste it in this chat.
- Phone numbers must be in international format (+ and the country code).
- Help me test it with my own number first.
- Only send texts people expect from me. No unsolicited texts.
- Only text leads who asked to be contacted, about what they asked for. No promotional texts.

Responsible use

Built for alerts to yourself and your team, and texts people expect from you. One text goes to one number. Sending unsolicited messages from a consumer SIM generally breaches mobile carrier terms of service.

Zoho and Zoho CRM are trademarks of Zoho Corporation. SMSTunnel is a third-party integration and is not affiliated with, endorsed by, or sponsored by Zoho Corporation.

No phone paired yet?

Install the Android app and sign in with your account, and you're ready in about a minute.

Get it on Google Play