SMSTunnel for PRTG
Sensor alerts by text, from your own phone and number
Down sensors, by text
When a sensor goes down, PRTG hands its SMS message to a secret SMSTunnel URL and your own Android phone texts it from your own number. PRTG treats SMSTunnel like any SMS provider, so your notification templates and triggers work as they are.
1. Make your webhook address
A webhook address is a secret URL that turns each call into a text to the numbers you save with it, sent by your own phone from your own number. The call only sets the words, never the number, so PRTG needs no key.
- 1. Install the SMSTunnel app from Google Play on your Android phone and sign in.
- 2. In your dashboard, open Apps → Webhooks, click New webhook and pick Something else. Name it, for example "PRTG".
- 3. Add the numbers that should get the texts, with
+and the country code: up to 10, and each one gets its own text. Then click Create the webhook. - 4. Copy the address, which looks like
https://smstunnel.io/api/v1/webhook/<token>. Keep it secret, like a password: whoever has it can text these numbers from your phone, though never any other number.
Get the steps with your address in them
It opens New webhook with Something else picked. Once the webhook is made, the dashboard shows its address, ready to copy, and Send a test, which texts the webhook's numbers.
PRTG can't send SMSTunnel's key in a header, so the address is what lets it text you: save in the webhook the numbers that should get PRTG's texts.
- Calls an hour: 20 unless you set another number, up to 500. The limit counts calls, not texts: each call texts every number of the webhook, and a test from the dashboard counts too. Past the limit, calls are refused until the hour is over, so a storm of alerts can't use up your texts.
- You can copy the address again anytime, under Address and setup. If it gets out, New address in the webhook's menu replaces it, and the old one stops working at once.
-
A
GETwith?message=…or aPOSTwith JSON sets the words: itsmessage,text,titleorbodyfield. Texts are cut at 480 characters. -
Or with the API, for scripts:
POST /api/v1/webhookswith your sign-in token, as the webhooks guide shows.
2. Make SMSTunnel PRTG's SMS provider
In PRTG's web interface, open Setup → System Administration → Notification Delivery and, under SMS Delivery, fill in:
- Configuration Mode
- Enter a custom URL for a provider not listed
- Custom URL
-
https://smstunnel.io/api/v1/webhook/<token>?message=%SMSTEXT&to=%SMSNUMBER - Encoding for SMS
- UTF-8
- Maximum Length of Text
-
480
-
PRTG puts the alert in
%SMSTEXT. The webhook ignoresto=%SMSNUMBER: the numbers are the ones you saved with it. - Click Test SMS Settings, type any number and a message: your phone texts the message to the webhook's numbers. Then save.
- This replaces the SMS provider for all of PRTG. If you already use another one, PRTG has only one.
3. A notification template
- 1. Setup → Account Settings → Notification Templates → Add Notification Template, and turn on Send SMS/Pager Message.
- 2. In Send to Phone Number, put one number. PRTG makes one request per number, and every request texts all the webhook's numbers, so a second number here would double each text.
- 3. Keep the default Message
(
[%sitename] %device %name %status %down (%message)) or shorten it, then attach the template to sensors or groups under Notification Triggers.
What the texts look like
[PRTG] nas1 Ping Down (Request timed out) Worth knowing
- Testing a template sends the placeholders as they are ("%device %name…"). For a real text, use Simulate Error Status on a sensor.
- Avoid floods. Use trigger latency, and let PRTG summarize SMS messages. The webhook takes 20 calls an hour unless you raise its Calls an hour (Edit, in Apps → Webhooks); PRTG tries a failed notification up to 3 times.
- Phone offline? The text waits and goes out as soon as the phone is back.
If it doesn't work
- PRTG logs each SMS under Logs → System Events → Notifications, with the answer it got.
-
404"Webhook not found or disabled": the address is wrong, was replaced with New address, or the webhook is stopped or deleted. Copy it again from Apps → Webhooks → Address and setup. -
400"Could not build a message from the payload": the call had no words in it. Add?message=…to a GET, or amessagefield to the JSON. With a text of the message, check that the names between braces are the call's. -
429: too many texts at once. SMSTunnel takes 30 send requests a minute. Wait a minute and try again. -
429"Rate limit reached for this webhook (20/hour)": the webhook took all its calls for this hour. Wait, or raise Calls an hour (up to 500) with Edit in Apps → Webhooks. It counts calls, not texts: each call texts every number of the webhook. - In Apps → Webhooks, the webhook's row shows when it was last used and, if its last call sent no text, why.
- 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 get PRTG Network Monitor alerts as text messages from my own phone, with SMSTunnel.
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:
- PRTG can't add a custom HTTP header, and its "Execute HTTP Action" posts form data only, so it uses an SMSTunnel webhook address (the numbers are saved with the webhook, not sent by PRTG).
- Without a key: an SMSTunnel webhook address, https://smstunnel.io/api/v1/webhook/<token>. I make it in my dashboard (https://dashboard.smstunnel.io): Apps → Webhooks → New webhook, pick the tool that will call it (Grafana, Uptime Kuma, Healthchecks, Gatus, Alertmanager, Odoo Online, or Something else), add 1 to 10 numbers (each gets its own text), optionally a text of the message that pulls fields out of the JSON with {{path}}, like {{alarm.name}}, then Create the webhook and copy the address. A GET with ?message=… or a POST with JSON (its message, text, title or body field) texts those numbers; the call never sets the number. Texts are cut at 480 characters. "Calls an hour" (20 unless I set another number, up to 500) counts calls, not texts: each call texts every number, and calls past it are refused until the hour is over. The address can be copied again under Address and setup; New address replaces it if it leaks. Scripts can make one with POST https://smstunnel.io/api/v1/webhooks and my sign-in token instead.
- Setup → System Administration → Notification Delivery → SMS Delivery: Configuration Mode "Enter a custom URL for a provider not listed", Custom URL https://smstunnel.io/api/v1/webhook/<token>?message=%SMSTEXT&to=%SMSNUMBER (PRTG fills in %SMSTEXT; SMSTunnel ignores the "to"), Encoding for SMS: UTF-8, Maximum Length of Text: 480. "Test SMS Settings" sends a test.
- Setup → Account Settings → Notification Templates → Add Notification Template → "Send SMS/Pager Message", Send to Phone Number: one number (any of mine: PRTG makes one request per number it has, and each request texts every number saved in the webhook). Then attach the template to sensors in Notification Triggers.
- Testing a template sends the placeholders unfilled (%device %name…). "Simulate Error Status" on a sensor gives a real text.
- PRTG tries a notification up to 3 times, and SMS/Pager messages are summarized by default.
- One recipient per request: SMSTunnel sends one text to one number. For several people, one request (or one notification) per number.
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.
- Help me set trigger latency and summarization so an outage of many sensors is a few texts, not dozens. 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.
PRTG and Paessler are trademarks of Paessler GmbH. SMSTunnel is a third-party integration and is not affiliated with, endorsed by, or sponsored by Paessler GmbH.