Semarize

Get Your Data

Read.ai - How to Get Your Meeting Data

A practical guide to getting your meeting data out of Read.ai - covering webhook configuration, payload structure, automation integrations, and how to route structured meeting intelligence into your downstream systems.

What you'll learn

  • What meeting data Read.ai pushes via webhooks - transcripts, summaries, action items, topics, and participants
  • How to configure webhooks - endpoint setup, payload format, and trigger behaviour
  • Two extraction patterns: webhook receiver and Zapier-triggered automation
  • How to connect Read.ai data pipelines to Zapier, n8n, and Make
  • Advanced use cases - standup scoring, meeting culture analytics, knowledge transfer evaluation, and meeting intelligence platforms

Data

What Data You Can Extract From Read.ai

Read.ai captures far more than just a recording. Every meeting produces a structured payload delivered via webhook - the full transcript with speaker attribution, an AI-generated summary, extracted action items, key questions, topic breakdowns, and participant metadata.

Fields included in webhook payloads

Full transcript with speaker names
Per-utterance timestamps
AI-generated meeting summary
Action items (with assignees)
Key questions raised
Topics discussed
Participant list and roles
Session ID (unique meeting identifier)
Meeting duration and timing
Engagement and sentiment signals
Important: Read.ai is a push-only platform. There is no REST API for querying or pulling meeting data on demand. All data delivery happens through webhooks that fire when meetings complete. Plan your integration architecture around receiving data, not requesting it.

Webhook Access

How to Get Data via Read.ai Webhooks

Read.ai delivers meeting data through outbound webhooks. The workflow is: configure a webhook URL in your Read.ai settings, deploy an endpoint to receive payloads, and process the structured data as meetings complete.

1

Configure your webhook URL

Navigate to app.read.ai/analytics/integrations/webhooks in your Read.ai dashboard. Add the URL of the endpoint where you want to receive meeting data. This must be an HTTPS endpoint that returns a 200 response.

Webhook URL: https://your-server.com/webhooks/readai

# Read.ai will POST to this URL when meetings complete
# Your endpoint must respond with HTTP 200
Webhook access requires a Read.ai Pro or Enterprise plan. Free and Starter plans do not support webhooks. Verify your plan level before configuring.
2

Deploy a webhook receiver

Build an endpoint that accepts POST requests with JSON payloads. The receiver should validate the incoming data, extract the transcript and metadata, and return a 200 OK promptly to acknowledge receipt. Process the data asynchronously to avoid timeout issues.

// Example: Express.js webhook receiver
app.post('/webhooks/readai', async (req, res) => {
  const { session_id, transcript, summary,
          action_items, key_questions,
          topics, participants } = req.body

  // Acknowledge receipt immediately
  res.status(200).json({ received: true })

  // Process asynchronously
  await processWithSemarize(session_id, transcript)
})

The payload includes session_id as a unique identifier, the full transcript with speaker names and timestamps, an AI summary, structured action_items, key_questions, topics, and a participants list.

3

Parse the webhook payload

Extract the transcript and meeting context from the JSON payload. The transcript includes speaker-attributed segments with timestamps. Reassemble into a format suitable for your analysis pipeline - either as plain text with speaker labels or as structured utterance data.

// Example webhook payload structure
{
  "session_id": "abc-123-def-456",
  "transcript": [
    { "speaker": "Alice", "timestamp": "00:01:23",
      "text": "Let's review the Q1 results..." },
    { "speaker": "Bob", "timestamp": "00:02:45",
      "text": "Revenue came in 12% above target..." }
  ],
  "summary": "Team reviewed Q1 results...",
  "action_items": [
    { "text": "Update forecast model", "assignee": "Bob" }
  ],
  "key_questions": ["What drove the outperformance?"],
  "topics": ["Q1 results", "forecast", "hiring"],
  "participants": ["Alice", "Bob", "Carol"]
}

Use session_id as a deduplication key. If your endpoint receives the same payload twice (due to webhook retries), skip reprocessing by checking against stored session IDs.

4

Trigger behaviour and endpoint security

When webhooks fire

Read.ai fires the webhook when a meeting ends and processing completes. You receive data for meetings where you have viewer access. There is no filtering at the source - all qualifying meetings trigger the webhook. Build filtering logic in your receiver if you only want to process certain meeting types.

Securing your endpoint

Always use HTTPS. Consider adding a secret token to your webhook URL path (e.g., /webhooks/readai/sk_abc123) and validating it on receipt. Use a queuing service to buffer payloads if your processing pipeline has variable latency. Rate-limit your endpoint to prevent abuse.

Patterns

Key Extraction Flows

There are two practical patterns for getting meeting data out of Read.ai. Since Read.ai is webhook-only (no REST API), both patterns rely on receiving pushed data rather than pulling it on demand.

Direct Webhook Receiver

Real-time processing as meetings complete

1

Deploy a webhook endpoint (serverless function, Express server, or cloud function) that accepts POST requests at a stable HTTPS URL

2

Configure the webhook URL in Read.ai at app.read.ai/analytics/integrations/webhooks. Verify with a test event if available

3

When a meeting ends, Read.ai POSTs the full payload - transcript, summary, action items, topics, participants - to your endpoint

4

Acknowledge receipt immediately with a 200 response. Queue the payload for async processing to avoid timeouts

5

Extract the transcript from the payload and route it to your analysis pipeline - Semarize, your database, or both

Tip: Use session_id as an idempotency key. If Read.ai retries a delivery, your receiver should detect the duplicate and skip reprocessing.

Zapier-Triggered Automation

No-code webhook processing

1

Create a Zap with Read.ai as the trigger app. Select the "New Meeting" trigger event and connect your Read.ai account

2

Read.ai's native Zapier integration fires when a meeting completes, passing the transcript, summary, and metadata into the Zap

3

Add a Webhooks by Zapier action to POST the transcript to Semarize's API for structured analysis

4

Add a Formatter step to extract the scored signals from the Semarize response - scores, flags, and extracted insights

5

Route the structured output to your destination - CRM, database, Slack, or spreadsheet

Tip: The Zapier integration is the fastest way to get started if you don't want to build and host a webhook receiver. It handles endpoint hosting, retries, and payload parsing for you.
No backfill available: Unlike platforms with REST APIs, Read.ai cannot export historical data via webhooks. Webhooks only fire for meetings going forward. If you need to analyse past meetings, you would need to explore manual transcript exports from the Read.ai dashboard.

Automation

Send Read.ai Data to Automation Tools

Once you're receiving meeting data via webhooks, the next step is routing transcripts through Semarize for structured analysis and into your downstream systems. Below are end-to-end example flows - each showing the full pipeline from Read.ai webhook through Semarize evaluation to CRM, Slack, or database output.

ZapierNo-code automation

Read.ai → Zapier → Semarize → CRM

Use Read.ai's native Zapier integration to trigger on new meetings, send the transcript to Semarize for structured analysis, then write the scored output - signals, flags, and evidence - directly to your CRM.

Example Zap
Trigger: New Meeting in Read.ai
Fires when a meeting completes processing
App: Read.ai
Event: New Meeting Completed
Output: session_id, transcript, summary
Transcript + metadata received
Webhooks by Zapier
POST /v1/runs (sync) to Semarize
Method: POST
URL: https://api.semarize.com/v1/runs
Auth: Bearer smz_live_...
Body: { kit_code, mode: "sync", input: { transcript } }
Structured output returned
Formatter by Zapier
Extract brick values from Semarize response
Extract: bricks.effectiveness_score.value
Extract: bricks.decision_count.value
Extract: bricks.action_items.value
Salesforce - Update Record
Write meeting intelligence to Account
Object: Account / Custom Object
Meeting Score: {{effectiveness_score}}
Decisions Made: {{decision_count}}
Key Actions: {{action_items}}

Setup steps

1

Create a new Zap. Choose Read.ai as the trigger app and select "New Meeting Completed" as the event. Connect your Read.ai account.

2

The trigger automatically provides the transcript, summary, action items, and participants. No separate API call needed - Read.ai pushes everything through the Zapier integration.

3

Add a "Webhooks by Zapier" Action (Custom Request). Set method to POST, URL to https://api.semarize.com/v1/runs. Add your Semarize API key as a Bearer token. In the body, set kit_code to your Kit, mode to "sync", and map the transcript text into input.transcript.

4

Add a Formatter step to extract individual brick values from the Semarize JSON response - effectiveness_score, decision_count, action_items, etc.

5

Add a Salesforce (or HubSpot, Sheets, etc.) Action to write the extracted scores and signals to your CRM record or custom meeting database.

6

Test each step end-to-end with a real meeting, then turn on the Zap.

Watch out for: Zapier has step data size limits that can truncate very long transcripts. For meetings over 90 minutes, consider storing the transcript in cloud storage and passing a reference URL instead of inline text. Use mode: "sync" so Semarize returns results inline - Zapier doesn't natively support polling loops.
Learn more about Zapier automation
n8nSelf-hosted workflows

Read.ai → n8n (Webhook) → Semarize → Database

Use n8n's built-in Webhook node as your Read.ai webhook receiver. When a meeting completes, Read.ai POSTs the payload directly to n8n, which extracts the transcript, sends it to Semarize, and writes the structured output to your database.

Example Workflow
Webhook - Read.ai Receiver
Receives POST from Read.ai on meeting end
Method: POST
Path: /readai-webhook
Response: 200 OK immediately
Payload received
Code - Extract Transcript
Parse transcript from webhook payload
Input: $json.transcript[]
Output: joined text with speaker labels
HTTP Request - Semarize
POST /v1/runs (sync)
URL: https://api.semarize.com/v1/runs
Auth: Bearer smz_live_...
Body: { kit_code, mode: "sync", input: { transcript } }
Scores & signals returned
Postgres - Insert Row
Write structured output to database
Table: meeting_evaluations
Columns: session_id, score, decisions, actions

Setup steps

1

Add a Webhook node as the workflow trigger. Set the method to POST and note the generated webhook URL. This is the URL you'll configure in Read.ai.

2

In Read.ai, go to app.read.ai/analytics/integrations/webhooks and add the n8n webhook URL. Test the connection if available.

3

Add a Code node (JavaScript) to extract the transcript from the webhook payload. Join the transcript segments into a single string with speaker labels and timestamps.

4

Add an HTTP Request node to send the transcript to Semarize. Set method to POST, URL to https://api.semarize.com/v1/runs. Add your API key as a Bearer token. Set kit_code, mode to "sync", and map the transcript into input.transcript.

5

Add a Code node to extract the brick values from the Semarize response - scores, flags, extracted insights, evidence spans.

6

Add a Postgres (or MySQL / HTTP Request) node to write the structured output. Use session_id as the primary key for upserts to prevent duplicates.

7

Add an optional IF node to check for specific signals (e.g., low scores) and branch to a Slack notification for flagged meetings.

8

Activate the workflow. The first real meeting will trigger the full pipeline end-to-end.

Watch out for: n8n's Webhook node is ideal for Read.ai since it gives you a stable endpoint without needing external hosting. Use session_id as a deduplication key. For high-volume environments, ensure your n8n instance has enough memory to handle concurrent webhook deliveries.
Learn more about n8n automation
MakeVisual automation with branching

Read.ai → Make (Webhook) → Semarize → CRM + Slack

Use Make's Custom Webhook module to receive Read.ai payloads directly. Parse the transcript, send it to Semarize for structured analysis, then use a Router to branch the scored output - alert on concerning signals via Slack and write all intelligence to your CRM.

Example Scenario
Custom Webhook - Read.ai
Receives POST when meetings complete
URL: https://hook.make.com/abc123...
Method: POST
Response: 200 OK
Payload received
JSON - Parse Transcript
Extract and format transcript text
Input: body.transcript[]
Output: formatted text with speakers
HTTP - Semarize
POST /v1/runs (sync)
URL: https://api.semarize.com/v1/runs
Auth: Bearer smz_live_...
Body: { kit_code, mode: "sync", input: { transcript } }
Structured output
Router - Branch on Score
Route by Semarize output
Branch 1: IF effectiveness_score < 50
Branch 2: ALL (fallthrough)
Branch 1 - Low score
Slack - Alert Channel
Notify team about low-scoring meeting
Channel: #meeting-alerts
Message: Low score on {{session_id}}
Branch 2 - All meetings
CRM - Create Record
Write meeting intelligence to CRM
Score: {{effectiveness_score}}
Decisions: {{decision_count}}
Topics: {{topics}}

Setup steps

1

Create a new Scenario. Add a Custom Webhook module as the trigger. Make generates a unique URL - copy this URL for your Read.ai configuration.

2

In Read.ai, navigate to app.read.ai/analytics/integrations/webhooks and add the Make webhook URL. Run a test meeting to trigger the first payload and let Make learn the data structure.

3

Add a JSON Parse module to extract the transcript array. Use a Text Aggregator or Set Variable module to join transcript segments into a single string with speaker labels.

4

Add an HTTP module to send the transcript to Semarize. Set URL to https://api.semarize.com/v1/runs, add your Bearer token, and set kit_code, mode to "sync", and input.transcript from the previous step. Parse the response as JSON.

5

Add a Router module. Define Branch 1 with a filter: bricks.effectiveness_score.value less than 50 (or your threshold). Leave Branch 2 as a fallthrough (no filter).

6

On Branch 1, add a Slack module to alert your team when meeting quality is low. Map the score, session ID, and key findings into the message.

7

On Branch 2, add a CRM module to write all brick values (score, decisions, topics, action items) to your account or meeting record.

8

Activate the Scenario. Monitor the first few meetings in Make&apos;s execution log to verify end-to-end flow.

Watch out for: Each webhook delivery counts as one operation. Each subsequent module in the scenario is an additional operation. A scenario processing one meeting uses ~5 operations (webhook + parse + Semarize + router + output). Use mode: "sync" to avoid needing a polling loop for each run.
Learn more about Make automation

What you can build

What You Can Do With Read.ai Data in Semarize

Semarize enables custom effectiveness scoring, organisational meeting health analytics, knowledge transfer evaluation, and the ability to build your own meeting intelligence platforms on structured conversation signals.

Automated Standup Effectiveness Scoring

Meeting Quality Analysis

What Semarize generates

blocker_rate = 0.72decision_velocity = "fast"scope_drift = truefollow_up_clarity = 0.85

Your engineering team runs daily standups recorded by Read.ai. Summaries are useful, but the real question is: are these standups actually effective? As each standup transcript arrives via webhook, pipe it into Semarize. A standup effectiveness kit scores each for blocker identification rate, decision velocity, scope containment, and follow-up clarity. A monthly report shows that Tuesday standups have 2.3x more scope drift than other days. The team adjusts their Tuesday format.

Learn more about RevOps
Standup Effectiveness GridWeek of Feb 24
Day
Blockers
Decisions
Scope
Follow-up
Mon0.81fast0.9
Tue0.45slow0.62
Wed0.78fast0.88
Thu0.74fast0.85
Fri0.69med0.79
Tuesday standups show 2.3x more scope drift than other days

Meeting Culture Health Monitor

Organisational Analytics

What Semarize generates

zero_decision_rate = "34%"avg_unnecessary_attendees = 4.2energy_dropoff = "minute 35"meetings_cut = "25%"

Your COO suspects meeting culture is degrading — too many meetings, too few decisions. Quantifying organisational meeting health requires structured scoring across every conversation. Set up a webhook receiver that pipes every Read.ai transcript into Semarize. A meeting culture kit scores every meeting for decision density, participant necessity, energy trajectory, and meeting type classification. After 3 months of data, the dashboard shows: 34% of meetings produce zero decisions, "status update" meetings have 4.2 unnecessary attendees on average, and energy drops 40% after minute 35. The executive team cuts 25% of recurring meetings.

Learn more about Customer Success
Meeting Health DashboardLast 3 months
Decision density by meeting type
All-hands
2.1
Sprint planning
4.8
Status update
0.3
1:1
3.2
Average energy trajectory
0 min35 min dropoff50 min
Meetings cut
25%
Zero-decision rate
34%
Avg unnecessary
4.2 people

Multi-Team Knowledge Transfer Scoring

Transfer Quality Analysis

What Semarize generates

concept_coverage = 0.62comprehension_signals = 4accuracy_verified = truesession_quality = "medium"

Your org runs cross-functional knowledge transfers — product to sales, engineering to support, leadership to new hires. Recording these sessions is step one; measuring whether knowledge was actually transferred is the real challenge. Run every knowledge transfer transcript through a transfer quality kit. Semarize evaluates concept coverage, comprehension signals, accuracy verification, and retention indicators. After scoring 80 transfers, the data shows that product-to-sales transfers cover only 62% of required concepts. The product team restructures their enablement sessions.

Learn more about QA & Compliance
Knowledge Transfer Scorecard80 sessions scored
ProductSales
low
Concept coverage
62%
Comprehension signals
EngSupport
high
Concept coverage
84%
Comprehension signals
LeadershipNew Hire
medium
Concept coverage
71%
Comprehension signals
Product-to-Sales transfers cover only 62% of required concepts

Custom Meeting Intelligence Platform

Structured Meeting Database

Vibe-coded

What Semarize generates

meetings_indexed = "1,240"decisions_extracted = "423"avg_query_time = "< 2s"meeting_types = 12

A product ops lead vibe-codes a Supabase-backed app that receives Read.ai webhooks, runs each transcript through Semarize, and stores structured output. The app builds a meeting intelligence database: every meeting across the org is classified, scored, and searchable. Product meetings get scored for feature decision quality; sales meetings for qualification depth; all-hands for information clarity. Executives search "What decisions were made about pricing in the last 30 days?" and get structured results with evidence spans — not just keyword-matching transcript snippets. Meeting data becomes a queryable organisational asset.

Learn more about Data Science
Vibe-coded with Supabase
What decisions were made about pricing in the last 30 days?
ProductPricing moved to usage-based for SMB tier92
Leadership sync, Feb 14 at 23:41
SalesEnterprise discount cap raised to 30%87
Revenue review, Feb 12 at 15:08
EngMigration deadline extended to Q394
Sprint planning, Feb 18 at 09:22
Indexed
1,240
Decisions
423
Query time
< 2s
Types
12

Watch out for

Common Challenges & Gotchas

These are the issues that come up most often when teams start integrating Read.ai meeting data into downstream systems.

No REST API - webhook only

Read.ai does not offer a REST API for querying meeting data. All data delivery is push-based via webhooks. You cannot pull transcripts on demand or query historical meetings programmatically.

No historical backfill

Webhooks only fire for new meetings going forward. If you start your integration today, you won't receive data for past meetings. Plan your integration timing accordingly and don't expect to backfill.

Webhook delivery reliability

If your endpoint is down when Read.ai fires a webhook, the payload may be lost. Read.ai has limited retry logic. Use a reliable, highly available endpoint or a webhook relay service to buffer incoming data.

No meeting-type filtering

Webhooks fire for all meetings where you have viewer access. You cannot filter at the source. Build filtering logic in your receiver to route, process, or discard meetings based on your criteria.

Plan-gated access

Webhook functionality requires a Read.ai Pro or Enterprise plan. Free and Starter tier users cannot set up webhooks, which limits automation options to the Zapier integration or manual exports.

Payload size for long meetings

Very long meetings produce large transcript payloads that can exceed limits in some automation tools. Plan for payload chunking or external storage when processing meetings over 90 minutes.

Duplicate processing protection

Without idempotency checks, webhook retries can process the same meeting twice. Use session_id as a deduplication key to ensure each meeting is handled exactly once in your pipeline.

FAQ

Frequently Asked Questions

Explore

Explore Semarize