AskMuse works with Zapier and Make through webhooks. You paste one address into your dashboard, and every finished call, phone booking, moved or cancelled booking and new lead is posted to it the moment it happens — signed, over HTTPS. The webhook is on every plan, including $39.99, and it takes about 10 minutes to set up.
https://hooks.zapier.com/hooks/catch/.Open Settings › Integrations, find Outgoing webhook, paste the
address and press Save webhook. It must start with https://. Once it is saved,
the same row shows your signing secret (keep it for the signature check below) and a
Test ping button.
Test ping posts {"event":"test_ping"} from your browser. It
proves the address answers, but it has no fields to map. For a real sample, call your AI number
from your own phone, give your name and what you need, and hang up: a call.ended
event arrives seconds later. Then press Test trigger in Zapier (in Make, the Run once bubble
fills in). Every field below can now be mapped.
Every event is one JSON POST with the same envelope. Events sent from
the website side (a booking moved or cancelled from your dashboard or the customer's own link, and
both lead events) also carry "locale": "en-CA" or "fr-CA" beside
business. The field names never change with the language.
{
"event": "booking.created",
"business": "Harbor Roofing",
"data": {
"confirmation": "ALG-4821",
"starts_at": "2026-10-02T09:00:00-04:00",
"caller_name": "Jon Smith",
"callback_number": "+16475551234",
"notes": null
}
}
call.endedA call to your AI number ended.
outcomebooked, lead, call (questions only) or missedsummaryduration_sbooked_fornullurgenttrue when she marked the call urgentintakeThis event has no separate name or number field. For those as their own fields,
use booking.created or lead.created.
booking.createdShe booked a caller in, on a call.
confirmationstarts_atcaller_namecallback_numbernotesbooking.movedA booking was moved, from your dashboard or the customer's own link.
confirmationcustomerwas / whenstarts_at / previous_starts_atbooking.cancelledA booking was cancelled.
confirmation, starts_at, caller_nameconfirmation, customer, when (written out), starts_atlead.created and lead.escalatedA new lead reached your Leads inbox, or a website visitor asked for a person.
lead_idname, phone, emailwantssource / pagecall_idsubmitted_atreasonlead.escalated only; empty otherwise)Leads from your website chat and the call-back card are posted within seconds; leads from other doors are posted by a sweep that runs once a day. Lead events go out only while a notification email is set in Settings.
For a dental office, clinic, physio, chiro, massage, vet, pharmacy or other health
practice, AskMuse leaves out what the caller said. summary, notes,
reason, need, wants, transcript and
message arrive as empty strings — the fields stay, so your mapping keeps working — and
an escalation's reason says to open the dashboard. Names, numbers, times and outcomes still go.
Every event carries 2 headers, signed with your signing secret:
X-ALG-Timestamp: 1790000000
X-ALG-Signature: sha256=<hex HMAC-SHA256(secret, timestamp + "." + raw body)>
Take the body exactly as it arrived, compute the same HMAC, compare, and refuse a timestamp more than 5 minutes old so a copied request cannot be replayed. In Node:
const crypto = require("crypto");
function fromAskMuse(rawBody, headers, secret) {
const ts = headers["x-alg-timestamp"];
const sig = String(headers["x-alg-signature"] || "");
if (!ts || Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
const want = "sha256=" + crypto.createHmac("sha256", secret)
.update(ts + "." + rawBody).digest("hex");
return sig.length === want.length &&
crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(want));
}
Zapier: Catch Hook › Filter: event exactly matches
call.ended › Google Sheets: Create Spreadsheet Row, mapping
outcome, summary, duration_s and booked_for to
your columns. Make: Custom webhook › a filter on event › Google Sheets: Add a
Row.
AskMuse also has Google Sheets built in (Settings › Integrations). Use this when you want your own columns or your own sheet layout.
Zapier: Catch Hook › Filter: event is call.ended AND
outcome is lead or booked › Slack: Send Channel
Message — for example "New {{outcome}} call: {{summary}}". Make: the same filter, then
Slack: Create a Message.
Slack is built in too; a Zap lets you pick which calls post and what the message says.
Zapier: Catch Hook › Filter: event is booking.created ›
your CRM's Find or Create Contact with caller_name and
callback_number › add a note or activity with starts_at,
confirmation and notes. Add a second path for lead.created
(name, phone, email, wants) to catch web leads
too. Make: a Router after the webhook, one route per event.
It is part of the free setup — start here and say which tool you want your calls in.