| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Contacts (contacts)
• Discuss (mail) • Invoicing (account) |
| Lines of code | 334 |
| Technical Name |
contact_search_by_phone |
| License | LGPL-3 |
| Website | https://www.tecpill.com |
| Versions | 16.0 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Contacts (contacts)
• Discuss (mail) • Invoicing (account) |
| Lines of code | 334 |
| Technical Name |
contact_search_by_phone |
| License | LGPL-3 |
| Website | https://www.tecpill.com |
| Versions | 16.0 17.0 18.0 19.0 |
Contact Search by Phone
Search contacts instantly using phone or mobile numbers with smart normalization and fast performance.
ð Module Highlights
- Search contacts by full or partial phone number
- Automatic phone normalization (removes spaces, dashes, parentheses)
- Works with any format: (828)-316-0593, 828-316-0593, 8283160593
- Lightning-fast search with PostgreSQL indexes
- Optional phone uniqueness enforcement
- Prefix and suffix search support
Key Features
ð Smart Phone Search
- â Type any phone number format to find contacts
- â Search by full number: 8283160593
- â Search by partial: 828, 828316
- â Works with dashes: 828-316-0593
- â Works with parentheses: (828)-316-0593
- â International formats supported
â¡ Lightning Performance
- â PostgreSQL text_pattern_ops indexes for instant search
- â Stored computed fields (phone_clean, mobile_clean)
- â Reversed fields for suffix search
- â Works with millions of contacts
- â No performance degradation
ð¡ï¸ Data Integrity
- â Optional phone uniqueness enforcement
- â Prevent duplicate numbers
- â NULL-safe and empty-safe constraints
- â Detects duplicates across formats
- â Configurable via Settings
âï¸ Flexible Configuration
- â Settings accessible in General Settings
- â Minimum digits for search trigger (default: 3)
- â Enable/disable uniqueness checking
- â Show phone in search results dropdown
- â Strip leading zero option (Gulf/Saudi numbers)
- â No complex configuration needed
How It Works
ð Phone Normalization
The module automatically normalizes all phone numbers:
(828)-316-0593â8283160593055 123 4567â551234567(with strip leading zero enabled)00966-55-123-4567â966551234567
Removes all spaces, dashes, parentheses, and handles international prefixes (00). Leading zero stripping is configurable for regional needs.
ð¯ Smart Search Priority
- Exact Match: Finds exact normalized number
- Prefix Match: Finds numbers starting with search term
- Suffix Match: Finds numbers ending with search term
- Name Fallback: Standard name search if not a phone number
Use Cases
- ð Call Centers: Find customer records instantly when they call by typing their phone number.
- ð¼ Sales Teams: Quickly lookup leads and opportunities using mobile numbers from business cards.
- ð E-commerce: Search for orders and customers using phone numbers during customer support.
- ð¥ Healthcare: Find patient records by phone number for appointment scheduling.
- ð¨ Hospitality: Search reservations and guest profiles using contact numbers.
- ð Logistics: Locate delivery addresses and customer details via phone lookup.
- ð± CRM Systems: Universal contact search across all modules using phone numbers.
Installation & Configuration
ð¦ Installation
- Install from Odoo Apps Store or upload manually
- Click Install - all dependencies are automatic
- Module is ready to use immediately
- Existing phone numbers are automatically normalized
âï¸ Configuration
Navigate to: Settings â General Settings â Contact Search by Phone
- Minimum Digits: Set how many digits trigger phone search (default: 3)
- Enforce Unique Phones: Enable to prevent duplicate phone numbers
- Show Phone in Search: Display phone number alongside contact name
- Strip Leading Zero: Remove leading 0 from numbers (e.g., 0551234567 â 551234567)
ð§ Technical Requirements
- â Odoo 18.0
- â PostgreSQL 12+ (for text_pattern_ops indexes)
- â contacts module (base dependency)
- â No external libraries required
Usage Guide
How to Search by Phone
- Go to any contact selection field (Customer, Vendor, Partner, etc.)
- Type a phone number - full or partial
- Example searches:
828- finds all numbers starting with 8288283160593- finds exact number828-316- normalized automatically(828)-316-0593- any format works
- Contact appears instantly in dropdown
- Select the contact to proceed
Search Examples
| Search Term | Finds |
|---|---|
055 |
All numbers starting with 055 |
0551234567 |
Exact number 0551234567 |
4567 |
Numbers ending with 4567 |
+966 55 123 4567 |
Normalized to 966551234567 |
Benefits
â±ï¸ Save Time
Find contacts in seconds instead of minutes. No more scrolling through long lists or remembering exact name spellings.
ð Improve Productivity
Call center agents, sales teams, and support staff can handle more customers per hour with instant phone lookup.
ð¯ Reduce Errors
Automatic normalization prevents duplicate contacts with different phone formats. Maintain clean data integrity.
ð° Better ROI
Increase customer satisfaction with faster response times. Reduce training time for new employees.
Testing
â Comprehensive Test Coverage:
- 53 automated tests included
- Phone normalization tests (15 tests)
- Search functionality tests (17 tests)
- Uniqueness constraint tests (11 tests)
- Strip leading zero tests (10 tests)
- Run tests:
./odoo-bin -c odoo.conf -d dbname -u contact_search_by_phone --test-enable
Support & Credits
For support and assistance with this module, please contact the development team.
Please log in to comment on this module