sms compliance

Sent logo
Sent TeamMay 3, 2025 / sms compliance / Article

How to Send SMS in Guinea: Complete Guide to Compliance and Best Practices

Explore Guinea SMS: compliance (ARPT), features & best practices. Understand SMS limitations, sender ID pre-registration, & error codes (e.g., 21614). Includes code snippets for Twilio, Sinch, & MessageBird SMS API integration. Optimize SMS strategy for Guinea's mobile networks.

Guinea SMS Best Practices, Compliance, and Features

Guinea SMS Market Overview: Network Infrastructure and Reach

Locale name:Guinea
ISO code:GN
RegionMiddle East & Africa
Mobile country code (MCC)611
Dialing Code+224

Market Conditions: When sending SMS in Guinea, SMS remains the most reliable communication channel, particularly in rural areas where internet connectivity is limited. Major operators MTN Guinea and Orange Guinea provide SMS services across a developing telecommunications infrastructure. OTT messaging apps are gaining traction in urban areas, but SMS maintains broader reach and reliability for business communications in Guinea.

What SMS Features Are Supported in Guinea?

When sending SMS in Guinea, understanding network capabilities is essential for reliable message delivery. Guinea's telecommunications infrastructure supports basic SMS functionality through major carriers MTN Guinea and Orange Guinea, though with specific limitations on advanced features. Design your messaging strategy around one-way communications for optimal results.

Two-way SMS Support

Two-way SMS is not supported in Guinea. Design your messaging strategies for one-way communications only.

Concatenated Messages (Segmented SMS)

Support: Not supported

Message length rules: Keep messages within single-message limits to ensure reliable delivery:

  • GSM-7 encoding: 160 characters
  • UCS-2 encoding: 70 characters (use for local language characters)

MMS Support

MMS messages automatically convert to SMS with an embedded URL link. Use URL shorteners and ensure media hosting is accessible in Guinea for optimal delivery.

Recipient Phone Number Compatibility

Number Portability

Number portability is not available. Phone numbers remain tied to their original mobile network operators. Maintain accurate carrier information in your contact lists to ensure proper message routing.

Identifying carrier from phone number:

  • Maintain a database of carrier prefixes for Guinea numbers
  • Use carrier lookup APIs to verify operator before sending
  • Keep prefix databases updated as operators expand

Sending SMS to Landlines

You cannot send SMS to landline numbers in Guinea. Attempts will fail with a 400 response error (code 21614). Failed messages won't appear in logs, and your account won't be charged.

Validate phone numbers before sending:

  • Implement number validation in your application
  • Use phone number validation libraries that support Guinea formats
  • Maintain a blacklist of known landline prefixes

The Law on Cybersecurity and Personal Data Protection governs SMS communications in Guinea. The Posts and Telecommunications Regulatory Authority (ARPT) enforces compliance.

Explicit Consent Requirements:

  • Obtain written or electronic consent before sending marketing messages
  • Maintain accessible consent records
  • State the purpose of communication clearly during opt-in
  • Ensure consent is specific to SMS communications

Best Practices for Consent Collection:

  • Use double opt-in verification
  • Maintain detailed consent logs with timestamp and opt-in method
  • Provide clear terms and conditions during signup
  • Regularly maintain and update your consent database

HELP/STOP and Other Commands

Support standard STOP commands in all SMS campaigns:

Requirements:

  • Recognize HELP and STOP keywords in French and local languages
  • Process STOP commands immediately and send confirmation
  • Include contact information and opt-out instructions in HELP messages

Example implementations:

CommandFrenchResponse Action
STOPSTOP, ARRÊTImmediate opt-out, send confirmation
HELPAIDE, HELPSend contact info and opt-out instructions

Do Not Call / Do Not Disturb Registries

Guinea does not maintain an official Do Not Call registry. Maintain your own suppression lists:

  • Honor opt-out requests within 24 hours
  • Implement automated opt-out processing
  • Regularly clean contact databases

Time Zone Sensitivity

Guinea observes UTC+0. Send messages during appropriate hours:

Recommended sending times:

  • Standard messages: 8:00 AM – 8:00 PM local time
  • Emergency messages: Limit outside business hours
  • Ramadan: Adjust timing for religious observances
  • Religious holidays: Avoid sending messages

What Are the Phone Number and Sender ID Options for Guinea SMS?

Alphanumeric Sender ID

Operator network capability: Supported with pre-registration

Registration requirements: Global pre-registration mandatory; no segregation between international and domestic traffic

Sender ID preservation: Yes, when properly registered

Provisioning time: 3 weeks

Additional requirements:

  • Promotional content not allowed
  • Avoid generic sender IDs (InfoSMS, INFO, etc.)

Registration process:

  1. Submit sender ID application to your SMS provider
  2. Provide business documentation and use case justification
  3. Wait for operator approval (approximately 3 weeks)
  4. Test sender ID before launching campaigns

Long Codes

Support:

  • Domestic long codes: Not supported
  • International long codes: Supported with limitations

Sender ID preservation: No preservation for international numbers

Use cases:

  • Transactional messaging
  • Customer support
  • Account notifications

Limitations for international long codes:

  • Lower delivery rates compared to alphanumeric sender IDs
  • May be filtered by some carriers
  • No two-way messaging support

Short Codes

Support: Available through mobile operators

Provisioning time: Carrier-dependent (typically 4 – 12 weeks)

Use cases:

  • Marketing campaigns
  • Two-factor authentication
  • Customer service

Implementation requirements:

  • Contact MTN or Orange directly for short code acquisition
  • Provide campaign details and expected volume
  • Complete carrier-specific application forms
  • Budget for setup fees and monthly rental costs

Technical specifications:

  • Shared short codes: Available, lower cost, shared with other businesses
  • Dedicated short codes: Higher cost, exclusive use, better branding
  • Character limits: Standard SMS limits apply

What Content and Industries Are Restricted for SMS in Guinea?

Restricted Industries:

  • Gambling and betting services
  • Adult content
  • Cryptocurrency promotions
  • Unauthorized financial services

Regulated Sectors:

  • Banking: Requires additional verification from ARPT and carrier pre-approval
  • Healthcare: Must maintain patient confidentiality per data protection laws
  • Government services: Requires official authorization from relevant ministry

Content Filtering

Known Carrier Rules:

  • URLs must be from approved domains
  • Message content screened for prohibited terms
  • Character limit enforcement
  • Spam pattern detection

Best Practices:

  • Use approved templates for sensitive content
  • Maintain consistent sender IDs
  • Follow local language guidelines
  • Test messages with carriers before bulk sending

URL and domain approval:

  • Submit domains to your SMS provider for carrier approval
  • Use full URLs rather than shorteners when possible for regulated industries
  • For MMS-to-SMS conversion, URL shorteners may be necessary despite filtering concerns

SMS Best Practices: How to Optimize Message Delivery in Guinea

Messaging Strategy

  • Keep messages under 160 characters
  • Include clear call-to-actions
  • Use approved sender IDs consistently
  • Maintain professional tone and formatting

Sending Frequency and Timing

Recommended frequency:

  • Limit to 4 – 5 messages per month per recipient
  • Space out bulk campaigns (minimum 48 hours between sends)
  • Avoid weekend messaging unless urgent
  • Respect religious and cultural observances

Campaign scheduling:

  • Schedule large campaigns during off-peak hours (10:00 AM – 4:00 PM)
  • Test with small batches before full deployment
  • Monitor delivery rates and adjust timing as needed

Localization

Primary languages: French and local dialects

Language considerations:

  • French: Primary business language
  • Major local languages: Pular (Fulani), Malinké, Susu
  • Use appropriate date formats: DD/MM/YYYY
  • Use 24-hour time format: 14:00 instead of 2:00 PM
  • Consider cultural sensitivities in messaging tone

Examples:

  • Culturally appropriate: "Votre commande est prête" (Your order is ready)
  • Avoid: Messages during Friday prayers or Ramadan fasting hours

Opt-Out Management

  • Process opt-outs within 24 hours
  • Maintain centralized opt-out database
  • Confirm opt-out receipt
  • Regular database cleaning

Testing and Monitoring

Test across major carriers:

  • MTN Guinea
  • Orange Guinea

Key metrics to track:

  • Delivery rate (target: >95%)
  • Failed deliveries by carrier
  • Average delivery time
  • Opt-out rate (target: <2%)
  • Engagement metrics (click-through rates for URLs)

Troubleshooting poor delivery rates:

  1. Verify sender ID registration status
  2. Check message content for filtered terms
  3. Confirm phone number formatting (+224 prefix)
  4. Review carrier-specific delivery reports
  5. Contact SMS provider technical support

Guinea SMS API Integration Guide: Twilio, Sinch, and MessageBird

Twilio

Twilio provides robust SMS API support for Guinea. Here's how to implement it:

typescript
import { Twilio } from 'twilio';

// Initialize Twilio client with your credentials
const client = new Twilio(
  process.env.TWILIO_ACCOUNT_SID,
  process.env.TWILIO_AUTH_TOKEN
);

// Validate Guinea phone number format
function validateGuineaNumber(phoneNumber: string): boolean {
  const guineaRegex = /^\+224[0-9]{8,9}$/;
  return guineaRegex.test(phoneNumber);
}

// Function to send SMS to Guinea
async function sendSMSToGuinea(
  to: string,
  message: string,
  senderId: string
): Promise<void> {
  try {
    // Ensure phone number is in E.164 format for Guinea (+224)
    const formattedNumber = to.startsWith('+224') ? to : `+224${to}`;

    // Validate before sending
    if (!validateGuineaNumber(formattedNumber)) {
      throw new Error('Invalid Guinea phone number format');
    }

    const response = await client.messages.create({
      body: message,
      from: senderId, // Pre-registered alphanumeric sender ID
      to: formattedNumber,
      statusCallback: 'https://your-webhook.com/sms/status'
    });

    console.log(`Message sent successfully! SID: ${response.sid}`);
  } catch (error) {
    console.error('Error sending message:', error);
    throw error;
  }
}

Webhook implementation example:

typescript
// Express webhook endpoint for delivery status
app.post('/sms/status', (req, res) => {
  const { MessageSid, MessageStatus, To, ErrorCode } = req.body;

  console.log(`Message ${MessageSid} to ${To}: ${MessageStatus}`);

  if (ErrorCode) {
    console.error(`Error code: ${ErrorCode}`);
  }

  res.sendStatus(200);
});

Sinch

Sinch offers comprehensive SMS capabilities for Guinea:

typescript
import { SinchClient } from '@sinch/sdk-core';

// Initialize Sinch client
const sinchClient = new SinchClient({
  projectId: process.env.SINCH_PROJECT_ID,
  apiToken: process.env.SINCH_API_TOKEN
});

// Function to send SMS via Sinch
async function sendSinchSMS(
  recipientNumber: string,
  messageText: string
): Promise<void> {
  try {
    const response = await sinchClient.sms.batches.send({
      to: [`+224${recipientNumber}`],
      from: 'YOUR_SENDER_ID',
      body: messageText,
      deliveryReport: 'summary'
    });

    console.log('Message batch ID:', response.id);
  } catch (error) {
    console.error('Sinch SMS error:', error);
    throw error;
  }
}

MessageBird

MessageBird provides reliable SMS delivery to Guinea:

typescript
import { MessageBird } from 'messagebird';

// Initialize MessageBird client
const messagebird = new MessageBird(process.env.MESSAGEBIRD_API_KEY);

// Function to send SMS via MessageBird
async function sendMessageBirdSMS(
  to: string,
  message: string
): Promise<void> {
  const params = {
    originator: 'YOUR_SENDER_ID',
    recipients: [`+224${to}`],
    body: message,
    datacoding: 'unicode' // Use for local language support
  };

  try {
    const response = await new Promise((resolve, reject) => {
      messagebird.messages.create(params, (err, response) => {
        if (err) reject(err);
        resolve(response);
      });
    });

    console.log('MessageBird response:', response);
  } catch (error) {
    console.error('MessageBird error:', error);
    throw error;
  }
}

Choosing the right provider:

ProviderBest ForDelivery RatePrice Range
TwilioEnterprise, high volumeHigh$$$
SinchMid-market, batch sendingHigh$$
MessageBirdSmall business, flexibilityMedium-High$

Considerations:

  • Twilio: Best documentation, extensive webhooks, higher cost
  • Sinch: Strong batch processing, good for campaigns
  • MessageBird: Cost-effective, good for startups

API Rate Limits and Throughput

Provider-specific rate limits:

ProviderDefault Rate LimitBurst CapacityNotes
Twilio100 msg/sec1,000 msg/burstContact support for higher limits
Sinch200 msg/sec2,000 msg/burstBatch API recommended for high volume
MessageBird50 msg/sec500 msg/burstFree tier has lower limits

Best Practices for High Volume:

  • Use batch APIs for volumes over 1,000 per hour
  • Implement exponential backoff for retry logic
  • Queue messages during peak times
  • Schedule large campaigns during off-peak hours (10:00 AM – 4:00 PM UTC+0)
  • Monitor throughput metrics continuously

Error Handling and Reporting

Common Error Scenarios:

  • Invalid phone numbers
  • Network timeouts
  • Rate limit exceeded
  • Invalid sender ID

Error code mapping and retry strategies:

Error TypeRetry StrategyAction
Network timeoutRetry with exponential backoffMax 3 attempts
Rate limit exceededQueue and retry after cooldownWait period based on provider
Invalid numberDo not retryLog and remove from list
Invalid sender IDDo not retryFix configuration

Logging Best Practices:

typescript
// Example error handling implementation
interface SMSError {
  code: string;
  message: string;
  recipient: string;
  retries?: number;
}

function isRetryableError(error: SMSError): boolean {
  const retryableCodes = ['TIMEOUT', 'RATE_LIMIT', 'NETWORK_ERROR'];
  return retryableCodes.includes(error.code);
}

function scheduleRetry(errorLog: any): void {
  const backoffMs = Math.pow(2, errorLog.retryCount) * 1000;
  setTimeout(() => {
    // Retry logic here
    console.log(`Retrying after ${backoffMs}ms`);
  }, backoffMs);
}

function handleSMSError(error: SMSError): void {
  const errorLog = {
    timestamp: new Date().toISOString(),
    errorCode: error.code,
    errorMessage: error.message,
    recipientNumber: error.recipient,
    retryCount: error.retries || 0
  };

  // Log to monitoring system
  console.error('SMS Error:', errorLog);

  // Implement retry logic based on error type
  if (isRetryableError(error)) {
    scheduleRetry(errorLog);
  }
}

Recap and Additional Resources

Key Takeaways

  1. Compliance First:

    • Obtain explicit consent before sending
    • Respect time zone restrictions (8:00 AM – 8:00 PM UTC+0)
    • Maintain proper opt-out mechanisms (process within 24 hours)
  2. Technical Considerations:

    • Use pre-registered alphanumeric sender IDs (3-week provisioning)
    • Implement proper error handling with retry logic
    • Monitor delivery rates by carrier (target: >95%)
  3. Best Practices:

    • Localize content for French and local languages
    • Maintain clean contact lists with regular database cleaning
    • Test regularly across MTN and Orange carriers

Next Steps

  1. Technical Setup:

    • Register with preferred SMS provider (compare Twilio, Sinch, MessageBird)
    • Implement API integration with error handling
    • Set up monitoring and logging infrastructure
  2. Compliance:

  3. Testing:

    • Submit sender ID registration (allow 3 weeks)
    • Test message delivery across both carriers
    • Monitor success rates and optimize based on data

Additional Resources

Contact Information:

  • ARPT Technical Support: support@arpt.gov.gn
  • MTN Guinea Customer Service: Contact via your SMS provider
  • Orange Guinea Customer Service: Contact via your SMS provider

Troubleshooting Resources:

  • Create a support ticket with your SMS provider first
  • Contact ARPT for regulatory compliance questions
  • Join Guinea SMS developer communities for peer support

Frequently Asked Questions

How to send SMS messages in Guinea?

Utilize SMS APIs like Twilio, Sinch, or MessageBird, ensuring phone numbers are in E.164 format (+224) and using a pre-registered alphanumeric sender ID. Remember to implement error handling and status callbacks for tracking.

What is the SMS market like in Guinea?

Guinea's mobile market has a growing SMS adoption rate, especially in rural areas with limited internet. While OTT apps are gaining traction in cities, SMS remains the most reliable channel.

Why does Guinea not support two-way SMS?

According to current network capabilities, two-way SMS is not supported. Businesses should focus on one-way communication strategies for their messaging campaigns.

When should I send SMS messages in Guinea?

Adhere to Guinea's UTC+0 time zone, sending messages between 8:00 AM and 8:00 PM local time. Avoid messaging during religious holidays and weekends unless urgent, and consider Ramadan timing.

Can I send marketing SMS messages in Guinea?

Yes, but explicit consent (written or electronic) is required beforehand. Maintain comprehensive consent records, clearly state the communication's purpose during opt-in, and use double opt-in verification.

What are the rules for Alphanumeric Sender ID in Guinea?

Alphanumeric Sender IDs are supported but require global pre-registration. Promotional content is prohibited, generic IDs are discouraged, and the provisioning time is approximately three weeks.

What SMS content restrictions exist in Guinea?

Restricted industries include gambling, adult content, cryptocurrency promotions, and unauthorized financial services. Regulated sectors like banking and healthcare have additional requirements.

What is the character limit for SMS in Guinea?

Standard SMS character limits apply (typically 160 characters). Concatenated messaging is not supported, so ensure your messages fit within this limit.

How to handle SMS opt-outs in Guinea?

All SMS campaigns must support STOP commands in French and local languages. Process opt-out requests within 24 hours, maintain a centralized opt-out database, and confirm opt-out receipt.

How do I send SMS to Guinea using Twilio?

Initialize the Twilio client with your credentials, format the recipient number in E.164 format (+224), use your pre-registered sender ID, and utilize status callbacks for delivery tracking. Refer to the code example in the guide.

How are MMS messages handled in Guinea?

MMS messages are automatically converted to SMS with an embedded URL link. Use URL shorteners and ensure media hosting is accessible in Guinea for best delivery.

What is the process for registering a sender ID in Guinea?

Global pre-registration is required for alphanumeric sender IDs. Generic sender IDs are not recommended, and promotional content is not allowed when using an alphanumeric sender ID.

What are the best practices for high-volume SMS sending in Guinea?

Use batch APIs, implement error handling and retries, monitor throughput, and schedule campaigns during off-peak hours. The default rate limit is 100 messages per second.

Where can I find additional resources on SMS regulations in Guinea?

Consult the ARPT Guinea Official Website, Guinea Telecommunications Law, and the SMS Best Practices Guide linked in the article for further details and official information.