vicigeeksimple guides
Browse
Data and integrations

Reports & results · Worked reconciliation

Reconcile VICIdial callback counts with a complete example

Classify a small callback dataset row by row, explain current-only and archive-only records, and carry the same scope checks to your own report.

Start the guide

1. Decide which two numbers you are comparing

A CALLBK disposition count, a count of current scheduled records and an agent-visible callback count answer different questions. Start by labeling both numbers. If one measures completed call outcomes and the other measures scheduled work, there is no reason for them to match.

This page first gives you a complete offline exercise. It then shows the information needed to investigate a real mismatch without changing the dialer.

Source
Exact report or screen name, saved query or API function
Scope
Campaign, user/recipient, status filters and which date field is filtered
Time
Timezone, inclusive start, exclusive end and extraction timestamp
Identity
What one counted item represents; how repeated rows are handled

You should seeContinue to the example when the populations are named. For a real mismatch with unknown filters, ask the report owner for the query and filter definition before calculating a combined total.

2. Keep the four populations separate

Use this table to label your comparison. A current table can still contain inactive records; “current source” is not the same as “work remaining.”

Callback quantities that must not be treated as interchangeableScroll sideways to compare columns
QuantityWhat is countedCheck before comparing
Disposition historyCall outcomes assigned a callback-related statusStatus definition, call log source and call-date window
Current scheduled recordsCallback records in the current source, with chosen filtersIncluded scheduler states and callback-date window
Agent-visible queueRecords selected for that agent by the installed UIUser/recipient, permitted campaign, state and time rules
Archived schedule historyRecords selected from retained callback historyArchive/purge timing, coverage and stable identity

You should seeIf the measures have different business meanings, document that difference. Do not call it a missing-record defect.

3. Prepare the fictional row comparison

Download the two input files and open them beside each other. They contain 13 physical rows: seven current and six archive. No names, phone numbers or real system records are included.

The fixture counts all states and recipients. It deliberately does not model “My Callbacks” or an agent queue. Its callback_key is an invented stable identity; do not assume your installation has that same guarantee.

  1. Filter both files to campaign LAB01 and callback_at_utc at or after 2026-11-06T00:00:00Z, but before 2026-11-07T00:00:00Z.
  2. Classify C07 as outside the end boundary, A05 as before the start boundary and A06 as another campaign. Keep C06: an exact start-boundary time is included.
  3. Within the remaining current rows, count C03 and C04 once because they repeat CB003. Do not merge CB001 and CB005: they share LEAD-A but are different callbacks.
  4. Compare callback_key across the two filtered sets. CB003 stays one identity even though its state differs between current and archive.

You should seeCurrent: six in-scope physical rows, five distinct identities. Archive: four in-scope rows, four distinct identities. If your counts differ, check boundaries and the duplicate before continuing.

Current fictional records (CSV)

Archive fictional records (CSV)

Scope and identity instructions (TXT)

4. Account for both sides of the difference

The table is the complete answer for the in-scope identities. Compare it with your own classification before opening the row-by-row answer sheet. “Shared” means shared identity, not identical state or proof of a production archive defect.

Before you use it
Use only the fictional scoped identities shown in the table.
Calculate the distinct sets
current = 5archive = 4shared = 2current_only = 5 - 2 = 3archive_only = 4 - 2 = 2union = 5 + 4 - 2 = 7current_to_archive = 5 - 3 + 2 = 4archive_minus_current = 4 - 5 = -1
Not executed · worksheet or reference text

This sample is a template or reading aid, not a terminal command. There is no output to show.

Success looks like
You can explain why the current and archive totals differ by one and why their union is seven.
Stop if
If the identity rule or snapshot comparability is unknown, do not publish a reconciled operational union.
Fictional callback membership after scope filtering and deduplicationScroll sideways to compare columns
IdentityCurrentArchiveClassification
CB001YesNoCurrent-only
CB002YesNoCurrent-only
CB003Yes; C04 repeats C03Yes; state differsShared
CB004YesYesShared
CB005Yes; start boundaryNoCurrent-only
CB007NoYesArchive-only
CB008NoYesArchive-only

You should seeThree current-only and two archive-only identities fully explain the signed difference of −1. The union of seven is neither seven calls made nor seven callbacks due.

Every input row and its explanation (CSV)

Editable reconciliation worksheet (CSV)

5. Apply the method to a real report or hand off the unknown

Record both report definitions and take equivalent snapshots. For a lead-specific investigation, the official lead_callback_info API offers CURRENT, ARCHIVE and ALL search scopes; use the installed reference and approved access. That function is not a ready-made cross-report reconciliation.

If records move while the reports run, request a consistent snapshot or repeat at an agreed time. If the key is unknown, ask the database/report owner to demonstrate uniqueness and stability across the relevant sources. Never deduplicate by lead ID alone merely because it is available.

  1. Fill the worksheet with distinct in-scope counts and the verified intersection. Blank inputs remain Unknown; use nonnegative integers and an intersection no larger than either set.
  2. List every excluded, duplicate, current-only, archive-only and shared row in a private comparison. Record why it belongs there; preserve source queries unchanged.
  3. For an agent-screen difference, have its owner reproduce the installed user/recipient, campaign, state and time filters. A full historical union is not the expected agent count.
  4. Finish only when the difference is explained. Otherwise hand off the two scoped definitions, extraction times, identity uncertainty and unexplained count to the report owner.
Before you use it
Keep record-level identifiers in an authorized private workspace.
Copyable reconciliation record
Report A / definition:Report B / definition:Installed version / extraction times / timezone:Campaign / user / state / date filters:Identity rule and evidence:Current / archive / shared:Current-only / archive-only / excluded / duplicates:Unexplained count and next investigation owner:
Not executed · worksheet or reference text

This sample is a template or reading aid, not a terminal command. There is no output to show.

Success looks like
Another reviewer can reproduce the same classification from the same sources.
Stop if
Unknown filters, unstable identity, changed snapshots or unexplained rows mean the result remains unresolved.

You should seeA useful ending is either a reproducible explanation or a precise unresolved question. Changing permissions, deleting history or averaging the two totals does not resolve the comparison.

Checks and sources

What was checked

  • The downloadable CSVs and all numbers in the worked example are fictional. Their row classifications and arithmetic were checked locally; no live callback report or agent-visible queue was tested.
  • The official Non-Agent API documents current, archive and combined callback lookup scopes. It does not establish a stable cross-table identity key for every installation.
  • A real report requires its own schema, filters, extraction timestamps and identity checks; the exercise does not demonstrate production data loss or a working callback screen.

Primary references

Sources

  1. VICIdial Non-Agent API referenceVICIdial Group · accessed November 6, 2026
  2. VICIdial official manuals and documentationVICIdial Group · accessed November 6, 2026