Salesight
ProductPricingCustomersChangelog
AnmeldenSign inStart free
Dokumentation
Dokumentation
Dokumentation
Übersicht
Outbound WebhooksZapierMaken8n
IntegrationsOutbound Webhooks

Outbound Webhooks

Receive Salesight call_review.finalised events in Zapier, Make, n8n, or a custom HTTPS endpoint.

Outbound webhooks send finalised Salesight call reviews to an HTTPS endpoint. Use them when you want to write scored call data into a CRM, spreadsheet, data warehouse, or no-code automation tool.

Event

Salesight currently emits one event:

call_review.finalised

The event fires after a call analysis has been saved as a CallReview.

Headers

Every delivery is a POST with JSON body and these verification headers:

Content-Type: application/json
User-Agent: Salesight-Outbound-Webhooks/1.0
X-Salesight-Event: call_review.finalised
X-Salesight-Delivery: del_...
X-Salesight-Timestamp: 1760000000
X-Salesight-Signature: sha256=...

The signature is an HMAC SHA-256 digest of:

<X-Salesight-Timestamp>.<raw request body>

Use the signing secret shown in the Integrations page. Compare signatures with a timing-safe equality function.

import { createHmac, timingSafeEqual } from "node:crypto";

export function verifySalesightWebhook({
	body,
	secret,
	signature,
	timestamp,
}: {
	body: string;
	secret: string;
	signature: string;
	timestamp: string;
}) {
	const expected = `sha256=${createHmac("sha256", secret)
		.update(`${timestamp}.${body}`)
		.digest("hex")}`;
	const expectedBuffer = Buffer.from(expected);
	const signatureBuffer = Buffer.from(signature);

	return (
		expectedBuffer.length === signatureBuffer.length &&
		timingSafeEqual(expectedBuffer, signatureBuffer)
	);
}

Payload

{
	"event": "call_review.finalised",
	"deliveryId": "del_0123456789abcdef",
	"createdAt": "2026-05-25T03:00:00.000Z",
	"data": {
		"callReview": {
			"id": "review_123",
			"organization": {
				"id": "org_123",
				"name": "Acme Sales",
				"slug": "acme-sales"
			},
			"company": {
				"id": "company_123",
				"name": "Acme",
				"slug": "acme"
			},
			"product": {
				"id": "product_123",
				"name": "Revenue Platform",
				"slug": "revenue-platform"
			},
			"offer": {
				"id": "product_123",
				"name": "Revenue Platform",
				"slug": "revenue-platform",
				"targetClient": "Mid-market sales teams",
				"hasTiers": true,
				"tiers": [
					{
						"id": "tier_growth",
						"name": "Growth",
						"kind": "standard",
						"rank": 1,
						"priceModel": "fixed",
						"priceInterval": null,
						"priceMinCents": 1200000,
						"priceMaxCents": null,
						"priceCurrency": "USD",
						"priceNote": null
					},
					{
						"id": "tier_pilot",
						"name": "Pilot",
						"kind": "fallback",
						"rank": 1,
						"priceModel": "custom",
						"priceInterval": null,
						"priceMinCents": null,
						"priceMaxCents": null,
						"priceCurrency": "USD",
						"priceNote": "Custom pilot pricing"
					}
				],
				"rules": [
					{
						"id": "rule_budget_gate",
						"type": "tier_gate",
						"description": "Confirm annual budget before recommending Growth.",
						"appliesToTierId": "tier_growth",
						"enforcedByCriterionKey": "budget-confirmed",
						"appliesToTier": {
							"id": "tier_growth",
							"name": "Growth",
							"kind": "standard",
							"rank": 1
						}
					}
				]
			},
			"soldTier": {
				"id": "tier_growth",
				"name": "Growth",
				"kind": "standard",
				"rank": 1,
				"priceModel": "fixed",
				"priceInterval": null,
				"priceMinCents": 1200000,
				"priceMaxCents": null,
				"priceCurrency": "USD",
				"priceNote": null
			},
			"score": 87,
			"summary": "Rep handled pricing concerns and confirmed next steps.",
			"sentiment": "Positive",
			"topObjections": ["Price sensitivity", "Implementation timing"],
			"coachingFlags": ["Confirm decision criteria earlier"],
			"flagTriggers": [
				{
					"id": "flag_trigger_budget",
					"triggered": true,
					"transcriptQuote": "We still need finance to approve the annual budget.",
					"timestampSec": 842,
					"flag": {
						"id": "flag_budget_risk",
						"key": "budget-risk",
						"name": "Budget risk",
						"description": "Buyer indicates budget approval is not confirmed.",
						"effect": "penalty",
						"capScore": null,
						"penaltyPoints": 8,
						"order": 1
					}
				}
			],
			"rep": {
				"id": "rep_123",
				"name": "Avery Stone",
				"email": "avery@example.com",
				"memberId": "member_123",
				"userId": "user_123"
			},
			"customer": {
				"name": "Jordan Lee"
			},
			"source": {
				"provider": "fathom",
				"externalId": "call_123"
			},
			"timestamps": {
				"finalisedAt": "2026-05-25T02:59:57.000Z",
				"createdAt": "2026-05-25T02:59:57.000Z"
			},
			"links": {
				"app": "https://salesight.ai/app/acme-sales/analyzer"
			}
		}
	}
}

Retries

Salesight treats any non-2xx response or network timeout as a failed delivery. Failed deliveries retry up to 5 times with exponential backoff. After 5 consecutive failures, the webhook is disabled and the Integrations page shows the failure count.

Test Events

Use Send test on the Integrations page after adding an endpoint. Test events use the same headers and payload shape, with fixture IDs like review_test_call_review_finalised.

Übersicht

Previous Page

Zapier

Use a Zapier webhook trigger to write Salesight call reviews into CRMs and spreadsheets.

On this page

EventHeadersPayloadRetriesTest Events
Salesight

AI-powered sales call analysis and coaching for teams that want to close more deals.

Product

FeaturesPricingFAQ

Company

Contact

Legal

Privacy policyTerms and conditions

© 2026 Salesight.ai.