Integrations
Send coaching reports to your CRM
Each time a coaching report is ready, Coached2Sell can send it automatically to your CRM (HubSpot, Salesforce, Pipedrive, Membrain, or Zoho) using a connector tool like Zapier or Make.
When it sends
The event name is report.completed. Coached2Sell sends it when the coaching report is generated and saved. If the report is held for review before the salesperson email goes out, your CRM still receives the event when the report is generated. Sending that email later does not send a second webhook.
Only the account that saved the webhook receives events, and only for coaching reports generated for that account. One event is sent per generated report. A failed delivery does not stop the report or the email. The account page keeps the last delivery status.
Zapier
- In Zapier, create a Zap.
- Choose the trigger Webhooks by Zapier, then Catch Hook.
- Copy the hook URL. It starts with https://hooks.zapier.com/.
- In Coached2Sell, open Account, paste that URL, and choose Save webhook. Copy the signing secret. Checking the box does not send events until you save.
- Click Send test event. Zapier shows the fields from the sample below.
- Add a CRM action and map the fields, then turn the Zap on. On the account page, check the box and choose Save webhook so automatic delivery stays on.
HubSpot note
Action: create a note (an engagement). Put the summary, each item in coachingPoints, the next step, and the report link in the note body. Find the contact by the salesperson email.
Salesforce task
Action: create a task. Subject can be the company plus the stage. Description should include the summary, the next step, and the report link. Relate it to the lead or contact that matches the salesperson email.
Pipedrive note
Action: create a note. Use the same summary, coaching points, next step, and report link. Attach it to the person found by the salesperson email.
Membrain note
Connect through Zapier and create a note. Include the summary, the coaching points, the next step, and the link to the coaching report. Attach it to the salesperson.
Zoho CRM
Connect through Zapier. Create or update the contact or lead, and include the summary, the coaching points, the next step, and the link to the coaching report. You can also attach a file to that contact or lead.
Make
In Make, add the Webhooks module and choose a custom webhook. Paste that https URL on the account page the same way, send a test event, then add the HubSpot, Salesforce, or Pipedrive module you want.
Sample payload
id is the event id. createdAt is when the coaching report was generated. reportUrl is an authenticated link to that report. coachingPoints is the list of coaching points. version is 1. The body includes only those fields, the salesperson name and email, the company, the stage, the summary, and the next step. A test event from the account page uses the same fields and the public sample report link. The POST body is compact JSON. The sample below is pretty-printed so it is easier to read. Verify the signature against the exact request body, not a re-formatted copy.
{
"id": "evt_sample_report_completed",
"type": "report.completed",
"version": 1,
"createdAt": "2026-10-15T13:00:00.000Z",
"rep": {
"name": "Pat Seller",
"email": "pat@example.com"
},
"company": "Northwind Supply",
"stage": "Discovery",
"summary": "The salesperson moved to a product pitch before the buyer described the problem in their own words.",
"coachingPoints": [
"Asked a leading question instead of an open one.",
"Did not confirm who else is involved in the decision."
],
"nextStep": "Send a short note that restates the buyer problem and asks for a working session with the operations lead.",
"reportUrl": "https://coached2sell.com/reports/cksamplecoachingreport?t=signed-report-token"
}Signature
Every POST includes X-Coached2Sell-Timestamp (unix time in seconds) and X-Coached2Sell-Signature with the value sha256= plus the hex HMAC-SHA256 of timestamp.body. The signing secret is the one shown on the account page. Compare in constant time, and reject timestamps more than five minutes off. A Catch Hook URL is already unguessable. Use this check when the webhook lands on your own server.
const crypto = require("crypto");
function verifyCoached2SellWebhook(secret, rawBody, timestamp, signature) {
const ageSeconds = Math.abs(Date.now() / 1000 - Number(timestamp));
if (!Number.isFinite(ageSeconds) || ageSeconds > 300) return false;
const expected =
"sha256=" +
crypto.createHmac("sha256", secret).update(timestamp + "." + rawBody).digest("hex");
const actual = Buffer.from(signature);
const wanted = Buffer.from(expected);
if (actual.length !== wanted.length) return false;
return crypto.timingSafeEqual(actual, wanted);
}Retries
Each attempt waits about 10 seconds. If the receiver does not answer with a success status, Coached2Sell retries with backoff, up to 3 attempts. The same body and timestamp are sent each time. Most 4xx responses are not retried. Redirects are not followed.
Turn it off
On the account page, clear the checkbox and choose Save webhook. Checking or clearing the box does nothing until that save. Automatic events stop after you save it off. The URL and signing secret stay until you change them. Rotate signing secret replaces the secret. Update Zapier or Make after a rotation.
