Fix Dialpad to Google Sheets call transcripts in Zapier

Fix missing Dialpad call transcripts in Google Sheets Zaps: use the /v2/call endpoint, started_after Unix timestamps, and a post-call delay so transcripts are ready.

Sep 15, 2026
Fix Dialpad to Google Sheets call transcripts in Zapier
If your Dialpad → Google Sheets Zap runs but the transcript is blank (or your API step throws 404/403 errors), the fix is usually: use Dialpad’s /v2/call endpoint (singular), filter with started_after using a Unix timestamp, and trigger on call ended with a short delay so Dialpad has time to finish transcription.
Photo by Carlos Muza on Unsplash
Photo by Carlos Muza on Unsplash

Why your Dialpad transcript Zap “works” but the transcript is empty

Most broken setups fall into one (or more) of these buckets:
  • Wrong Dialpad endpoint (commonly .../v2/calls instead of .../v2/call).
  • Wrong time filter parameter (using created_after instead of started_after).
  • Wrong time filter format (trying “last 3 hours” instead of a Unix timestamp).
  • Trigger happens before the transcript is ready (Zap fires instantly when a call ends, but transcription completes later).
  • Auth/scope mismatch (works in one step/test but returns 403 in the live run).

The simplest reliable pattern: Call ended → Delay → Fetch call → Write row

Instead of polling (“every X minutes, get calls from the last 3 hours”), use a post-call trigger and fetch the transcript after Dialpad finishes processing.

Step 1: Trigger on a Dialpad call ending (not “transcript created”)

In Zapier, prefer a Dialpad trigger that fires when a call ends/hangs up. This gives you a stable call ID immediately.
Why this matters: some “transcript” triggers are inconsistent, and even when they fire, they often don’t include the transcript payload you actually need.

Step 2: Add a delay (so the transcript exists)

Add Delay by Zapier right after the trigger.
  • Start with 10–30 minutes if you want faster turnaround.
  • Use ~60 minutes if you want maximum reliability and don’t mind waiting.
Transcription time varies with call length and Dialpad processing.

Step 3: Fetch the full call record (API) and pull transcript fields

Use Zapier Webhooks (or the Dialpad “API Request” style action if you have it) to request the call record by ID.
Key API gotchas to avoid:
  • Endpoint is singular: .../api/v2/call/{id} (not calls).
  • If you’re listing calls, confirm you’re using the “Call — List” API, and that your query params match Dialpad’s docs.

Step 4: Write a clean row into your Calls tab

Once you have the transcript + call metadata, write one row per call into your Google Sheet.
A practical minimal column set:
  • Call ID
  • Start time
  • End time
  • From / To (phone numbers)
  • Agent / user
  • Duration
  • Transcript text
  • Recording URL (if available)

How to build the started_after Unix timestamp (so you stop getting 404/empty results)

Dialpad’s API expects a Unix-style timestamp for time filtering.
If you’re filtering “calls that started after X,” your Zap needs to generate something like:
  • “Now minus 3 hours” → converted into a Unix timestamp
In Zapier, you can do this a few ways:
  • Formatter → Date/Time to subtract time and output a timestamp
  • Code by Zapier (JavaScript/Python) if you need full control
If you don’t need historical backfill, you can skip time filters entirely and just fetch by call ID from the call-ended trigger.

Troubleshooting checklist (404, 403, missing transcript)

Use this list to quickly isolate what’s wrong.

If you see a 404

  • Verify the endpoint path is exactly /v2/call (or /api/v2/call/{id} when fetching by ID).
  • Confirm you’re using the correct Dialpad base URL for the API you’re calling.
  • If you’re listing calls, confirm you’re using the correct list route and not mixing list vs get-by-id.

If you see a 403

  • Re-check authentication (API key / bearer token).
  • Confirm the Dialpad user behind the key has the permissions required for the call/transcript endpoints.
  • If you changed the endpoint from wrong → right and went from 404 → 403, that’s a sign you’re now hitting the real route but auth/scope is blocking it.

If the transcript is blank but everything else writes

  • Increase the delay.
  • Confirm you’re requesting the correct transcript field (some endpoints return voicemail transcripts, not call transcripts).
  • Confirm the call actually has AI transcription enabled in Dialpad.

A clean Sheet mapping strategy (so analysis is easy later)

If your spreadsheet has multiple tabs (Calls, Appointments, Quotes, Invoices, Customers, etc.), keep your “Calls” tab strict and normalized.
  • One row = one call
  • Avoid mixing computed insights into the raw Calls table
  • Add separate tabs for analysis/pivots so the base data stays stable
This makes it much easier to later summarize outcomes (appointments booked, conversion rates, lag time) and run AI analysis reliably.

Get help building this

Building a Dialpad → Google Sheets transcript Zap usually breaks at the delay timing and the API endpoint — the two places where most Zapier builds go wrong before they ship. If you’ve hit that wall, book a ZoomFlow session — one of our consultants can debug it with you live and ship the working version in the same call.