Before you start
Create a BulkSMS API token
Log in to your BulkSMS account and go to Settings > Developers.
Click Create API Token and give it a name, for example n8n. Copy the Token ID and Token Secret. The secret is only shown once.
Add an HTTP Request node
In your workflow, after the trigger, add an HTTP Request node and set:
| Setting | Value |
|---|---|
| Method | POST |
| URL | https://api.bulksms.com/v1/messages?auto-unicode=true |
| Authentication | Generic Credential Type > Basic Auth. Create a credential with your Token ID as the user and your Token Secret as the password. |
| Send Body | On, with Body Content Type set to JSON |
Choose Using JSON for the body and enter the message. Use expressions to insert data from earlier nodes:
{
"to": "{{ $json.phone }}",
"body": "Hi {{ $json.firstName }}, your order has shipped."
}
Add "from": "YourSenderID" to send from a registered Sender ID. Numbers should be in international format, for example +447700900123.
Test and activate
Click Test step with your own number. A successful send returns status 201 and details of the message.
Activate the workflow when the test works.
Start a workflow when a message arrives (optional)
Start a workflow with a Webhook trigger node set to POST, and copy its production URL.
In BulkSMS, go to Settings > Advanced > Webhooks, create a webhook for received messages (or for delivery reports), and paste the n8n URL.
BulkSMS sends a JSON array of messages, so loop over the items in n8n.
Troubleshooting
401 Unauthorized: check the credential uses Basic Auth with the Token ID and Token Secret.
400 Bad Request: check the body is valid JSON and the number is in international format.
403 Forbidden: check your account has credits.
All setup and ready to go!
If you have any questions, please contact our support team. Include your account name and put n8n in the subject line, and we'll be happy to help.
For all API options, see the BulkSMS JSON API documentation.