Remote Control

Remote control lets you send a short text message to your phone from another phone, and have SmsForwarder do something for you — send an SMS reply on your behalf, turn forwarding on or off, check the app's status, check whether the phone is still online, re-sync the subscription state with Google Play, or (with an Advanced subscription) give a plain-language instruction.

Only phone numbers you explicitly add to the allow list can send these commands. There is no shared password — your sender's number is the credential.

Before You Start

  1. Open Remote control in the app's settings.
  2. Turn on the Remote control master switch.
  3. Add at least one allowed phone number. Use full international format (for example +14155551234).
  4. Choose how you want to receive command results — see Receiving Responses below.
  5. Make sure the Send SMS permission is granted if you plan to use #REPLY or want SMS replies back to the sender.

How a Command Looks

Every command is a normal SMS sent from an allowed number to your phone. The first non-blank line is always the command keyword (starting with #). For commands that take more information, each value goes on its own line.

The command itself is not forwarded as a regular SMS — it is recognized and consumed by the app.

#REPLY — Send an SMS reply on your behalf

Use this when you want your phone to send a text to someone, but you are not holding it.

Format:

#REPLY
<recipient phone number>
<reply message body>

With a SIM hint (optional, for dual-SIM phones — pin which SIM sends the reply):

#REPLY
#<your SIM phone number>
<recipient phone number>
<reply message body>

The SIM hint line starts with # and is matched by the last 8 digits. Skip it on single-SIM phones or to use the system default.

Examples:

#REPLY
+14155550123
On my way, will be there in 10.
#REPLY
#15557654321
+14155550123
Use the second SIM to send this one.

Notes:

  • The recipient sees the reply as coming from your phone's number, not the original sender's number.
  • Requires the Send SMS permission. If the permission is missing or revoked, this command cannot run.
  • The reply body can be multi-line.

#CTRL — Turn rules, channels, or master switches on or off

Use this to flip a forwarding rule, a delivery channel, or a master forwarding switch without touching the phone.

Format:

#CTRL
<TARGET>
<NAME or SCOPE>
<ON or OFF>
  • TARGET is one of RULE, CHANNEL, or FORWARDING (case-insensitive).
  • NAME or SCOPE depends on the target:
    • For RULE — the exact rule name as it appears in the app (case-sensitive, must be unique).
    • For CHANNEL — the exact channel name as it appears in the app (case-sensitive, must be unique).
    • For FORWARDING — one of SMS, CALL, NOTIFICATION (or NOTIFY), or ALL.
  • ON / OFF can also be written as 1 / 0, TRUE / FALSE, or YES / NO.

Examples:

Turn on a specific rule:

#CTRL
RULE
Salary alert
ON

Turn off the master SMS forwarding switch:

#CTRL
FORWARDING
SMS
OFF

Turn off a delivery channel:

#CTRL
CHANNEL
My Telegram
OFF

Turn off everything (SMS, calls, and notifications) at once:

#CTRL
FORWARDING
ALL
OFF

Notes:

  • This command works even when master SMS forwarding is off — so you can use it to re-enable forwarding remotely after turning it off.
  • Rule and channel names must be unique. If two rules share the same name, the command is rejected to avoid acting on the wrong one.
  • Rule and channel names are matched exactly, including case and spaces.

#STATUS — Check what is currently on

Read-only query. Returns the state of the master forwarding switches and the names of every enabled rule and channel.

Format:

#STATUS

Example response:

[Remote] Status
Forwarding · SMS on · Call off · Notification off
Rules (2): Salary alert, OTP
Channels (1): My Telegram

The response may span multiple SMS segments depending on how many rules and channels you have. Carrier charges apply per segment.

#PING — Check the phone's heartbeat

Read-only query. Returns a snapshot of the phone's current state — useful when you just want to know that the phone is awake, online, and not running out of battery.

Format:

#PING

Example response:

[Remote] Pixel 7 · 2026-05-01 14:35
Battery 73% · charging
Power saver: off
Network: Wi-Fi · internet OK

When the phone is on cellular data, the response also shows the network generation, the operator, and (on Android 10 and later) a signal level from 0 to 4:

[Remote] OnePlus 9 · 2026-05-01 14:35
Battery 45% · on battery
Power saver: on
Network: Cellular · internet OK
Mobile: 5G · Carrier
Signal: 3/4

Notes:

  • On dual-SIM phones, the signal level reflects the data SIM, which may not be the SIM that received the command.
  • #PING runs regardless of whether master forwarding is on.

Read-only query. Returns a link to this online command reference. Useful when you want to share the documentation with someone, or you can't remember a command's exact format and want to look it up.

Format:

#HELP

Example response:

[Remote] Command reference: https://smsforward.zobubo.com/Remote-Control/

The link returned matches the language your phone's app is set to — English by default, or the Chinese version if the app is in Chinese. #HELP runs regardless of whether master forwarding is on.

#REFRESH — Re-sync the subscription state with Google Play

Read-only query. Tells the phone to ask Google Play right now for the active subscription tied to the Google account on this device, and rewrite the local subscription state with whatever Play returns.

Use this when you have re-subscribed on another phone (or just made a purchase) and you want this phone to pick up the new entitlement immediately instead of waiting for the daily background check.

Format:

#REFRESH

Example responses:

[Remote] Subscription refreshed: monthly plan active
[Remote] Subscription refreshed: yearly plan active
[Remote] Refresh complete: no active subscription on this Google account
[Remote] Refresh failed: cannot reach Google Play. Check network and try again.

Notes:

  • The phone must have network access and a working Google Play connection. If either is unavailable, the command reports a failure and the local subscription state is left unchanged.
  • The query uses the Google account currently signed into the device. Make sure that account is the one holding the subscription.
  • #REFRESH runs even when the local subscription has expired — that is the recovery path it is designed for. It also runs regardless of whether master forwarding is on.
  • The action is idempotent: sending #REFRESH repeatedly cannot purchase or cancel a subscription; it only re-reads what Google Play already knows.

#AI — Send a natural-language instruction

Use this when you want to give the phone an instruction in plain language, instead of writing a structured command. SmsForwarder hands the message to the cloud AI provider you configured, asks it to rephrase the request as one of the existing commands, then runs that command — but only if the result still maps to one of the allowed keywords.

Format:

#AI
<your instruction in any language>

Examples:

#AI
Reply to +14155550123 that I'll be there in 10 minutes
#AI
Turn off all forwarding for now
#AI
What's the battery and signal on this phone right now?

Prerequisites:

  • An active Advanced subscription on the Google account signed in on the device.
  • The AI master switch is on and an AI cloud path is configured under Settings → AI — either the built-in cloud (the default for Advanced subscribers, no API key required) or a BYOK provider (Gemini, Claude, or OpenAI) with a working API key.
  • The Natural-language remote command toggle is on under Remote control.

If any prerequisite is missing, the command is rejected with a short reason.

Notes:

  • #AI always runs in the cloud. AI processing in SmsForwarder is cloud-only by design.
  • The text the AI produces is checked against the same allow list as #REPLY / #CTRL / #STATUS / #PING / #HELP / #REFRESH. Anything outside that list is dropped — #AI cannot be used to run new or arbitrary commands.
  • The translated structured command is not dispatched as a regular SMS; it runs the same way as if you had typed the structured command yourself. The original #AI text and the translated command are saved together in the forwarding history detail panel for audit.
  • If the cloud provider is unreachable or the response cannot be parsed into an allowed command, the result message says so and nothing else happens.

Receiving Responses

Every command produces a short result message. You can receive that result in either or both of these ways, configured under Remote control:

  • SMS reply to the sender. The result is sent back as a normal SMS to the phone number that issued the command. Requires the Send SMS permission. If you revoke the permission, this option is turned off automatically.
  • Push to delivery channels. The result is routed through one or more of your existing delivery channels (Telegram, email, webhook, etc.). Up to ten channels can be selected. Disabled or unconfigured channels are skipped.

Both options are independent. You can use just one, both, or neither (in which case commands still execute but you receive no acknowledgement).

Common Errors

If a command is malformed, you receive a message like:

[Remote] Command rejected: <reason>

Typical reasons:

  • missing recipient#REPLY was sent without a destination phone number.
  • missing reply content#REPLY was sent without a message body.
  • missing target#CTRL did not include RULE, CHANNEL, or FORWARDING on the second line.
  • unknown target — the second line of #CTRL was not one of the three valid values.
  • missing name#CTRL RULE or #CTRL CHANNEL did not include a name.
  • missing ON / OFF — the toggle line was empty.
  • invalid toggle — the toggle line was not a recognized value.
  • invalid scope#CTRL FORWARDING got something other than SMS, CALL, NOTIFICATION / NOTIFY, or ALL.
  • No rule / channel named "X" — the name does not match any rule or channel.
  • More than one rule / channel named "X" — duplicate names; rename one in the app first.

Things to Know

  • Commands from numbers not on the allow list are ignored silently.
  • The allow list uses exact-match on the sender's phone number. Add the number in the same format your carrier delivers it (international format with the leading + is the most reliable).
  • Command-shaped messages are recognized and not forwarded as regular SMS, so they will not appear in your forwarding history as forwarded messages.
  • Some response paths (such as SMS replies) consume your carrier's SMS allowance like any other text you send.

If a command is not behaving as expected, see the Technical Support page.