SMSTunnel for Jira

Urgent work items by text, from your own phone and number

Built into Jira automation · no app
Send web request action
Jira automation docs

The on-call person hears about it first

When a Highest-priority incident comes in or an SLA is about to breach, a Jira automation rule hands a text to your SMSTunnel account and your own Android phone sends it from your own number, to the person on call or to a customer who asked to be kept up to date.

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 "Jira") 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 Jira 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 rule

  1. 1. In the space, open Space settings → Automation and create a rule.
  2. 2. Pick the trigger, for example Work item created, and add a condition such as Priority equals Highest.
  3. 3. Add the action Send web request and fill it in:
URL
https://smstunnel.io/api/v1/sms/send
HTTP method
POST
Web request body
Custom data, with the body below
Headers
X-API-Key = your key, with Hidden ticked
Headers
Content-Type = application/json
Custom data: the number of the person on call
{"to": "+14155550123", "message": "{{issue.key}} {{issue.priority.name}}: {{issue.summary.abbreviate(300).jsonEncode}}"}
  • {{…jsonEncode}} escapes quotes and line breaks in the summary, so they can't break the JSON; abbreviate(300) keeps the text short.
  • Once saved, a Hidden header shows as *****. Test it with Manual trigger from work item on a test item before you turn the rule on.

What the texts look like

OPS-142 Highest: Payments page returns 500 for all users

Text the person who asked

If your requests carry a phone number (for example in a "Phone" custom field), a rule on Work item transitioned can text its status to that number. Add a condition that the field isn't empty, and use the field's own ID:

{"to": "{{issue.customfield_10050.trim().jsonEncode}}", "message": "Your request {{issue.key}} is now {{issue.status.name}}. Reply here if you need us."}

Worth knowing

  • Several people? One Send web request per number. SMSTunnel sends one text to one number per request.
  • Automation usage counts. Each rule run uses part of your plan's monthly automation allowance.
  • Jira Data Center calls the field Webhook URL, keeps hidden values as secret keys, and waits 3 seconds for an answer by default.
  • Phone offline? The text waits and goes out as soon as the phone is back.

If it doesn't work

  • The rule's audit log shows each web request and SMSTunnel's answer.
  • 400 "property … should not exist": the body is one of the "work item data" formats. Choose Custom data.
  • 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 texts from Jira (Jira Service Management or Jira Cloud automation) from my own phone, with SMSTunnel: urgent work items to the person on call, and updates people asked for.

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 app: an automation rule with the "Send web request" action. Space settings → Automation → Create rule (flow), or global automation for several spaces.
- Trigger, e.g. "Work item created" with a condition Priority = Highest (or a JSM SLA trigger). Action "Send web request": URL https://smstunnel.io/api/v1/sms/send, method POST, body: custom data, headers X-API-Key = <my key> (Hidden ticked) and Content-Type = application/json.
- Custom data: {"to": "+14155550123", "message": "{{issue.key}} {{issue.priority.name}}: {{issue.summary.abbreviate(300).jsonEncode}}"}. {{…jsonEncode}} escapes quotes and line breaks for JSON (it adds no quotes of its own).
- To text a number stored on the work item (for example a "Phone" custom field): {"to": "{{issue.customfield_10050.trim().jsonEncode}}", "message": "Your request {{issue.key}} is now {{issue.status.name}}. Reply here if you need us."}. Add a condition that the field is not empty first.
- Several people: one Send web request per number (or an advanced branch over a list of numbers, one request each).
- Automation usage counts against the plan's monthly limit; Jira Data Center labels the URL "Webhook URL", uses secret keys for hidden values and waits 3 seconds by default.
- Test with "Manual trigger from work item" on a test item with my own number.
- 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 people about their own work items or their on-call duty.

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.

Jira and Jira Service Management are trademarks of Atlassian. SMSTunnel is a third-party integration and is not affiliated with, endorsed by, or sponsored by Atlassian.

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