SendPK Plugins & Integrations — WooCommerce, Shopify, WHMCS & Radius Manager
SendPK SMS for WooCommerce — order SMS + OTP verification
Sends an automatic SMS to your customer whenever their order status changes — received, pending, delivered, cancelled and more — using your SendPK account. Send with an approved template (Fixed) or write free text with placeholders (Dynamic), and optionally verify customer phones with an SMS OTP on signup and checkout.
Before you start
Three things, and you're ready in ten minutes.
- A WordPress site with WooCommerce installed and active — the plugin shows a clear notice and stays idle if WooCommerce is missing.
- A SendPK account with your API key and an approved Sender ID (mask).
- Approved template IDs — only needed for Fixed (template) messages; Dynamic free-text messages work with just the API key and sender ID.
How to install
The standard WordPress plugin upload — no FTP needed.
Download the ZIP
Use the Download Plugin button above to save sendpk-sms-woo.zip to your computer.
Upload it
In WordPress go to Plugins → Add New → Upload Plugin and choose the ZIP.
Install & activate
Click Install Now, then Activate. A new page appears under WooCommerce → SendPK SMS.
How to set it up
Once saved, the settings apply to every order automatically.
- Go to WooCommerce → SendPK SMS.
- Enter your API Key and Sender ID, set the country code (default
92), and turn on Unicode if you send Urdu / non-English text. Click Save.
- Open a status block, e.g. Order Received. Turn it ON and pick the Message Type — each status can use its own:
- Fixed (approved template): paste the Template ID, then add rows — e.g. key
name→ Customer first name, keyorder-id→ Order ID. This builds{"name":"Umair","order-id":"456723"}automatically — any keys your template needs, nothing is hard-coded. - Dynamic (free text): just write the message in the textarea and drop in placeholders like
%customer_name%and%order_id%. Example:Hi %customer_name%, your order %order_id% is confirmed.
- Fixed (approved template): paste the Template ID, then add rows — e.g. key
- Repeat for the other statuses you want (Delivered, Cancelled, Refunded…) — each has its own block, its own message type and its own text or template — then Save.
- (Optional) Turn on OTP verification. Open the OTP Verification block, switch on OTP for Signup and/or Checkout, set the code length (4/6) and expiry minutes, and write the OTP message (e.g.
Your verification code is %otp%). Save.
Test it
Always send yourself one SMS before going live.
Use the Send Test SMS box at the bottom of the settings page: pick the message type (Fixed or Dynamic), enter your own number, then either a template id + JSON or plain text, and click Send Test. The raw API reply shows on screen and is also written to the SMS Logs. If the SMS arrives on your phone, real orders will work too.
How it works live
Fully automatic — no manual work
When a real order changes status, the plugin picks the customer's phone from the order, fills your template with the order details, and sends the SMS through your SendPK account — one message per status, guarded against duplicates.
Common problems
Ninety percent of issues are one of these four.
- No SMS? Check the API key, the Sender ID, and that the template ID is approved in your SendPK account — an unapproved template sends nothing.
- Wrong number format? The plugin auto-fixes
0300…to92300…, but the billing phone must still be a valid mobile number. - Still stuck? Open the SMS Logs tab — every send is recorded there with its raw API reply and a Success/Failed status (error numbers are translated:
1wrong api_key,7invalid number,8out of credit…), so you can see exactly why a message failed. - Note: a green "Success" (
OK ID:…) means SendPK accepted the SMS — not that it reached the handset. For final delivery status, check the delivery report in your SendPK account.
Ready to text your customers automatically?
Download the plugin, connect your SendPK account, and every order update sends itself. Need a hand? Our team is one message away.
SendPK SMS for Shopify — order-event SMS + OTP
Sends an automatic SMS to your customer whenever their Shopify order changes — received, paid, fulfilled, cancelled, refunded and more — using your SendPK account. Choose Fixed (approved template) or Dynamic (free text) messages per event, and optionally add SMS OTP verification on signup and checkout.
Before you start
Two accounts, and a developer to deploy it.
- A Shopify store — any plan works for order-event SMS; OTP-on-checkout needs a plan that supports Checkout UI Extensions with block-progress steps (Shopify Plus for some extension points — flagged again below).
- A SendPK account with your API key, an approved Sender ID (mask) and approved template IDs for any Fixed-mode messages.
- A developer (or your dev agency) with the Shopify CLI and a Shopify Partner account to deploy the app — it isn't a self-serve upload like the WooCommerce plugin.
How to install
A developer deploys it once with four commands. After that, everyone else just uses it from inside Shopify Admin like any other app.
Download & install
Download App Source above, unzip it, run npm install inside the folder.
Link to Shopify
Run shopify app config link to connect it to your app record in the Partner Dashboard.
Deploy & install
Run npx prisma migrate dev then npm run dev — it prints an install link for your store.
Approve & open
Approve Shopify's OAuth permission screen. The app opens embedded inside Admin, in its own left-nav entry.
npm install shopify app config link npx prisma migrate dev npm run dev
Full details (env variables, going live on a real store, submitting to the App Store) are in the README inside the download — this page covers the fast path for a developer setting it up for the first time.
How to set it up
Once saved, the settings apply to every order automatically.
- Open the SendPK SMS app from your Shopify Admin nav.
- Enter your API Key and Sender ID, set the country code (default
92), turn on Unicode if you'll send Urdu text, and Save.
- Open an event block, e.g. Order Received. Turn it ON and pick a Message Type.
- Fixed: paste the approved Template ID, then add rows to match your template's fields — key
name→ value Customer first name, keyorder-id→ value Order ID. The app builds{"name":"Umair","order-id":"456723"}from each real order automatically — any keys your template needs, nothing is hard-coded. Dynamic: write the message with placeholders like%customer_name%and%order_id%— a default is pre-filled per event and fully editable.
- Repeat for the other events you want (Paid, Processing, On Hold, Fulfilled/Delivered, Cancelled, Refunded, Failed/Voided), then Save. A few of these map to a Shopify signal rather than an exact WooCommerce-style status — see the note under each block:
- Order Fulfilled/Delivered fires on fulfillment, not a courier's confirmed delivery. True "delivered" needs the carrier to report tracking updates back to Shopify — not guaranteed for every courier.
- Order On Hold uses the fulfillment order's hold status, not a plain order status.
- Order Failed/Payment Voided has no exact Shopify equivalent to WooCommerce's "failed" status — this block uses the nearest signal (financial status = voided) rather than faking a 1:1 match.
- (Optional) Turn on OTP Verification. Enable for Signup and/or Checkout, set code length (4 or 6 digits) and expiry, and write the OTP message.
Test it
Always send yourself one SMS before going live.
Use the Send Test SMS box in Global settings: enter your own number, a template id and matching JSON (or plain text for Dynamic), then click Send Test. If the SMS arrives on your phone, real orders will work too.
Check what was sent — SMS Logs
Every send, order SMS or OTP, is recorded here — success or failure.
Open SMS Logs from the app's left nav to see every message the app has sent, newest first: date & time, trigger (e.g. Order Received, OTP – checkout), order id, the phone number actually used, message type, and — most importantly — the raw reply SendPK sent back, with a green Success or red Failed status. Click View on any row for the full request/response. Filter by status, date range, or search by phone/order id, and use Export CSV to pull the table for your records. Logs older than your configured retention (default 30 days) are cleaned up automatically. OTP codes themselves are never shown here in plain text, even for OTP rows.
OK ID row only means SendPK accepted the SMS for delivery — it isn't a delivery receipt. The log proves the API accepted the message; for true delivery status, check your SendPK account's delivery report.How it works live
Fully automatic — no manual work
When a real order event fires, the app reads the customer's phone from the order, fills in your template or placeholders, and sends the SMS automatically through your SendPK account — one message per event, guarded against duplicate webhook deliveries.
Common problems
Ninety percent of issues are one of these.
- No SMS? Check the API key, the Sender ID, and that the template ID is approved in your SendPK account — an unapproved template sends nothing.
- Wrong number format? The app auto-fixes
0300…to92300…, but the order must still have a valid mobile number attached (order phone, falling back to shipping then billing address). - Still stuck? Open SMS Logs inside the app — every send is recorded with its raw API reply and a Success/Failed status.
- "Success" but no SMS? A Success /
OK IDreply only means SendPK accepted the message — not a delivery receipt. Check your SendPK account's delivery report for final status. - An event isn't firing the way WooCommerce did? Some events (On Hold, Processing, Failed/Voided) map to the closest available Shopify signal, not an identical status name — see the notes under each event block in settings.
Ready to text your Shopify customers automatically?
Download the app source, deploy it with the Shopify CLI, connect your SendPK account, and every order update sends itself. Need a hand? Our team is one message away.
SendPK SMS for WHMCS — billing & service SMS + OTP
Sends an automatic SMS to your client's phone whenever their invoice, order, service or support ticket changes — invoice created/paid/overdue, service suspended/activated, ticket replies and more — using your SendPK account. Choose Fixed (approved template) or Dynamic (free text) messages per event, map any other WHMCS email to an SMS, and optionally add SMS OTP on login and signup.
Before you start
Two accounts, and admin access to upload a file.
- A WHMCS 8 or later install, with admin access and FTP/File Manager access to its server — this module targets WHMCS 8+'s hook names specifically.
- A SendPK account with your API key, an approved Sender ID (mask) and approved template IDs for any Fixed-mode messages.
- A few minutes to upload one folder and activate it — no database setup, the module creates its own tables automatically on activation.
How to install
One file upload, then activate like any other WHMCS addon module.
Download & unzip
Download the module above and unzip it — you'll get a sendpk_sms folder.
Upload it
Via FTP or your host's File Manager, upload the whole sendpk_sms folder into modules/addons/ on your WHMCS server.
Activate
In WHMCS Admin go to Setup → Addon Modules, find SendPK SMS and click Activate — this also creates the module's own database tables.
Grant access & open
Click Configure, tick your admin role, save — then open SendPK SMS from the Addons menu.
How to set it up
Once saved, the settings apply to every invoice, service and ticket automatically.
- Open Addons → SendPK SMS. On the Settings tab enter your API Key and Sender ID, set the country code (default
92), turn on Unicode if you'll send Urdu text, and Save. Use Check Balance to confirm the key works. - Open the Event Rules tab. Turn on an event, e.g. Invoice Paid, and pick a Message Type. Fixed: paste the approved Template ID, add rows to match your template's fields — key
name→ value Client first name, keyinvoice→ value Invoice number — the module builds the JSON from each real invoice automatically. Dynamic: write the message with placeholders like%client_name%and%invoice_number%— a sensible default is pre-filled per event.
- Repeat for the other events you want: Invoice Created, Payment Reminder/Overdue, Refunded, Cancelled, Order Accepted, Service Activated/Suspended/Unsuspended/Terminated, Ticket Opened, Ticket Staff Reply, Client Registered.
- Open the Email-to-SMS Mapping tab. Pick any real email template from your own WHMCS install (e.g. "Domain Expiration Notice" or "Password Reset Request") from the dropdown — it's read live from your Email Templates, not a fixed list — and pair it with a Fixed or Dynamic SMS the same way as an Event Rule. Every time WHMCS sends that email, the module now also sends the matching SMS.
- (Optional) Turn on OTP Verification. Enable for Login and/or Signup, set code length (4 or 6 digits) and expiry, and write the OTP message.
Test it
Always send yourself one SMS before going live.
Use the Send Test SMS box on the Settings tab: enter your own number, a template id and matching JSON (or plain text for Dynamic), then click Send Test. If the SMS arrives on your phone, real invoices and services will work too.
Check what was sent — SMS Logs
Every send, billing SMS or OTP, is recorded here — success or failure.
Open the SMS Logs tab to see every message the module has sent, newest first: date & time, trigger (e.g. Invoice Paid, OTP – login), the related invoice/service/ticket id, the phone number actually used, message type, and the raw reply SendPK sent back, with a green Success or red Failed status. Filter by status, date range, or search by phone/invoice id, and use Export CSV. Logs older than your configured retention (default 30 days) are cleaned up automatically. OTP codes themselves are never shown here in plain text.
OK ID row only means SendPK accepted the SMS for delivery — it isn't a delivery receipt. Check your SendPK account's delivery report for final status.How it works live
Fully automatic — no manual work
When a real invoice, service or ticket event fires inside WHMCS, the module reads the client's phone and the relevant record straight from your WHMCS database, fills in your template or placeholders, and sends the SMS automatically through your SendPK account.
Common problems
Ninety percent of issues are one of these.
- No SMS? Check the API key, the Sender ID, and that the template ID is approved in your SendPK account — an unapproved template sends nothing.
- Module doesn't show up after upload? Confirm the folder is named exactly
sendpk_smsdirectly insidemodules/addons/, and that file permissions allow WHMCS to read it. - No SMS on domain expiry or password reset? Those aren't Event Rules — set them up on the Email-to-SMS Mapping tab instead, mapped to the matching WHMCS email template.
- Wrong number format? The module auto-fixes
0300…to92300…, but the client's profile must still have a valid mobile number. - Still stuck? Open the SMS Logs tab — every send is recorded with its raw API reply and a Success/Failed status.
Ready to text your WHMCS clients automatically?
Download the module, upload it, connect your SendPK account, and every invoice, service and ticket update sends itself. Need a hand? Our team is one message away.
SendPK SMS for DMA Radius Manager — notification SMS gateway
Routes DMA Radius Manager's own subscriber SMS notifications — welcome messages, expiry warnings, password recovery, renewal notices, whatever your Radius Manager install already sends by SMS — through your SendPK account instead of Clickatell, BulkSMS or a GSM modem. Radius Manager decides what to send and when; this just changes how it gets delivered.
Before you start
One account, and server access to swap a file.
- A working DMA Radius Manager install, with FTP or shell access to its server — this is a server-side file swap, not something done from Radius Manager's own web admin.
- A SendPK account with your API key and an approved Sender ID (mask). No template id needed — see How it works below.
- Comfortable locating and backing up one PHP file — Radius Manager's own SMS gateway module.
How to install
A file swap on your server, then one settings check inside Radius Manager itself.
Locate & back up
Find your install's SMS gateway file (commonly api/smsgateway.php) and copy it aside.
Download & configure
Download the gateway above, unzip it, and fill in your API key + Sender ID in sendpk_config.php.
Swap the gateway
Upload lib/ + sendpk_config.php alongside the original, then copy in this package's sendsms() function.
Enable in Radius Manager
In System → System Settings → Notifications, turn on the SMS checkboxes you want, then trigger a real test.
How it works
One important difference from the WooCommerce/Shopify/WHMCS integrations.
Radius Manager renders the final SMS text itself, from its own editable template files, before it ever calls the gateway. By the time SendPK sees the message, it's already finished text — not a set of fields. So this integration only ever uses SendPK's Dynamic (plain text) mode; there's no Fixed-template/JSON builder here, and no per-event on/off switches to configure on our side. To change what a notification says, edit Radius Manager's own template for that notification. To change how it's delivered, that's what this gateway file does.
Fully automatic once installed
Whenever Radius Manager's own logic decides to text a subscriber, it calls the gateway with the subscriber's phone number and the rendered message — the gateway normalizes the number, sends it through SendPK, and logs the result. No manual work.
Check what was sent — SMS Log
A local, password-protected log — Radius Manager has no admin page slot for this gateway to add one to.
Every send, success or failure, is appended to a local log file: time, the normalized phone number, the exact message Radius Manager handed over, and the raw reply SendPK sent back. View it with the included sendpk_log_viewer.php — it's gated by its own password (set in sendpk_config.php) since it sits outside Radius Manager's own admin login. Old entries clean up automatically after your configured retention (default 30 days).
Common problems
Ninety percent of issues are one of these.
- No SMS at all? Check the API key and Sender ID in
sendpk_config.php, and confirm the matching notification checkbox is turned on in Radius Manager's own System Settings — this gateway can't send anything Radius Manager doesn't ask it to. - Wrong number format? The gateway auto-fixes a leading
0to your configured country code, but the subscriber's record must still have a valid mobile number. - Upgraded Radius Manager and SMS stopped working? An upgrade can replace the gateway file with a fresh copy. Re-apply this package's
sendsms()function — yoursendpk_config.phpsettings are untouched since Radius Manager never overwrites that file. - Looking for OTP/verification codes? Not included in this gateway on purpose — see the note at the top of this page.
- Still stuck? Open the log viewer — every send is recorded with its raw API reply and a Success/Failed status.
Ready to route Radius Manager's SMS through SendPK?
Download the gateway, swap it in, connect your SendPK account, and every notification Radius Manager already sends texts itself. Need a hand? Our team is one message away.