Varyshop SMS

Send SMS campaigns directly from your Android phones — no external provider, no per-SMS fees.

What does this module do?
Instead of paying for every SMS sent through a cloud service, you use your own Android phone(s) as an SMS gateway. The phone connects to your system, automatically picks up messages from the queue and sends them as regular SMS. You can use multiple phones at once — the system automatically distributes the load.
New in v1.3.0: Campaigns from the mobile app
The new Campaigns tab lets you create and send SMS campaigns directly from your phone. Select a template, a customer segment, edit the text and send — including statistics (clicks, orders, revenue). More info ↓

How it works

The entire system consists of three parts that work together:

1. Your Varyshop instance Creates campaigns and an SMS queue
2. App on the phone Picks up SMS from the queue and sends them
3. Recipient Receives a regular SMS message

In practice, it looks like this:

  1. In the admin panel, you create an SMS campaign and click Send
  2. Varyshop prepares the SMS messages and adds them to the queue
  3. The app on your Android phone checks every few seconds: “Do you have anything for me to send?”
  4. When it finds a new message, it sends it as a regular SMS from your phone number
  5. After sending, it reports back to Varyshop: “Sent” or “Failed”
Why does it work this way? Because you send SMS from your own number, you don't pay any SMS service fees. You only pay the standard SMS price according to your carrier plan. With most unlimited plans, it's essentially free.

What you need

On the Varyshop side:
  • A Varyshop instance with Odoo 18 and the Varyshop SMS module installed (your admin will set this up)
  • Access to the Email Marketing section
On the phone side:
  • An Android phone (version 12 or newer)
  • A SIM card with an active SMS plan
  • Internet connection (Wi-Fi or mobile data)
  • The Varyshop SMS app (your admin will install it)

Settings in Varyshop admin panel

After the module is installed (done by your technician), you'll find a new section in the menu:

Email Marketing → Varyshop SMS → Gateway Phones

Here you will manage all phones connected to your system.

Where do I find the settings? If you have the module installed, you'll see a Varyshop SMS item under the main Email Marketing menu. If you don't see it, contact your admin — the module may not be installed yet or you may not have sufficient permissions.

Adding a phone

Every physical phone you want to use for sending must be registered in the Varyshop admin panel.

  1. Go to Email Marketing → Varyshop SMS → Gateway Phones
  2. Click New
  3. Fill in the basic details:
    Field What to enter Example
    Name Give the phone a name so you can identify it later Samsung – O2
    Phone number The SIM card number in international format +420777123456
    Second number If the phone has two SIMs, enter the second one (optional) +420608987654
    Daily limit Maximum number of SMS the phone can send per day 500
    SMS per minute Maximum sending speed 100
  4. Click Generate API Key — a QR code will appear that you'll use for pairing
  5. Save the record
How many phones do I need? One is enough to start. If you plan to send thousands of SMS daily, we recommend adding more phones — the system automatically distributes the load.

Installing the app on your phone

You need to install the Varyshop SMS app on your Android phone.

Downloading the APK

The app is not on Google Play. Download the APK file directly from GitHub Releases:

  1. On your phone, open the link to Releases and download the latest .apk file
  2. Open the downloaded file — if a warning appears, allow Install from unknown sources
  3. Complete the installation
Why isn't it on Google Play? The app uses SEND_SMS and READ_SMS permissions, which require a special review on the Play Store. Installing the APK directly from GitHub Releases is the intended distribution method.
Installing from a computer (technical users): if you have the phone connected via USB, you can install the latest release with one command — ./scripts/install-release.sh from the extra/sms module. See the Developer documentation for build & install scripts.

After launching the app, you will be asked for the following permissions:

Permission Why we need it
Send SMS So the app can send SMS messages from your number
Receive SMS So the app can capture replies containing the word STOP (unsubscribe)
Camera To scan the QR code during pairing
Phone information To detect your SIM card numbers
Notifications To display sending status and background service status (Android 13+ asks in a dialog)

Increasing the SMS limit (WRITE_SECURE_SETTINGS): To increase the native Android limit on outgoing SMS, the app needs the WRITE_SECURE_SETTINGS permission. This cannot be granted from the phone — you need to connect the phone to a computer via USB and run:
adb shell pm grant com.varyshop.smsgatewayapp android.permission.WRITE_SECURE_SETTINGS
If you're building from source, you can use: yarn grant-permission

In addition to these permissions, the app will also show a dialog for battery optimization exemption. This exemption is essential so that Android doesn't put the app to sleep in the background and SMS are reliably sent even when the screen is locked. See the Background and reliability section for more.

Important: All permissions must be granted, otherwise the app will not work properly. Also allow the battery optimization exemption — without it, Android may stop sending SMS in the background. If you accidentally denied a permission, you can grant it later in Phone Settings → Apps → Varyshop SMS → Permissions.

Pairing the phone with Varyshop admin

After installing the app, you need to connect it to your Varyshop system. This is done once using a QR code.

  1. In the Varyshop admin panel, open your phone record (where you clicked Generate API Key) — you'll see a QR code
  2. On the phone, open the Varyshop SMS app
  3. Go to the Settings tab (gear icon at the bottom)
  4. Tap Scan QR Code
  5. Point the phone camera at the QR code displayed on the screen in the Varyshop admin panel
  6. The app will confirm successful pairing — done!
How do I know it works? After successful pairing, the phone status in Varyshop admin will change from Offline to Online. This means the phone is connected and ready to send SMS.
Phone stays Offline? Check:
  • Does the phone have an internet connection? (Wi-Fi or mobile data)
  • Is the app running on the phone? (not closed, not in power saving mode)
  • Is the server address correct? (you can see the URL in the app settings)

Your first SMS campaign

Once you have at least one phone Online, you can send your first campaign.

  1. Go to Email Marketing → SMS Marketing
  2. Click New
  3. Fill in the campaign:
    Field What to enter
    Name Internal campaign name (the customer won't see it)
    Recipients Who will receive the SMS — select a contact group or set up a filter
    Message text The actual SMS text (max 160 characters for a single SMS, longer messages will be split)
  4. Review the message preview
  5. Click Send (for immediate sending) or Schedule (for sending at a specific time)

SMS text example

Hi {{ object.name }}! Get 20% off our entire range until the end of the week. Shop at https://www.example.com/sale
Personalization: Use {{ object.name }} to insert each recipient's name into the text. You can find more fields via the dynamic content button in the message editor.

Campaign from mobile app

New in v1.3.0: You can create campaigns directly from the mobile app without accessing the Odoo backend. Just open the Campaigns tab in the app.

Prerequisites

Wizard in the app (3 steps)

  1. Select template — templates assigned to your phone will be displayed. Select one by tapping.
  2. Segment and count — select a segment (e.g. “Haven't ordered in 3 months”) and set the number of recipients. For each segment, you can see how many customers match the filter.
  3. Preview and confirm — you'll see an SMS preview with a sample name. You can edit the text before sending. Choose Send now or Add to queue.

Sending and tracking

After creating the campaign, a status card is displayed with real-time counters (sent / pending / errors). If you chose “Add to queue”, you can send the SMS later with the Send now button.

On phones with two SIM cards, the app will offer a choice: send via one SIM or split between both.

Marketing statistics

After sending a campaign, the app displays:

Tip: Segments and templates are set up by the admin in Odoo. The operator in the app only selects and sends — they cannot change filters or recipients outside the configured segments.

How SMS are sent

After clicking Send, the following happens:

Prepared Varyshop creates an SMS for each recipient
In queue SMS is assigned to one of your phones
Sending Phone has picked up the SMS and is sending
Sent Successfully sent

You can track progress in real time:

Pausing a campaign

If you need to temporarily stop a campaign (e.g. you noticed a mistake in the text), you can pause it without canceling:

  1. Open the campaign that is currently being sent
  2. Turn on the Paused toggle
  3. SMS still in the queue will not be sent
  4. SMS that have already been sent will remain sent — they cannot be taken back

To resume sending, simply turn off the Paused toggle.

What if SMS were not created? Sometimes SMS for some recipients are not created (e.g. due to an error). In that case, use the Force Create SMS Queue button — the system will create SMS for all recipients who don't have them yet.

Multiple phones and load distribution

You can connect any number of phones. The system automatically distributes SMS evenly — each new SMS is assigned to the phone that currently has the least work (fewest pending SMS in its queue).

Example with three phones

Phone Pending in queue Gets the next SMS?
Samsung – O2 15 SMS No
Xiaomi – T-Mobile 8 SMS No
Pixel – Vodafone 3 SMS Yes — has the fewest
Recommendation: For sending more than 500 SMS daily, we recommend at least 2 phones. For thousands of SMS daily, use 3–5 phones. The system handles it — you don't need to worry about anything.

SMS routing to specific phones

Advanced feature: you can configure a specific phone to send SMS only for a specific group of customers. For example, you want VIP customer SMS to go from a different number than SMS for other customers.

How to set it up

  1. Open the phone record in Varyshop SMS → Gateway Phones
  2. Find the Partner Domain Filter field
  3. Enter the condition for which customers should be routed to this phone

Examples

I want the phone to send for... What to enter in the filter
All customers (no restriction) Leave empty
VIP customers only (category with ID 10) [("category_id", "in", [10])]
Customers from Czech Republic only [("country_id.code", "=", "CZ")]
Company customers only [("is_company", "=", True)]
Important: If you use filters, leave at least one phone without a filter (empty field). It will serve as a fallback — it will receive SMS for customers that don't match any other filter. If no phone matches, the SMS will be marked as an error.
For advanced users: The filter uses the same format as filters in Varyshop views (domain notation). If you're not sure about the syntax, ask your admin for help.

Daily limits and sending speed

Each phone has two limits you can configure:

Limit What it does Default value
Daily limit Maximum number of SMS the phone will send per day. The counter automatically resets at midnight. 500 SMS/day
SMS per minute How quickly the phone sends SMS in succession. A higher number means faster, but there's a risk of being blocked by the carrier. 100 SMS/min

What happens when a phone reaches its limit?

Android limit warning: Some Android devices have their own limit on the number of sent SMS (typically ~30 SMS per 30 minutes). If you encounter this, the app will report it as an error. Your technician can resolve this in the phone settings.

Phones with two SIM cards

If your phone has two SIM cards, you can register both under a single phone record in Varyshop:

The app automatically detects both SIM cards and displays them in the settings. SMS are sent via the correct SIM card based on which number they were assigned to in Varyshop.

In practice: One phone with two SIM cards behaves like two sending phones. Each number has its own queue and its own sent SMS counter.

Links in SMS and click tracking

If you include a link (URL) in your SMS text, the system automatically shortens it and adds tracking.

What happens to the link

Stage How the link looks
As you write it https://www.your-shop.com/spring-sale-2026
As the recipient receives it https://your-admin.com/r/Ab3x (short tracking link)

What happens when the recipient clicks

  1. The recipient clicks the short link in the SMS
  2. Your server records the click — who clicked, when, from where
  3. The recipient is immediately redirected to the original page (your-shop.com/spring-sale-2026)

Thanks to this, you can see in Varyshop how many people clicked the link and who exactly it was. You don't need to set anything up — it happens automatically.

Where to find link statistics

Go to Email Marketing → Link Tracker — you'll see all short links, click counts, and other details.

Google Analytics: If you use Google Analytics, the tracking links automatically add UTM parameters (campaign, source, medium). Traffic from SMS campaigns will appear directly in your Google Analytics reports.

Recipient unsubscribe and STOP messages

By law (GDPR), every recipient must have the option to unsubscribe from marketing SMS. Our system handles this automatically.

How it works

  1. At the end of every SMS message, there is automatically the text: STOP to unsubscribe
  2. If the recipient replies with an SMS containing the word STOP...
  3. ...the app on the phone captures this reply
  4. It automatically adds the recipient's number to the blacklist
  5. All future campaigns will automatically skip this number
GDPR requirement: The text “STOP to unsubscribe” is added automatically and must not be removed. Sending marketing SMS without the option to unsubscribe is a violation of the law.

Where to find the blacklist

SMS Marketing → Configuration → Phone Blacklist

Here you can:

Incoming SMS

Since version 1.2.0, the app includes a new Incoming tab where you can monitor all received SMS messages on your gateway phone.

What the Incoming tab shows

Filtering

At the top of the screen, you can switch between All messages and STOP only. The list supports pagination for easier browsing of large volumes of messages.

Chatter integration

All received SMS are automatically displayed in the partner's chatter in Odoo. Each incoming message is shown as a formatted note with the text in a blockquote and optionally with a STOP tag if the message contained an unsubscribe keyword.

Re-scanning the inbox

If some incoming messages are missing, go to Settings → Service in the app and tap Re-scan received SMS. The app will read the SMS inbox for the last 30 days and send all found messages to the server. Duplicates are automatically ignored.

Campaign statistics

After sending a campaign, you'll find statistics directly in the campaign header:

Metric What it means
Sent Number of successfully sent SMS
Clicked How many recipients clicked a link in the message
Failed Number of SMS that could not be sent
Bounced Invalid phone numbers
Orders Number of orders created from the campaign (UTM tracking)
Revenue Total revenue from orders attributed to the campaign
Opt-out Number of recipients who replied STOP

Clicking on any metric shows a detailed list — you can see exactly which contacts received the SMS, who clicked, etc.

Phone statistics

On each phone's card in Varyshop SMS → Gateway Phones you can see:

FCM Push notifications

By default, the phone app polls every few seconds for new SMS from the queue. This works well, but there can be a delay of up to 10 seconds between creating the SMS in the admin panel and the start of sending.

FCM (Firebase Cloud Messaging) eliminates this delay. When FCM is enabled, the admin panel sends the phone an instant “push” impulse — the app starts sending virtually immediately.

How to enable FCM

  1. Go to Settings → SMS Gateway
  2. Turn on the FCM Push Enabled toggle
  3. Upload the Firebase Service Account JSON file — you can get it from the Firebase Console (Project Settings → Service accounts → Generate new private key)
  4. Save the settings
One Firebase project for all instances. If you run multiple Varyshop instances (e.g. for different customers), one Firebase project and one Service Account JSON file is sufficient. Each instance uses it independently.
What if I don't set up FCM? The app works perfectly fine without FCM — it uses standard polling. SMS will be sent, just with a slightly higher delay (up to 10 seconds). FCM is an optional enhancement, not a requirement.

Background and reliability

The Varyshop SMS app sends messages even when the screen is locked or when you're using another app. For this to work reliably, battery optimization must be configured correctly.

Battery optimization

Android tries to save battery and may restrict background app activity. For Varyshop SMS, this restriction needs to be disabled:

  1. Open Phone Settings → Battery → App battery usage
  2. Find the SMS Gateway app
  3. Select Unrestricted
How to verify: Settings → Battery → App battery usage → SMS Gateway — it should be set to Unrestricted.

Xiaomi / MIUI — extra steps

Xiaomi phones with MIUI have more aggressive battery management. In addition to the battery optimization exemption, you also need to:

Important: If SMS are not being sent while the screen is locked, battery optimization is the most common cause. Always check this setting first.

How to verify everything works

Before launching your first big campaign, we recommend testing everything:

  1. Check the phone status
    In Varyshop SMS → Gateway Phones, at least one phone should be Online
  2. Send a test SMS
    Create a campaign with a single recipient (e.g. yourself) and send it
  3. Check delivery
    Verify that the SMS arrived on the recipient's phone
  4. Verify tracking
    Click the link in the SMS and check in Varyshop (Link Tracker) that the click was recorded
  5. Test unsubscribe
    Reply to the SMS with “STOP” and verify that your number appears on the blacklist in Varyshop
Everything works? Great! You can launch a full-scale campaign. If something doesn't work, check the FAQ and troubleshooting section below.

FAQ and troubleshooting

The phone is still Offline in Varyshop, even though the app is running

  • Check that the phone has an internet connection (open a browser and try loading a page)
  • In the app's Settings tab, verify that your server's URL address is displayed
  • Try closing and reopening the app
  • If nothing helps, re-scan the QR code

SMS are not being sent, they stay in the queue

  • Is the phone Online?
  • Is sending enabled in the app? (Dashboard → the Start toggle)
  • Has the phone reached its daily limit? (check Sent today vs. Daily limit)
  • Does the app have SMS sending permission? (Android Settings → Apps → Varyshop SMS → Permissions)

Some SMS were marked as errors

  • The recipient's number may be invalid (wrong format, non-existent number)
  • The phone may have lost signal during sending
  • Android may have blocked sending due to a limit (see below)
  • You can try resending failed SMS with the Force Create SMS Queue button in the campaign

Android blocks sending after 30 SMS

Some Android phones have a built-in SMS limit (typically 30 per 30 minutes). Solutions:
  • Reduce SMS per minute to 1 (one SMS per minute) — slower, but you won't hit the limit
  • Ask your admin to change the phone settings (technical solution)
  • Use multiple phones — the limit applies to each phone separately

SMS are not being sent when the screen is locked

  • Most common cause: battery optimization puts the app to sleep in the background. Check Settings → Battery → App battery usage → SMS Gateway and set to Unrestricted
  • On Xiaomi/MIUI: also enable Autostart (see the Background and reliability section)
  • Verify that the app has notification permissions enabled (required for the background service)

STOP messages don't appear in the blacklist

  • Verify that the app has Receive SMS permission (RECEIVE_SMS) — without it, the app won't see replies
  • Check internet connection — the app needs to send the STOP message information back to the server
  • The recipient must reply to the same number from which the SMS was sent
  • The message must contain the word STOP (case doesn't matter)
  • Re-scan received SMS: In the app, go to Settings → Service and tap the Re-scan received SMS button. The app will re-read the SMS inbox for the last 30 days and send found messages to the server (with deduplication — duplicates are ignored).

STOP message doesn't work — number is not added to the blacklist

  • Verify that the app has Receive SMS permission
  • The recipient must reply to the same number from which the SMS was sent
  • The message must contain the word STOP (case doesn't matter)

Links in SMS don't work or lead to an error

  • The link requires your Varyshop server to be publicly accessible from the internet
  • If you use HTTPS (recommended), the certificate must be valid
  • Contact your admin to check the web.base.url setting in Varyshop

How do I disconnect a phone from the system?

In the app on the phone, go to Settings and tap Disconnect. The phone will stop sending and will be marked as Offline in Varyshop. In Varyshop, you can also delete or archive the phone record.

Can I change the SMS text after I've sent the campaign?

No. SMS that have already been sent cannot be changed — they've arrived on the recipient's phone. However, you can pause the campaign (Paused toggle) and edit the text. SMS that haven't been sent yet will have the original text. For new text, you need to create a new campaign.

How many SMS can I send per day?

It depends on the number of phones and their settings. Each phone can typically send 200–5000 SMS per day (depending on your daily limit setting and carrier plan). With five phones, you can send up to 20000 SMS per day.
If you have any questions or need help with setup, contact info@varyshop.eu or the developer directly at info@michalvarys.eu

Varyshop SMS v18.0.2.2.0 • VaryShop • 2026