Redesigned CDR logging brings more powerful reporting.
The CDR system has been rewritten to improve data handling and support larger deployments. The new design simplifies the internal table structure, reduces database load and allows direct integration with external storage and analytics tools. It provides a foundation for managing and analyzing large call datasets without adding system strain and to bring you better reporting. Here’s what you can expect.
The CDR Recap
We first introduced the new CDR structure in our Alpha release. Here's a quick look back at the legacy setup and the CDR improvements made since:
- The Legacy Setup: A Fragmented Bottleneck
Call data was previously split across four separate tables, requiring complex SQL joins, increasing load during reporting. - The New Approach: cdr_output
All call details are now stored in a single flat table called cdr_output. This unified design removes join complexity, improves query speed, and supports large-scale reporting tools. - Advancement #1: All Your Data In One Smart Table
A single table holds source, destination, timestamps, etc, and outcomes are now optimized for BI tools. - Advancement #2: Every Row Tells The Story
New fields like termination_reason and creation_method provide full call context in one row. - Advancement #3: Who’s Calling Who, Made Simple
Clear source and destination fields with tracking flags reduce ambiguity and simplify analysis. - Advancement #4: Timestamp Granularity
Fields for start, answer, and end times enable precise ring and talk time calculations. - Advancement #5: Built for Growth
A flexible schema allows for future expansion without major rework.
Flattened CDR Output Table
Call records are now stored in two, streamlined tables “cdr_output” for call metadata and “cdr_billing” for billing details. These replace the previous fragmented structure.
Cdr_output holds 41 fields, such as call IDs, source, destination, start and end times, who dropped the call.
Cdr_billing contains cost related data for outbound tables.
Refer to the CDR Output Guide and CDR Billing Guide for full details and structure.
New Reports & Filters
The updated CDR structure also powers a range of new report and filtering options, introduced alongside Update 6. These include:
- Four new reports: Inbound Calls, Outbound Calls (with cost), User Activity, and Call Distribution.
- Multi-selection filters for users, departments, and queues.
- Internal vs. external call filtering.
- Flexible reporting week (start on any day).
- Totals added to CSV exports, now formatted for Excel and Google Sheets.
- Legacy reports remain available for historic data.
CDR Offloading to Cloud Storage
Following our April announcement, CDR data can now be offloaded to GCP (BigQuery), AWS PostgreSQL or your own cloud.
The CDR offloader gets the data from the CDR Output table and offloads it out of 3CX with an option to delete call history records. This helps manage long-term storage and reduces local DB load.
With CDR data now in the cloud, you’ll be able to use tools like Grafana, Tableau, or Power BI to connect directly. There’s no need to pull reports from inside 3CX. This feature is currently in BETA. Watch this space for more updates.
Create 3CX Graphs with Google Gemini or Microsoft Copilot
Scheduled CSV reports can be opened directly in tools like Google Sheets and Excel. This makes it easy to create graphs and analyze data using AI assistants like Google Gemini or Microsoft Copilot. A setup guide is available with guidance on how to do this.
Final Note
These updates will be live in V20 Update 6. Full technical details and field explanations are available in the setup guide.
Join the conversation in our dedicated Partner or Customer Forums. Follow us on X and LinkedIn to stay-up-to date on latest news and feature releases.

