Documentation

SplitSMS documentation

Everything you need to send bulk SMS, use the REST API, connect WordPress and WooCommerce, run campaigns, and troubleshoot delivery — from signup to production.

Getting started

Create an account, verify your phone, and send your first SMS.

What is SplitSMS?

SplitSMS is a bulk and transactional SMS platform operated by Tecunit Ghana. You sign up with a phone number, fund a prepaid wallet, register sender IDs, and send SMS through the dashboard, REST API, or WordPress plugin to Ghana and 190+ countries.

  • Dashboard for campaigns, contacts, and delivery reports
  • REST API v1 for developers and integrations
  • Official WordPress plugin for WooCommerce and forms
  • Pay-as-you-go pricing from GHS 0.029 per segment in Ghana
  • 5 free SMS credits on signup

Create your account

  1. Go to splitsms.com/signup and enter your name, email, and phone number.
  2. Verify your phone with the 6-digit OTP sent by SMS.
  3. Set a password and log in to the dashboard.
  4. Your wallet starts with 5 free SMS credits for testing.

Login options

You can log in with your email or phone number. Password login uses either identifier; OTP login accepts email or phone but always sends the code to your registered phone.

Send your first message

  1. Open Dashboard → Send SMS.
  2. Enter one or more phone numbers (international format, e.g. 233201234567).
  3. Choose an approved Sender ID or request a new one under Sender IDs.
  4. Write your message — GSM-7 is 160 characters per segment; Unicode uses 70.
  5. Review the cost preview and click Send.

Delivery status appears in Dashboard → Transactions and Reports. Failed messages show the provider reason so you can fix balance, sender ID, or number format issues.

Dashboard guide

Navigate the member dashboard and core workflows.

Wallet & billing

SplitSMS uses a prepaid wallet. Every sent SMS deducts credits based on destination country and message segments. Top up from Dashboard → Wallet using Paystack, Flutterwave, or MTN MoMo when enabled on your account.

  • Pending payments complete after the provider webhook confirms funds.
  • Transaction history lists top-ups and SMS debits.
  • Invoices are available for accounting and reseller accounts.
  • Insufficient balance blocks sends until you top up.

Sender IDs

Recipients see your Sender ID as the message origin (e.g. MYBRAND). Each ID is submitted for approval and may be pending, approved, or rejected depending on carrier rules in Ghana and other routes.

  1. Request a Sender ID from Dashboard → Sender IDs.
  2. Wait for admin approval (typically 1–2 business days).
  3. Use only approved IDs in the dashboard, API, and WordPress plugin.

Campaigns & contacts

Organize audiences and run bulk SMS campaigns.

Managing contacts

Contacts store phone numbers with optional name, email, country, and tags. Import a CSV with columns for phone, name, and email — invalid rows are reported before import.

  • Search and filter by name, phone, or tag
  • Bulk tag, delete, or add to groups
  • Export contacts as CSV for backup
  • API: GET/POST /api/v1/contacts for programmatic sync

Running a campaign

  1. Create a contact group and add members (or import first).
  2. Go to Campaigns → New campaign.
  3. Select the group, message, sender ID, and optional schedule time.
  4. Confirm segment count and estimated cost.
  5. Launch — messages queue and process in the background worker.

Campaign detail pages show sent, delivered, failed, and pending counts. You can retry failed recipients where the platform supports it.

Message placeholders

In campaigns, use {name} and {phone} in the message body to personalize each recipient. Preview shows a sample substitution before send.

REST API

Integrate SplitSMS into your application.

Overview

All API requests use HTTPS and JSON. Authenticate with Authorization: Bearer YOUR_API_KEY. The production base URL is https://splitsms.com and the API prefix is /api/v1.

See the full interactive API reference at /api-docs including every endpoint, request body, and cURL example.

API keys & permissions

  • sk_live_… — production keys that send real SMS and charge credits
  • sk_test_… — sandbox keys that validate requests without sending or billing
  • sms.send — send SMS and OTP
  • sms.read — read messages and delivery logs
  • wallet.read — read balance and transactions
  • contacts.read / contacts.write — manage contacts
  • campaigns.read — read campaign status

Keys are shown only once at creation. Store them in environment variables, never in client-side code or public repositories.

Send SMS via API

curl -X POST 'https://splitsms.com/api/v1/sms/send' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "sender": "MYBRAND",
    "recipients": ["233201234567"],
    "message": "Hello from SplitSMS"
  }'

Responses include message IDs and status. Use GET /api/v1/messages or webhooks for delivery updates.

Webhooks

Register HTTPS endpoints in the developer portal to receive events when messages are sent, delivered, or fail. Payloads are signed with HMAC-SHA256 using your webhook secret — verify the signature before trusting the body.

  • Configure retry behaviour for failed webhook deliveries
  • Use sandbox mode to test handlers without live SMS
  • See /developers/webhooks in the dashboard for endpoint management

WordPress plugin

Connect WooCommerce and forms to SplitSMS.

Installation

  1. Download splitsms.zip from splitsms.com/integrations/wordpress.
  2. If upgrading, deactivate and delete all splitsms / splitsms-1 folders under wp-content/plugins/ first.
  3. Plugins → Add New → Upload Plugin → choose splitsms.zip (keep the filename).
  4. Activate and open SplitSMS → Settings.
  5. Paste your API key, set Sender ID and admin phone, send a test SMS.

Plugin file not found?

This error means WordPress extracted the zip into splitsms-1/splitsms/ because an old folder existed. Delete every splitsms* plugin folder and reinstall with a fresh zip from splitsms.com.

WooCommerce

Enable events under SplitSMS → Integrations: order placed, payment complete, processing, completed, cancelled. SMS goes to the order billing phone.

Templates support {customer_name}, {order_id}, {order_total}, {order_status}, {payment_method}, and {site_name}. Works with Paystack, Flutterwave, Stripe, and other WooCommerce gateways — SplitSMS listens to WooCommerce hooks, not the gateway directly.

Crocoblock (v1.2+)

JetEngine, JetFormBuilder, JetBooking, and JetAppointment each have a module under SplitSMS → Crocoblock. Map phone fields, write templates, and optionally set conditional JSON rules for status-based SMS.

  • JetBooking / JetAppointment reminders via WP-Cron
  • Logs tagged by source in WordPress and your SplitSMS dashboard
  • Requires SplitSMS plugin v1.2.0 or newer

Updates

The plugin checks splitsms.com/api/plugin/update for new versions. When a release is available, WordPress shows it under Plugins → Updates like any other plugin.

SDKs

Official client libraries.

JavaScript / TypeScript

npm install @splitsms/sdk

import { SplitSMS } from "@splitsms/sdk";

const client = new SplitSMS({
  apiKey: process.env.SPLITSMS_API_KEY,
  baseUrl: "https://splitsms.com",
});

await client.messages.send({
  sender: "MYBRAND",
  recipients: ["233201234567"],
  message: "Hello",
});

PHP & Flutter

  • PHP: composer require splitsms/sdk — see /sdk for examples
  • Flutter: splitsms_flutter package for mobile apps
  • All SDKs accept a custom baseUrl for staging or self-hosted testing

Troubleshooting

Common issues and how to resolve them.

SMS not delivered

  • Check wallet balance — insufficient credits block sends
  • Confirm Sender ID is approved for the destination country
  • Use international format without + (e.g. 233201234567)
  • Review Reports for provider failure codes
  • Sandbox keys never deliver live SMS — switch to sk_live_ for production

API error codes

  • 401 UNAUTHORIZED — missing or invalid API key
  • 403 FORBIDDEN — key lacks required permission (e.g. sms.send)
  • 402 PAYMENT_REQUIRED — wallet balance too low
  • 400 INVALID_REQUEST — validation failed; check JSON body
  • 429 TOO_MANY_REQUESTS — rate limit exceeded; backoff and retry

Get help

Submit bugs, errors, billing questions, or integration issues at /support. Logged-in users can also open tickets under Dashboard → Help & support.

WordPress plugin version

Current release: v1.3.0. See the changelog for release notes and WordPress integration guide for setup.