Skip to content

Sender IDs

A sender ID is the name a recipient sees as the “from” of an SMS — for example FABRIC. In West Africa a sender ID is a delivery gate, not a label: on live routes an unregistered sender is rejected by the carrier, so registration is a prerequisite for live SMS, not a nicety.

const sender = await fabric.senderIds.create({
senderId: "FABRIC",
country: "GH", // "GH" or "NG"
type: "alphanumeric", // default; "short-code" also supported
useCase: "Order and delivery notifications for shop.example",
});
console.log(sender.data.status); // "pending"
Field Notes
senderId The displayed name. Alphanumeric names are capped at 11 characters by the GSM standard.
country GH or NG — the launch corridors. Register once per country you send to.
type alphanumeric (default) or short-code.
useCase A clear description of what you will send. Carriers and regulators review this.

List what you hold with fabric.senderIds.list().

A sender ID moves through:

pending → active (approved) — or → rejected (with a rejectionReason)

Approval is a manual review by the carrier or national regulator (Ghana’s NCA, Nigeria’s NCC), carried out through Fabric operations. There is no fixed turnaround encoded — plan for lead time and register early. A rejected sender comes back with a reason so you can correct and resubmit.

Sandbox rides the virtual delivery path, so a sk_test_ send does not require an active sender — you can build and test the whole flow immediately. A live send is gated: if the sender is not active for the recipient’s country, the send is refused with the blocker code sender_not_registered.


Environment Sender requirement
Sandbox (sk_test_) None — virtual delivery.
Live (sk_live_) An active sender ID for the recipient’s country.

See compliance for how transactional and promotional traffic are routed differently once you are live.