Home Assistant
SMS alerts that reach you when push notifications don't
Why SMS, when you already have push notifications?
Push notifications fail exactly when you need them most: no data connection on the phone you carry, battery saver, or an app killed by the OS. An SMS still reaches you. And it comes from your own phone, on your own SIM, so there's no per-message fee and no third-party SMS provider in between.
Home Assistant and your SMSTunnel phone still need an internet connection to hand the alert over. For alerts during a home internet or power outage, give them a backup: the phone's mobile data, and a UPS (or a mobile-data router) for Home Assistant and your router.
Play the video: Send texts from Home Assistant through your own phone (1:43) What people use it for
The classic case where minutes cost real money.
Your UPS reports that the power went out. Keep the router on the UPS too, so the alert can still go out.
Hours of warning instead of a ruined freezer.
Alerts that don't depend on an app being alive.
1. Install
Via HACS (recommended)
- 1. HACS → three-dot menu → Custom repositories
- 2. Add
https://github.com/narcisbodea/hass-smstunnel, category Integration - 3. Install SMSTunnel, then restart Home Assistant
Manual
Copy custom_components/smstunnel
into your Home Assistant config/custom_components/
folder and restart.
2. Get your key
- 1. Install the SMSTunnel app from Google Play on your Android phone and sign in.
- 2. In your dashboard, open Apps → Add an app, pick Home Assistant, name it (for example "Home Assistant") and click Create the key.
- 3. Copy the key right away: it's shown only once. You can stop or delete the app there anytime, and Home Assistant can't send texts anymore.
Get the steps with your key in them
It opens Add an app with Home Assistant picked. Once the key is made, the dashboard shows every step and command with the key already filled in, ready to copy.
3. Configure
Settings → Devices & Services → Add Integration → SMSTunnel
| Field | Notes |
|---|---|
| API key | Needs the sms:send permission. Validated during setup, so a wrong key fails immediately instead of at the first real alert. |
| Recipients | One or more numbers, comma separated. |
| Default country code | e.g. +40 — local numbers without a prefix still work. |
| Device ID | Optional. Pin sending to one specific phone. |
4. Use it
automation:
- alias: "SMS on water leak"
trigger:
- platform: state
entity_id: binary_sensor.basement_water_leak
to: "on"
action:
- service: notify.smstunnel
data:
title: "Home Assistant"
message: "Water leak detected in the basement!" service: notify.smstunnel
data:
message: "The alarm was triggered"
target:
- "+40712345678"
- "+40787654321" Worth knowing
- Watch out for flapping sensors. A trigger that fires repeatedly can burn your quota in minutes. Use
for:or a condition so a twitchy sensor doesn't text you 200 times. - Rate limit: 30 requests per minute. When hit, it's written plainly in the log instead of the message silently disappearing.
- Length: up to 1600 characters; longer messages are truncated before sending rather than rejected.
- A title is prepended to the message, since SMS has no separate title field.
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 text messages from Home Assistant through 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: - Install the custom integration from https://github.com/narcisbodea/hass-smstunnel: HACS → three-dot menu → Custom repositories → that URL, category Integration → install SMSTunnel → restart Home Assistant. Or copy custom_components/smstunnel into config/custom_components/ and restart. - Settings → Devices & Services → Add Integration → SMSTunnel: "API key", "Recipients (comma separated)", "Server URL" (https://smstunnel.io), "Default country code", "Device ID (optional)". The key is checked during setup. The settings can't be edited later: remove the integration and add it again. - Service notify.smstunnel: message (required), title (the text becomes "title: message"), target (a number or a list; replaces the configured recipients for that call), and data.device_id or data.default_country_code for one call. Each recipient gets its own text. - Texts over 1600 characters are cut. SMSTunnel allows 30 send requests a minute; past that the text is not sent and the log says so (no retry). Errors are written to the log, not raised to the automation. If my phone is offline, the text waits and goes out when it is back. - 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. - Help me avoid repeated texts from a sensor that flips on and off (for:, conditions, a cooldown).
Responsible use
Built for alerts to yourself and your household. Sending unsolicited messages from a consumer SIM generally breaches mobile carrier terms of service.