VICIfast
Feature · Custom Lead Loader

Custom Lead Loader.

A 1-million-row leads.csv finishes parsing in seconds. No CLI. No batched chunks. No "your file is too large, please split it". Drag the file into the dashboard; we dedup on phone + list-id, validate format, map columns to your custom fields, and stream rows into vicidial_list in single COPY statements. The same machine that ships your dialer in 40 seconds loads your million leads while you blink.
See pricing

7-day free trial · Cancel anytime · Pay with card or USDT

vicifast - lead loader
leads.csv
248 MB · 14 columns
Loading…84%
847,193of 1,000,000 rows
~190,000 rows/sec · ETA < 1s
✓Headers mapped - phone, first, last, state, source14 cols
✓De-duplicate on phone10,430 removed
↻DNC + litigator scrubrunning…
+1 415 555 0148Maria G.CAvalid
+1 305 555 0192D. AlvarezFLvalid
+1 212 555 0177J. OkaforNYvalid
40smedian deploy time
99.94%fleet uptime · last 30d
6regions live
Auditedevery state change

What you get

The full custom lead loader surface, end-to-end.

Every card below is a shipped capability. Hover for emphasis; click any matching feature for the deep page.

Drag-and-drop, not a CLI

The Leads tab in your list opens a drop zone. Drop a CSV up to 300 MB; we stream-parse it on the server. The browser never holds the whole file - you can close the tab and come back to find it done.

Column mapping with smart defaults

We detect phone / first / last / city / state / postal from the header row. Anything else maps to the list custom fields. You can override before the load runs.

Dedup on phone + list-id at insert time

Duplicates against the existing list are skipped at the SQL level, not in JS. A million-row file finishes inside a single transaction; rollback is atomic if anything goes wrong.

Invalid rows quarantined, not rejected

A bad phone number does not fail the import. Invalid rows are dropped to an invalid.csv you can download and fix; the rest of the file lands.

No size limit on the plan

Plans do not gate by lead count. Load 10 million if your campaign needs it. The Hetzner disk is yours; the platform is not metering the rows.

No "upload then wait for a worker"

The import is synchronous from your perspective. The progress bar in the dashboard is the actual COPY transaction running. Average finish: 8 seconds for a million rows.

Append, replace, or reset modes

Append to the existing list, replace it entirely (with a typed confirmation), or reset and load fresh. The mode is chosen up-front; no surprise replacements after a careless click.

CSV, Excel, and Google Sheets

Drop .csv, .xlsx, or paste a Google Sheets share URL - the importer handles all three. The Sheets path uses a one-off read-only API call; we never store credentials.

A realistic full-million import. The CLI is shown for clarity; the dashboard flow runs the same pipeline from a drag-and-drop. Invalid rows download as a side-CSV instead of failing the whole import.

FAQ

Questions worth answering

The legacy loader is a PHP form that times out around 50,000 rows on a default install, and only loads what fits in memory. We bypass it entirely and stream directly into vicidial_list. The legacy loader is still there for files under 10,000 rows where it works fine.

We read your list's custom field schema and map header columns to them. New columns can be auto-created at import time (with your approval) or quarantined to the unmapped pile.

Yes - drop a CSV into a watched S3 bucket and we poll it. Useful for nightly CRM exports. The same dedup + validate + stream-load pipeline runs.

If your campaign has TCPA scrubbing enabled, every imported number is scrubbed against your Blacklist Alliance API key in batch before insertion. Litigators land in the quarantined pile, not in vicidial_list.

Each import is tagged with a batch_id. Bulk Delete by Batch on the list grid removes the entire import in one query.

Drop your first million leads in seconds.

Start the trial. Drag a CSV, choose mapping, watch the COPY transaction finish before your coffee. Dedup + validate + invalid-quarantine on every import.

All features