Skip to main content

Automotive

Voice for dealerships, service centers, and automotive SaaS.

Pattern: DMS Screen Pop on the service advisor's desk​

DMS-lookup webhook handler​

TypeScript
app.post('/webhooks/dialstack', express.raw({ type: 'application/json' }), async (req, res) => {
verifySignature(req);
const event = JSON.parse(req.body);

if (event.type === 'call.incoming') {
const customer = await dms.customers.findByPhone(event.data.from_number);
if (customer) {
const [vehicle, openRO] = await Promise.all([
dms.vehicles.findOne({ customer_id: customer.id, primary: true }),
dms.repairOrders.findOne({ customer_id: customer.id, status: 'open' }),
]);

pusher.trigger(`user-${event.data.user_id}`, 'screen-pop', {
customerId: customer.id,
vehicle,
openRO,
callId: event.data.call_id,
});
}
}

res.status(200).end();
});

DMS lookups can be slow — if yours take more than a second or two, queue the push and return 200 immediately. Full pattern: Screen Pop.

Pattern: department routing​

One published number, smart routing based on time-of-day, extensions, or caller history.

TypeScript
await ds.dialPlans.create(
{
name: 'Main dealership line',
entry_node: 'dept_schedule',
nodes: [
{
id: 'dept_schedule',
type: 'schedule',
config: { schedule: serviceHours.id, open: 'ring_service', closed: 'after_hours' },
},
{ id: 'ring_service', type: 'ring_all_users', config: { timeout: 20, next: 'after_hours' } },
{ id: 'after_hours', type: 'voice_app', config: { voice_app: afterHoursAgent.id } },
],
},
{ dialstackAccount: account.id }
);

serviceHours is a schedule from the Schedules API and afterHoursAgent is a voice app.

Publish extensions for direct access — sales 100, service 200, parts 300 — via the Extensions API. Each extension points at a user, ring group, or dial plan.

Pattern: service appointment booking over voice​

Service scheduling is complex. Rather than rebuilding that logic, use the Notify node to stream call audio directly to your platform's existing AI assistant. Your bespoke VoiceAI handles the conversation, collects vehicle details, and books the appointment directly in your DMS — you maintain total control over the experience.

Full flow: BYO VoiceAI.

Build this with DialStack​