Begin with the question
For a simple call summary, a call detail record may provide the fields you need. For a transfer, bridge change or multiple call legs, channel event logging can supply a more detailed sequence. Neither should be assumed to match a carrier's billing model automatically.
Preserve call relationships
A PBX call may create several channels. Keep unique and linked identifiers where your reporting backend provides them, and document how your query groups related legs. Counting database rows as customer conversations can overstate activity.
Compare a direct call, an unanswered call and a transferred call before designing dashboard totals.
Validate the storage path
Confirm the configured reporting module, database permissions, schema and timestamps. Reproduce a test call and verify its record end to end. An empty report might be a delivery or query problem rather than evidence that no call happened.
Protect and reconcile records
Call metadata can reveal business relationships even without audio. Limit access and define retention. For billing questions, compare the same time range, destination format, timezone and charging unit with the provider's records. Preserve exceptions rather than silently editing the PBX history to make two totals agree. Use signaling evidence when a summary cannot explain the actual call outcome.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.