sms compliance
sms compliance
Complete Guide to Sending SMS in Guernsey: Compliance, Best Practices & APIs
Explore Guernsey SMS: compliance (DPL 2017), features, & best practices. Understand consent rules, STOP commands, & time zone (GMT/BST) considerations. Learn about alphanumeric sender IDs, message concatenation limitations, error code 21614 (landlines), and API integrations.
Guernsey SMS Best Practices, Compliance, and Features
Sending SMS messages to Guernsey requires understanding local telecommunications infrastructure, compliance with the Data Protection Law 2017, and technical considerations for message delivery. This guide covers everything businesses need to know about SMS messaging in Guernsey, from regulatory requirements to API implementation.
Guernsey SMS Market Overview
| Locale name: | Guernsey |
|---|---|
| ISO code: | GG |
| Region | Europe |
| Mobile country code (MCC) | 234 |
| Dialing Code | +44 |
Market Conditions: Guernsey has well-developed mobile telecommunications infrastructure, primarily served by local operators like Sure Guernsey and JT Guernsey. As part of the British Crown Dependencies, it follows similar telecommunications standards to the UK while maintaining its own regulatory framework.
Network Infrastructure: Both major operators provide comprehensive 4G LTE coverage across the island with population coverage exceeding 95%. Sure and JT have invested in network modernization, with 5G services launched in select areas starting in 2022–2023. The small geographic size (approximately 78 km²) enables near-complete network coverage with high reliability.
Market Adoption: Mobile penetration in Guernsey exceeds 100% (multiple devices per capita), consistent with other developed European markets. Smartphone adoption is widespread, with active usage of both traditional SMS (particularly for transactional and authentication messages) and OTT messaging apps (WhatsApp, Signal) for personal communications.
Key SMS Features and Capabilities in Guernsey
Guernsey supports standard SMS messaging capabilities with some limitations on advanced features. These limitations stem primarily from the small market size and carrier prioritization of voice/data services. Compared to the UK mainland, Guernsey has more restricted A2P (Application-to-Person) messaging features, though P2P (Person-to-Person) SMS functions normally.
Two-way SMS Support
Major SMS providers do not support two-way SMS in Guernsey. Businesses cannot receive replies to their SMS messages through standard A2P channels.
Business Impact: Organizations requiring two-way communication can use these alternatives:
- OTT Platforms: Use WhatsApp Business API, Facebook Messenger, or other chat platforms that support two-way messaging
- Web/App Integration: Direct users to web forms or mobile apps for responses via included links
- Email Follow-up: Include email addresses in SMS for recipients to reply via email
- Voice Callbacks: Provide phone numbers for voice-based responses where appropriate
- Dedicated Long Codes: International long codes may support limited two-way functionality through some providers (verify with your SMS vendor)
Concatenated Messages (Segmented SMS)
Support: Standard A2P channels do not support concatenated messaging in Guernsey. Message length rules: Standard SMS length limits apply – 160 characters for GSM-7 encoding, 70 characters for Unicode. Encoding considerations: Both GSM-7 and UCS-2 encodings work, with GSM-7 preferred for standard Latin alphabet messages to maximize character count.
Message Length Optimization Strategies:
- Use abbreviations and concise language (e.g., "info" instead of "information")
- Remove unnecessary whitespace and punctuation
- Use shortened URLs with link shorteners (bit.ly, tinyurl.com) – typically 20–25 characters
- Stick to GSM-7 character set (avoid emojis, special symbols) to get 160 vs 70 character limit
- Split long messages into separate campaigns if needed (e.g., separate follow-up SMS)
- Include only essential information: sender identity, key message, call-to-action, opt-out
Cost Implications: Each SMS costs one message unit. Since concatenation isn't supported, messages exceeding character limits will either be truncated or rejected. Plan for single-segment messages to avoid delivery failures and ensure cost predictability.
MMS Support
MMS messages automatically convert to SMS with an embedded URL link. This ensures compatibility while still allowing rich media content to be shared with recipients through a web-based interface.
Technical Details:
- URL Structure: Media files are hosted on the SMS provider's CDN and delivered via shortened HTTPS links
- Hosting Requirements: No customer hosting required – providers handle media storage automatically
- Link Expiration: URLs typically expire after 30–90 days depending on provider (Twilio: 7–30 days default, configurable)
- File Size Limits: Usually 500KB–5MB depending on provider
- Supported Formats: JPEG, PNG, GIF for images; MP4 for video; MP3, AAC for audio
- User Experience: Recipients receive SMS like "View your image: [link]" – requires data connection to view content
- Character Count: The message body plus URL typically consume 50–80 characters, leaving 80–110 for custom text
Recipient Phone Number Compatibility
Number Portability
Number portability is not available in Guernsey. Mobile numbers remain tied to their original carrier, which helps ensure more reliable message routing.
Carrier Identification for Developers:
- HLR Lookup (Home Location Register): Use HLR lookup APIs to identify the current serving carrier for a mobile number. Services include Twilio Lookup API, Sinch Number Lookup, and Plivo Lookup API.
- MCC/MNC Detection: Parse Mobile Country Code (234) and Mobile Network Code from IMSI data returned by HLR queries
- Number Range Analysis: Guernsey mobile numbers use +44 7xxx ranges; carrier assignment is relatively static due to no portability
- Validation Libraries: Use libphonenumber (Google) to validate Guernsey numbers and format them correctly to E.164 standard
- API Integration Example: Most SMS providers return carrier information in delivery receipt webhooks under
carrierornetworkfields
Sending SMS to Landlines
You cannot send SMS to landline numbers in Guernsey. Attempts to send messages to landline numbers result in a 400 response error (code 21614), and the message will not be delivered or charged to your account.
Landline vs Mobile Number Identification:
- Prefix Analysis: Guernsey mobile numbers begin with +44 7xxx (e.g., +44 7781, +44 7839, +44 7911). Landline numbers use +44 1481 prefix.
- Regex Validation: Use pattern
^\+447\d{9}$for mobile numbers; pattern^\+441481\d{6}$for landlines - Lookup APIs: Use HLR/number lookup services (Twilio Lookup, Numverify, Sinch) to programmatically verify number type before sending
- Pre-send Validation: Implement validation in your application to filter out landlines before API submission
- Error Handling: Catch 21614 errors and log numbers to suppression list to avoid repeated attempts
SMS Compliance and Regulatory Requirements in Guernsey
The Data Protection (Bailiwick of Guernsey) Law, 2017 (DPL 2017) and the European Communities (Implementation of Privacy Directive) (Guernsey) Ordinance, 2004 govern SMS marketing in Guernsey. The Office of the Data Protection Authority (ODPA) oversees compliance with these regulations.
Relationship to UK GDPR and PECR: The DPL 2017 mirrors the EU GDPR framework but is distinct legislation for the Bailiwick of Guernsey. Key similarities include consent requirements, data subject rights, and accountability principles. Key differences include Guernsey's independent supervisory authority (ODPA) and jurisdiction-specific enforcement procedures. The Privacy Directive implementation aligns closely with UK PECR (Privacy and Electronic Communications Regulations) regarding electronic marketing consent requirements.
Penalties for Non-Compliance:
- Administrative Fines: Up to £1,000,000 or 4% of annual worldwide turnover (whichever is higher) for serious breaches under DPL 2017
- Lower-Tier Violations: Up to £500,000 or 2% of turnover for procedural failures (inadequate records, failure to report breaches)
- Criminal Sanctions: Deliberate or reckless unauthorized data processing can result in criminal prosecution
- Enforcement Actions: ODPA can issue enforcement notices, compliance orders, and mandatory audits
Enforcement Examples and Complaint Procedures:
- Complaint Submission: File complaints directly with ODPA via online form or written correspondence
- Investigation Timeline: ODPA typically responds to complaints within 3 months; complex cases may take 6–12 months
- Enforcement History: While Guernsey has not publicized large SMS-related fines, ODPA actively enforces data protection rules across sectors
- Proactive Compliance: Conduct Data Protection Impact Assessments (DPIAs) for SMS marketing programs and register as data controllers with ODPA where required
Consent and Opt-In
Explicit Consent Requirements:
- Consent must be specific, informed, and unambiguous
- Pre-ticked boxes or silence do not constitute valid consent
- Keep detailed records of when and how you obtained consent
- Clearly state the purpose of communications during opt-in
Best Practices for Documentation:
- Maintain timestamped records of all opt-in actions
- Store the source and method of consent acquisition (web form, in-person, phone, checkbox)
- Regularly audit and update consent records (review annually minimum)
- Implement double opt-in for marketing communications (send confirmation SMS/email before adding to active list)
Sample Consent Language:
☑ I agree to receive SMS marketing messages from [Company Name]
about products, offers, and updates. Message frequency: 2–4/month.
Reply STOP to opt out. Standard message rates apply.
HELP/STOP and Other Commands
- Support standard STOP commands in all SMS campaigns
- HELP messages provide clear contact information
- Use English keywords (primary language in Guernsey)
- Process opt-out requests within 24 hours of receipt
Keyword Variations and Case-Sensitivity:
- Opt-Out Keywords: Support STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT (recommended to support all)
- Case-Insensitive: Process keywords regardless of case (STOP, Stop, stop all treated equally)
- Opt-In Keywords: START, UNSTOP, YES (for re-subscription after previous opt-out)
- Help Keywords: HELP, INFO, SUPPORT
Required Response Messages:
- STOP Confirmation: "You have been unsubscribed from [Company Name] messages. Reply START to resubscribe. For help, contact [phone/email]."
- HELP Response: "[Company Name] SMS Program. Msg frequency: 2–4/month. Reply STOP to cancel. Help: [phone/email]. Msg&data rates may apply."
- Response Timing: Send confirmation within seconds (same session) to provide immediate feedback
Do Not Call / Do Not Disturb Registries
While Guernsey doesn't maintain its own Do Not Call registry, businesses can:
- Honor UK's Telephone Preference Service (TPS) registrations
- Maintain internal suppression lists
- Implement immediate opt-out processing
- Regularly clean contact databases
TPS Implementation Guidance:
- Checking TPS: Subscribe to TPS for Business to screen numbers against UK registry
- Integration Methods: Download TPS file (updated monthly) or use real-time API for instant validation
- API Access: TPS provides REST API for automated screening; batch processing available for large lists
- Screening Frequency: Check new numbers before first contact; re-screen existing lists quarterly
- Cross-Jurisdiction: While Guernsey numbers use +44, apply TPS screening as best practice for compliance with customers' preferences
Time Zone Sensitivity
Guernsey follows British Time (GMT/BST). Best practices include:
- Send messages between 8:00 AM and 8:00 PM local time
- Respect local holidays and weekends
- Avoid early morning or late evening messages
- Only send urgent messages outside these hours
Timezone Details:
- Standard Time: GMT (Greenwich Mean Time), UTC+0 – typically late October to late March
- Summer Time: BST (British Summer Time), UTC+1 – typically late March to late October
- 2024 Transitions: BST begins March 31, 2024 at 01:00 GMT; GMT resumes October 27, 2024 at 02:00 BST
- 2025 Transitions: BST begins March 30, 2025 at 01:00 GMT; GMT resumes October 26, 2025 at 02:00 BST
- Implementation: Use IANA timezone identifier
Europe/Guernsey(alias for Europe/London) in scheduling systems to handle automatic DST transitions
SMS Sender ID Options and Phone Number Types in Guernsey
Alphanumeric Sender ID
Operator network capability: Supported with dynamic usage Registration requirements: No pre-registration required Sender ID preservation: Sender IDs are generally preserved across networks
Sender ID Specifications:
- Character Limit: 3–11 characters maximum
- Allowed Characters: A-Z (uppercase letters), a-z (lowercase letters), 0-9 (digits), space
- Restrictions: Cannot be only numeric (must contain at least one letter); cannot start with a digit
- Special Characters: Generally not supported (avoid hyphens, underscores, periods, apostrophes)
- Case Sensitivity: Case is preserved but may display differently on some handsets
Examples:
- ✅ Good:
MyBrand,ACME Corp,BankAlert,ShopDeal - ❌ Bad:
123456(numeric only),1stBank(starts with digit),My-Brand(special char),AB(too short),VeryLongBrandName(too long)
Long Codes
Domestic vs. International: International long codes supported; domestic long codes not available Sender ID preservation: Original sender ID preserved Provisioning time: Immediate for international numbers Use cases: Ideal for transactional messages and two-factor authentication
Pricing and Provisioning:
- Cost Structure: International long codes typically cost $1–5/month rental plus per-message charges (varies by provider and source country)
- Available Country Codes: US (+1), UK (+44 mainland), European numbers (+33, +49, etc.) commonly available; check with provider for full list
- Provisioning Process:
- Select provider (Twilio, Sinch, MessageBird, Plivo)
- Choose number type (mobile-enabled long code or toll-free)
- Provision via API or web console (instant for most countries)
- Configure SMS-enabled settings and webhook endpoints
- Test delivery to Guernsey numbers before production use
- Limitations: Some countries' long codes may have restricted international delivery or higher costs for offshore messaging
Short Codes
Support: Not supported in Guernsey Provisioning time: N/A Use cases: N/A
Restricted SMS Content and Industries in Guernsey
Restricted Industries:
- Gambling: Requires license from Guernsey Gambling Commission; marketing must comply with Gambling (Guernsey) Law, 2014. Proof of age-gated opt-in required. Only licensed operators can send gambling-related SMS.
- Adult content: Prohibited for SMS marketing in accordance with local decency standards and telecommunications regulations.
- Financial services: Must comply with Guernsey Financial Services Commission (GFSC) regulations. Investment advice requires GFSC authorization. Include required regulatory disclaimers and risk warnings.
- Healthcare: Subject to DPL 2017 data protection requirements. Special category data (health information) requires explicit consent and enhanced security measures. Medical advice must come from qualified practitioners.
Additional Industry Considerations:
- Pharmaceuticals: Prescription medication advertising restricted; must comply with Medicines (Guernsey) Law
- Alcohol: Age verification and responsible marketing practices required
- Debt Collection: Follow fair practice guidelines; harassment prohibited
Content Filtering
Carrier Filtering Rules:
- Carriers may block messages containing certain keywords
- Use URLs from reputable domains
- Avoid excessive capitalization and special characters
Specific Blocked Keywords and Patterns:
- Common Spam Triggers: "FREE", "WINNER", "CLAIM NOW", "LIMITED TIME", "CONGRATULATIONS" (especially in all caps)
- Financial Red Flags: "CASH BONUS", "EARN MONEY FAST", "CLICK HERE NOW", "GUARANTEED INCOME"
- Gambling Keywords: "BET NOW", "CASINO", "PLAY ONLINE", "POKER" (without proper licensing)
- Suspicious Patterns: Multiple exclamation marks (!!!), excessive capitalization (>40% of message), multiple URLs
- Phishing Indicators: "verify account", "confirm password", "urgent action required" combined with links
URL Domain Requirements:
- Use HTTPS URLs only (HTTP links may be blocked)
- Established domain reputation (avoid newly registered domains <90 days old)
- Avoid free URL shorteners associated with spam (prefer branded shorteners like bit.ly enterprise or custom domains)
- Include recognizable brand domain where possible (e.g., yourbrand.com/offer)
Appeal Process for Blocked Messages:
- Twilio: Submit support ticket via Console with message SID and content for review
- Sinch: Contact support with batch ID; carrier filtering appeals require 3–5 business days
- MessageBird: Use support portal to request carrier unblock; provide business verification documents
- General Process: Document legitimate business purpose, provide sender ID registration, demonstrate compliance with regulations
- Preventative Measures: Pre-test messages with providers' compliance tools; Twilio offers content review API
Best Practices:
- Use clear, professional language
- Avoid spam trigger words
- Include company name in message (builds trust and reduces spam flags)
- Test messages before bulk sending (send to test numbers on different carriers)
- Maintain sender reputation by honoring opt-outs and avoiding complaint-generating content
SMS Best Practices for Guernsey Businesses
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-action
- Personalize using recipient's name
- Maintain consistent brand voice
Example Messages – Effective vs Ineffective:
✅ Effective:
Hi Sarah, your order #1234 has shipped! Track it here: brand.co/t/xyz
Delivery est. Tue. Reply STOP to opt out. -ACME Shop
Why it works: Personalized, concise (158 chars), clear value, includes opt-out, branded
❌ Ineffective:
CONGRATULATIONS!!! You've been SELECTED for an EXCLUSIVE offer!
Click here NOW to claim your FREE prize before time runs out!!!
Why it fails: Spam triggers, all caps, excessive punctuation, vague call-to-action, no brand identity, no opt-out
✅ Effective:
ACME Bank: Your verification code is 482931. Valid for 10 min.
Never share this code. Not you? Call 01481-234567
Why it works: Branded sender, clear purpose, security guidance, contact info, 147 chars
Sending Frequency and Timing
- Limit to 2–4 messages per month per recipient
- Respect Guernsey public holidays
- Avoid sending during weekends
- Space out campaigns appropriately
Guernsey Public Holidays (applicable 2024–2025):
- New Year's Day (Jan 1)
- Good Friday (Mar 29, 2024 / Apr 18, 2025)
- Easter Monday (Apr 1, 2024 / Apr 21, 2025)
- Early May Bank Holiday (May 6, 2024 / May 5, 2025)
- Liberation Day (May 9) – Guernsey-specific holiday
- Spring Bank Holiday (late May)
- Late Summer Bank Holiday (late August)
- Christmas Day (Dec 25)
- Boxing Day (Dec 26)
Note: Avoid scheduling campaigns on or immediately before public holidays. Reference States of Guernsey official calendar for annual updates.
Localization
- English is the primary language
- Use British English spelling
- Consider French for specific audiences
- Adapt content for local context
French Language Considerations:
- Usage Context: Approximately 1–2% of Guernsey residents speak Guernésiais (Norman French dialect), though most are bilingual English speakers. Standard French is understood by a small portion of residents, particularly among finance sector professionals and expatriate communities.
- When to Use French: Target audience explicitly requests French communications; financial services marketing to French-speaking professionals; luxury goods targeting French tourists/second-home owners.
- Implementation: Offer language preference during opt-in; maintain separate French opt-in list; use native speakers for translation to ensure accuracy.
- Character Limits: French messages often require 20–30% more characters than English due to longer words and accented characters (é, à, ç) which trigger Unicode encoding (70 char limit vs 160).
Opt-Out Management
- Process opt-outs within 24 hours
- Maintain centralized opt-out database
- Include clear opt-out instructions
- Confirm opt-out with final message
Example Opt-Out Confirmation:
ACME Shop: You're unsubscribed. No more marketing msgs will be sent.
You may still receive order updates. Resubscribe anytime: acme.co/sms
Testing and Monitoring
- Test across major local carriers
- Monitor delivery rates regularly
- Track engagement metrics
- Analyze opt-out patterns
- Conduct A/B testing for optimal performance
Key Performance Indicators (KPIs) to Track:
- Delivery Rate: Target >95% for transactional, >90% for marketing messages
- Delivery Time: <30 seconds for time-sensitive messages (OTP, alerts)
- Opt-Out Rate: <0.5% per campaign is healthy; >2% indicates content/frequency issues
- Conversion Rate: Varies by industry; benchmark against your historical performance
- Cost per Conversion: Track ROI by dividing total SMS costs by successful conversions
- Bounce Rate: Keep below 3%; higher indicates list quality issues
Benchmark Delivery Rates:
- Guernsey Typical Range: 92–98% successful delivery for properly formatted messages to valid mobile numbers
- Sure Network: Generally 95–97% delivery rate
- JT Network: Generally 94–96% delivery rate
- International Long Codes: 90–95% (slightly lower due to international routing)
Troubleshooting Low Delivery Rates:
- Verify Number Format: Ensure E.164 formatting (+447xxxxxxxxx)
- Check Content Filtering: Test without URLs, special characters, and trigger words
- Validate Number Type: Confirm numbers are mobile, not landlines
- Review Sender ID: Some alphanumeric IDs may be blocked; try alternative or long code
- Test Carrier-Specific: Send to Sure vs JT numbers separately to isolate carrier issues
- Check Provider Status: Verify no outages or route degradations via provider status pages
- Monitor Delivery Receipts: Analyze error codes (30007=filtered, 30008=unknown, 21211=invalid number)
SMS API Integrations and Providers for Guernsey
Twilio
Twilio provides a robust SMS API with comprehensive support for Guernsey numbers. Integration requires your Account SID and Auth Token from the Twilio Console.
import * as Twilio from 'twilio';
// Initialize Twilio client with authentication credentials
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID, // Your Account SID
process.env.TWILIO_AUTH_TOKEN // Your Auth Token
);
// Function to send SMS to Guernsey number
async function sendSMSToGuernsey(
to: string, // Recipient number in E.164 format (+44...)
message: string, // Message content
from: string // Your Twilio number or alphanumeric sender ID
) {
try {
const response = await client.messages.create({
body: message,
to: to,
from: from,
// Optional: Request delivery status updates
statusCallback: 'https://your-domain.com/sms/status',
});
console.log(`Message sent successfully! SID: ${response.sid}`);
return response;
} catch (error) {
// Type-safe error handling
if (error.code === 21614) {
console.error('Invalid number - landline or invalid format');
} else if (error.code === 21408) {
console.error('Permission to send not granted or number unreachable');
} else {
console.error('Error sending message:', error);
}
throw error;
}
}
// Delivery status webhook implementation
async function handleDeliveryStatus(req, res) {
const { MessageSid, MessageStatus, ErrorCode } = req.body;
if (MessageStatus === 'failed' || MessageStatus === 'undelivered') {
console.error(`Message ${MessageSid} failed with error ${ErrorCode}`);
// Implement retry logic or suppression list update
} else if (MessageStatus === 'delivered') {
console.log(`Message ${MessageSid} delivered successfully`);
}
res.status(200).send('OK');
}Sinch
Sinch offers direct carrier connections for reliable message delivery to Guernsey. Authentication uses API key and secret.
import { SinchClient } from '@sinch/sdk-core';
// Initialize Sinch client
const sinchClient = new SinchClient({
projectId: process.env.SINCH_PROJECT_ID,
apiKey: process.env.SINCH_API_KEY,
apiSecret: process.env.SINCH_API_SECRET
});
// Function to send SMS via Sinch
async function sendSinchSMS(
recipientNumber: string,
messageText: string,
senderId: string
) {
try {
const response = await sinchClient.sms.batches.send({
to: [recipientNumber],
from: senderId,
body: messageText,
// Optional parameters for delivery reports
deliveryReport: 'summary'
});
console.log('Message batch ID:', response.id);
return response;
} catch (error) {
console.error('Sinch SMS Error:', error);
throw error;
}
}MessageBird
MessageBird provides reliable SMS delivery to Guernsey with straightforward API integration.
import { MessageBirdClient } from 'messagebird';
// Initialize MessageBird client
const messagebird = new MessageBirdClient(process.env.MESSAGEBIRD_API_KEY);
// Function to send SMS via MessageBird
async function sendMessageBirdSMS(
to: string,
message: string,
originator: string
): Promise<any> {
return new Promise((resolve, reject) => {
messagebird.messages.create({
originator: originator,
recipients: [to],
body: message,
// Optional parameters
reportUrl: 'https://your-webhook-url.com/delivery-status'
}, (err, response) => {
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
}Plivo
Plivo offers reliable SMS delivery to Guernsey with comprehensive delivery reporting.
import * as plivo from 'plivo';
// Initialize Plivo client
const client = new plivo.Client(
process.env.PLIVO_AUTH_ID,
process.env.PLIVO_AUTH_TOKEN
);
// Function to send SMS via Plivo
async function sendPlivoSMS(
destination: string,
message: string,
sourceNumber: string
) {
try {
const response = await client.messages.create({
src: sourceNumber,
dst: destination,
text: message,
// Optional parameters
url: 'https://your-webhook-url.com/delivery-status',
method: 'POST'
});
console.log('Message UUID:', response.messageUuid);
return response;
} catch (error) {
console.error('Plivo Error:', error);
throw error;
}
}API Rate Limits and Throughput
Provider-Specific Rate Limits:
Twilio:
- Free/Trial Accounts: 1 message/second
- Standard Accounts: 10 messages/second per project
- Enterprise Accounts: Custom limits (100–1000+ msg/sec negotiable)
- Daily Quota: No hard daily limit; charged per message
- Cost: ~$0.0075–0.015 per SMS to Guernsey (varies by volume)
Sinch:
- Default: 10–50 messages/second depending on account tier
- Batch API: Up to 1000 recipients per batch request
- Enterprise: Custom throughput up to 1000+ msg/sec
- Cost: ~$0.005–0.012 per SMS (volume discounts available)
MessageBird:
- Standard: 20 messages/second
- Premium: 100+ messages/second
- Batch limit: 50 recipients per API call
- Cost: ~$0.006–0.010 per SMS
Plivo:
- Default: 10 messages/second
- High-volume: 100–200 messages/second (requires approval)
- Burst capability: 2x rate limit for short periods
- Cost: ~$0.0065–0.011 per SMS
Account Tier Differences: Higher tiers typically offer increased rate limits, volume discounts (10–30% reduction at >100K msgs/month), dedicated support, custom sender ID registration, and SLA guarantees (99.95% uptime).
Strategies for Large-Scale Sending:
// Example: Queuing system with rate limiting using Bull (Redis-based queue)
import Queue from 'bull';
const smsQueue = new Queue('sms-sending', {
redis: { host: 'localhost', port: 6379 }
});
// Add rate limiting: 10 messages per second
smsQueue.process(10, async (job) => {
const { to, message, from } = job.data;
await sendSMSToGuernsey(to, message, from);
});
// Exponential backoff for retries
const jobOptions = {
attempts: 3,
backoff: {
type: 'exponential',
delay: 2000 // 2s, 4s, 8s retry delays
}
};
// Add messages to queue
await smsQueue.add({ to: '+447xxx', message: 'Test', from: 'ACME' }, jobOptions);Additional Strategies:
- Use batch APIs when sending to multiple recipients (reduces API overhead)
- Implement circuit breakers to pause sending during provider outages
- Distribute load across multiple provider accounts if sending >10K msgs/hour
- Schedule large campaigns over several hours to avoid rate limit exhaustion
- Monitor queue depth and adjust worker concurrency dynamically
Error Handling and Reporting
Common Twilio Error Codes for Guernsey:
| Error Code | Description | Recommended Action |
|---|---|---|
| 21211 | Invalid 'To' phone number | Validate E.164 format; check number is mobile not landline |
| 21408 | Permission to send not granted | Number may be on carrier block list or unreachable |
| 21610 | Attempt to send to unsubscribed recipient | Remove from list; honor opt-out |
| 21614 | 'To' number is not a mobile number | Sending to landline; filter landlines before submission |
| 30003 | Unreachable destination | Carrier/route issue; retry later or try alternative provider |
| 30005 | Unknown destination | Invalid number or network issue; validate and suppress |
| 30007 | Message filtered/blocked by carrier | Content triggered spam filter; revise message content |
| 30008 | Unknown error | Transient issue; implement retry with exponential backoff |
General SMS Error Patterns (apply to Sinch, MessageBird, Plivo):
- 4xx errors: Client-side issues (invalid parameters, auth failure, insufficient balance) – do not retry without fixing
- 5xx errors: Provider/server issues – implement retry logic
- Carrier rejection: Content filtering, number unreachable – adjust content or suppress number
Delivery Receipt Webhook Implementation:
import express from 'express';
import crypto from 'crypto';
const app = express();
app.use(express.urlencoded({ extended: true }));
// Twilio webhook validation
function validateTwilioSignature(req, authToken) {
const twilioSignature = req.headers['x-twilio-signature'];
const url = `https://${req.hostname}${req.originalUrl}`;
const params = req.body;
const expectedSignature = crypto
.createHmac('sha1', authToken)
.update(Buffer.from(url + Object.keys(params).sort().map(key => key + params[key]).join(''), 'utf-8'))
.digest('base64');
return crypto.timingSafeEqual(
Buffer.from(twilioSignature),
Buffer.from(expectedSignature)
);
}
// Delivery status webhook endpoint
app.post('/sms/status', async (req, res) => {
// Validate webhook authenticity
if (!validateTwilioSignature(req, process.env.TWILIO_AUTH_TOKEN)) {
return res.status(403).send('Invalid signature');
}
const { MessageSid, MessageStatus, ErrorCode, To } = req.body;
// Log to database or monitoring system
console.log(`Message ${MessageSid} to ${To}: ${MessageStatus}`);
if (MessageStatus === 'failed' || MessageStatus === 'undelivered') {
// Add to suppression list if permanent failure
if (['21211', '21614', '30005'].includes(ErrorCode)) {
await addToSuppressionList(To, ErrorCode);
}
// Trigger alert for high failure rates
await checkFailureRateAndAlert();
}
res.status(200).send('OK');
});Automated Alerting Setup:
- Set up monitoring for delivery rate dropping below 90%
- Alert on error rate exceeding 5% within any 1-hour window
- Track specific error codes (30007 content filtering spike may indicate campaign issue)
- Monitor opt-out rate spikes (>2% may indicate content or frequency problems)
- Use services like DataDog, New Relic, or provider-native analytics dashboards
Recap and Additional Resources
Key Takeaways:
- Obtain explicit consent before sending marketing messages
- Respect local time zones (GMT/BST) for message delivery – 8 AM to 8 PM local time
- Implement proper opt-out handling (STOP, UNSUBSCRIBE, etc.) with 24-hour processing
- Monitor delivery rates and engagement metrics – target >95% delivery for transactional messages
- Keep messages under 160 characters (GSM-7) or 70 characters (Unicode) due to no concatenation support
- Validate numbers to avoid landline sends (use +447xxx pattern for mobiles)
Next Steps:
- Review the Data Protection (Bailiwick of Guernsey) Law, 2017 – understand consent, data subject rights, and penalties
- Consult with legal counsel for compliance requirements – particularly for regulated industries (gambling, financial services)
- Set up test accounts with preferred SMS providers – Twilio, Sinch, MessageBird, or Plivo
- Implement proper error handling and monitoring – delivery webhooks, error code logging, and alerting
Additional Resources:
- Guernsey Office of the Data Protection Authority – File complaints, access guidance documents, and check data controller registration requirements
- Guernsey Competition & Regulatory Authority – Telecommunications regulations, operator licenses, and consumer protection rules
- Data Protection (Bailiwick of Guernsey) Law, 2017 – Full text of primary data protection legislation
- States of Guernsey – Public Holidays – Annual calendar for campaign planning
- UK Telephone Preference Service – Register for business TPS access to screen numbers
Industry Guidelines:
- Mobile Marketing Association Guidelines – Global best practices for SMS marketing
- GDPR-aligned best practices for data handling – consent management, data retention, and breach notification procedures
- Local telecommunications standards and regulations – follow GCRA guidance for SMS use cases
Frequently Asked Questions
How to send SMS messages in Guernsey?
Use an SMS API provider like Twilio, Sinch, MessageBird, or Plivo. These providers offer integrations to send messages to Guernsey numbers, complying with local regulations. Remember to obtain explicit consent before sending marketing messages and adhere to best practices like respecting time zones and managing opt-outs. You'll also need an account with the chosen provider to access their APIs and tools.
What is the legal basis for sending marketing SMS in Guernsey?
The Data Protection (Bailiwick of Guernsey) Law, 2017 (DPL 2017) and the European Communities (Implementation of Privacy Directive) (Guernsey) Ordinance, 2004 govern SMS marketing. Explicit, informed, and unambiguous consent is required before sending marketing SMS, and compliance is overseen by the Office of the Data Protection Authority (ODPA).
Why does Guernsey not support two-way SMS?
Two-way SMS is not supported through major A2P SMS providers in Guernsey. This limitation means businesses cannot receive replies to their SMS messages through standard channels. Alternative communication methods may be necessary for interactive messaging.
When should I send SMS messages in Guernsey?
The best time to send SMS messages in Guernsey is between 8:00 AM and 8:00 PM local time (GMT/BST). Avoid sending messages during weekends or local holidays unless urgent. Consider local time sensitivity and respect recipient preferences to minimize disruption.
What SMS features are not supported in Guernsey?
Two-way messaging and concatenated (long) SMS are not supported via standard A2P channels. MMS messages are converted to SMS with a URL link. Shortcodes are also unavailable. Standard SMS length applies—160 characters for GSM-7 and 70 characters for Unicode.
Can I send SMS to landlines in Guernsey?
No, sending SMS to landline numbers in Guernsey is not possible. Attempts to send messages to landlines result in a 400 response error with code 21614. The message is neither delivered nor charged to your account.
How to comply with SMS regulations in Guernsey?
Obtain explicit consent, offer clear opt-out instructions in English, and honor STOP requests within 24 hours. Follow best practices for data handling, respect the UK's TPS registrations, and consult legal counsel for specific compliance requirements.
What are the best practices for SMS marketing in Guernsey?
Keep messages under 160 characters, personalize content, respect local time zones, and handle opt-outs promptly. Obtain explicit consent, localize messages (primarily English), and regularly monitor deliverability and engagement. Consistent branding is also recommended.
How to handle opt-outs for SMS campaigns in Guernsey?
Process opt-out requests within 24 hours of receipt. Maintain a centralized opt-out database and ensure clear opt-out instructions are included in every message. Confirm opt-out with a final message to the recipient.
What alphanumeric sender ID options are available for Guernsey?
Alphanumeric sender IDs are supported with dynamic usage in Guernsey. No pre-registration is required, and sender IDs are generally preserved across networks. This provides flexibility in branding your SMS messages.
What are the restricted industries for SMS marketing in Guernsey?
Gambling, adult content, financial services, and healthcare are restricted industries for SMS marketing. These sectors may require special permits or adherence to specific regulatory compliance measures before sending marketing messages.
How to manage API rate limits for SMS in Guernsey?
The default rate limit is one message per second per destination, with batch sending capped at 100 messages per request. Implement queuing systems for high-volume campaigns and use exponential backoff for retries to efficiently manage throughput within these limits.
What are the recommended SMS API integrations for Guernsey?
Twilio, Sinch, MessageBird, and Plivo offer reliable SMS API integrations for Guernsey with carrier connections for delivery and various features. They provide documentation and code examples in several programming languages.
What is the MCC for Guernsey?
The Mobile Country Code (MCC) for Guernsey is 234. This code is used in conjunction with the Mobile Network Code (MNC) to uniquely identify mobile network operators within Guernsey.
Why is number portability not available in Guernsey?
Number portability is not available in Guernsey. Therefore, mobile numbers remain tied to their original assigned carrier, which aids reliable message routing.