FlowRunner
PricingContact
Theme
Start Free

kwtSMS

Messaging

Connect AI agents to kwtSMS, a Kuwaiti SMS gateway covering all four Kuwait carriers. Agents send single, bulk, and personalized SMS, validate numbers before sending, and check delivery reports and credit balance so regional messaging spends credits only on reachable numbers.

Verified 14 actions API key available
kwtSMS website ↗ Platform Documentation ↗ Capability data verified 2026-08-11
A schedule or an upstream account event opens the send, because kwtSMS publishes no webhook subscription API and ships no triggers
The recipient list is pulled from the source system and passed through Normalize Phone Numbers, which converts Arabic-Indic and Persian digits to Latin and strips the punctuation the gateway rejects
Validate Numbers sorts the list into good, format error, and no route, so credits are committed only against numbers the gateway itself says are routable
Check Number Coverage compares the survivors against the account's activated dialing prefixes, catching the international destinations that would fail
Check Sender ID confirms the intended sender is registered on the account and that its capitalization matches, because kwtSMS sender IDs are case sensitive
The operator receives the routable count, the rejected numbers, and the sender ID the send is about to use
The operator confirms the sender ID for this traffic class, and only then does Send SMS run

What This Integration Enables

kwtSMS is a Kuwaiti gateway operated by BoxLink.NET and running since 2007, reaching all four Kuwait carriers. The reason to pick it over a global aggregator is coverage of exactly that market. Transactional sender IDs get priority routing and can reach numbers on the do-not-disturb list, which is the difference between a one-time passcode arriving and a customer calling support. The interesting thing about the connector is where its actions sit. Three of the fourteen send a message. Five run before the send, checking numbers and sender IDs. Three report on delivery, and those three only work on international traffic.

That distribution is not an accident, and it tells you how to build against this gateway. Kuwait introduced mobile number portability, and kwtSMS numbers inside Kuwait no longer return a delivery report at all. For domestic traffic, which is most traffic on this platform, there is no after. Get Delivery Report will tell you about a message to an activated international destination, and it will tell you nothing about the message you just sent to a customer in Kuwait City. So the gateway compensates by giving you an unusually strong before:

  • Validate Numbers classifies a list into routable, malformed, and unroutable, in batches of two hundred.
  • Check Number Coverage matches numbers against the dialing prefixes actually activated on your account.
  • Normalize Phone Numbers does the cleanup locally, with no API call and no charge at all.

Build the flow the way the platform is shaped. Validate first, spend second, and treat the absence of a delivery report as a fact about the channel rather than as silence to be interpreted optimistically. Send SMS To Validated Numbers packages the first two steps into one action and returns the rejected and unroutable numbers separately, which is the right default for any list that came from a system a human types into. Where the platform genuinely cannot confirm an outcome, that gap becomes an automation exception routed to a person rather than a status field nobody reads.

Without FlowRunner

Bad numbers found by spending on them The list goes out as it was exported, and the format errors and unroutable numbers are discovered on the invoice
Sender ID chosen by habit Whatever string worked last time is reused, with no check that it is registered or capitalized the way the account holds it
Delivery assumed from a clean response The send is accepted, and for domestic traffic there is nothing after that to contradict the assumption

With FlowRunner

Bad numbers found before spending Validation and coverage run as their own steps, and the rejected numbers land somewhere a person works instead of on a bill
Sender ID confirmed against the account The registered list and the exact capitalization are read from the gateway before the send, not after a failure
The unverifiable send treated as unverifiable Where kwtSMS returns no delivery report, the flow says so and asks, rather than reporting a success it cannot see

Use Case Scenarios

One-time passcodes that have to arrive

A Kuwait-based service sends verification codes at sign in. The agent normalizes the number the customer typed, since a form will happily accept Arabic-Indic digits and a leading double zero, then checks it against the account's coverage prefixes before spending anything. The send uses a private transactional sender ID rather than the shared promotional one, because promotional routing on this gateway is deliberately throttled and does not reach every handset. When a customer reports that no code arrived, the flow does not guess. It reads Get Message Status for the gateway queue state and notes that no per-recipient delivery report exists for a Kuwait number. Then it hands the case to support in Slack with the queue status, the sender ID used, and the normalized number, so the person picking it up starts from evidence rather than from a shrug.

Cleaning a list somebody else built

An operations team inherits a customer list from a spreadsheet export and a CRM that were never reconciled. Before any campaign, the agent runs Normalize Phone Numbers across the whole file at no cost, then Validate Numbers in the gateway's two hundred number batches, then Check Number Coverage against the prefixes the account actually has activated. That last step earns its place because international destinations are switched off by default on kwtSMS, and a send to an inactive country simply fails. What comes back is three buckets. The routable numbers proceed. The malformed ones are written back to HubSpot flagged as bad contact data, with the gateway's own classification attached. The unroutable ones open a question for whoever owns the account, since the fix is either a coverage request to kwtSMS support or an acceptance that those customers are not reachable by SMS.

Personalized notices where every message is different

A clinic sends appointment reminders with a different time and doctor in each one. Send Personalized SMS issues one request per recipient pair and reports each pair individually, with the message ID for every message that was actually dispatched. That per-pair reporting is what makes the run resumable: an interrupted batch leaves a record of exactly which people were billed for and which were not, so a retry does not double message anyone. The agent reconciles those message IDs against the appointment records in Google Sheets, and anything without a dispatch record goes back into the queue rather than being assumed sent.

Human-in-Loop Highlight

The gate on kwtSMS is the sender ID, and it earns its place because of a specific combination this gateway has and most do not. Sender IDs are registered per account and they are case sensitive, which is why Check Sender ID exists as its own action and reports capitalization separately from registration. A new account can only use the shared promotional sender ID, whose delivery is intentionally throttled and which will not reach blacklisted numbers or Virgin Mobile numbers at all. A private sender ID has to be bought and then activated by the Kuwait carriers after signed documents are approved, which takes days. And for domestic Kuwait traffic there is no delivery report, so if the wrong sender is used on a passcode send, nothing anywhere in the system reports the failure. The customer just does not get the code.

So on any flow carrying traffic where arrival is the point, the agent stops before the first send and puts the evidence in front of a person. Into Slack: "Ready to send 1,240 verification codes. List Sender IDs returns three registered senders on this account; the flow was configured with the shared promotional sender, which is throttled and does not reach blacklisted or Virgin Mobile numbers. Kuwait destinations return no delivery report, so a failure here will not surface anywhere. Confirm the transactional sender ID for this traffic, exact capitalization?" That is a ten second answer from whoever set the account up, and it is unanswerable afterward.

This is the digital andon cord doing the job it exists for under Orchestration as a Service: stopping at the point where the platform will report success and the customer will experience nothing. It is worth being clear about what is not gated here. The agent normalizes, validates, and checks coverage entirely on its own, because those steps cost nothing, produce evidence rather than consequences, and asking a person to approve them would be theater. The judgment being requested is about routing class and carrier reach, which lives in the head of the person who signed the sender ID paperwork and nowhere in the API.

Agent processes routinely
Detects exception requiring judgment
Clear match Continues automatically
Ambiguous Routes to human via Slack
Human decides
Agent resumes with decision

Agent Capabilities

14 actions

Messaging

3
  • Send SMS Sends one message body to one or more numbers, normalizing and deduplicating the recipient list and splitting it into the gateway's batches of two hundred. The main send, and the one to reach for once the list has already been validated.
  • Send Personalized SMS Sends a different body to each recipient, one request per pair, and reports every pair individually with the message ID for each message actually dispatched. The right form for appointment reminders, order updates, and anything where the content differs per person and the run needs to survive an interruption.
  • Send SMS To Validated Numbers Validates the list first and sends only to the numbers the gateway classified as good, returning the rejected and unroutable numbers separately. The safe default for any list assembled by people rather than by a system.

Account

4
  • Get Balance Returns available credits and total credits ever purchased. The read that runs before a bulk send, and the one a low-credit alert watches.
  • List Sender IDs Returns every sender ID registered on the account. The source of truth for what this account is actually allowed to send as.
  • Check Sender ID Checks whether a sender ID is registered and whether its capitalization matches. It exists as a separate action because kwtSMS sender IDs are case sensitive, which makes a capitalization mismatch a real failure rather than a cosmetic one.
  • List Coverage Prefixes Returns the international dialing prefixes activated on the account. Only Kuwait is active on a new account, so this is how a flow learns which destinations it can reach before it tries.

Phone Numbers

3
  • Validate Numbers Sorts numbers into good, format error, and no route buckets, batched at two hundred per request. The pre-flight that turns a list of unknown quality into three known groups.
  • Normalize Phone Numbers Cleans numbers locally with no API call: converts Arabic-Indic and Persian digits to Latin and strips plus signs, leading double zeros, spaces, dashes, dots, and brackets. Free, instant, and worth running on anything a human typed.
  • Check Number Coverage Matches numbers against the account's activated country prefixes to find the ones that would be refused as an unactivated destination. The check that separates a number that is wrong from a number that is fine but unreachable on this account.

Delivery Tracking

3
  • Get Message Status Returns the gateway queue status for a message ID: pending, error in queue, or handed to the carrier. Queue state, not handset state, and the only tracking signal available for domestic Kuwait traffic.
  • Get Delivery Report Returns the per-recipient delivery report for one message ID. Available for international traffic only, since Kuwait numbers stopped returning reports after mobile number portability was introduced there.
  • Get Delivery Reports For Messages Returns reports for several message IDs, one request each with a pause between them, reporting failures per ID rather than aborting the whole run. The batch reconciliation read for international campaigns.

Reference

1
  • List Error Codes Returns the error codes published in the kwtSMS API documentation with the endpoint each applies to, optionally narrowed to one endpoint. Useful for turning a raw gateway code in an exception record into something a support agent can act on.

Frequently Asked Questions

What can FlowRunner do with kwtSMS?

FlowRunner agents can run Send SMS, Send Personalized SMS, and Send SMS To Validated Numbers in kwtSMS, plus 11 more actions.

Does connecting kwtSMS to FlowRunner require OAuth?

No. kwtSMS connects to FlowRunner with an API key, no OAuth flow required.

Can kwtSMS trigger a FlowRunner workflow automatically?

kwtSMS doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

Start building with kwtSMS

$100 in credits. No card required. Connect in minutes.