Get a free Shopify store audit

Outreach Dialer

Outreach Dialer, an open-source Twilio browser dialer with built-in CRM, call logging and missed-call alerts—built for our own outreach team, free to self-host.

Industry
Sales Operations / Open Source
What we did
Product Engineering, Telephony Integration, Open Source
Built with
Next.jsTypeScriptTwilio Voice JS SDKPostgresPrismaResend

What it does, step by step. The coral steps are where AI does the work.

  1. Call

    Click-to-call in the browser

  2. Pick caller ID

    By destination country

  3. Track status

    Ordered webhooks + hourly check

  4. Follow up

    Missed-call SMS, email, CRM

The challenge

ASSOSIATIX runs its own international B2B outreach—researching businesses and calling them directly. A browser dialer tied to real call logging and a lightweight CRM is table stakes for that, but commercial options mean a vendor contract and a black box over the call data, and the open-source alternatives we found were unmaintained. We wanted a dialer we owned outright: our data, our infrastructure, built to the exact workflow our team actually uses.

What we built

We built Outreach Dialer—a Twilio-powered browser dialer with a built-in CRM. Click-to-call or dial from the keypad, with caller ID auto-selected by the destination country. Inbound calls simul-ring every available teammate; missed calls trigger an SMS and email alert and fall through to voicemail. Contacts carry stage, notes and next follow-up, so wrap-up after a call takes seconds, and the next person to pick it up has full context.

How we built it

Call state is the part that's easy to get wrong with Twilio webhooks arriving out of order, so status updates follow a strict ordering rule—no late callback can undo a final outcome—backed by an hourly job that reconciles anything left stuck against the Twilio API. Recordings and voicemails are proxied through our own API, so Twilio credentials never reach the browser, and every webhook is verified against its signature. A cost guard refuses any call priced above a configurable per-minute rate before it dials. Deliberately out of scope: predictive dialing, call queues, IVR—we built what our own team needed, not a PBX.

Highlights. The engineering details that made it hold up.

No silent drops

Twilio's status callbacks can arrive out of order. A strict status-ordering rule means no late callback can overwrite a call that already has a final outcome, and an hourly reconciliation job catches anything left stuck against the Twilio API directly.

Caller ID by destination

The dialer picks a number from the destination country automatically, falling back to the same calling code, then a default—so an international call shows a local-looking number without the caller choosing anything.

Missed call handling

Inbound calls simul-ring every available teammate at once; nobody online or nobody answering logs as missed with an SMS and email alert, and a voicemail recording with a listen link.

Cost guard

Outbound calls priced above a configurable per-minute rate are refused before they dial, so a misdialed premium-rate or satellite number can't run up a surprise bill.

Secure by design

Recordings and voicemails play back through our own proxy—Twilio credentials never reach the browser—and every incoming webhook is checked against Twilio's signature before it's trusted.

Built-in CRM

Contacts carry stage, research notes and next follow-up. Every call lands in a full history with its final status, and SMS replies land on the same contact timeline—so wrap-up after a call is the only data entry anyone does.

The result

It's running our own outreach calling today, and we open-sourced it (MIT) rather than keep it internal—any team with a Twilio account can self-host their own instance instead of renting a locked-down dialer subscription.

Want something like this built?

Share a few details and we'll reply within 1–2 business days with questions, a scope and a quote.