Varyshop SMS
Send SMS campaigns directly from your Android phones — no external provider, no per-SMS fees.
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.
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:
In practice, it looks like this:
- In the admin panel, you create an SMS campaign and click Send
- Varyshop prepares the SMS messages and adds them to the queue
- The app on your Android phone checks every few seconds: “Do you have anything for me to send?”
- When it finds a new message, it sends it as a regular SMS from your phone number
- After sending, it reports back to Varyshop: “Sent” or “Failed”
What you need
- A Varyshop instance with Odoo 18 and the Varyshop SMS module installed (your admin will set this up)
- Access to the Email Marketing section
- 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.
Adding a phone
Every physical phone you want to use for sending must be registered in the Varyshop admin panel.
- Go to Email Marketing → Varyshop SMS → Gateway Phones
- Click New
-
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 - Click Generate API Key — a QR code will appear that you'll use for pairing
- Save the record
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:
- On your phone, open the link to Releases and download the latest .apk file
- Open the downloaded file — if a warning appears, allow Install from unknown sources
- Complete the installation
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.
./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) |
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.
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.
- In the Varyshop admin panel, open your phone record (where you clicked Generate API Key) — you'll see a QR code
- On the phone, open the Varyshop SMS app
- Go to the Settings tab (gear icon at the bottom)
- Tap Scan QR Code
- Point the phone camera at the QR code displayed on the screen in the Varyshop admin panel
- The app will confirm successful pairing — done!
- 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.
- Go to Email Marketing → SMS Marketing
- Click New
-
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) - Review the message preview
- Click Send (for immediate sending) or Schedule (for sending at a specific time)
SMS text example
{{ 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
- At least one SMS template must be created in the admin panel and assigned to your phone (SMS Gateway → Marketing Templates)
- The template must have assigned segments (recipient groups)
Wizard in the app (3 steps)
- Select template — templates assigned to your phone will be displayed. Select one by tapping.
- 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.
- 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:
- Clicked — how many recipients clicked a link
- Orders — number of orders from the campaign (UTM tracking)
- Revenue — total revenue from orders
- Unsubscribed — number of STOP replies
- CTR, Conversion, Unsubscribe % — percentage metrics
How SMS are sent
After clicking Send, the following happens:
You can track progress in real time:
- In the campaign — counters in the header show how many SMS have been sent, how many are pending, how many failed
- On the phone — the app shows how many SMS it has sent and how many are still waiting in the queue
- On the phone card in Varyshop admin — you can see Sent today and Pending
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:
- Open the campaign that is currently being sent
- Turn on the Paused toggle
- SMS still in the queue will not be sent
- SMS that have already been sent will remain sent — they cannot be taken back
To resume sending, simply turn off the Paused toggle.
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 |
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
- Open the phone record in Varyshop SMS → Gateway Phones
- Find the Partner Domain Filter field
- 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)] |
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?
- New SMS are automatically redirected to the next available phone
- If no other phone is available, the SMS will stay in the queue until the next day
- In Varyshop, you can see on the phone card how many more SMS it can send today
Phones with two SIM cards
If your phone has two SIM cards, you can register both under a single phone record in Varyshop:
- Phone number — first SIM card number
- Second number — second SIM card number
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.
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
- The recipient clicks the short link in the SMS
- Your server records the click — who clicked, when, from where
- 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.
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
- At the end of every SMS message, there is automatically the text: STOP to unsubscribe
- If the recipient replies with an SMS containing the word STOP...
- ...the app on the phone captures this reply
- It automatically adds the recipient's number to the blacklist
- All future campaigns will automatically skip this number
Where to find the blacklist
SMS Marketing → Configuration → Phone Blacklist
Here you can:
- View all unsubscribed numbers
- Manually add a number (if your customer requests it by phone or email)
- Remove a number from the list (if the customer renews their consent — e.g. in writing)
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
- Sender — the sender's number and partner name (if they exist in the system)
- Message text — content of the received SMS
- Blacklist status — whether the number is on the blacklist
- Date and time — when the message was received
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:
- Sent today — how many SMS the phone has sent today (out of the daily limit)
- Total sent — total number of SMS sent over the entire period
- Pending — how many SMS are waiting in the queue to be sent
- Errors — how many SMS failed to send
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
- Go to Settings → SMS Gateway
- Turn on the FCM Push Enabled toggle
- Upload the Firebase Service Account JSON file — you can get it from the Firebase Console (Project Settings → Service accounts → Generate new private key)
- Save the settings
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:
- Open Phone Settings → Battery → App battery usage
- Find the SMS Gateway app
- Select 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:
- Enable Autostart: Settings → Apps → Permissions → Autostart — turn on for SMS Gateway
- In the battery settings for the app, select No restrictions
How to verify everything works
Before launching your first big campaign, we recommend testing everything:
-
Check the phone status
In Varyshop SMS → Gateway Phones, at least one phone should be Online -
Send a test SMS
Create a campaign with a single recipient (e.g. yourself) and send it -
Check delivery
Verify that the SMS arrived on the recipient's phone -
Verify tracking
Click the link in the SMS and check in Varyshop (Link Tracker) that the click was recorded -
Test unsubscribe
Reply to the SMS with “STOP” and verify that your number appears on the blacklist in Varyshop
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
- 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?
Can I change the SMS text after I've sent the campaign?
How many SMS can I send per day?
Varyshop SMS v18.0.2.2.0 • VaryShop • 2026