SMSTunnel for Traccar

Tracking alerts and tracker commands, from your own phone

Built into Traccar · no plugin
HTTP SMS settings (sms.http.*)
Traccar config docs

Your own number, for every SMS Traccar sends

Traccar sends texts in two cases: notifications (a vehicle enters a geofence, a tracker goes offline, an alarm) and commands to trackers that take them by SMS. With these settings, Traccar hands each one to your SMSTunnel account and your own Android phone sends it from your own number, on your own plan.

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 "Traccar") 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 Traccar 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. Add the SMS settings to traccar.xml

Open Traccar's configuration file (/opt/traccar/conf/traccar.xml on Linux and in the Docker image, C:\Program Files\Traccar\conf\traccar.xml on Windows) and add these entries inside <properties>:

traccar.xml: your key in sms.http.authorization
<entry key='notificator.types'>web,mail,command,sms</entry>
<entry key='sms.http.url'>https://smstunnel.io/api/v1/sms/send</entry>
<entry key='sms.http.authorizationHeader'>X-API-Key</entry>
<entry key='sms.http.authorization'>sk_live_...</entry>
<entry key='sms.http.template'>{"to": "{phone}", "message": "{message}"}</entry>
  • sms.http.authorizationHeader makes Traccar send the key in an X-API-Key header, the only place SMSTunnel reads it.
  • The template starts with {, so Traccar sends JSON and escapes the number and the text for you. Leave {phone} and {message} as they are.
  • If your file already has notificator.types, add sms to it (the default is web,mail,command).

Then restart Traccar:

sudo systemctl restart traccar

3. Get notifications by text

  1. 1. Settings → Account: put your number in Phone, with + and the country code.
  2. 2. Settings → Notifications, add one: pick the Type of Notification (for example Geofence entered, Status offline or Alarm) and SMS in Channels.
  3. 3. Click Test Channels: your phone texts "test" to your number. Then save.

4. Send commands to trackers by SMS

  • Put the tracker's own SIM number in the device's Phone field.
  • In the device's command dialog, tick Send SMS: the command text goes to the tracker from your phone, exactly as typed (for example a Custom Command your tracker's manual lists).

Worth knowing

  • Pick events that deserve a text. A notification on a busy event (every ignition change on a fleet, for example) can send a lot of texts. SMSTunnel takes 30 a minute.
  • One number per user. Each Traccar user gets texts at their own Phone; add a user per person who should get them. SMSTunnel sends one text to one number per request.
  • The key sits in traccar.xml. Give Traccar its own app in SMSTunnel, so you can stop it without touching your other apps.
  • Phone offline? The text waits and goes out as soon as the phone is back.

If it doesn't work

  • No SMS channel in Notifications: sms is missing from notificator.types, or Traccar wasn't restarted.
  • Traccar shows SMSTunnel's answer in the error message, for example {"statusCode":429,…} when there were too many texts at once.
  • 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 Traccar notifications, and commands to my GPS trackers, 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:
- No plugin: Traccar's HTTP SMS settings in conf/traccar.xml call SMSTunnel's API. Restart Traccar after editing it.
- Entries:
<entry key='notificator.types'>web,mail,command,sms</entry>
<entry key='sms.http.url'>https://smstunnel.io/api/v1/sms/send</entry>
<entry key='sms.http.authorizationHeader'>X-API-Key</entry>
<entry key='sms.http.authorization'>sk_live_...</entry>
<entry key='sms.http.template'>{"to": "{phone}", "message": "{message}"}</entry>
sms.http.authorizationHeader renames the Authorization header to X-API-Key, and sms.http.authorization holds the key. Because the template starts with "{", Traccar sends JSON and escapes {phone} and {message}.
- "sms" must be in notificator.types (the default is web,mail,command).
- Notifications: Settings → Account → Phone (international format), then Settings → Notifications → add one, Type of Notification (e.g. Geofence entered, Status offline, Alarm), Channels: SMS. "Test Channels" sends a test text ("test").
- Commands over SMS: the device's Phone field holds the tracker's SIM number; in the command dialog, tick "Send SMS" and the command text goes to that number from my own phone.
- 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.
- Help me pick which events deserve a text (for example geofence and alarm events, not every position update).

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.

Traccar is an open-source GPS tracking platform by Anton Tananaev. SMSTunnel is a third-party integration and is not affiliated with, endorsed by, or sponsored by the Traccar project.

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