Make (formerly Integromat) is a visual automation platform that connects dialnote to 2,200+ apps. You can build multi-step workflows—called scenarios—that trigger whenever a call finishes, a recording is ready, or a note gets created. It's a great fit if you want branching logic, data transformation, or more complex automations than simple point-to-point connections.
Connecting dialnote to Make#
dialnote connects to Make through webhooks. You'll set up a webhook in Make that receives real-time data from dialnote whenever events occur.
Here's how to get started:
- In Make, create a new scenario and add a Webhooks module as your trigger
- Choose Custom webhook and click Add to generate a unique webhook URL
- Copy that URL
- In dialnote, go to Settings → Webhook Management
- Click Add Webhook and choose Custom Webhook as the provider
- Paste the Make webhook URL and give it a name (e.g., "Make - Call Automation"), up to 100 characters
- Under Events to send, tick the events you want: Call logs, Call recordings, Inbound SMS, Inbound MMS, Notes
- Save the webhook
One webhook, as many events as you want
Events to send is a checkbox list, so one webhook can deliver calls, recordings, inbound texts, and notes together. Branch on the payload's type field inside your Make scenario to route them. The URL must be HTTPS.
Test the connection first
After saving, click the Test button on your webhook in dialnote. This sends a fixed sample payload to Make so you can wire up your scenario without waiting for a real call. Heads up: the test payload uses a different shape (event_type: "test.webhook", test: true) than real events, so map your live fields against an actual call once one comes through.
Building Your First Scenario#
Once the webhook module receives data, you can add any combination of actions and logic. Make's visual editor lets you drag modules onto a canvas and connect them.
Example: Log Calls to Google Sheets and Notify Slack#
This scenario does two things when a call ends: adds a row to a spreadsheet and pings a Slack channel.
- Trigger: Webhooks → Custom webhook (receives dialnote call data)
- Route 1: Google Sheets → Add a Row (map caller number, duration, status, timestamp)
- Route 2: Slack → Create a Message (post a summary to your #calls channel)
Use Make's Router module to split the data into parallel paths. Both actions run at the same time, so there's no delay.
Example: Create CRM Contact After Call#
If a caller isn't already in your CRM, you can auto-create them:
- Trigger: Webhooks → Custom webhook
- Filter: Only proceed if call direction is "inbound"
- Search: HubSpot → Search Contacts by phone number
- Router: If no match found → HubSpot → Create Contact with the caller's number and name
Make's built-in filters save you from creating duplicate contacts. You can add conditions like minimum call duration or specific phone numbers to narrow what triggers downstream actions.
Available Webhook Data#
When dialnote fires a custom webhook, Make receives a JSON envelope you can map to any module:
{
"id": "unique-event-id",
"type": "call.completed",
"timestamp": "2024-01-15T10:30:00Z",
"organizationId": "your-org-id",
"data": {
"phoneNumberId": "01924f8e-1234-7000-8000-000000000002",
"conversationId": "01924f8e-1234-7000-8000-000000000003",
"callId": "01924f8e-1234-7000-8000-000000000004",
"callSid": "CA00000000000000000000000000000001",
"direction": "inbound",
"fromNumber": "+15551234567",
"toNumber": "+15559876543",
"status": "answered",
"duration": 180
}
}
data.status is one of answered, not_picked, failed, voicemail or disconnected — never completed or no-answer. To route missed calls, branch on not_picked or failed. Use data.toNumber for the dialnote line that was dialled, not data.phoneNumber.number.
The type tells you which event fired, and the data object holds the details for that event:
call.completed carries phoneNumberId, conversationId, callId, callSid, direction, fromNumber, toNumber, phoneNumber, status, and createdAt on every delivery. When available it also carries duration, hasRecording, endedBy, fromName, toName, initiatedAt, answeredAt, endedAt, contactId, transcriptionSummary, and failure details on failed calls.
call.recording.completed carries phoneNumberId, conversationId, callId, callSid, direction, fromNumber, toNumber, phoneNumber, and conversationUrl on every delivery. When available it also carries recordingSid, duration, fromName, toName, transcriptionSummary, transcriptionStatus, initiatedAt, endedAt, isVoicemail, contactId, and tags. There's no status field on this event.
conversationUrl is not an audio file
data.conversationUrl opens the conversation in dialnote. To download the recording audio, pass data.callId to the API recordings endpoints.
note.created carries phoneNumberId, conversationId, and a note object (id, content, authorId, author, createdAt), plus mentionedUserIds when teammates are @-mentioned. It has no call fields and no contact fields, so use conversationId to tie the note back to a call.
Inbound texts arrive as sms.received / mms.received. Full field tables for every event are in the Webhooks guide.
You can reference any of these fields in later modules. For example, pull data.fromNumber (the caller's number on an inbound call) to look up a contact, or drop data.duration into a formatted Slack message. Note data.phoneNumber is an object ({ id, number }) for the dialnote line, not the caller—use data.fromNumber / data.toNumber for the actual numbers.
For the full payload reference and signature details, see the Webhooks guide.
Popular Automation Ideas#
Make's strength is multi-step logic. Here are workflows dialnote users build:
- Smart follow-ups: Call ends → check if it lasted under 30 seconds → if yes, send an SMS follow-up via Twilio saying "Sorry we missed you"
- Lead scoring: New call recording → send transcription to OpenAI for sentiment analysis → update lead score in your CRM
- Ticket creation: Missed call → create a support ticket in Jira or Linear with the caller's details
- Daily digests: Schedule a daily scenario that pulls call stats from a Google Sheet (populated by another scenario) and emails a summary to your team
Webhook security
dialnote signs every custom webhook payload with an HMAC-SHA256 signature in the X-DialNote-Signature header (formatted sha256=...). You can verify this in Make using a custom function module to confirm payloads are authentic. Your webhook secret (starting with whsec_) is shown in Settings → Webhook Management next to each endpoint. The secret can't be regenerated from the app — delete and recreate the webhook if you need a new one.
Troubleshooting#
If your Make scenario isn't receiving data, check these common issues:
- Webhook paused in dialnote: After 3 consecutive delivery failures, dialnote auto-disables the webhook. Go to Settings → Webhook Management and re-enable it once you've fixed the cause.
- Scenario turned off in Make: Make won't process incoming webhooks if the scenario is inactive. Toggle it on in the scenario editor.
- Event not ticked: A webhook only sends what's ticked under Events to send. If recordings never arrive, confirm Call recordings is checked and that recording is enabled on the number.
- Slow endpoint: Your scenario must accept the payload within 30 seconds, or dialnote counts it as a failure.
Events are sent once — there is no retry
dialnote attempts each delivery exactly once. If Make is unreachable or your scenario takes longer than 30 seconds to accept the payload, that event is lost — it is not queued or redelivered.
For scenarios you can't afford to miss an event in, accept the webhook immediately and do the heavy processing in later modules.
Each webhook card in Settings → Webhook Management shows the last delivery time, consecutive failure count, and the most recent error message.
What's Next#
- Webhooks — full payload reference, signature verification, and webhook management
- Zapier — a built-in, no-code path to 5,000+ apps
- n8n — another visual automation tool that accepts dialnote webhooks
- CRM integrations — push call activity to HubSpot, Salesforce, or Pipedrive without a custom endpoint