FAQ

Frequently asked questions about SMS messaging.

General Questions

What is the pool-based model?

Transactional uses a shared pool of phone numbers and pre-approved templates. This means:

  • No number procurement - You don't need to buy or manage phone numbers
  • No carrier registration - We handle 10DLC, DLT, and other requirements
  • Pre-approved templates - Templates are already approved by carriers
  • Automatic routing - We select the best number for each recipient

Which countries do you support?

We currently support:

  • United States (+1)
  • Canada (+1)
  • United Kingdom (+44)
  • India (+91)

More countries are being added. Contact us if you need a specific country.

What phone number format should I use?

All phone numbers must be in E.164 format:

+[country code][subscriber number]

Examples:

  • US: +14155551234
  • UK: +447911123456
  • India: +919876543210

Templates

Why can't I send custom message content?

To ensure deliverability and compliance, all messages must use pre-approved templates. This provides:

  • Better delivery rates - Carriers trust pre-approved content
  • Compliance - Templates meet regulatory requirements
  • Quality control - Consistent, professional messaging

How do I request a custom template?

Enterprise customers can request custom templates:

  1. Contact support with your requirements
  2. We'll work with carriers for approval
  3. Once approved, the template is added to your organization

Can I modify template variables?

Templates use {{variable}} placeholders that you fill in when sending:

await client.sms.send({
  to: '+14155551234',
  templateAlias: 'otp-verification',
  templateModel: {
    code: '123456',      // Replace {{code}}
    company: 'Acme Inc', // Replace {{company}}
  },
});

You cannot modify the template structure itself.


Delivery

Why did my message fail?

Common failure reasons:

ErrorCauseSolution
Recipient opted outUser sent STOPGet re-consent before sending
Invalid numberNot a valid mobile numberValidate number format
UnreachablePhone off or out of rangeRetry later
Carrier blockedContent flaggedContact support

How long does delivery take?

Typical delivery times:

  • OTP/Verification: 2-5 seconds
  • Transactional: 5-30 seconds
  • Batch messages: Depends on volume

Delivery depends on carrier networks and is not guaranteed.

Can I track delivery?

Yes, in several ways:

  1. API polling - Check message status via GET /sms/{id}
  2. Webhooks - Receive real-time delivery events
  3. Dashboard - View delivery stats in the SMS dashboard

Opt-Outs

How does opt-out work?

When a user replies with STOP (or similar keywords):

  1. We automatically add them to your suppression list
  2. They receive a confirmation message
  3. Future messages to this number are blocked

Can I remove someone from the suppression list?

Yes, but only if you have valid re-consent:

await client.sms.suppressions.remove('+14155551234');

Important: Never remove suppressions without explicit user consent.

What opt-out keywords do you recognize?

We process these keywords automatically:

Opt-out: STOP, UNSUBSCRIBE, CANCEL, END, QUIT

Opt-in: START, YES, UNSTOP


Billing

How is SMS pricing calculated?

SMS is billed per segment:

  • Standard (GSM-7): 160 characters per segment
  • Unicode: 70 characters per segment

Messages longer than one segment are billed as multiple messages.

What does a segment mean?

A segment is a unit of SMS. Long messages are split:

// 1 segment (under 160 chars)
"Your code is 123456"

// 2 segments (over 160 chars)
"Your verification code for Acme Inc is 123456. This code expires in 10 minutes. If you didn't request this, please ignore this message."

Do failed messages count?

Messages are billed when accepted by our system. If delivery fails due to carrier issues, you may be billed. Messages blocked before sending (suppressions, validation) are not billed.


Technical

What's the rate limit?

EndpointLimit
Single send100 requests/second
Batch send10 requests/second
Read endpoints100 requests/second

What's the maximum batch size?

You can send up to 500 messages per batch request.

Can I use both templateAlias and templateId?

No, use one or the other. templateAlias is recommended for readability:

// Recommended
{ templateAlias: 'otp-verification' }
 
// Also works
{ templateId: 123 }

How do I test in development?

Use our test mode or sandbox environment:

  1. Use test API keys (prefix with test_)
  2. Messages are simulated, not sent
  3. Webhooks are still triggered

Compliance

Yes. You must have appropriate consent:

Message TypeConsent Required
OTP/VerificationExpress or implied
TransactionalExpress
MarketingExpress written

What is 10DLC?

10DLC (10-Digit Long Code) is the US standard for Application-to-Person messaging. Our pool numbers are pre-registered for 10DLC, so you don't need to handle registration.

Do I need DLT registration for India?

For India, we use DLT-registered templates and headers. You benefit from our registrations automatically.


Troubleshooting

Message shows "QUEUED" for a long time

Possible causes:

  1. High volume - System processing backlog
  2. Carrier delays - Carrier network issues
  3. Rate limiting - Sending too fast

Usually resolves within minutes. Contact support if messages stay queued for over 30 minutes.

Why am I getting "Template not found"?

Check that:

  1. You're using the correct alias or ID
  2. The template is added to your organization
  3. The template is active (not archived)

Why am I getting "No pool number available"?

This means we don't have a number for the recipient's country. Check:

  1. Phone number format is correct
  2. Country is supported
  3. Contact support if the country should be supported

Getting Help

How do I contact support?

  • Email: support@usetransactional.com
  • Dashboard: Use the support widget in your dashboard
  • Documentation: Check our docs at usetransactional.com/docs

Can I schedule a call?

Enterprise customers can schedule calls with our team. Contact sales@usetransactional.com.

Where can I see system status?

Check status.usetransactional.com for real-time system status and incident history.