Puerto Rico (US) SMS Best Practices, Compliance, and Features
Puerto Rico (US) SMS Market Overview
Locale name: | Puerto Rico (US) |
---|---|
ISO code: | PR |
Region | North America |
Mobile country code (MCC) | 330 |
Dialing Code | +1 |
Market Conditions: Puerto Rico's mobile market is closely integrated with the US telecommunications ecosystem, with major US carriers like T-Mobile and AT&T providing local service alongside regional operators. SMS remains a primary communication channel for business messaging, with high mobile penetration rates. WhatsApp and other OTT messaging apps are popular for personal communication, but SMS is preferred for business and verification messages due to its reliability and universal reach.
Key SMS Features and Capabilities in Puerto Rico (US)
Puerto Rico supports comprehensive SMS capabilities including two-way messaging, with features and regulations aligned with US mainland standards.
Two-way SMS Support
Two-way SMS is fully supported in Puerto Rico, allowing businesses to engage in interactive messaging with customers. No special restrictions apply beyond standard US messaging regulations and carrier requirements.
Concatenated Messages (Segmented SMS)
Support: Concatenated messaging is not supported through the Sent.dm platform for Puerto Rico.
Message length rules: Messages follow standard SMS character limits - 160 characters for GSM-7 encoding and 70 characters for Unicode (UCS-2).
Encoding considerations: Both GSM-7 and UCS-2 encodings are supported, with GSM-7 recommended for standard ASCII characters to maximize message length.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link to the media content. This ensures reliable delivery while still allowing businesses to share rich media content with recipients.
Recipient Phone Number Compatibility
Number Portability
Number portability is not available in Puerto Rico. This means phone numbers remain tied to their original carriers, which can help ensure more reliable message routing.
Sending SMS to Landlines
Sending SMS to landline numbers is not supported. Attempts to send messages to landline numbers will result in a 400 response error (code 21614) through the REST API, with no message delivery and no charges applied to the account.
Compliance and Regulatory Guidelines for SMS in Puerto Rico (US)
As a US territory, Puerto Rico follows US federal telecommunications regulations, including TCPA (Telephone Consumer Protection Act) and CTIA guidelines. Businesses must comply with both federal requirements and carrier-specific rules for A2P messaging.
Consent and Opt-In
Explicit consent is mandatory before sending any marketing or promotional messages. Best practices include:
- Collecting written or digital consent with clear terms
- Maintaining detailed records of opt-in dates and methods
- Specifying message frequency and content type
- Using double opt-in for marketing programs
- Providing clear disclosure of message and data rates
HELP/STOP and Other Commands
- Required Keywords: Must support standard STOP, QUIT, CANCEL, UNSUBSCRIBE, and HELP commands
- Language Support: Commands must be recognized in both English and Spanish
- Response Time: Acknowledge opt-out requests within 24 hours
- Help Messages: Must include program information, support contact, and message frequency
Do Not Call / Do Not Disturb Registries
Puerto Rico follows the US National Do Not Call Registry. Best practices include:
- Regularly scrubbing contact lists against the National DNC Registry
- Maintaining internal do-not-contact lists
- Implementing immediate opt-out processing
- Documenting all opt-out requests and processing dates
Time Zone Sensitivity
Puerto Rico observes Atlantic Standard Time (AST). Recommended messaging hours:
- Standard Business Hours: 8:00 AM - 8:00 PM AST
- Emergency Messages: Allowed 24/7 for critical notifications
- Marketing Messages: Restrict to business hours only
- Consider Holidays: Respect local holidays and cultural observances
Phone Numbers Options and SMS Sender Types for in Puerto Rico (US)
Alphanumeric Sender ID
Operator network capability: Not supported for dynamic usage
Registration requirements: Not applicable
Sender ID preservation: Not preserved - messages will display numeric sender ID
Long Codes
Domestic vs. International:
- Domestic long codes supported with required 10DLC registration
- International long codes not supported
Sender ID preservation: Yes, for registered 10DLC numbers
Provisioning time: 1-3 business days for 10DLC registration
Use cases:
- Two-factor authentication
- Appointment reminders
- Customer service
- Transactional messages
Short Codes
Support: US short codes supported by major carriers
Provisioning time: 8-12 weeks for new short code approval
Use cases:
- High-volume marketing campaigns
- Time-sensitive alerts
- Mass notifications
- Promotional campaigns
Restricted SMS Content, Industries, and Use Cases
Prohibited Content:
- Gambling and lottery services
- Adult content or SHAFT (Sex, Hate, Alcohol, Firearms, Tobacco)
- Cryptocurrency promotions
- Debt collection
- Political messaging without proper disclosure
Content Filtering
Carrier Filtering Rules:
- Messages containing prohibited keywords are blocked
- URLs must be from approved domains
- High-frequency messaging may trigger spam filters
Best Practices to Avoid Filtering:
- Avoid URL shorteners
- Use registered domains
- Maintain consistent sending patterns
- Include clear business identification
- Avoid excessive punctuation and all-caps
Best Practices for Sending SMS in Puerto Rico (US)
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-actions
- Use personalization tokens thoughtfully
- Maintain consistent sender identification
Sending Frequency and Timing
- Limit marketing messages to 2-4 per month per recipient
- Respect quiet hours (8 PM - 8 AM AST)
- Avoid sending during major holidays
- Space out bulk campaigns to prevent network congestion
Localization
- Offer messages in both Spanish and English
- Consider cultural context and local preferences
- Use appropriate date and time formats
- Include local contact information when possible
Opt-Out Management
- Process opt-outs in real-time
- Maintain centralized opt-out database
- Confirm opt-outs with acknowledgment message
- Regular audit of opt-out list compliance
Testing and Monitoring
- Test across major carriers (AT&T, T-Mobile, local operators)
- Monitor delivery rates by carrier
- Track opt-out rates and patterns
- Regular testing of opt-out functionality
- Monitor for carrier filtering changes
SMS API integrations for Puerto Rico (US)
Twilio
Twilio provides a robust SMS API with comprehensive support for Puerto Rico messaging. Integration requires your Account SID and Auth Token from the Twilio Console.
import { Twilio } from 'twilio';
// Initialize Twilio client with credentials
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
// Function to send SMS to Puerto Rico
async function sendSMSToPuertoRico(
to: string,
message: string
): Promise<void> {
try {
// Ensure number is in E.164 format for Puerto Rico (+1787XXXXXXX or +1939XXXXXXX)
const formattedNumber = to.startsWith('+1') ? to : `+1${to}`;
const response = await client.messages.create({
body: message,
to: formattedNumber,
from: process.env.TWILIO_PHONE_NUMBER, // Your registered 10DLC or shortcode
statusCallback: 'https://your-webhook.com/status', // Optional delivery status updates
});
console.log(`Message sent successfully! SID: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch offers SMS capabilities through their REST API, requiring an API Token and Service Plan ID.
import axios from 'axios';
class SinchSMSService {
private readonly apiToken: string;
private readonly servicePlanId: string;
private readonly baseUrl: string = 'https://us.sms.api.sinch.com/xms/v1';
constructor(apiToken: string, servicePlanId: string) {
this.apiToken = apiToken;
this.servicePlanId = servicePlanId;
}
async sendSMS(to: string, message: string): Promise<void> {
try {
const response = await axios.post(
`${this.baseUrl}/${this.servicePlanId}/batches`,
{
from: process.env.SINCH_SENDER_ID,
to: [to],
body: message
},
{
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${this.apiToken}`
}
}
);
console.log('Message sent successfully:', response.data.id);
} catch (error) {
console.error('Failed to send message:', error);
throw error;
}
}
}
MessageBird
MessageBird provides SMS API access with straightforward integration options.
import { MessageBird } from 'messagebird';
class MessageBirdService {
private client: MessageBird;
constructor(apiKey: string) {
this.client = new MessageBird(apiKey);
}
async sendSMS(to: string, message: string): Promise<void> {
const params = {
originator: process.env.MESSAGEBIRD_SENDER_ID,
recipients: [to],
body: message,
reportUrl: 'https://your-webhook.com/delivery-reports'
};
return new Promise((resolve, reject) => {
this.client.messages.create(params, (err, response) => {
if (err) {
console.error('Error sending message:', err);
reject(err);
} else {
console.log('Message sent successfully:', response.id);
resolve();
}
});
});
}
}
Plivo
Plivo's SMS API provides reliable message delivery to Puerto Rico with detailed delivery tracking.
import plivo from 'plivo';
class PlivoSMSService {
private client: plivo.Client;
constructor(authId: string, authToken: string) {
this.client = new plivo.Client(authId, authToken);
}
async sendSMS(to: string, message: string): Promise<void> {
try {
const response = await this.client.messages.create({
src: process.env.PLIVO_SOURCE_NUMBER, // Your Plivo number
dst: to,
text: message,
url: 'https://your-webhook.com/delivery-status'
});
console.log('Message sent successfully:', response.messageUuid);
} catch (error) {
console.error('Failed to send message:', error);
throw error;
}
}
}
API Rate Limits and Throughput
- Standard Rate Limits:
- 10DLC: 1-2 messages per second
- Short codes: Up to 100 messages per second
- Toll-free numbers: 3 messages per second
Throughput Management Strategies:
- Implement exponential backoff for retries
- Use message queuing systems (Redis, RabbitMQ)
- Batch messages for optimal throughput
- Monitor carrier feedback for delivery optimization
Error Handling and Reporting
- Implement comprehensive error logging
- Monitor delivery receipts via webhooks
- Track common error codes and responses
- Set up alerts for unusual error rates
- Maintain delivery status dashboard
Recap and Additional Resources
Key Takeaways
-
Compliance First:
- Register for 10DLC if using long codes
- Maintain proper consent records
- Honor opt-out requests immediately
-
Technical Best Practices:
- Use E.164 number formatting
- Implement proper error handling
- Monitor delivery rates
-
Localization Considerations:
- Support both English and Spanish
- Respect local time zones
- Consider cultural context
Next Steps
- Review TCPA and CTIA guidelines
- Register for 10DLC if not already done
- Set up delivery monitoring systems
- Test message delivery across carriers
Additional Information: