How to Push Leads From Your CRM Into VICIdial
Use the VICIdial Non-Agent API's add_lead function to push records from any CRM into a campaign list in real time, without touching the VICIdial admin panel.
Most teams manage prospect records in a CRM — a Customer Relationship Management system that tracks contacts, deals, and history CRM. VICIdial stores its own calling data in a separate database. When a new lead comes into your CRM, you want it to start ringing in your dialer within seconds, not after a manual export-import cycle the next morning. The Non-Agent API's add_lead function — part of the set of HTTP calls that manage data outside the live agent screen Non-agent API — makes that real-time push straightforward.
How the push works
sequenceDiagram
participant CRM as Your CRM
participant Hook as Webhook or Scheduled Job
participant API as non_agent_api.php
participant DB as vicidial_list
participant Camp as VICIdial Campaign
CRM->>Hook: new lead created event
Hook->>API: add_lead phone_number list_id source
API->>DB: INSERT row with status NEW
DB-->>API: new lead_id
API-->>Hook: SUCCESS lead has been added
Camp->>DB: pull next leads from hopper
DB-->>Camp: includes new leadPermissions and auth
Every Non-Agent API call authenticates with a user and pass parameter in the query string. The VICIdial user account you use must have modify_leads set to 1 and a user level of 8 or higher. You set both fields in the VICIdial Admin panel under Users. Without them the API returns USER DOES NOT HAVE PERMISSION TO ADD LEADS regardless of how correct the rest of the request is. Create a dedicated API-only user with exactly these permissions and nothing else — that way you can revoke it without affecting human agent accounts.
The minimum API call
The endpoint is https://your-server/vicidial/non_agent_api.php. Required parameters are function=add_lead, phone_number (6–16 digits), phone_code (country dialing prefix, defaults to 1), and list_id (the lead list, the named bucket of records a campaign dials through Lead list, that you want the record added to). A minimal call from a CRM webhook handler:
curl "https://your-server/vicidial/non_agent_api.php\
?source=mycrm\
&user=6666&pass=1234\
&function=add_lead\
&phone_number=7275551212\
&phone_code=1\
&list_id=101\
&first_name=Maria&last_name=Santos\
&vendor_lead_code=CRM-98765"The vendor_lead_code parameter is your CRM's own record identifier — the unique key on your side that you will use to match a VICIdial disposition back to the originating record later Vendor lead code. Always send it. The source parameter is a short label (up to 20 characters) that shows up in the API log and makes troubleshooting much easier when you have multiple integrations writing leads simultaneously.
Speeding up the dial with hopper injection
Adding a lead puts it in the list with status NEW. The campaign's auto-dialer will pick it up on its next cycle, but that can take minutes depending on how the campaign is configured. To dial the lead immediately, append add_to_hopper=Y to the same call. The hopper is the short queue of leads the dialer is actively working through right now Hopper. Injecting directly into the hopper means the next available agent gets this lead on their screen within the current dial cycle.
Two optional safeguards are worth adding to any CRM integration. Pass dnc_check=Y and the API will refuse to insert any number already on your Do Not Call list. Pass list_exists_check=Y and the API will reject a list_id that does not exist rather than silently inserting into list 999 (the default). Both catch configuration mistakes before they create hard-to-clean orphan records.
One field that pays for itself quickly is source_id. This is a numeric identifier that maps to a lead source record in the VICIdial admin — the named origin of a batch of leads, such as 'Web Form', 'Trade Show', or a specific CRM campaign Lead source. Tagging each pushed lead with the correct source_id lets you filter the live reports by origin so you can see which CRM campaign is producing calls that convert and which ones are burning agent time.
Consider also passing call_back_status set to Y along with a callback_datetime when your CRM signals that a contact requested a follow-up at a specific time. This places the lead as a scheduled callback Scheduled callback in VICIdial rather than as a plain new record, so the dialer will only attempt it at the window the customer asked for instead of lumping it into the next available dial cycle.
If your CRM can fire a webhook the moment a record is created, wire the HTTP call directly in that webhook handler. If it cannot, a polling script that queries your CRM for records modified in the last two minutes and pushes any that are not yet in VICIdial works just as well. Store the VICIdial lead_id from the SUCCESS response back into your CRM record so you can look up status later. A response like SUCCESS: add_lead LEAD HAS BEEN ADDED - 7275551212|6666|101|193715|-4 gives you the lead ID as the fourth pipe-delimited field.
For a complete treatment of add_lead including the duplicate-check options, see how to add a lead with the add_lead API. For the full picture of Non-Agent API capabilities alongside the Agent API and AGI, see the VICIdial API and AGI overview.
If you want a VICIdial server that comes with the API already configured and reachable over HTTPS, every VICIfast plan provisions a hardened box in under 40 seconds so your CRM integration can go live the same day.
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 to Push Leads From Your CRM Into VICIdial”. VICIfast LLC, June 28, 2026. Retrieved from https://vicifast.com/blog/how-to-push-leads-from-a-crm
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.