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, PayPal, 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

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