🎯 Module Overview
MBI Calls is a Dolibarr module for business phone management through the OVH API. It connects Dolibarr to your OVH switchboard CTI events to centralize incoming and outgoing calls inside your CRM, automatically link them to your third parties, and monitor the phone activity of your sales and support teams.
Works only with the OVH VoIP service (VoIP Entreprise plan).
🌐 Demo: https://demo.mbicloud.fr 🛒 Discover our other modules on Dolistore.
📞 Benefits
- Centralize all OVH phone calls directly inside Dolibarr
- Automatic caller identification (third party / contact) at the very moment the phone rings
- Time saved: one click to open the customer card, the call reason and the callback to schedule
- Easier sales and support follow-up thanks to a unified history and reporting
- Compatible with the native Dolibarr ClickToDial for outgoing calls in one click
- Multi-user: each agent can be linked to their own OVH line and see only their own calls
⚙️ Key Features
🔔 Real-time display and notifications
- Top-right dropdown menu (phone icon) listing the latest incoming calls with number, third-party / contact name (with link to the card), date, missed/answered icon and call duration. The menu opens automatically when a call comes in and refreshes in real time. Available only with the Eldy theme.
- Active call card displayed at the bottom of the page: follows the in-progress call state and stays visible until the ring ends or the call is handled.
- Country flag displayed for each call based on the number prefix.
- "Paste number" button on unknown calls when creating a new third party: fills the phone field of the new third party with the caller number in one click.
🧩 Dashboard widgets
- Call history: same display as the dropdown, on the home dashboard.
- Numbers to call back: list of pending callback reminders, with a color code reflecting urgency.
- Call queue statistics: today's KPIs (total, answered, lost, answer rate, average wait, average duration, per-user breakdown).
🏢 Third-party and contact linking
- Unified, separator-tolerant phone matching: national, +33, 0033 and trailing-digits variants.
- Wide-field lookup: third-party phone and fax; contact landline, mobile and personal numbers.
- Contact display instead of the third party when the number matches a linked contact.
- Manual re-association: unidentified calls in the dropdown can be linked to a third party.
- "Calls" tab added to the third-party card, with pagination and date sorting.
📝 Reasons and reminders
- Reason can be added to each call (viewable and editable from the dropdown, the widget and the third-party tab).
- Callback reminders scheduled at the date and time of your choice.
- User assignment: each reminder can be assigned to a specific Dolibarr user.
- Reason / reminder independence: you can add a reason without a reminder, and a reminder without a reason.
- "Numbers to call back" widget with urgency color coding; the reminder disappears after validation.
- Optional e-mail digest of due callback reminders, sent by a scheduled job provided by the module.
📊 Statistics and reporting
- Dedicated "Call statistics" page (Companies menu) with filters by date range, direction, status, user and number/company.
- KPIs: total calls, answer rate, average duration, average wait.
- Breakdown by day and by user.
- Recent call details and CSV export containing the full data set (no volume limit).
📅 Agenda integration
- Automatic agenda event on answered calls (option), linked to the third party and the contact, with direction, line, duration and attribution to the user linked to the line.
🔗 ClickToDial
- Compatible with the native Dolibarr ClickToDial (usable from the dropdown, widgets and lists).
- Call started without double dialing (only one call placed through Dolibarr).
- "Starting the call" notice displayed to confirm the trigger.
🛡️ Security and architecture
- Dolibarr proxy available for OVH: a server endpoint (request/ovh/events.php) listens to OVH events from Dolibarr and stores incoming calls in the database, alongside the browser-side listener. The OVH API key is only used by authenticated sessions with the module rights.
- AJAX endpoints protected by Dolibarr rights or by a secure key.
- Raw OVH events stored in a dedicated table (llx_mbi_calls_ovh_events) for debugging and analysis.
- OVH CTI debug page: live decoded events feed + raw JSON, with stored-history purge.
- Multi-entity: every call and OVH event is tagged with the Dolibarr entity, and all user-facing reads are entity-scoped.
🏷️ Lines and users
- User ↔ OVH line mapping: each Dolibarr user can be linked to their own agent number; display and permissions can be restricted to their own calls.
- Outgoing numbers configurable to detect call direction.
- Dedicated permissions: full access to all calls, or limited access to own calls and missed calls.
🛠️ Configuration and maintenance
- Configuration page: OVH API key, number of calls displayed, outgoing numbers, per-user lines, call queue duration, agenda event creation, reminder e-mails.
- History purge (llx_mbi_calls) in one click from the setup page. Warning: irreversible.
- External script page (request/ovh/events.php) that logs calls even when no Dolibarr tab is open, as long as this script page stays open.
- Resilient browser-side listener (JavaScript mode): keeps listening when the tab is in the background, renews its leader lease on every poll cycle to survive background timer throttling, and reconnects to OVH immediately without waiting for the Dolibarr save.
🆕 Recent updates (2.3 / 2.2 / 2.1 / 2.0)
- OVH event handling aligned with the official flow: call duration computed only from start_calling / bridge-agent-start, answered/missed status hardened.
- Redesigned active-call card (Dolibarr 23 / Eldy), proper OVH timezone conversion (no more 2-hour offset).
- Resilient browser listener (background tabs, throttling), wider lookup including the third-party mobile number, unified ClickToDial from third-party / contact cards.
- Unified, separator-tolerant phone matching, manual re-association of unknown calls, statistics page with CSV export, multi-entity support, scheduled job for reminder e-mails.
- Dolibarr v23 compatibility, hardened public/AJAX endpoints, OVH CTI proxy, raw OVH events storage, debug page, optimized indexes on llx_mbi_calls.
✅ Compatibility
- Dolibarr: 12+ (recommended Dolibarr 21+ / 23)
- PHP: 8.0+
- Theme: dropdown menu available only with the Eldy theme.
- Phone: OVH VoIP Entreprise (OVH CTI API / easyHunting eventToken).
Module version: auto
Publisher/Licence: MB Informatique / AGPL
User interface language: English, French
Help/Support: MB Informatique
Prerequisites:
- Dolibarr min version: auto
- Dolibarr max version: auto
🔧 Installation
- Drop the mbicalls folder into /htdocs/custom/, or use the Deploy / Install external module option from the Dolibarr modules list.
- Go to Home > Setup > Modules/Applications.
- Activate MBI Calls in the modules list.
- Enable the module permissions for the relevant users (a user without permissions will see no data).
- Fill in the OVH API key in the module configuration (detailed instructions on the configuration page, starting from https://eu.api.ovh.com/console/).
- Enable the widgets on the home dashboard (Call history, Numbers to call back, Call queue statistics).
- (Optional) Enable the MBI Calls cron job in Home > Admin tools > Scheduled jobs to send reminders by e-mail.
ℹ️ Usage notes
- If some calls do not open the dropdown and some call data is not recorded, install a CORS browser extension (e.g. Allow CORS: Access-Control-Allow-Origin or CORS Everywhere).
- The external script page (request/ovh/events.php) is only useful to record calls outside Dolibarr usage hours; it is not required while Dolibarr is open in a browser.
- If an OVH ClickToDial module is already active, MBI Calls reuses its flow: clicks on a number from the dropdown or the widgets work without double-dialing.
- The "Last 24h" home summary is available from Dolibarr 11.0.0 onwards.
🎓 Services
- Training on the module is available at €80 excl. VAT.
- Support and updates included for the duration of your license.
📄 End-user License Agreement
Article 1 — Publisher. The MBI Calls module is published by MB Informatique, a limited liability company (SARL) registered with the Mulhouse Trade and Companies Register under number 834 342 362 (SIRET 834 342 362 00029, intra-community VAT FR07834342362), whose registered office is located at 120 rue de l'Île Napoléon, 68170 Rixheim, France. Phone: 03 67 262 242 — Email: info@mb-informatique.fr — Website: https://www.mb-informatique.fr.
Article 2 — Purpose and acceptance. These Terms of Use govern the use of the MBI Calls module ("the Module") for Dolibarr ERP/CRM as well as the associated services provided by MB Informatique SARL (support, updates, activation). Installing, activating or using the Module constitutes full and unconditional acceptance of these Terms of Use. They apply in addition to the terms of sale of the platform through which the Module was acquired (e.g. DoliStore), which govern the purchase.
Article 3 — Code license. The Module's source code is distributed under the GNU General Public License version 3 or later (GPL v3+), the full text of which is provided in the COPYING file delivered with the Module. These Terms of Use do not restrict the rights granted to the User by that license; they govern the services provided by MB Informatique SARL and the conditions of use of the Module.
Article 4 — Prerequisites and compatibility. The Module is designed for the environments indicated in its documentation (Dolibarr 12 to 23, PHP 8.0+). Its operation is not guaranteed outside these versions, in the event of a modification of the Dolibarr core, nor in the presence of conflicting third-party modules. It is the User's responsibility to verify the compatibility of their environment before installation.
Article 5 — User obligations. The User undertakes to: (a) perform a full backup (files and database) before any installation or update; (b) test the Module on a test environment before going into production where possible; (c) use the Module in accordance with its documentation and applicable regulations; (d) keep their Dolibarr instance under normal security and update conditions.
Article 6 — Support and updates. Support is provided by email at info@mb-informatique.fr, under the conditions and for the duration possibly specified at the time of purchase. The following are excluded from support: malfunctions due to a modification of the Module or of the Dolibarr core by the User or a third party, to an environment that does not meet the prerequisites, or to a conflict with a third-party module. Some updates may require a more recent version of Dolibarr.
Article 7 — Warranties. The Module is provided "as is", in accordance with articles 15 and 16 of the GPL license and within the limits permitted by law. MB Informatique SARL does not warrant that the Module is free of defects, operates without interruption or meets any particular need of the User. Applicable mandatory legal warranties are not affected by this article.
Article 8 — Liability. Within the limits permitted by law, MB Informatique SARL may not be held liable for indirect damages (in particular loss of data, loss of business, loss of revenue, damage to image), nor for damages resulting from: improper use of the Module; the absence of a prior backup; a modification of the Module by the User or a third party; a case of force majeure. For professional Users, the total liability of MB Informatique SARL, on all grounds combined, is limited to the amount actually paid for the Module over the last twelve (12) months. Nothing herein excludes liability that cannot legally be excluded, in particular in the event of willful misconduct or gross negligence.
Article 9 — Personal data. The Module operates within the User's Dolibarr instance: the data it processes remains stored on the User's systems, who remains the data controller within the meaning of the GDPR. When checking the version or activating the Module, technical information (module name and version, license key, IP address and instance domain) may be transmitted to MB Informatique SARL's server, solely for the purpose of managing licenses and updates, and kept for the time necessary for those purposes. The User may exercise their rights (access, rectification, erasure, restriction, objection) by writing to info@mb-informatique.fr.
Article 10 — Intellectual property and trademarks. "Dolibarr" is a trademark belonging to its respective holders. The Module is an independent development by MB Informatique SARL, not affiliated with or endorsed by the Dolibarr association. The copyright notices contained in the Module's files must not be removed, in accordance with the GPL license.
Article 11 — Duration and changes. These Terms of Use apply from the first use of the Module and for the entire duration of its use. MB Informatique SARL may change the Terms of Use for future versions of the Module; the applicable version is the one delivered with the version of the Module used. The termination of the services does not affect the rights granted by the GPL license.
Article 12 — Governing law and disputes. These Terms of Use are subject to French law. Failing an amicable resolution, any dispute with a professional User falls under the exclusive jurisdiction of the courts of the registered office of MB Informatique SARL. Consumer Users retain the benefit of the mandatory rules of jurisdiction and may use, free of charge, the consumer mediation scheme, in accordance with articles L.611-1 et seq. of the French Consumer Code; the identity and contact details of the mediator appointed by MB Informatique SARL are provided at https://www.mb-informatique.fr and communicated on request at info@mb-informatique.fr.
Article 13 — Miscellaneous. If any provision hereof is declared void or unenforceable, the others retain their full validity. These Terms of Use are written in French; in the event of a discrepancy between the French version and a translation, the French version prevails.
👨 💻 Publisher
MBI Calls is a custom Dolibarr module developed by MB Informatique.
It was designed for organizations using an OVH VoIP switchboard that want to centralize their phone activity inside Dolibarr, save time on caller identification and steer their sales and support activity through an enriched call history.
Publisher: MB Informatique
Contact: info@mb-informatique.fr
Website: https://www.mb-informatique.fr

🛠 CHANGELOG
UPDATE 2.9.1 (2026-07-20)
- Fixed: A call offered to several users is now attributed to whoever actually answers it, instead of the first user rung — this corrects the name shown in the call list, the "own calls" scope, the per-user statistics and the default user suggested for callback reminders.
UPDATE 2.9.0 (2026-07-18)
- New: "Call back" button on every SMS of the calls dropdown too, like the voicemail panel.
- New: Remaining SMS credits shown in the Diagnostic tab, with a live balance refresh.
- Improvement: Call statuses as coloured round chips - in progress (blue, animated), answered (green), missed (red) - unified across the dropdown, the home widget, the third-party Calls tab and the statistics page.
- Improvement: Diagnostic buttons use the standard Dolibarr style and are better arranged.
- Improvement: The delivery badge now replaces "Sent" instead of stacking below it ("Delivered" already implies sent); "Sent" only remains on rows without tracking.
- Fix: SMS text is now sent exactly as typed - characters like <, > and double quotes were silently stripped before sending.
- Fix: "Link to a third party" button no longer breaks in French (apostrophe in a JS attribute), and multi-line call reasons keep their line breaks.
- Fix: An SMS sent from the call-history number is now linked to the right third party (substitution variables and log).
- Fix: The scheduled job also replays the voicemail schema migration on file-copy updates (audio/deletion queues could stay silently dead).
- Fix: Blacklisted-caller alert e-mail was sent with raw translation keys.
- Fix: The "Call / Send an SMS" choice menu no longer opens off-screen near the right edge; white close icon on the reason/reminder dialogs.
- Fix: Module CSS no longer overrides the Dolibarr core icon width on every page; various CSS clean-ups.
- Fix: Various calls-dropdown display tweaks (centred "Call back" buttons, date no longer truncated, duration placed before the status chip, no more underline on hover).
- Translations: German, Spanish, Italian and Portuguese catch up with the whole SMS/diagnostic set; several raw labels fixed (Statistics page, OVH debug page, setup).
UPDATE 2.8.0 (2026-07-17)
- New: SMS delivery tracking - every sent SMS shows its status (Awaiting receipt, Delivered, Not delivered) in the SMS log and the calls dropdown, updated automatically by the scheduled job through the OVH API.
- New: "Diagnostics" tab in the module setup, grouping the delivery-tracking test (consumer key rights / send a test SMS / read its status), the scheduled job state and the Click-to-Call readiness checklist.
- New: "Call back" button on voicemail messages (dropdown panel and Voicemail page) to call the caller back in one click.
- Fixed: an SMS rejected by OVH (invalid recipient) is no longer counted as sent nor logged as delivered, and no agenda event is created for it.
- Fixed: SMS template variables (third party, contact, extrafields) are now correctly substituted at send time - they used to reach the recipient verbatim.
- Fixed: exact segment count for messages containing modern (beyond-BMP) emojis.
- Security: per-record access check when sending an SMS - a user restricted to their own portfolio can no longer read an arbitrary third party through the substitution variables.
UPDATE 2.7.0 (2026-07-16)
- ⚠️ Action required: disable then re-enable the module after updating (new SMS tables, hook and menu).
- New: Send SMS through OVH directly from Dolibarr - click a phone number and choose "Call" or "Send an SMS".
- New: SMS templates with a live character/segment counter and native Dolibarr substitution variables (THIRDPARTY_NAME...), managed from a dedicated setup tab.
- New: "SMS" tab in the calls dropdown listing the SMS you sent, with a "+" button opening the full "Sent SMS" page.
- Changed: the Statistics, Voicemail and Sent SMS pages are reached from the calls dropdown (chart button / "+" button) instead of the Third-parties left menu.
- New: SMS settings section - enable SMS, auto-discovered OVH service and sender, and a connection test. Reuses the OVH REST keys (needs the POST /sms/* right).
UPDATE 2.6.2 (2026-07-15)
- ⚠️ Action required: disable then re-enable the module after updating, so the Click-to-Call hook applies to every page.
- New: The Click-to-Call link now appears on every phone number across Dolibarr - all record cards and banners (third parties, contacts, members, users, projects, invoices, orders...), not only the third-party card. Lists keep their native display; fax numbers and email/PDF merge fields are left untouched.
UPDATE 2.6.0 (2026-07-15)
- New: Waveform audio player for voicemail: clicking play shows the waveform and lets you seek within the message, on the page and in the dropdown.
- Improved: Module settings are grouped into themed sections for clearer configuration.
- Improved: Richer statistics page (volume bars per day and per user) and quick access to statistics from the calls dropdown.
- Improved: Faster home widgets (fewer queries, queue statistics now cached).
- Improved: Overview and changelog available in the user's language.
- Fixed: Various display adjustments (icons, alignments, labels) and translation fixes.
UPDATE 2.5.0 (2026-07-15)
- New: Native OVH Click-to-Call: outgoing calls start from your phone through the OVH API, with no double dialing or external URL.
- New: "Empty this mailbox" button per line in the setup, to delete every message of a voicemail at OVH (administrators only).
- Improved: Delete button added to the "Voicemail" panel of the dropdown.
- Improved: Transcripts shown as readable text, without timestamps, including for messages already received.
- Fixed: Deleting a voicemail from the interface is no longer rejected, with an explicit error message on failure.
UPDATE 2.4.0 (2026-07-14)
- ⚠️ Action required: disable then re-enable the module after updating to apply the changes introduced by this version.
- New: OVH voicemail with transcription: a scheduled job retrieves voicemail messages and fetches their transcription automatically.
- New: New "Voicemail" page (Third-parties menu) with filters, transcript search, an embedded player, a "New" badge and pagination.
- New: "Unheard" badge on the phone icon and a "Voicemail" panel in the dropdown, with a notification when a message arrives.
- Improved: Each message is automatically matched with the corresponding missed call and third party.
- Security: Two separate permissions govern viewing and deleting voicemail messages (deletion off by default).
UPDATE 2.3.1 (16/06/2026)
- Redesigned the call reason / callback reminder popup with a modern layout (caller card, sectioned fields, modern textarea and inputs) consistent across the dropdown, the third-party "Calls" tab and the home calls widget.
- Fixed the callback reminder date being silently rolled to the next year because of a datepicker / server format mismatch (jQuery datepicker now uses the locale-matching format and the server rejects overflowed dates).
- Fixed new callback reminders defaulting to the first user in the list: they are now assigned to the connected user by default, so they appear in the user's "Numbers to call back" widget right away.
- Fixed the reason popup not opening when clicked from the third-party "Calls" tab (broken inline JS quoting).
UPDATE 2.3.0 (09/06/2026)
- Aligned OVH CTI event handling with the OVH example flow: ringing events create/display the active incoming call, while call duration now starts only on start_calling or bridge-agent-start.
- Fixed answered/missed status and duration calculations across the dropdown, third-party call tab, dashboard box and statistics page so calls without a real answer are no longer counted as answered.
- Improved active call popup rendering and refresh: bottom call card now follows the active-call state, respects linked user/line scoping, and is protected against early cross-tab refreshes.
- Fixed OVH event date conversion to the Dolibarr/server timezone to avoid a two-hour offset in displayed call dates.
- Refined the bottom active-call card styling for Dolibarr 23 / Eldy and adjusted compact icon width.
- Removed the temporary global button top margin rule to avoid layout side effects.
UPDATE 2.2.0 (08/06/2026)
- Improved reliability of the browser-side OVH event listener (JavaScript mode): it now keeps listening when the tab is in the background, renews its leader lease on every poll cycle to survive background timer throttling, reconnects to OVH immediately after each response instead of waiting for the Dolibarr save, and no longer posts empty keep-alive responses.
- Company phone matching now also looks up the third party's mobile number and no longer matches the fax number (contacts already matched landline, personal and mobile numbers).
- Click-to-dial from a third party / contact card (and from lists) now opens the calls popup and shows the "Starting the call" notice, just like click-to-dial from the calls dropdown; the call is still placed through Dolibarr's native click-to-dial, so there is no double dialing.
UPDATE 2.1.0 (03/06/2026)
- Unified, separator-tolerant phone matching for linking calls to contacts/companies (national, +33, 0033 and trailing-digits variants), also matching company fax.
- Added manual re-association: unidentified calls in the dropdown can now be linked to a third party.
- Consolidated agenda event creation on answered calls (links third party + contact, records direction, line and duration, attributes the event to the assigned user).
- Added an optional scheduled job that e-mails users a digest of their due callback reminders.
- Added a call statistics / reporting page (filters by date, direction, status, user and number) with KPIs, per-day and per-user breakdowns and CSV export.
- Added multi-entity support: calls and OVH events are now tagged with the Dolibarr entity, and all user-facing reads are entity-scoped.
UPDATE 2.0.1 (17/05/2026)
- Fixed OVH events session persistence and continuity handling (read/write/clear with TTL and invalid-session detection).
- Fixed events.php runtime error on affected_rows() and aligned request timeout handling with FastCGI constraints.
- Added detailed OVH session diagnostics in debug mode (requested/returned session, source, continuity, DB before/after, counters).
- Improved calls dropdown stability (unique DOM ids, consistent selector ids, filter persistence, and missing-calls display refinements).
- Updated OVH API key setup instructions and translated the new help text across module language files.
UPDATE 2.0.0 (08/05/2026)
- Improved Dolibarr v23 compatibility and reduced PHP warnings on recent versions.
- Secured public/AJAX endpoints with read rights or secure key validation.
- Added OVH CTI proxy handling to avoid exposing the OVH API key in the browser.
- Added support for OVH queue events such as agent-offering.
- Added storage of raw OVH events in llx_mbi_calls_ovh_events for debugging and analysis.
- Added an OVH CTI debug page with live decoded events and raw JSON display.
- Optimized llx_mbi_calls with indexes for dropdown, third-party tab, reminders and deduplication queries.
- Improved dropdown performance with lazy loading and redesigned the calls dropdown UI.
- Added an active incoming call card with contact/third-party link when available.
- Improved translations consistency across all language files.
- Hardened SQL escaping, input validation and optional configuration handling.
UPDATE 1.4.1 (04/08/2025)
- Dolibarr v21 compatibility.
- Added a tab listing calls for the tier.
UPDATE 1.4.0 (25/06/2025)
- Bug fixes and code readability improvements.
- Added clear comments to make it easier to understand.
- Optimized code structure for better performance.
UPDATE 1.3.4 (04/10/2022)
- Dolibarr v16 compatibility.
UPDATE 1.3.3 (31/03/2022)
- Dolibarr v15 compatibility.
UPDATE 1.3 (07/02/2022)
- Contact's name is displayed instead of thirdparty's when it is possible.
UPDATE 1.2.5 (21/01/2022)
- It is possibleto create an event for each answered call (optional).
UPDATE 1.2 (17/12/2020)
- The dropdown show a country flag for each call.
UPDATE 1.1 (10/11/2020)
- The module allows you to know if calls are incoming or outgoing and allows to link a Dolibarr user to a number and to see only some calls.
1.0
Initial version