Automation
Automate Call Analysis with Zapier
A practical guide to building automated transcript analysis pipelines in Zapier. Connect your call recording platform to the Semarize API, extract structured scores and signals from every conversation, and route results to your CRM, Slack, or database - without writing code.
What you'll learn
- How the Trigger → Semarize API → Route pattern works in Zapier
- How to configure Webhooks by Zapier to call the Semarize /v1/runs endpoint
- Why sync mode is recommended for Zapier and when to use async
- Five ready-to-use Zap templates for common use cases — CRM scoring, Slack alerts, Sheets analytics, multi-Kit pipelines, and compliance
- Common gotchas: data size limits, JSON parsing, error handling, and Zapier plan requirements
Context
Why Zapier for Automated Call Analysis
Zapier is the fastest path from "we want to automate call analysis" to a working pipeline. No code, no infrastructure, no DevOps. But it's not the right tool for every scenario.
Zapier strengths
Consider alternatives when
For most teams getting started with automated call analysis, Zapier is the fastest path to value. You can have a working pipeline from call recording to CRM in under 30 minutes. The key is using Semarize's sync mode, which returns structured results directly in the HTTP response - no polling, no callbacks, no complexity.
Architecture
How Zapier + Semarize Works
Every Zapier automation with Semarize follows the same three-stage pattern: a trigger fires when a new call is available, the transcript is sent to the Semarize API for structured analysis, and the results are routed to your destination system.
1. Trigger
What starts the Zap. Usually a new call recording from your meeting or dialer platform. The trigger provides the transcript text.
Gong, Fireflies, Recall.ai, Zoom, Webhooks
2. Analyse
Webhooks by Zapier sends the transcript to the Semarize API. Sync mode means the response comes back with structured scores and signals in the same HTTP call.
POST /v1/runs with mode: "sync"
3. Route
Extract the brick values you need - scores, flags, extracted text, evidence - and send them to any of Zapier's 7,000+ app integrations.
Salesforce, HubSpot, Slack, Sheets, Airtable
Why sync mode?
Zapier doesn't support native polling loops. Use mode: "sync" so results return directly in the HTTP response. If a sync run takes longer than Zapier's timeout (~30 seconds), the API returns 202 with sync_fallback: true - meaning the run is still processing. For most transcripts under 60 minutes, sync mode completes well within Zapier's timeout.
Setup Guide
Build Your First Zap: Step-by-Step
This walkthrough covers everything you need to connect a call recording trigger to the Semarize API and route the structured output to a destination - from start to finish.
Create a new Zap and choose your trigger
The trigger depends on your call recording platform. Choose the app that generates your transcripts and select the event that fires when a new call is available.
(Optional) Fetch the transcript if your trigger doesn't include it
Some triggers give you a recording ID or URL, not the transcript text itself. If that's the case, add a Webhooks by Zapier GET step to fetch the transcript from your platform's API.
GET https://api.gong.io/v2/calls/{callId}/transcript
Authorization: Bearer {gong_api_key}Skip this step if your trigger already provides the full transcript text.
Configure the Semarize API call
Add an Action step: search for Webhooks by Zapier and choose Custom Request.
Configuration
Request body
Parse the response
The Semarize API returns structured JSON with brick values. Use Formatter by Zapier for simple extraction, or Code by Zapier (JavaScript) for complex nested JSON.
Fields to extract
output.bricks.{name}.valueThe evaluated valueoutput.bricks.{name}.confidenceConfidence score (0-1)output.bricks.{name}.evidenceSupporting quotesstatusShould be "succeeded"duration_msProcessing timeCode by Zapier (alternative)
Route the results to your destination
Map the extracted brick values to fields in your destination system. Here are the most common routing patterns:
Salesforce - Update Opportunity
AI_Score__c, Risk_Flag__c, Pain_Point__c
HubSpot - Update Deal
ai_score, risk_flag, pain_point properties
Slack - Send Channel Message
Formatted message with score, risk, pain
Google Sheets - Create Spreadsheet Row
call_id, date, score, risk, pain_point
Test and activate
Test each step individually using Zapier's built-in test button. Verify that:
Once all steps pass, turn on the Zap. It will run automatically whenever the trigger fires.
API Reference
API Request & Response Details
A deeper look at what you're sending and receiving when the Webhooks by Zapier step calls the Semarize API.
Request
Response (200)
Brick value types
| Type | Example brick | Example value | Zapier field type |
|---|---|---|---|
| Numeric (score) | overall_score | 72 | Number |
| Boolean (flag) | risk_flag | false | Yes/No |
| Text (extraction) | pain_point | "Losing 3 hrs/week..." | Text |
| Categorical | call_stage | "discovery" | Text |
202 with sync_fallback: true and a run_id. The run is still processing - you would need to poll GET /v1/runs/:runId for the result. For most transcripts under 60 minutes, sync completes well within the timeout.Templates
Zap Templates for Common Use Cases
Five ready-to-use Zap patterns for common call analysis workflows. Each template shows the complete trigger-to-destination pipeline with the specific bricks and routing configuration.
Discovery Call Scoring to Salesforce
Every call gets an automatic quality score on the Opportunity
Bricks used
Every discovery call gets an automatic quality score. Reps see their score on the Opportunity in Salesforce. Managers see aggregated scores in their CRM reports. No one has to listen to a recording.
Updated by Zapier automation · 12 seconds ago
Deal Risk Alerts to Slack
Only flagged calls generate alerts - clean signal, no noise
Bricks used
When Semarize detects a risk signal, a formatted Slack message goes to the deals channel with the risk reason, score, and call details. Use a Zapier Filter step to gate: "Only continue if risk_flag equals true".
Deal Risk Detected
Deal: Acme Corp - Enterprise
Score: 38 / 100
Risk: Budget not confirmed, decision maker absent
Rep: Sarah K.
Call Signals to Google Sheets
Build a call analytics dataset without a BI tool
Bricks used
Every call appends a row with structured signals. Pivot tables, charts, and dashboards come from your own data. No BI tool needed - just Sheets.
| Call | Date | Score | Risk | Pain Point | Qs |
|---|---|---|---|---|---|
| Acme Corp | Jan 28 | 72 | No | Manual data entry | 8 |
| Beta Inc | Jan 28 | 38 | Yes | Budget concerns | 3 |
| Gamma Ltd | Jan 27 | 85 | No | Scaling bottleneck | 12 |
Auto-populated by Zapier · 47 rows
Multi-Kit Pipeline (Score + Coach)
One Zap, two evaluations - scores to CRM, coaching to Slack
Two Kits in one Zap
Chain two Webhooks by Zapier steps, each calling a different Kit. The first Kit scores the call for deal quality. The second Kit extracts coaching insights. Scores go to the CRM, coaching notes go to a Slack DM to the rep.
→ Salesforce Opportunity
→ Slack DM to rep
Compliance Monitoring to Database
Every call checked for regulatory compliance
Bricks used
For regulated industries. Every call is checked against a compliance Kit. Violations are flagged and logged to a compliance database for audit. No manual review required unless a check fails.
4 of 5 checks passed · Flagged for review
Advanced
Advanced Zapier Patterns
Beyond the basic template - patterns for handling edge cases, scaling, and building more sophisticated automation pipelines.
Handling long transcripts
For calls over 90 minutes, use a "Code by Zapier" step to truncate the transcript before sending it to Semarize. Most evaluations produce reliable results from the first 60 minutes.
Conditional routing with Filters
Zapier's "Filter" step gates downstream actions based on Semarize output. Use "Paths" for multiple conditional branches.
Only send to Slack if risk_flag = true AND overall_score < 60
Filter before Slack step
Only update Salesforce if status = "succeeded"
Filter before CRM step
Route high-scoring calls to Path A, low-scoring to Path B
Paths step with score conditions
Skip processing if transcript is empty or null
Filter before Semarize API call
Error handling
Zapier treats 4xx/5xx responses as step failures and halts the Zap. Strategies for resilience:
Using multiple Kits per call
Chain multiple Webhooks by Zapier steps, each calling the Semarize API with a different kit_code. Each Kit evaluates the same transcript through a different lens. For example: Kit 1 = Discovery Quality, Kit 2 = Competitor Intelligence, Kit 3 = Compliance. All results can route to different destinations from the same Zap.
Reverse pattern: Semarize webhook → Zapier
Instead of calling Semarize from Zapier, you can trigger Zaps from Semarize. Configure a workspace webhook in Semarize to POST to a Zapier catch hook URL when runs complete. This approach is useful when you start runs from your own backend or the Semarize app, and want Zapier to handle the downstream routing.
run.completed event. Zapier will receive the full run output as the trigger data.Watch out for
Common Challenges & Gotchas
These are the issues that come up most often when teams build call analysis automations in Zapier.
Zapier data size limits
Zapier steps have practical data size limits. Very long transcripts (90+ minutes) may be truncated or cause step failures. Test with your longest typical call before going live.
JSON parsing can be tricky
The Semarize response is nested JSON. Zapier's built-in Formatter may struggle with deeply nested objects. Use "Code by Zapier" (JavaScript) for reliable extraction of brick values.
Zapier task consumption
Each step in a Zap counts as a task. A 5-step Zap processing 100 calls/day uses 500 tasks/day. Factor this into your Zapier plan choice.
No native looping
Zapier doesn't have built-in loops. If you need to process multiple calls from a batch trigger, each call fires as a separate Zap run. For true batch processing, consider Make or n8n.
Webhooks by Zapier requires a paid plan
The "Webhooks by Zapier" action (Custom Request) is only available on Zapier's paid plans (Professional and above). The free plan does not support custom HTTP requests.
Sync timeout edge case
If a sync-mode run takes longer than ~30 seconds, Semarize returns 202 with sync_fallback: true instead of the full result. This is rare for standard-length transcripts but can happen with very long calls or complex Kits.
Transcript formatting matters
Send the transcript as clean text with speaker labels (e.g., "Rep: ... Prospect: ..."). Raw audio, HTML, or heavily formatted text will reduce evaluation quality.
API key security
Store your Semarize API key in the Webhooks by Zapier step's header field, not in the request body. Zapier encrypts header values at rest.
FAQ
Frequently Asked Questions
Explore