vicigeeksimple guides
Browse
Integrations

Automate tasks · Integrations · Zapier webhooks

Connect VICIdial to Zapier: send call dispositions to a webhook

Build a Dispo Call URL, test a small event and map the fields into a Zapier practice table. Follow clear checks for the native event, the webhook receipt and the final action.

Start the guide

01 / 14

What you will build

When an agent submits a disposition, VICIdial can send a small request to Zapier. Zapier receives the fields and creates a row in a practice table. A disposition is that agent-selected outcome, such as NI for not interested; simply hanging up is a different step.

Use Dispo Call URL for this exercise. In the inspected VICIdial build, the agent page starts an internal request and the web server then fetches the destination URL with HTTP GET. A POST from the agent browser to VICIdial is not a JSON POST to Zapier.

Our local check executed the extracted PHP substitutions and HTTP fetch against a loopback receiver. It confirmed the GET and four substituted fields. Zapier account setup, saving the field and the final live event remain reader-run checks.

You should seeThe path is: agent disposition → VICIdial web server → Catch Hook → practice table.

  • Use a separate practice Zap and table.
  • Send only fictional identifiers first.
  • Keep a copy of the current campaign setting before changing it.
Sources for this section

02 / 14

1. Choose the correct VICIdial event

These similarly named settings solve different jobs. This walkthrough follows an agent disposition; it does not capture every dropped or unanswered attempt.

Choose the trigger by what you need to observeScroll sideways to compare columns
SettingWhen it is usedUse in this guide
Dispo Call URLAfter an agent dispositions a call; available on a campaign or in-group.Use this field.
Start Call URLA call is sent to an agent. The official document excludes manual dialing.A different event; keep it separate.
No Agent Call URLAuto-dial or inbound attempts that do not reach an agent.A separate workflow.
Web FormThe agent clicks a form button.A manual browser action.

You should seeYou have selected a disposition event and know which campaign or inbound in-group owns it.

Sources for this section

03 / 14

2. Prepare the accounts and a practice table

A functioning VICIdial agent setup is required for the final live check. You can prepare the hook and test fields before making a call. Use an isolated test campaign and fictional lead records when you reach the native-event step.

Check your Zapier account includes Webhooks by Zapier. The current trigger documentation lists Professional, Team and Enterprise; it excludes Free. Tables has its own availability and record limits. Check your account before following the editor steps.

  1. Open Zapier Tables and create a blank table named VICIdial webhook practice.
  2. Add text fields named source, test_mode, lead_id, campaign, uniqueid and dispo. Keeping identifiers as text preserves their exact spelling.
  3. Leave this table available for the action step. Use it only for synthetic test data.

You should seeAn empty practice table has six named text fields.

Complete the VICIdial beginner path if the agent cannot finish a practice call

Sources for this section

04 / 14

3. Create the Zapier Catch Hook

VICIdial pushes a request to a URL. Catch Hook receives that request. Retrieve Poll is used when Zapier repeatedly fetches another service; that is a different direction of communication.

Treat the generated hook URL as private. It can allow someone to trigger this Zap, and VICIdial URL logs may retain it. Keep this practice Zap limited to the practice table.

  1. Create a new Zap and give it a practice name.
  2. For the trigger, choose Webhooks by Zapier and the Catch Hook event.
  3. Continue through setup. Leave Pick Off A Child Key blank for the flat query fields used here.
  4. Open the Test tab and copy its webhook URL. Keep the editor open while sending the first test.

You should seeYou have one private Catch Hook URL copied from the correct test Zap.

Sources for this section

05 / 14

4. Send a synthetic event before touching VICIdial

This optional command needs curl in a Bash terminal. On macOS, start bash first; on Windows, use a Bash environment such as WSL. Paste the private URL only at the hidden prompt. The command is a reader-run example; we did not send it to a Zapier account.

It uses GET query parameters, matching the inspected native transport. It sends no caller name, telephone number, recording or call notes. In Zapier, select Test trigger and inspect the recent record for the exact values below.

Before you use it
Use your separate test Zap. Its only intended downstream action is the practice-table record.
Send one fictional GET to your own test hook
(  read -rsp 'Paste your private test Catch Hook URL: ' ZAPIER_HOOK_URL  printf '\n'  curl --get --silent --show-error --fail --max-time 15 \    --data-urlencode 'source=vicidial' \    --data-urlencode 'test_mode=1' \    --data-urlencode 'lead_id=12345' \    --data-urlencode 'campaign=LAB_DEMO' \    --data-urlencode 'uniqueid=1700000000.123' \    --data-urlencode 'dispo=NI' \    "$ZAPIER_HOOK_URL")
Reader-run example · not executed for this guide

This example has no recorded result here. Follow its preparation, expected result and stop conditions before using it.

Success looks like
Zapier shows lead_id 12345, campaign LAB_DEMO, uniqueid 1700000000.123 and dispo NI in a test record.
Stop if
A connection error or non-200 response needs investigation. A 200 response without the matching Zapier record is not accepted.
Fields to compare in the Zapier trigger sampleScroll sideways to compare columns
FieldSynthetic valueMeaning
sourcevicidialA label for this exercise.
test_mode1A label, not a switch that disables Zap actions.
lead_id12345Fictional lead identifier.
campaignLAB_DEMOFictional campaign identifier.
uniqueid1700000000.123Fictional call identifier.
dispoNIFictional agent outcome.

You should seeA matching trigger record proves that this hook received the synthetic request. It does not prove that VICIdial sent a real event.

Sources for this section

06 / 14

5. Map the fields into the practice table

Use a table record as a visible result. This avoids involving email, messaging or a customer CRM while you learn the event path.

  1. Add a Zapier Tables action and choose Create Record. Select VICIdial webhook practice.
  2. For each table field, select the incoming trigger field with the same name: source, test_mode, lead_id, campaign, uniqueid and dispo.
  3. Test the action. Open the table and compare the created row with the synthetic values, not just the action success message.
  4. After checking the mapping, publish or turn on this practice Zap using the control your editor provides. Resend one fresh sample and check its Zap run and table row.

You should seeThe active practice workflow has both a matching Zap run and a visible table record.

Sources for this section

07 / 14

6. Build the VICIdial Dispo Call URL

The leading VAR and the --A--field--B-- tokens are VICIdial syntax. VICIdial replaces the tokens with values from the event. Copy the entire generated line, including VAR, into the campaign setting.

The optional builder below formats text only. It accepts the plain hook URL copied from Zapier and adds the four documented placeholders plus two static labels. If you edit the hook, rebuild before copying. Keep the generated URL private.

The test_mode=1 label does not stop a Zap from running other actions. Use the separate test Zap and practice table described above.

Before you use it
Replace only the example hook base with your actual test Catch Hook URL. Keep the four placeholder names and delimiters intact.
Copyable template if you are not using the builder
VARhttps://hooks.zapier.com/hooks/catch/YOUR_ACCOUNT/YOUR_HOOK_KEY/?source=vicidial&test_mode=1&lead_id=--A--lead_id--B--&campaign=--A--campaign--B--&uniqueid=--A--uniqueid--B--&dispo=--A--dispo--B--
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
The line starts VARhttps://hooks.zapier.com/hooks/catch/ and contains the four --A--…--B-- tokens.
Stop if
Do not save YOUR_ACCOUNT or YOUR_HOOK_KEY. A formatted URL is not proof that the hook exists or that the native field accepts its length.
Build a test Dispo Call URL

This tool formats text in this tab. It does not contact Zapier, send a test event or save your hook URL.

You should seeThe complete private line is ready for your isolated test campaign.

Sources for this section

08 / 14

7. Save it in the campaign field

In VICIdial administration, open Campaigns from the main menu and select the test campaign. The retained native capture came from the campaign edit page. If your version hides advanced fields, use its Detail View control if offered, then find Dispo Call URL.

The screenshot shows the genuine field captured on November 6. It was blank. It establishes the field label, not a saved Zapier configuration or successful delivery.

Inbound calls can use an in-group setting. Before diagnosing a campaign mismatch, identify the actual in-group and its own Dispo Call URL. This basic example uses one campaign URL; ALT configurations and status/list filters need a separate review.

  1. Record the existing Dispo Call URL privately so you can restore it.
  2. Paste the complete generated line into Dispo Call URL for the isolated test campaign.
  3. Submit the settings and reopen the same campaign. Confirm the complete value was retained.
  4. If the form rejects or truncates it, inspect that installed field and its limits. Do not assume one maximum length applies to every VICIdial build.

The real campaign field

Open to enlarge
Actual blank Dispo Call URL field from the VICIdial LAB01 campaign edit screen.
Native LAB01 field, captured November 6, 2026.
Capture detailsThe original is blank; no Zapier endpoint was saved or tested in this capture. Display framing trims empty horizontal space; the full original remains available.

You should seeThe intended test campaign retains the correct full URL. Saving it still does not prove a request was sent.

Sources for this section

09 / 14

8. Verify an actual agent disposition

Use one call permitted by your own test plan. This guide did not place a call or alter the demo. Start Call URL’s manual-dial exclusion must not be assumed for every Dispo workflow: the inspected disposition path can include manual calls, but campaign/in-group overrides and the actual agent workflow still matter.

A completed hangup is not enough. The agent must submit the disposition that your workflow is configured to send. In the inspected path, the agent page initiates RUNurls internally and the web server fetches the destination.

  1. Use an approved synthetic lead in the intended test campaign and complete the permitted call.
  2. Select an allowed test disposition, such as NI if it exists in that campaign, and submit it.
  3. In Zapier, find the new run. Compare its actual lead_id, campaign, uniqueid and dispo with the event you just completed.
  4. Open the practice table and find the corresponding row. A new event should be distinguishable from the fixed synthetic sample by its actual identifiers.

You should seeThe native event, Zap run and table row agree. That is the live acceptance check for your setup; our local fixture cannot replace it.

Learn the agent’s call and disposition workflow

10 / 14

9. Use four separate acceptance checks

Record the result at each boundary. This prevents an early success message from hiding a failure later in the workflow.

What each observation establishesScroll sideways to compare columns
ObservationWhat it provesWhat still needs checking
Campaign retains the URLConfiguration was saved.The right native event must run.
A URL-log/queue entry existsVICIdial recorded work for a URL.Execution and destination receipt are separate.
HTTP 200 or a trigger sampleHTTP acknowledgement, or receipt of that specific sample.Inspect the matching Zap run and action output.
Matching run and table rowThe selected event reached this action with the expected fields.Duplicates, repeat calls and failures need their own policy.

You should seeYou can name the last boundary that passed and the next one that failed.

11 / 14

10. Fix the failure at its source

Start with the smallest test that failed. Preserve the prior setting and inspect the matching event before resending it.

Symptoms and next checksScroll sideways to compare columns
What you seeWhat to checkAcceptance after correction
404 from the hookCheck the copied URL and the correct Zap. Zapier documents 404 when a static-hook Zap is off or deleted, with a possible delay after turning it off.Retest the correct active/test workflow and find the matching received record.
--A--…--B-- appears literallyCheck the placeholder names, VAR syntax and the actual native workflow/build.The received identifiers contain real values, not unresolved tokens.
Synthetic curl test works; native event is absentCheck campaign/in-group selection, disposition submission and the agent’s internal RUNurls request. Ask the administrator to inspect the matching URL work and web-server errors.The actual native event reaches Zapier with the expected identifiers.
No server-side request reaches the receiverInspect outbound DNS/HTTPS and the web PHP runtime’s URL-fetch capability. CLI PHP and the served web runtime can differ.The served application successfully fetches the intended HTTPS endpoint.
200 but no expected rowCheck received fields, Zap history, filters and the action/table mapping. Processing can be delayed; success status alone is insufficient.The matching Zap run and row are visible.
429, timeout or uncertain responseCheck rate limits and existing run history before a controlled resend. This source inspection did not establish an automatic VICIdial retry guarantee.A known event completes with any duplicate handled deliberately.
Sources for this section

12 / 14

11. Handle repeat events before adding real data

A lead can receive more than one call, so lead_id alone is not a safe key for suppressing every later event. Decide which business event you mean, then choose and test a key using the actual call identifiers and outcome. Transfers, corrections and repeated dispositions need explicit handling.

This practice action creates a row. Repeating a test may create another row. It is not a production guarantee of exactly-once processing. If delivery and recovery matter, design a receiver or relay that acknowledges, records and retries events deliberately.

Start with the six small fields here. Caller names, telephone numbers, free-text notes and recording URLs are unnecessary for this exercise. The inspected source encodes some fields differently, so arbitrary text cannot be assumed safe to append to a URL.

You should seeYou have a documented rule for repeated events and have tested any additional fields before enabling a production action.

Understand event delivery and recovery

13 / 14

12. Pause and restore the practice setup

Changing a hook or turning off a Zap does not erase the campaign setting that can still send to it. Keep the two sides coordinated.

  1. Restore the previous Dispo Call URL, or clear only the practice value if it was originally blank. Submit and reopen the campaign to verify.
  2. Turn off the practice Zap when the exercise is finished. Keep the test evidence and table until you have reviewed the results.
  3. If a Zap is transferred to another owner, check its hook URL and update the sender as required. Treat a changed hook as a configuration change to retest.

You should seeThe test sender and Zap are in their intended final states, with the previous configuration preserved.

Sources for this section

14 / 14

What we checked locally

On November 8, a PHP 8.5.4 fixture read a hash-verified copy of vdc_db_query.php, extracted only the selected substitution operations and file(URL), and sent to a receiver bound to 127.0.0.1. It did not bootstrap VICIdial or access a database.

The receiver observed GET /ok with lead_id 12345, campaign LAB_DEMO, uniqueid 1700000000.123 and dispo NI. A separate local HTTP 503 made the extracted file(URL) return false. Our fixture guard rejected an unresolved placeholder before sending; that guard is not a claim about native VICIdial validation.

The inspected agent source identifies version 2.14-728c, build 261101-1945. The vdc_db_query.php source SHA-256 is recorded in the receipt. These observations establish the extracted transport operations for that source, not native scheduling, retry behavior or a Zapier account result.

You should seeThe proof and its limits are available separately from the reader-run live setup.

Download the actual local verification receipt

Download the exact local test output

Checks and sources

What was checked

  • The official VICIdial Call URL document and current Zapier help were researched before writing. The retained native source was pinned by version, build and SHA-256.
  • A real loopback HTTP receiver observed the extracted PHP operations sending GET with the expected four synthetic fields. The failure branch observed file(URL) return false on a local 503 response.
  • No authenticated Zapier editor, published Zap action or live VICIdial-to-Zapier disposition was captured for this guide. The user selected documented steps and local verification; complete the live acceptance checks in your own test setup.

Primary references

Sources

  1. VICIdial Call URL featuresVICIdial · accessed November 8, 2026
  2. Trigger Zap workflows from webhooksZapier · accessed November 8, 2026
  3. Create tables and store dataZapier · accessed November 8, 2026
  4. Set up your Zap actionZapier · accessed November 8, 2026
  5. Troubleshoot webhooks in ZapierZapier · accessed November 8, 2026
  6. Webhook response behavior when a Zap is offZapier · accessed November 8, 2026
  7. Webhooks by Zapier rate limitsZapier · accessed November 8, 2026
  8. Zapier Tables actionsZapier · accessed November 8, 2026