Open original guide with interactive examples →
When a review finishes, n8n picks it up within 15 minutes: the summary, the scorecard with every sales step, the coaching and the full transcript. From there it goes wherever your team works: your CRM, a sheet, a report.
Sales Coachrep records the visit, the review finishes
↓ every 15 minutes
Sales Coach APIread-only, with your Sales Coach key
↓
Your n8nthe ready-made workflow on this page
↓
Your systemCRM record, sheet, database
What you get
| Part | What’s in it |
|---|---|
| Review | Title, when it was recorded, length, the customer, the rep (a person or an AI assistant), the linked appointment, and whether it was an in-person visit, an uploaded file or a phone call |
| Score | Points out of the maximum, and how many of your sales steps were followed |
| Summary | What happened, the outcome, sentiment, next steps, commitments, customer needs, products, budget, timeline, objections, competitors and buying intent |
| Scorecard | Each section’s score and reason, and each sales step marked done, partly or skipped, with the second it happened |
| Coaching | The coaching points, each tied to a moment in the conversation |
| Transcript | Every line in order, with who spoke and when |
Read-only by design. The key can read finished reviews and nothing else. It can’t see contacts, send messages, or change or delete anything. Recordings, audio links, QA flags and internal notes are never sent.
Before you start
- An owner or admin of your Channel Automation workspace. Only they can create a Sales Coach key.
- n8n, either n8n Cloud or your own server, and someone who can build a workflow in it.
- Somewhere to send reviews, and a way to match records there: each review has a stable
id, so your destination can update the same record when a review changes. - At least one finished review in Sales Coach, so your first test has something to show.
Set it up
This takes about 15 minutes.
-
Create your Sales Coach key
In Channel Automation, open Settings → API Keys → Generate New Key. Under Key type, choose Sales Coach key (read-only, for integrations), name it something like n8n reviews, and press Generate API Key.
Copy the key now. It is shown once and is not stored anywhere, not even for you. If you lose it, deactivate it and create a new one. Never paste it into an email or a ticket.
-
Add the workflow to n8n
In n8n, create a new workflow. Press Copy workflow below, click the empty canvas and paste (Ctrl/⌘ + V).
Prefer a file? Paste the copied text into a file named
sales-coach-reviews.json, then use the workflow’s ⋯ menu → Import from File.Copy workflow
-
Add your key as a credential
Open the step List changed reviews. In its credential field (authentication is already set to Header Auth), create a new credential:
Field Value Name X-API-KeyValue your Sales Coach key (starts with crm_live_)Then open Get the full review and pick the same credential. The key lives only in n8n’s credential store, never in the workflow itself.
-
Point it at your system
Replace the placeholder step Send to your system with the step that saves a review: for example your CRM’s node, Google Sheets → Append or update row, or an HTTP request. Match on the review’s
idso a re-analysed review updates the same record. Keep the new step connected to Wait for every review.Useful fields to map:
summary.summary,summary.next_steps,scorecard.percent,process.percent,coachingandtranscript. The field guide below lists them all.The processing, unavailable and deleted branches are placeholders too. At minimum, connect Deleted: remove your copy to a step that deletes the record, so a review deleted at a customer’s request disappears from your system as well.
-
Test it
Run the workflow once with Execute workflow (called Test workflow in older n8n versions). It starts from the Run now (for testing) step. The first run collects every finished review, so it can take a few minutes if you already have many. Open each step to check what came through.
Test runs never move the bookmark, so you can run a test as often as you like; each one starts from the same place.
-
Turn it on
Turn the workflow on (Active, or Publish in the newest n8n versions). From then on it runs every 15 minutes and only picks up what changed since the last successful run.
Try it in Postman
Before building anything, check your key works. Two ways, both tested against the live API.
Option A: the ready-made collection
- Press Copy collection.
- In Postman, choose Import → Raw text, paste, and import.
- Open the collection’s Variables, set
apiKeyto your Sales Coach key, and save. - Send the requests in order. Request 1 saves a review id and the next-page cursor, so requests 2–5 work without editing anything. For request 6, set
phoneto a customer’s number first.
Copy collection
Option B: curl commands
Paste them into a terminal, or into Postman’s Import box one at a time. Replace PASTE_YOUR_SALES_COACH_KEY with your key. Take PASTE_NEXT_CURSOR and PASTE_REVIEW_ID from the first response’s next_cursor and a review’s id.
curl “https://api.channelautomation.com/api/v1/sales-coach/reviews?limit=5” \ -H “X-API-Key: PASTE_YOUR_SALES_COACH_KEY”
curl “https://api.channelautomation.com/api/v1/sales-coach/reviews?limit=5&cursor=PASTE\_NEXT\_CURSOR” \ -H “X-API-Key: PASTE_YOUR_SALES_COACH_KEY”
curl “https://api.channelautomation.com/api/v1/sales-coach/reviews?limit=5&updated\_since=2026-09-01T00:00:00Z” \ -H “X-API-Key: PASTE_YOUR_SALES_COACH_KEY”
curl “https://api.channelautomation.com/api/v1/sales-coach/reviews/PASTE\_REVIEW\_ID” \ -H “X-API-Key: PASTE_YOUR_SALES_COACH_KEY”
curl “https://api.channelautomation.com/api/v1/sales-coach/reviews/PASTE\_REVIEW\_ID?include=summary,scorecard” \ -H “X-API-Key: PASTE_YOUR_SALES_COACH_KEY”
curl “https://api.channelautomation.com/api/v1/sales-coach/reviews?phone=%2B15551234567&limit=5” \ -H “X-API-Key: PASTE_YOUR_SALES_COACH_KEY”
Copy curl commands
A 401 means the key is wrong or deactivated; a 403 means it isn’t a Sales Coach key. See Troubleshooting.
Follow one review
Pick what happens to the review, then step through its trip into your system.
A new review It is re-analysed It is deleted Your system is down
Next step Play all Start over
Record
nothing yet
Analysis version
none
Bookmark
previous run
What a review contains
Every run first lists the reviews that changed. Each one looks like this (example values):
{ “id”: “0b6f0c1e-7c1a-4b8e-9d0f-2f4f6b9e3a10”, “state”: “ready”, “title”: “Bathroom remodel consult”, “source”: “recorded_visit”, “recorded_at”: “2026-09-30T14:02:11.482913+00:00”, “duration_seconds”: 2710, “completed_at”: “2026-09-30T14:51:40.120331+00:00”, “updated_at”: “2026-09-30T14:51:40.120331+00:00”, “contact”: { “id”: “5d1e…”, “name”: “Jordan Rivera”, “phone”: “+15551234567” }, “rep”: { “type”: “person”, “name”: “Sam Ortiz” }, “appointment_id”: “c2a9…”, “score”: { “points”: 82, “max”: 100, “percent”: 82 }, “process”: { “followed”: 5.5, “total”: 7, “percent”: 79 }, “analysis_version”: 1, “consent”: { “status”: “confirmed”, “method”: “rep_confirmation”, “provenance”: “rep_confirmation” } }
For each ready review the workflow then fetches the full review, which adds four sections:
{ “summary”: { “summary”: “Homeowner wants the tub replaced with a walk-in shower before the holidays…”, “outcome”: “Quote requested”, “customer_sentiment”: “positive”, “next_steps”: [“Send the quote by Friday”], “customer_needs”: [“Walk-in shower”, “Grab bars”], “budget”: “$12k–15k”, “timeline”: “Before December”, “objections”: [{ “text”: “Worried about the price”, “category”: “price”, “response”: “Offered financing”, “at_seconds”: 1340 }], “competitors”: [{ “name”: “Another remodeler”, “sentiment”: “neutral”, “at_seconds”: 1610 }], “buying_intent”: { “level”: “high”, “reasoning”: “Asked for install dates” }, “deal_probability_estimate”: 65 }, “scorecard”: { “points”: 82, “max”: 100, “percent”: 82, “sections”: [{ “key”: “rapport”, “label”: “Rapport”, “score”: 18, “max”: 20, “reason”: “Warm open”, “at_seconds”: 40 }], “process”: { “followed”: 5.5, “total”: 7, “percent”: 79, “steps”: [{ “key”: “agenda”, “label”: “Set the agenda”, “verdict”: “done”, “reason”: “Walked through the visit plan”, “at_seconds”: 95 }] } }, “coaching”: [{ “title”: “Ask about budget earlier”, “detail”: “Budget came up in the last five minutes”, “at_seconds”: 2400 }], “transcript”: [{ “index”: 0, “at_seconds”: 0, “end_seconds”: 4.2, “speaker”: “agent”, “text”: “Thanks for having me over…” }] }
| Field | Meaning |
|---|---|
state |
ready finished · processing being re-analysed · unavailable the latest analysis failed · deleted removed (only id and deleted_at are sent) |
source |
recorded_visit (recorded in the app), uploaded_file, or phone_call (a call analysed from your call recordings) |
contact.phone |
The customer’s phone number, so you can match the review to your records by phone |
analysis_version |
Goes up when a review is re-analysed. Replace your copy when it changes |
process |
Your sales steps followed. A step done partly counts as half |
consent |
How recording consent was captured. Phone calls analysed from your existing call recordings show existing_platform_recording |
deal_probability_estimate |
An AI estimate from this conversation alone (0–100). It is not a forecast |
at_seconds |
Where in the conversation it happened. Some imported phone calls have no timings, so this can be empty |
Rules worth knowing
- The bookmark only moves when a whole run succeeds. If anything fails partway, even your own system being down, the next run repeats from the same place. Match on
id, and a repeat is harmless. - Changes appear after about two minutes. A brand-new change is held back briefly, so a change that is still being saved is never skipped.
- “Not found” or “changed” on a single review is normal. It means the review was deleted or updated while n8n was reading it. The workflow skips it, and it comes back in a later run with its new state.
- Phone calls are included. Calls analysed from the Calls tab come through with their consent details. Filter on
sourceif you only want in-person visits. - The key belongs to the person who created it. If they stop being an owner or admin, or leave the workspace, the key stops working. Create the key under an account that will stay.
- Revoking is final. To stop the connection, open the key’s menu in Settings → API Keys and choose Deactivate. A deactivated Sales Coach key can’t be switched back on.
- Limits: 120 requests a minute per key. The workflow paces itself to stay well under that, even on its first run.
Troubleshooting
| What you see | Why | Fix |
|---|---|---|
| 401 | The key is missing, mistyped, expired or deactivated | Check the credential’s name is exactly X-API-Key and the value has no spaces. If it was deactivated, create a new key |
| 403 | It isn’t a Sales Coach key, or its creator is no longer an owner or admin | An owner or admin creates a new Sales Coach key |
| 429 | More than 120 requests a minute | Check the schedule isn’t set to seconds, and that nothing else uses the same key |
| 503 | A short interruption on our side | Nothing to do: the run stops, keeps its bookmark, and the next run retries |
| Nothing arrives | No review has finished since the last run | Finish a review in Sales Coach, wait two minutes, run a test |
| The same reviews every run | The last steps never ran, so the bookmark never moved | Make sure your destination step is connected to Wait for every review, and the workflow is turned on (test runs don’t move the bookmark) |
| A contact reads “Deleted contact” | The customer record was deleted after the visit | The review is still valid. Match it by review id |
API reference
The workflow above uses these two endpoints. Use them directly if you build your own integration. Send the key in the X-API-Key header.
GET https://api.channelautomation.com/api/v1/sales-coach/reviews
| Query | Meaning |
|---|---|
cursor |
The next_cursor from your last response. Store it, and send it next time |
updated_since |
First poll only: reviews changed at or after this time (ISO 8601 with a time zone). Leave out to start from the beginning |
limit |
1–100, default 50 |
phone |
Look up one customer’s reviews by phone number, newest first. Any format works ((555) 123-4567, +15551234567). This is a lookup, not the change feed: it can’t be combined with cursor or updated_since, it leaves out deleted reviews, and next_cursor is empty |
Returns { data, next_cursor, has_more, as_of }, oldest change first. Keep requesting with the new next_cursor until has_more is false. Save the cursor only after you’ve handled everything.
Look up a customer by phone
To see one customer’s reviews, for example while they’re on the phone, call the list with their number, then fetch the review you want:
curl “https://api.channelautomation.com/api/v1/sales-coach/reviews?phone=%2B15551234567&limit=1” \ -H “X-API-Key: PASTE_YOUR_SALES_COACH_KEY”
The newest review comes first. Take its id and fetch it below for the summary, scorecard and transcript. (%2B is the + sign written for a web address.)
GET https://api.channelautomation.com/api/v1/sales-coach/reviews/{id}
The full review, for items whose state is ready. Add ?include=summary,scorecard to fetch only some of summary, scorecard, coaching, transcript (all by default).
| Status | Meaning |
|---|---|
200 |
The review |
400 |
A bad cursor, limit, updated_since or include |
401 / 403 |
Missing or invalid key / not allowed (see Troubleshooting) |
404 |
Not in your workspace, or deleted |
409 |
not_ready (being re-analysed) or changed while being read. Skip it; it returns in a later poll |
413 |
The transcript has more than 10,000 lines. Fetch without transcript |
429 |
Over 120 requests a minute. Wait for the Retry-After header |
503 |
Temporary. Retry later |
Channel Automation · Help · Last updated 2026-09-30. Questions? Ask your account manager, or open Help Docs inside the app — the same guidance lives there.
