Integrations & Webhooks
Connect Voquii to your existing tools. Use direct OAuth integrations for calendars and CRMs, or webhooks to push events to any platform.
On This Page
Direct Integrations (OAuth)
Webhook Integrations
Direct Integrations (OAuth)
Google Calendar
One-click OAuth connect from Settings → Integrations.
Setup
Permissions Requested
calendar.events— Read/write calendar eventsuserinfo.email— See your email address
What It Does
- Appointments booked by the bot auto-create Google Calendar events
- Cancellations and updates sync automatically
Microsoft 365 / Outlook
OAuth connect from Settings → Integrations.
Setup
Permissions Requested
User.Read— Read your profileCalendars.ReadWrite— Read and write calendar events
What It Does
- Same auto-sync as Google Calendar — events created, updated, and cancelled automatically
HubSpot CRM
OAuth connect from Settings → Integrations.
Setup
Permissions Requested
crm.objects.contacts.read/write— Read and create contactscrm.objects.companies.read— Read company datacrm.objects.deals.read/write— Read and create deals
What It Does
- Leads captured by the bot can sync to HubSpot contacts
Webhook Integrations
Voquii sends HTTP POST requests to your URL when events happen — new conversations, messages, leads, appointments, and more. Connect to any platform that accepts webhooks.
Setting Up a Webhook
Go to Settings → Integrations → Add Integration
Available Events
| Event | Description |
|---|---|
| conversation.started | New conversation opened |
| message.received | Customer sent a message |
| bot.response | AI sent a response |
| lead.created | New lead captured |
| lead.updated | Lead info updated |
| appointment.requested | Customer asked to book |
| appointment.created | Appointment confirmed |
| appointment.updated | Appointment modified |
| appointment.cancelled | Appointment cancelled |
Payload Format
Every webhook delivery is a JSON POST with the event type, timestamp, a unique delivery ID, and event-specific data.
{
"specVersion": "voquii.integration.v1",
"eventId": "evt_7f3a2e0c2c1a4d6a",
"eventType": "lead.created",
"occurredAt": "2026-01-26T23:45:10.120Z",
"tenantId": "tnt_abc123",
"botId": "bot_xyz789",
"environment": "production",
"idempotencyKey": "lead.created:lead_10293:2026-01-26T23:45:10.120Z",
"data": {
"lead": {
"leadId": "lead_10293",
"name": "Jordan Smith",
"email": "jordan@example.com",
"phone": "+15551234567"
},
"conversation": {
"conversationId": "conv_88aa10",
"channel": "widget"
}
}
}Signature Verification
If you configure a signing secret, every delivery includes an HMAC-SHA256 signature so you can verify it came from Voquii.
Header: X-Voquii-Signature
Format: sha256=<hex>
Input: HMAC-SHA256(secret, "${timestamp}.${rawBody}")
const crypto = require('crypto');
function verifyWebhook(secret, req) {
const timestamp = req.headers['x-voquii-timestamp'];
const signature = req.headers['x-voquii-signature'];
const rawBody = JSON.stringify(req.body);
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(timestamp + '.' + rawBody)
.digest('hex');
// Use timing-safe comparison to prevent timing attacks
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signature)
);
}
app.post('/webhook', (req, res) => {
if (!verifyWebhook(process.env.WEBHOOK_SECRET, req)) {
return res.status(401).send('Invalid signature');
}
console.log('Event:', req.body.eventType);
res.status(200).send('OK');
});Delivery Logs
View all webhook deliveries in Settings → Integrations. Each delivery shows the event type, status code, response time, and any error messages.
- Retry failed deliveries with one click
- View request payload and response body
- Filter by event type or status
Platform Guides
Zapier
Use the "Webhooks by Zapier" trigger to receive Voquii events in any Zap.
Make.com
Create a scenario with the Custom Webhook module to receive Voquii events.
GoHighLevel
Use an Inbound Webhook trigger in GoHighLevel Workflows to receive Voquii events.
data.lead.name, data.lead.email)