Integrations
One verdict. Every place it’s useful.
When a call qualifies or books, Saylia sends the outcome to the ad platforms that paid for the click and to your own systems — each matched the way that platform expects.
Booked · AC repair · $389
From a Google search ad · (512) 555-0143
- Google Ads“Booked call” · $389 · by click ID Sent
- Microsoft AdvertisingNo MSCLKID on this call Not sent
- MetaSchedule · phone_call · by hashed phone Sent
- Your CRMcall.completed · signed webhook Sent
Ad platforms
Conversions your bidding can learn from.
Each platform gets the qualified and booked calls it can match, with the value you set, under the conversion name you choose.
- Google Ads
Calls from your site and from call ads both go back to Google Ads with their outcome.
- Sends
- Qualified and booked calls as offline conversions, with values
- Matched by
- Click ID (gclid, gbraid or wbraid) with hashed caller details, or the caller and call time for calls from call ads
- Microsoft Advertising
Calls that came from a Microsoft Advertising click are matched by their MSCLKID, with the caller’s hashed number alongside. Calls without an MSCLKID aren’t sent.
- Sends
- Offline conversions, with values
- Matched by
- MSCLKID, with the caller’s hashed number attached
- Meta
Marked as phone calls, with qualified and booked calls sent as their own events so nothing is counted twice.
- Sends
- Conversions API events from phone calls, with values
- Matched by
- Hashed caller number, plus the Meta click ID when there is one
For developers
Webhooks and an API, built to be relied on.
Get every call into your own systems the moment it starts, ends or has a recording — and pull anything else you need on your schedule.
Webhooks
Subscribe any endpoint to the events it needs:
- call.started
- call.answered
- call.completed
- call.missed
- recording.available
Signed
Every delivery carries an HMAC-SHA256 signature of the body in
X-Webhook-Signature, made with your endpoint’s secret.Retried, safely
A failed delivery is retried up to seven more times over about four hours, backing off from one minute to two hours, under the same
X-Webhook-DeliveryID — so a repeat is easy to drop on your side.Logged
Every delivery and retry is logged with its status and your endpoint’s response, so a failed one is easy to spot. Send a test event any time.
Private addresses refused
Endpoints that resolve to an internal network are refused before anything is sent.
REST API
- Keys that stay in their laneAn API key never carries more access than the person who created it holds today — demote them, and the key shrinks too.
- Per-key rate limitsEach key has its own limit, reported back on every response.
- Cursor paginationPage through calls with a stable cursor, so new calls never shift what you have already read.
import { createHmac, timingSafeEqual } from 'node:crypto';
// rawBody: the request body exactly as received, before JSON.parse
export function isFromSaylia(rawBody, signature, secret) {
const expected = createHmac('sha256', secret)
.update(rawBody)
.digest('hex');
return typeof signature === 'string'
&& signature.length === expected.length
&& timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}// POST https://your-app.example.com/hooks/saylia
// X-Webhook-Event: call.completed
// X-Webhook-Delivery: 3f0c9e62-…
// X-Webhook-Signature: 9b1d4e…
{
"event": "call.completed",
"data": {
"call_id": "8f3c2a71-…",
"account_id": "5b0e9d14-…",
"duration_seconds": 376,
"talk_duration_seconds": 351,
"ended_at": "2026-09-29T15:48:47Z"
}
}Delivery
Every upload accounted for.
A conversion that silently fails to arrive is worse than none: bidding learns from the gap. Saylia treats every upload as something to prove.
Sent once
Duplicates are caught before they go out, and click conversions carry an order ID the platform can check too.
Retried automatically
Anything a platform doesn’t accept is sent again on the next scheduled pass.
Paced to each platform
Uploads stay inside each platform’s rate limits, and pause while a platform is having trouble.
Logged
Every send is logged with the platform’s answer, including the reason when a platform says no.
Connect the tools you already use.
Google Ads, Microsoft Advertising, Meta and your own systems — see exactly what each one receives from your calls.