This comprehensive guide covers everything developers and system administrators need to know about Guadeloupe's phone number system. Learn how to format, validate, and store Guadeloupe phone numbers with country code +590, implement number portability checks, handle international dialing, and integrate telecom APIs for production applications.
Background
Guadeloupe, a French overseas territory, operates a telecommunications system under ARCEP (Autorité de Régulation des Communications électroniques et des Postes), France's telecom regulatory authority. The system follows French regulations with Caribbean-specific adaptations. The infrastructure has modernized significantly, especially in mobile networks, with expanding 4G LTE and 5G coverage. Four main operators – Orange, Digicel, Free Caraïbe, and Outremer Telecom – compete in the market. Number portability lets users switch carriers while keeping their numbers.
Operator Comparison
Operator
Network Type
Coverage Focus
Notable Services
Orange
Mobile/Fixed
Nationwide
5G, fiber optic
Digicel
Mobile
Islands-wide
Regional roaming
Free Caraïbe
Mobile/Fixed
Urban centers
Competitive pricing
Outremer Telecom
Fixed
Business sector
Enterprise solutions
Guadeloupe Phone Number Formats
Understand Guadeloupe's phone number structure for proper handling and validation in your applications.
Structure Breakdown
Numbers follow a predictable pattern:
International Format:+590 XXX XX XX XX (Example: +590 690 12 34 56)
National Format:0XXX XX XX XX (Example: 0690 12 34 56)
Best Practice: Store phone numbers in E.164 international format (+590) for maximum compatibility and to avoid ambiguity. This simplifies integration with international systems and reduces dialing errors.
Number Types
Number Type
Format
Example
Usage Context
Landline
+590 590 XX XX XX
+590 590 27 12 34
Fixed location services
Mobile
+590 690 XX XX XX
+590 690 12 34 56
Mobile services
Toll-Free
+590 800 XX XX XX
+590 800 12 34 56
Free calls for the caller
Premium Rate
+590 89X XX XX XX
+590 891 23 45 67
Services with higher charges
How to Dial Guadeloupe Phone Numbers
Domestic Calls
Dial within Guadeloupe using this pattern:
Dial 0 (national prefix)
Dial the 9-digit local number
Examples:
Mobile to mobile: 0690 12 34 56
Landline to landline: 0590 27 12 34
Mobile to landline: 0590 27 12 34
Guadeloupe uses nationwide numbering – no area codes within the territory.
International Calls
Outbound from Guadeloupe: Dial 00 + country code + number
Inbound to Guadeloupe: Dial +590 + local number (omit the leading 0)
Key Point: Always omit the leading 0 when you dial a Guadeloupe number from outside the country.
Common Dialing Errors
Error
Symptom
Solution
Keeping the 0 prefix
Call fails internationally
Use +590 690… not +590 0690…
Missing +590
Invalid number format
Add country code for all international storage
Using 00 domestically
Call routing issues
Use 0 prefix for domestic calls only
Wrong carrier prefix
Call doesn't connect
Verify number type (590 for landline, 690 for mobile)
Phone Number Validation
Implement robust phone number validation to ensure data integrity. Use regular expressions to validate Guadeloupe number formats:
{"phone_number":"+590690123456","portable":false,"reason":"Recent port within 90 days","eligible_date":"2025-02-15"}
Error (400/401/429/500):
JSON
{"error":"invalid_number","message":"The provided number format is invalid"}
Rate Limits: 100 requests per minute per API key.
Network Coverage and Infrastructure
Guadeloupe has modern telecommunications infrastructure with widespread 4G LTE coverage reaching approximately 95% of the population (ARCEP data, Q3 2024). 5G deployment is expanding in major cities. Fixed-line infrastructure in urban areas provides high-speed connectivity.
Coverage Details
Area Type
4G Coverage
5G Coverage
Typical Speed
Pointe-à-Pitre (urban)
99%
Available
50–150 Mbps
Basse-Terre (urban)
99%
Limited
40–120 Mbps
Coastal towns
95–98%
Planned
30–100 Mbps
Rural areas
80–90%
Not available
10–50 Mbps
Remote/mountainous
60–75%
Not available
5–30 Mbps
Known Coverage Limitations:
Mountainous interior regions (Basse-Terre National Park)
Some offshore islands (Les Saintes, Marie-Galante – coverage varies by operator)
Deep valleys and heavily forested areas
Network Monitoring
Integrate network status checks to enhance user experience:
Implementation Note: Replace API_ENDPOINT and API_KEY with your provider's details. Orange and Digicel offer network status APIs for enterprise customers. Contact your carrier's business division for API access and documentation.
Database Schema for Phone Numbers
Design your database schema to efficiently store and manage Guadeloupe phone number data:
SQL
CREATE TABLE phone_numbers (
id SERIAL PRIMARY KEY,
number VARCHAR(20) NOT NULLUNIQUECHECK (number ~'^\+590(590|690|800|89\d)\d{6}$'), -- Enforced [E.164 format](https://www.sent.dm/resources/e164-phone-format) and validation
type VARCHAR(20) CHECK (type IN ('landline', 'mobile', 'toll_free', 'premium_rate')),
carrier_id INTEGERREFERENCES carriers(id),
ported BOOLEANDEFAULTFALSE,
porting_date TIMESTAMP,
created_at TIMESTAMPDEFAULTCURRENT_TIMESTAMP,
updated_at TIMESTAMPDEFAULTCURRENT_TIMESTAMP
);
This schema enforces E.164 format, categorizes number types, and tracks porting status.
Index Recommendations
SQL
-- Optimize lookups by numberCREATE INDEX idx_phone_number ON phone_numbers(number);
-- Optimize queries by carrier and typeCREATE INDEX idx_carrier_type ON phone_numbers(carrier_id, type);
-- Optimize porting history queriesCREATE INDEX idx_porting_date ON phone_numbers(porting_date) WHERE ported =TRUE;
-- Optimize time-based queriesCREATE INDEX idx_created_at ON phone_numbers(created_at);
Data Privacy and Compliance
As a French territory, Guadeloupe falls under GDPR. Follow these requirements:
Data Collection:
Obtain explicit consent before storing phone numbers
Document the legal basis for processing (consent, contract, legitimate interest)
Provide clear privacy notices
Data Retention:
Define retention periods based on business needs (typically 2–5 years for inactive accounts)
Implement automatic deletion after retention period
Test thoroughly to ensure reliability. Implement unit tests for number formatting, validation, and API integrations. Cover the entire lifecycle from input to storage and retrieval.
JavaScript
// Example using Jestconst { validateGuadeloupeNumber } = require('./phone-utils');
describe('Guadeloupe Phone Number Validation', () => {
it('should validate a correctly formatted mobile number', () => {
expect(validateGuadeloupeNumber('+590690123456')).toBe(true);
});
it('should reject an invalid number format', () => {
expect(validateGuadeloupeNumber('59069012345')).toBe(false);
});
});
This example demonstrates basic validation. Expand your test suite to cover edge cases:
Frequently Asked Questions About Guadeloupe Phone Numbers
Q: Can I use a Guadeloupe number for SMS verification?
Yes. All mobile numbers (690 prefix) support SMS. Ensure your SMS provider supports French Caribbean destinations. For more details on SMS implementation, see our SMS API integration guide.
Q: Do Guadeloupe numbers work with WhatsApp and Signal?
Yes. Use the full international format (+590 690…) when registering.
Q: What happens to my number if I move from Guadeloupe?
You can keep your number if you maintain an active account. Some carriers offer international roaming or virtual presence options.
Q: Are there number reservation services?
Yes. Contact carriers directly for vanity numbers or specific number patterns. Fees vary by carrier and number desirability.
Q: How do I handle numbers from Saint Barthélemy and Saint Martin?
Both territories use different country codes: +590 for Saint Martin (shared with Guadeloupe) and +590 for Saint Barthélemy. The numbering system is shared with Guadeloupe.
Troubleshooting
Issue: Number validation fails in production but works locally
Cause: Different regex engines or character encoding issues
Solution: Use a consistent validation library across environments and normalize input to remove hidden characters
Issue: API calls return 401 Unauthorized
Cause: Expired or invalid API token
Solution: Implement token refresh logic and verify token permissions
Issue: Database queries are slow
Cause: Missing indexes on frequently queried columns
Solution: Add indexes on number, carrier_id, and created_at columns
Issue: Users report they can't port their number
Cause: Outstanding balance, recent port, or incorrect RIO code
Solution: Verify account status with current carrier and obtain valid RIO code
Guadeloupe phone numbers follow the international format +590 XXX XX XX XX and the national format 0XXX XX XX XX. It's recommended to store numbers in the international format for better compatibility with global systems and to avoid ambiguity when dialing internationally. For example, a mobile number might be +590 690 12 34 56.
To call Guadeloupe from another country, dial the international prefix (00 or +), followed by 590 (Guadeloupe's country code), and then the local number without the leading '0'. Ensure you drop the initial zero from the national format when dialing internationally.
You can use a regular expression like /^\+590(590|690|800|89\d)\d{6}$/ to validate Guadeloupe numbers. This regex ensures the number starts with +590, followed by a valid prefix (590, 690, 800, or 89X), and then six more digits. Remember to remove any whitespace before validation.
Guadeloupe uses the country code +590. Within Guadeloupe, specific prefixes like 590 for landlines, 690 for mobile, 800 for toll-free, and 89X for premium rate numbers designate the type of service. These are not area codes in the traditional sense but serve a similar purpose.
Storing phone numbers in the international format (+590) ensures compatibility with international systems, simplifies integration, and reduces dialing errors. This format is essential for applications and systems handling calls from or to various countries.
Guadeloupe follows French regulations for number portability, allowing users to switch carriers while keeping their number. The process is designed to be seamless with a maximum timeframe of 10 business days, applies to both mobile and landline numbers, and uses real-time systems for validation.
Guadeloupe boasts modern infrastructure, with 95% 4G LTE coverage and growing 5G deployment in cities. Fixed-line infrastructure is also prevalent, primarily in urban areas, offering high-speed connectivity.
You can integrate with network status check APIs by sending location data (latitude and longitude) to your provider's endpoint. This allows your application to adapt based on real-time network availability and enhance user experience.
Store numbers in E.164 format (+590 XXX XX XX XX) and use a dedicated type field to categorize numbers (landline, mobile, etc.). Tracking porting status and adding indexes for efficient queries further improves database performance and manageability.
Thorough testing is crucial; implement unit tests to validate number formatting, validation logic, and integration with external APIs. End-to-end tests should cover the entire number lifecycle, including input, storage, and retrieval, ensuring data integrity.
Common Guadeloupe number types include landlines (+590 590 XX XX XX), mobile (+590 690 XX XX XX), toll-free (+590 800 XX XX XX), and premium rate (+590 89X XX XX XX) numbers. These prefixes help identify the service associated with each number.
ARCEP (Autorité de Régulation des Communications Électroniques et des Postes), the French regulatory authority, oversees Guadeloupe's telecommunications system. This ensures adherence to French regulations adapted for the Caribbean context.
Several operators, including Orange, Digicel, Free Caraïbe, and Outremer Telecom, compete in Guadeloupe's telecommunications market, driving innovation and offering various services. This competition benefits consumers through choice and potentially better pricing.
This comprehensive guide covers everything developers and system administrators need to know about Guadeloupe's phone number system. Learn how to format, validate, and store Guadeloupe phone numbers with country code +590, implement number portability checks, handle international dialing, and integrate telecom APIs for production applications.
Background
Guadeloupe, a French overseas territory, operates a telecommunications system under ARCEP (Autorité de Régulation des Communications électroniques et des Postes), France's telecom regulatory authority. The system follows French regulations with Caribbean-specific adaptations. The infrastructure has modernized significantly, especially in mobile networks, with expanding 4G LTE and 5G coverage. Four main operators – Orange, Digicel, Free Caraïbe, and Outremer Telecom – compete in the market. Number portability lets users switch carriers while keeping their numbers.
Operator Comparison
Guadeloupe Phone Number Formats
Understand Guadeloupe's phone number structure for proper handling and validation in your applications.
Structure Breakdown
Numbers follow a predictable pattern:
+590 XXX XX XX XX(Example: +590 690 12 34 56)0XXX XX XX XX(Example: 0690 12 34 56)Best Practice: Store phone numbers in E.164 international format (+590) for maximum compatibility and to avoid ambiguity. This simplifies integration with international systems and reduces dialing errors.
Number Types
+590 590 XX XX XX+590 690 XX XX XX+590 800 XX XX XX+590 89X XX XX XXHow to Dial Guadeloupe Phone Numbers
Domestic Calls
Dial within Guadeloupe using this pattern:
0(national prefix)Examples:
0690 12 34 560590 27 12 340590 27 12 34Guadeloupe uses nationwide numbering – no area codes within the territory.
International Calls
00+ country code + number+590+ local number (omit the leading0)Key Point: Always omit the leading
0when you dial a Guadeloupe number from outside the country.Common Dialing Errors
0prefix+590 690…not+590 0690…+59000domestically0prefix for domestic calls onlyPhone Number Validation
Implement robust phone number validation to ensure data integrity. Use regular expressions to validate Guadeloupe number formats:
const validateGuadeloupeNumber = (number) => { // Remove whitespace, dashes, parentheses const cleanedNumber = number.replace(/[\s\-()]/g, ''); const regex = /^\+590(590|690|800|89\d)\d{6}$/; return regex.test(cleanedNumber); }; // Example usage console.log(validateGuadeloupeNumber('+590 690 12 34 56')); // true console.log(validateGuadeloupeNumber('0690123456')); // false (missing +590)This regex validates all standard number formats and handles common input variations (spaces, dashes, parentheses).
Error Handling
Provide clear, actionable feedback for invalid numbers:
function validateWithFeedback(number) { const cleaned = number.replace(/[\s\-()]/g, ''); if (!cleaned.startsWith('+590')) { return { valid: false, error: 'Number must start with +590. Example: +590 690 12 34 56' }; } if (cleaned.length !== 13) { return { valid: false, error: `Number must be 13 digits (including +590). You entered ${cleaned.length} digits.` }; } const prefix = cleaned.substring(4, 7); const validPrefixes = ['590', '690', '800', '890', '891', '892', '893', '894', '895', '896', '897', '898', '899']; if (!validPrefixes.includes(prefix)) { return { valid: false, error: `Invalid prefix ${prefix}. Use 590 (landline), 690 (mobile), 800 (toll-free), or 89X (premium).` }; } return { valid: true }; }Number Portability
Guadeloupe follows French regulations for number portability. The process completes within 10 business days maximum. Key features:
Porting Process
From a user perspective:
Requirements:
Costs: Free for users – new carrier may charge activation fees, but porting itself has no regulatory fees.
Developer Integration
Integrate with portability check APIs to verify number eligibility and status:
async function checkPortability(number) { try { const response = await fetch(`/api/v1/portability/check`, { method: 'POST', headers: { 'Authorization': `Bearer ${API_TOKEN}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ phone_number: number }) }); if (response.status === 429) { throw new Error('Rate limit exceeded. Try again in 60 seconds.'); } if (!response.ok) { throw new Error(`API error: ${response.status}`); } return await response.json(); } catch (error) { console.error('Portability check failed:', error); throw error; } }Implementation Note: Replace
/api/v1/portability/checkandAPI_TOKENwith your specific API endpoint and authentication token.API Response Format
Success (200):
{ "phone_number": "+590690123456", "portable": true, "current_carrier": "Orange", "number_type": "mobile", "last_ported": "2024-08-15T10:30:00Z", "restrictions": null }Ineligible (200):
{ "phone_number": "+590690123456", "portable": false, "reason": "Recent port within 90 days", "eligible_date": "2025-02-15" }Error (400/401/429/500):
{ "error": "invalid_number", "message": "The provided number format is invalid" }Rate Limits: 100 requests per minute per API key.
Network Coverage and Infrastructure
Guadeloupe has modern telecommunications infrastructure with widespread 4G LTE coverage reaching approximately 95% of the population (ARCEP data, Q3 2024). 5G deployment is expanding in major cities. Fixed-line infrastructure in urban areas provides high-speed connectivity.
Coverage Details
Known Coverage Limitations:
Network Monitoring
Integrate network status checks to enhance user experience:
async function getNetworkStatus(latitude, longitude) { try { const response = await fetch(`${API_ENDPOINT}/network/status`, { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ latitude, longitude }) }); if (!response.ok) { // Fallback to default "unknown" status return { status: 'unknown', coverage: null }; } return await response.json(); } catch (error) { console.warn('Network status check unavailable:', error); return { status: 'unavailable', coverage: null }; } }Implementation Note: Replace
API_ENDPOINTandAPI_KEYwith your provider's details. Orange and Digicel offer network status APIs for enterprise customers. Contact your carrier's business division for API access and documentation.Database Schema for Phone Numbers
Design your database schema to efficiently store and manage Guadeloupe phone number data:
CREATE TABLE phone_numbers ( id SERIAL PRIMARY KEY, number VARCHAR(20) NOT NULL UNIQUE CHECK (number ~ '^\+590(590|690|800|89\d)\d{6}$'), -- Enforced [E.164 format](https://www.sent.dm/resources/e164-phone-format) and validation type VARCHAR(20) CHECK (type IN ('landline', 'mobile', 'toll_free', 'premium_rate')), carrier_id INTEGER REFERENCES carriers(id), ported BOOLEAN DEFAULT FALSE, porting_date TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );This schema enforces E.164 format, categorizes number types, and tracks porting status.
Index Recommendations
-- Optimize lookups by number CREATE INDEX idx_phone_number ON phone_numbers(number); -- Optimize queries by carrier and type CREATE INDEX idx_carrier_type ON phone_numbers(carrier_id, type); -- Optimize porting history queries CREATE INDEX idx_porting_date ON phone_numbers(porting_date) WHERE ported = TRUE; -- Optimize time-based queries CREATE INDEX idx_created_at ON phone_numbers(created_at);Data Privacy and Compliance
As a French territory, Guadeloupe falls under GDPR. Follow these requirements:
Data Collection:
Data Retention:
Security Measures:
User Rights:
-- Add retention tracking ALTER TABLE phone_numbers ADD COLUMN retention_until TIMESTAMP; ALTER TABLE phone_numbers ADD COLUMN consent_date TIMESTAMP; ALTER TABLE phone_numbers ADD COLUMN legal_basis VARCHAR(50);NoSQL Alternative (MongoDB)
const phoneNumberSchema = new Schema({ number: { type: String, required: true, unique: true, match: /^\+590(590|690|800|89\d)\d{6}$/ }, type: { type: String, enum: ['landline', 'mobile', 'toll_free', 'premium_rate'], required: true }, carrier: { type: Schema.Types.ObjectId, ref: 'Carrier' }, ported: { type: Boolean, default: false }, portingDate: Date, retentionUntil: Date, consentDate: Date, legalBasis: String, createdAt: { type: Date, default: Date.now }, updatedAt: { type: Date, default: Date.now } }); // Indexes phoneNumberSchema.index({ number: 1 }); phoneNumberSchema.index({ carrier: 1, type: 1 }); phoneNumberSchema.index({ portingDate: 1 }, { sparse: true });Testing and Quality Assurance
Test thoroughly to ensure reliability. Implement unit tests for number formatting, validation, and API integrations. Cover the entire lifecycle from input to storage and retrieval.
// Example using Jest const { validateGuadeloupeNumber } = require('./phone-utils'); describe('Guadeloupe Phone Number Validation', () => { it('should validate a correctly formatted mobile number', () => { expect(validateGuadeloupeNumber('+590690123456')).toBe(true); }); it('should reject an invalid number format', () => { expect(validateGuadeloupeNumber('59069012345')).toBe(false); }); });This example demonstrates basic validation. Expand your test suite to cover edge cases:
describe('Edge Cases', () => { const testCases = [ { input: '+590 690 12 34 56', expected: true, desc: 'with spaces' }, { input: '+590-690-12-34-56', expected: true, desc: 'with dashes' }, { input: '+590(690)123456', expected: true, desc: 'with parentheses' }, { input: '0690123456', expected: false, desc: 'missing country code' }, { input: '+590690123', expected: false, desc: 'too short' }, { input: '+59069012345678', expected: false, desc: 'too long' }, { input: '+590990123456', expected: false, desc: 'invalid prefix' }, { input: '+590 800 00 00 00', expected: true, desc: 'toll-free' }, { input: '+590 891 23 45 67', expected: true, desc: 'premium rate' } ]; testCases.forEach(({ input, expected, desc }) => { it(`should ${expected ? 'accept' : 'reject'} number ${desc}`, () => { expect(validateGuadeloupeNumber(input)).toBe(expected); }); }); });Integration Tests
describe('Phone Number Lifecycle', () => { it('should handle complete CRUD operations', async () => { const testNumber = '+590690123456'; // Create const created = await createPhoneNumber(testNumber, 'mobile'); expect(created.number).toBe(testNumber); // Read const fetched = await getPhoneNumber(testNumber); expect(fetched.number).toBe(testNumber); // Update (port to new carrier) const updated = await portNumber(testNumber, newCarrierId); expect(updated.ported).toBe(true); expect(updated.carrier_id).toBe(newCarrierId); // Delete await deletePhoneNumber(testNumber); const deleted = await getPhoneNumber(testNumber); expect(deleted).toBeNull(); }); });Performance Testing
Test validation performance with large datasets:
const { performance } = require('perf_hooks'); function benchmarkValidation(iterations = 100000) { const testNumbers = [ '+590690123456', '+590590271234', '+590800123456', 'invalid' ]; const start = performance.now(); for (let i = 0; i < iterations; i++) { testNumbers.forEach(num => validateGuadeloupeNumber(num)); } const end = performance.now(); const timePerValidation = (end - start) / (iterations * testNumbers.length); console.log(`Average validation time: ${timePerValidation.toFixed(4)}ms`); console.log(`Validations per second: ${(1000 / timePerValidation).toFixed(0)}`); }Frequently Asked Questions About Guadeloupe Phone Numbers
Q: Can I use a Guadeloupe number for SMS verification? Yes. All mobile numbers (690 prefix) support SMS. Ensure your SMS provider supports French Caribbean destinations. For more details on SMS implementation, see our SMS API integration guide.
Q: Do Guadeloupe numbers work with WhatsApp and Signal? Yes. Use the full international format (+590 690…) when registering.
Q: What happens to my number if I move from Guadeloupe? You can keep your number if you maintain an active account. Some carriers offer international roaming or virtual presence options.
Q: Are there number reservation services? Yes. Contact carriers directly for vanity numbers or specific number patterns. Fees vary by carrier and number desirability.
Q: How do I handle numbers from Saint Barthélemy and Saint Martin? Both territories use different country codes: +590 for Saint Martin (shared with Guadeloupe) and +590 for Saint Barthélemy. The numbering system is shared with Guadeloupe.
Troubleshooting
Issue: Number validation fails in production but works locally
Cause: Different regex engines or character encoding issues Solution: Use a consistent validation library across environments and normalize input to remove hidden characters
Issue: API calls return 401 Unauthorized
Cause: Expired or invalid API token Solution: Implement token refresh logic and verify token permissions
Issue: Database queries are slow
Cause: Missing indexes on frequently queried columns Solution: Add indexes on
number,carrier_id, andcreated_atcolumnsIssue: Users report they can't port their number
Cause: Outstanding balance, recent port, or incorrect RIO code Solution: Verify account status with current carrier and obtain valid RIO code
Additional Resources