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)
Add the integration with an app key, then let the front door text you, in 1:43. It starts with the integration installed from HACS, as described below.

What people use it for

💧
Water leak

The classic case where minutes cost real money.

⚡
Power outage

Your UPS reports that the power went out. Keep the router on the UPS too, so the alert can still go out.

🧊
Freezer warming up

Hours of warning instead of a ruined freezer.

🚨
Intrusion / smoke

Alerts that don't depend on an app being alive.

1. Install

Via HACS (recommended)

  1. 1. HACS → three-dot menu → Custom repositories
  2. 2. Add https://github.com/narcisbodea/hass-smstunnel, category Integration
  3. 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. 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 Home Assistant, name it (for example "Home Assistant") 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 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 keyNeeds the sms:send permission. Validated during setup, so a wrong key fails immediately instead of at the first real alert.
RecipientsOne or more numbers, comma separated.
Default country codee.g. +40 — local numbers without a prefix still work.
Device IDOptional. Pin sending to one specific phone.

4. Use it

Automation: SMS on water leak
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!"
Override the recipient at call time
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.

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