85.pl | Android SMS API

Description

85.pl | Android SMS API connects your WordPress site to the smsportal.app SMS gateway. Messages are sent by the smsportal.app Android app on your own phone, using your own SIM card and plan.

Connect in one click. Click “Connect to smsportal.app”, sign in, pick the phone and approve. Nothing to copy: the plugin receives its own access key, which you can revoke from either side.

Automatic SMS (rules). Pick an event, choose who gets the SMS (the customer, or a fixed number such as yours), write the text with variables like {first_name} or {order_number} (the Polish names {imie}, {numer_zamowienia} work too), save. The editor counts characters and SMS parts and shows a preview with the data of the latest such event. Events:

  • WooCommerce: new order, and order status changed to any status (completed, on hold, cancelled, and custom statuses). Tracking number, carrier and tracking link come from Advanced Shipment Tracking, WooCommerce Shipment Tracking or ShipStation.
  • Contact Form 7: a form was sent (the customer’s number comes from a form field you choose).
  • WPForms: a form was sent (the customer’s number comes from a form field you choose).
  • Fluent Forms: a form was sent (the customer’s number comes from a form field you choose).
  • Forminator: a form was sent (the customer’s number comes from a form field you choose).
  • Kadence Blocks: an Advanced Form was sent, or a simple Form block was sent (the customer’s number comes from a form field you choose).
  • Ninja Forms: a form was sent (the customer’s number comes from a form field you choose).
  • Amelia: new booking, booking status changed, reminder a chosen number of hours before the appointment.
  • FluentBooking: new booking, booking status changed, booking rescheduled, reminder a chosen number of hours before the meeting (the guest’s number comes from the booking form’s phone field).
  • WP Booking Calendar: new booking, booking approved, booking set back to pending, booking canceled, reminder a chosen number of hours before the booked date (the customer’s number comes from the booking form’s “phone” field or a field you choose).
  • Ultimate Member: new registration (one event per registration form, with the form’s fields as variables), account approved, awaiting review (a fixed number makes it a notice to the administrator), deactivated, rejected; the customer’s number comes from the profile (mobile or phone number) or, for a registration, from a form field you choose.
  • Uncanny Automator: a “Send SMS (85.pl | Android SMS API)” action for your recipes.

One SMS per event. Each event is sent at most once, even when an order status is set twice or a request is retried after a timeout. Messages are sent in the background, so pages do not slow down; when smsportal.app cannot be reached they are retried after 1, 5 and 15 minutes. You choose how late a message may still go out (12 hours by default).

Statuses and replies. The “Sent” tab shows each SMS with its status: waiting for the phone, sent, delivered, failed. Customer replies to SMS from this site appear in “Replies”, are added to the WooCommerce order as a private note, and can be e-mailed to you. A reply of STOP (or NIE, REZYGNUJE, UNSUBSCRIBE) puts the number on the block list.

Overview. Phone online or offline, battery, network, SMS sent this month by this site and by the whole account, and a test SMS button.

Privacy. Phone numbers are masked in the admin screens. Sent SMS, replies and logs are deleted after 90 days. The plugin adds a suggested text to the privacy policy guide and supports the WordPress personal data export and erasure tools. Uninstalling removes all its data.

Help. Every plugin screen has short help under WordPress’s “Help” button and a “Help” link to the step-by-step guide for that screen.

Documentation: https://smsportal.app/en/help

For developers. Send from your own code with smsportal_send_sms( $to, $message, array( 'dedupe_key' => 'my-plugin|order-123|shipped' ) ), or add your own events with the smsportal_register_events filter and fire them with do_action( 'smsportal_fire_event', $event_id, $context ).

External service

This plugin connects to the external service smsportal.app (https://smsportal.app) to send SMS messages and to receive delivery status and replies. When you click “Connect to smsportal.app”, your browser goes to smsportal.app to sign in and approve access; your site then sends smsportal.app its admin return address and its webhook address (both on your own domain) and receives an access key, which is stored only in your WordPress database. When an SMS is sent, the recipient phone number, the message text and your API key are transmitted to smsportal.app. The overview screen asks smsportal.app for the phone state and the monthly counters. The service is operated by the plugin author.

  • Terms of service: https://smsportal.app/en/terms
  • Privacy policy: https://smsportal.app/en/privacy

smsportal.app is not affiliated with SMSPortal (Pty) Ltd of South Africa.

Screenshots

Installation

  1. Download smsportal-wordpress.zip from https://smsportal.app/downloads/smsportal-wordpress.zip and upload it under Plugins > Add New > Upload Plugin. After publication in the wordpress.org plugin directory you can also search for “85.pl | Android SMS API” on the Plugins screen.
  2. Activate the plugin.
  3. Install the smsportal.app Android app on a phone and sign in (https://smsportal.app).
  4. Open the 85.pl | Android SMS API menu in the admin sidebar and click “Connect to smsportal.app”.
  5. Under “Rules”, add your first automatic SMS.

Your site must use https (http works only on localhost).

FAQ

Do I need an Android phone?

Yes. SMS are sent by the smsportal.app Android app on your own phone, with your own SIM card. iPhones cannot send SMS from apps, so they are not supported.

What does an SMS cost?

What your mobile plan charges for an SMS (many plans include unlimited SMS). smsportal.app has a free plan and paid plans with higher monthly limits; see https://smsportal.app/en/pricing.

What happens when the phone is offline?

The SMS waits on smsportal.app until the phone comes back. If that takes longer than the time set in the rule (12 hours by default), it is dropped and shown as expired, so a customer does not get an “order shipped” SMS a day late.

The phone shows offline. What now?

The SMS wait for the phone. On the phone, check that it has internet and that airplane mode is off, set the smsportal.app app’s battery use to “Unrestricted”, grant the permissions the app asks for and tap “Send heartbeat” in the app. Once the phone is back online, the waiting SMS go out (within the time set in the rule).

Full guide: https://smsportal.app/en/help/phone-offline

SMS arrive late or only when I open the app

Android puts apps to sleep to save battery, and the SMS then wait until you open the app. In the phone’s settings, set the battery use of the smsportal.app app to “Unrestricted” and keep its ongoing notification on. Samsung, Xiaomi and Huawei phones have extra settings, described in the guide.

Full guide: https://smsportal.app/en/help/battery-optimization

Connecting fails or returns an error

Your site must use https (http works only on localhost): turn on an SSL certificate at your hosting and make both addresses under Settings > General start with https://. The two addresses must also have the same domain. The “Log” tab of the plugin shows why a connection failed. A staging copy with a different address does not send SMS: its plugin screens let you keep the connection (the site really moved) or connect the copy on its own.

Full guide: https://smsportal.app/en/help/wordpress-troubleshooting

How do I send an SMS when a WooCommerce order status changes?

Under “Rules”, click “Add automatic SMS” and pick the event “WooCommerce: order status changed to” the status you want (for example completed). Choose the customer as the recipient, write the text with variables such as {first_name} and {order_number}, and save. Each order and status sends at most one SMS. The tracking number comes from Advanced Shipment Tracking, WooCommerce Shipment Tracking or ShipStation.

Full guide: https://smsportal.app/en/help/wordpress-woocommerce

Is there a limit on the length of an SMS?

No. The plugin sends the whole text, with every variable in full; a long text goes as several SMS parts, which your phone joins into one message (your mobile plan may charge each part). The rule editor shows the number of parts. If smsportal.app refuses a message, the SMS gets the status “Failed” with the reason under “Sent”.

Full guide: https://smsportal.app/en/help/sms-length-and-special-characters

What happens when my plan’s limit is used up?

The SMS gets the status “Plan limit” and is not retried. New events send again once the limit resets or you change the plan.

Will a customer get the same SMS twice?

No. Each event (for example “order 1042 completed”) sends at most one SMS, even when the status is set again or the request is retried.

Can customers reply?

Yes. Replies to SMS sent by this site appear under “Replies”, on the WooCommerce order as a private note, and in an e-mail to you (you can turn the e-mail off in Settings). Other SMS that reach your phone are not sent to the site.

How do I stop SMS to a number?

A customer who replies STOP is blocked automatically. You can also block or unblock numbers by hand under “Blocked”.

Full guide: https://smsportal.app/en/help/wordpress-replies-and-stop

Can someone abuse a public form to send SMS from my phone?

SMS to numbers typed by customers (forms, guest checkout, bookings, the Uncanny Automator “Send SMS” action) are limited: they go only to your country’s numbers (add more countries under Settings > Allowed recipient countries), at most 3 an hour and 10 in 24 hours to one number, and at most 30 an hour from one rule (appointment reminders are exempt from the per-rule cap). An SMS stopped by a limit is shown under “Sent” with the reason, and the plugin screens show a warning. Fixed numbers in rules and smsportal_send_sms() are not limited, unless you pass 'check_limits' => true. Also turn on your form’s spam protection (for Contact Form 7: Akismet, reCAPTCHA or Cloudflare Turnstile; for WPForms: its Anti-Spam and Security settings; for Fluent Forms: its CAPTCHA, Akismet or CleanTalk options; for Forminator: its CAPTCHA, honeypot or Akismet options; for Kadence Blocks: the CAPTCHA field of the Advanced Form, or reCAPTCHA and the honeypot of the simple Form; for Ninja Forms: its Anti-Spam question or CAPTCHA fields). These limits are a protection against abuse, not a paid feature (the plugin has no paid version), and developers can raise or change them with the smsportal_rate_limits and smsportal_allowed_calling_codes filters.

What happens on a staging copy of my site?

A copy with a different site address does not send SMS: the connection belongs to the original site. The plugin screens on the copy let you either keep the connection (the site really moved) or connect the copy on its own.

Can I use it with my own self-hosted smsportal.app server?

Yes: set define( 'SMSPORTAL_URL', 'https://sms.example.com' ); in wp-config.php.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“85.pl | Android SMS API” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

0.2.5

  • Help on every plugin screen: a short explanation under WordPress’s “Help” button and a “Help” link in the header to the step-by-step guide on smsportal.app (in Polish for Polish admins, otherwise in English).
  • New questions in the FAQ, with links to the full guides.

0.2.4

  • Renamed the WordPress plugin to 85.pl | Android SMS API with the text domain 85pl-android-sms-api.
  • Existing smsportal.app connections, rules and integrations remain compatible.

0.2.3

  • Messages are sent in full: no cut to three SMS parts and no cut of long form fields.
  • Updated the translation text domain.

0.2.2

  • Updated the product branding and logo.

0.2.1

  • Clearer rule editor: events that differ only by status or form name sit under one heading, a saved rule shows its event in one line with “Change”, the recipient is one of two choices, and rarely changed settings are folded under “More settings”.
  • Spam protection tips show only the chosen form plugin’s steps.

0.2.0

  • New events: WPForms, Fluent Forms, Forminator, Kadence Blocks and Ninja Forms (form sent), FluentBooking and WP Booking Calendar (new booking, status changes, reminder before the meeting), Ultimate Member (registration and account status).
  • The rule editor picks the event with tiles: first the plugin (with its logo), then the event.
  • WooCommerce: tracking number, carrier and tracking link from Advanced Shipment Tracking and WooCommerce Shipment Tracking ({tracking_carrier}, {tracking_link}).
  • The “Sent” tab keeps the full object ID of a message (it was cut to its first number).

0.1.2

  • Variables have English names: {first_name}, {order_number}, {store_name} and so on. The editor offers them in the admin’s language, and the Polish and English names work in every template, so existing rules keep working.

0.1.1

  • New light look in the style of the smsportal.app dashboard: cards, segmented section switcher, status pills, a connection pill with the phone state in the header, and the account usage bar on the overview.
  • Updated the admin menu label and logo icon.

0.1.0

  • First release: one-click connection to smsportal.app, rules for WooCommerce, Contact Form 7, WPForms, Fluent Forms, Forminator, Amelia and Uncanny Automator, background sending with retries, delivery statuses, customer replies and order notes, block list with STOP, privacy tools, Polish translation.