How VICIdial call recording actually works
A full walkthrough of VICIdial call recording: the four campaign modes, where files land on disk, delay and filename controls, agent mute and start-stop, PCI DTMF muting, and stereo.
VICIdial records calls at the campaign level, and almost every decision about what gets recorded, when it starts, what the file is called, and where it lands is a setting you control. Call recording in VICIdial is not a single switch; it is a small stack of options that interact, and getting them wrong means either missing the calls you needed or filling a disk with calls you did not. This guide walks the whole stack from the campaign setting an agent sees down to the file on disk, so you know which knob does what before you touch it.
The four recording modes
The master control is the Campaign Recording menu on each Campaign. It has four values, and they decide how much say the agent has over whether a call is captured.
- NEVER turns off all recording for clients on that campaign. No button, no files.
- ONDEMAND is the default. The agent gets a record button and starts or stops capture as needed, which is the right fit when only part of a call matters.
- ALLCALLS starts a recording on the client automatically whenever a call is sent to an agent, but the agent can still stop it.
- ALLFORCE also starts on every call sent to an agent, but gives the agent no option to stop it. This is the mode for a floor where every call must be on tape.
The choice between these is the single most important recording decision you make on a campaign, so it has its own breakdown in the campaign recording modes overview. If you are weighing the middle two, when to use ONDEMAND versus ALLCALLS covers the trade-off, and the strictest option gets its own treatment in the ALLFORCE explainer. The simplest case, turning recording on for the first time, is in how to turn on call recording.
flowchart TD
A[Call sent to agent] --> B{Campaign Recording mode}
B -->|NEVER| C[No recording]
B -->|ONDEMAND| D[Agent presses record]
B -->|ALLCALLS| E[Auto start agent can stop]
B -->|ALLFORCE| F[Auto start agent cannot stop]
E --> G{Recording Delay set}
F --> G
G -->|Yes| H[Wait then record]
G -->|No| I[Record now]
D --> J[Write file to disk]
H --> J
I --> JCodec and the one-hour limit
Behind the mode sits the Campaign Rec extension, which decides the audio format and how long a single recording can run. The default is 8309, which records in WAV for up to one hour. The other common option is 8310, which records in GSM, a much smaller compressed format, also for up to one hour. WAV gives you clean audio for review and analytics; GSM trades fidelity for far less disk. Picking between them is the whole topic of recording in GSM versus WAV, and the extensions themselves are broken down in the 8309 and 8310 extension guide.
The one-hour cap catches people out. By default a recording stops at sixty minutes, so a long support call or a call left open on hold can be cut off mid-conversation. Raising it is a server job, not a campaign setting; your system administrator changes the recording timeout. The two ends of that story are in the one-hour recording limit explainer and the server Recording Limit setting. The same server limit also caps how long a parked call hears its hold music, so do not raise it blindly.
Delay and short-call handling
When you record on every call, you end up capturing answering machines, dead air, and the moment before the person says hello. The Recording Delay setting fixes this for ALLCALLS and ALLFORCE only. It holds off the start of recording for the number of seconds you specify, and the default is 0. Setting it to something like 10 means a call that drops in the first few seconds never produces a file at all, which trims out most answering-machine and not-available recordings and noticeably cuts server load. The Recording delay mechanism is covered in full in the recording delay explainer, and the practical recipe for dropping the junk is in how to skip recording short calls.
There is one interaction worth memorizing: the delay only kicks in for ALLCALLS and ALLFORCE, never for ONDEMAND, because in ONDEMAND the agent decides the start point anyway. And if you want the call routing script to trigger recording instead of the agent screen, that Routing Initiated Recording option only works under ALLCALLS or ALLFORCE, and for agent manual-dialed calls it only works when the recording delay is set to 0. That single dependency trips up a lot of setups, which is why routing initiated recording has its own page.
Filenames and where recordings are stored
Every recording gets a name from the Campaign Rec Filename field, which is a template built from variables. The available pieces include CAMPAIGN, INGROUP, CUSTPHONE, FULLDATE, TINYDATE, EPOCH, AGENT, VENDORLEADCODE, LEADID, CALLID, and RECID. The default is FULLDATE_AGENT, which produces something like 20051020-103108_6666. A more searchable pattern is CAMPAIGN_TINYDATE_CUSTPHONE. The one hard rule is that the finished filename has to come out under 90 characters, so do not chain every variable together. The full variable list and examples live in the filename variables reference, and a common naming scheme is shown in naming recordings by campaign and phone.
If your dialers have post-recording processing enabled, you also get POSTVLC, POSTSP, POSTARRD3, and POSTSTATUS. These rewrite the filename after the call ends, swapping the post variable for the final value from the call record, so you can fold the Disposition status or the vendor lead code into the name once they are actually known. Those are explained in the post-recording filename variables. For the layout files end up in on the server and how to read it, see where VICIdial stores recordings.
Disk fills up faster than people expect, especially in ALLFORCE with WAV. Plan retention before you turn the firehose on; trimming, offloading, and capacity math are worth doing up front. Pricing for managed storage and offload is on our pricing page if you would rather not run the disk yourself.
Agent controls: mute and start-stop
What an Agent can do during a call depends on the mode. Under ONDEMAND and ALLCALLS they have a record button to start and stop capture; under ALLFORCE they do not. Letting agents drive recording themselves is covered in how to let agents start and stop recording, and if you need every call captured no matter what, how to record every call is the path.
The Mute Recording Button is a separate option. When enabled it adds a MUTE RECORDING button below the normal record button. Muting records silence or pauses the recording until the agent clicks it a second time, which is the manual way to keep sensitive audio out of a file while keeping the rest of the call intact. The practical caution is that you should not leave a recording muted for more than fifteen minutes at a stretch. Setup and behavior are in the mute recording button explainer and the steps are in how to add the mute recording button.
PCI DTMF muting
Manual muting depends on an agent remembering to press a button at the right second, which is exactly the wrong thing to rely on when a customer is reading out a card number. Recording DTMF Muting automates it. With the system-level Allow Recording DTMF Detection setting on, the campaign mutes the recording for a set number of seconds after the first DTMF tone is detected while recording is active. Customers keying their card into the phone never land in the audio. This is the cleaner answer for PCI pause requirements than asking agents to hit mute. DTMF muting is detailed in the DTMF muting PCI guide, with the card-number use case in how to mute card numbers in recordings.
Two gotchas. First, the system setting and the campaign setting both have to be on, and the detection switch has its own page in the Allow Recording DTMF Detection setting. Second, enabling DTMF muting on a campaign automatically disables the Mute Recording button, because the two ways of muting are not meant to run together. That difference is worth understanding before you pick one, which is the point of DTMF muting versus the mute button. For inbound traffic, DTMF muting is set per In-Group, not just on the campaign.
Stereo recording
Standard recordings mix both voices into one channel. Stereo Call Recordings split them: the customer on the right channel and the agent on the left. Set to CUSTOMER_ONLY the agent side is silent, CUSTOMER_MUTE silences the customer side, and BOTH_CHANNELS keeps everything. Separating the two voices makes review and analytics far easier because you can tell who said what, which is the case made in why record customer and agent separately. The feature overall is covered in the stereo call recording explainer, with setup in how to enable stereo recording and the channel options in the stereo channel modes.
Stereo has its own agent-control setting that mirrors the main modes, with NEVER, ONDEMAND, ALLCALLS, and ALLFORCE, and it defaults to ALLFORCE so stereo runs on every call unless you say otherwise. It also needs its own filename in the Stereo Rec Filename field, which uses the same variables and cannot match the main Campaign Rec Filename; the default is S_FULLDATE_CUSTPHONE. Stereo recording agent control is covered in stereo recording agent control. There is also Parallel Stereo Recordings, which records each call in full from when the agent receives it until it leaves the session, with CUSTOMER-ONLY, CUSTOMER-MUTED, and FULL-RECORDING variants that get CO, CM, and FR filename prefixes. Those are in parallel stereo recordings.
Finding and reviewing recordings for QA
Recording is only half the job; quality assurance lives in being able to find the right call later. Recordings tie back to the agent, the lead, and the call, so you can locate them by agent, by phone number, or by date depending on the filename pattern you chose. The lifecycle below is the short version of how a single call moves from the agent screen to a reviewable file.
stateDiagram-v2
[*] --> Idle
Idle --> Recording: call starts
Recording --> Muted: DTMF or mute pressed
Muted --> Recording: resume
Recording --> Stopped: agent stops or call ends
Stopped --> Stored: file written to disk
Stored --> Reviewed: QA plays it back
Reviewed --> [*]Finding a recording is in how to find a recording, and locating by agent is in how to find recordings by agent. One last interaction to keep in mind for high-volume QA: the Stop Rec after each call client option stops whatever recording is running once a call is dispositioned, which is handy when a web form triggers recording and you do not want it bleeding into the next contact. Carrying audio across calls also means a self-service IVR (interactive voice response) segment can end up in the wrong file if you are not careful with where recording starts and stops.
Recording in VICIdial is a stack of small settings that have to agree with each other: the mode decides who controls capture, the delay trims the junk, the extension sets format and length, the filename makes calls findable, and DTMF muting keeps card numbers out of the file. Get those right once at the campaign level and the rest is housekeeping. If you would rather have it configured, tuned, and stored for you instead of running the disk and the dialer yourself, our pricing lays out what a managed VICIdial setup costs.
About VICIfast LLC
VICIfast LLC operates a managed VICIdial hosting + BYOI service for outbound and inbound call centers. We run the dialers, the carriers, the recordings pipeline, and the compliance plumbing so operators don’t have to.
Citing this article
VICIfast Engineering. “How VICIdial call recording actually works”. VICIfast LLC, June 24, 2026. Retrieved from https://vicifast.com/blog/vicidial-call-recording-explained
Have questions?
Related posts
You might be interested in
VICIfast newsletter
Liked this? Get the next one in your inbox.
We ship the kind of stuff you just read — concrete, numbers-first, no drip. One email when a new post goes live. Unsubscribe in one click.
Comments
No comments yet — be the first.