Open in
Use ThunderPhone with Zapier
Connect the ThunderPhone app on Zapier to your organization and build a Zap that runs every time a call ends.
Zapier connects apps with automated workflows called Zaps. The ThunderPhone app on Zapier adds:
- Triggers: Call Completed fires when a phone, web, or test call ends. Call Graded fires when a completed call's grade is available.
- Actions: Place Outbound Call, Add Contacts to Campaign, and Start Campaign.
- Search: Find Call looks up a call by ID and returns it with its transcript and a signed recording URL when one is available.
Find it at ThunderPhone on Zapier. For an overview of both ways to use Zapier with ThunderPhone, see the Zapier integration page.
Connect your organization
The app connects through OAuth. You sign in to ThunderPhone and approve access for one organization, and no API key is copied into Zapier.
- Add a ThunderPhone step
In the Zap editor, search for ThunderPhone (shown with a Beta label) and pick a trigger or action. When Zapier asks for an account, connect a new one. Zapier opens a ThunderPhone sign-in window.
- Sign in and choose the organization
Sign in, check the requested permissions, choose the organization, and select Approve. The app asks to read your agents and phone numbers, read and write calls and campaigns, manage integrations such as webhook endpoints, and see your account email.
- Check the connection name
Zapier names the connection after the organization you approved, so you can tell connections apart when you belong to more than one.
Connect with an account that has the admin or owner role in that organization. Turning a trigger Zap on or off, and every action, needs that role. A trigger Zap that is already on keeps receiving call events after the role changes or the connection is revoked. Turn it off to stop them. Find Call works for any member.
The app has no ThunderPhone charge of its own. Calls it places or starts bill at your normal ThunderPhone rates, and Zapier counts tasks on your Zapier plan.
Build a first Zap
This Zap adds a row to a Google Sheet every time a call ends.
- Make a call to use as sample data
Open an agent in the builder, click Talk, and end the call. Builder test calls fire Call Completed, so this gives the trigger a recent call to load.
- Add the trigger
Choose ThunderPhone as the trigger app, set the event to Call Completed, and select your ThunderPhone connection. Test the trigger. Zapier loads your most recent completed calls as samples, in the same shape as a live event.
- Add Google Sheets
Add a Google Sheets action that creates a spreadsheet row. Pick a sheet with a header row, then map each column to a field from the trigger (see the table below).
- Publish the Zap
Publish and turn the Zap on. Turning it on creates a webhook endpoint in your ThunderPhone organization named Zapier: Call Completed. Turning the Zap off deletes that endpoint.
- Test it
Make another builder test call. When it ends, the Zap runs and a row appears.
Useful columns:
| Column | Call Completed field |
|---|---|
| Call ID | Call ID |
| Agent | Agent Name |
| Direction | Direction |
| From | From Number |
| To | To Number |
| Started | Started At |
| Ended | Ended At |
| Duration (s) | Duration in Seconds |
| Status | Status |
| End reason | End Reason |
| Call link | Type https://app.thunderphone.com/dashboard/call-history/, then insert Call ID |
The call link opens the call in the ThunderPhone dashboard for members of your organization, with its transcript and recording, so the sheet does not need to hold either.
The event can also carry the transcript, as a list of turns, and a Recording
URL, a signed link that expires. Add them only if the sheet needs them. Call
transcripts, summaries and recordings can contain personal or health
information. Send them only to apps your organization is allowed to use for
that data, under a BAA where health information is involved, and keep only
the fields you need. See
telephony.complete / web.complete for every
field.
Triggers, actions, and search
Call Graded gives the Call ID, Agent ID, Agent Name, and the grade: Grade
ID, Score, Call Outcome, Summary, Grader Model, and Graded At. Turning a Zap
on creates an endpoint named Zapier: Call Graded. A call can be graded
more than once, and each finished grading run fires the trigger. See
call.graded.
Find Call takes a Call ID, with a dropdown of recent calls. It returns the call's agent, direction, numbers, start and end times, status, end reason, grade score and call outcome, the transcript, and a signed recording URL when one is available. An unknown Call ID returns no result instead of an error.
Place Outbound Call takes:
| Field | Meaning |
|---|---|
| Agent | A saved agent. The dropdown lists your agents. |
| To Number | Destination in E.164 format, such as +14155550199. |
| From Number | The dropdown lists only numbers enabled for outbound calls. |
| Variables | Optional JSON object of values for placeholders in the agent prompt. |
| Idempotency Key | A stable ID from the trigger or source record. Required. |
It returns the Call ID, Status, and Idempotent Replay.
Add Contacts to Campaign adds contacts to a draft campaign. For one
contact, fill Phone Number in E.164 format and optionally Contact
Variables, a JSON object whose properties become campaign variables. For a
batch, fill Contacts JSON with an array of up to 5,000 objects. Each needs
phone_number, and its other properties become variables. The step fails
when every contact is rejected, and sets Partial Success when only some
are.
Start Campaign starts or resumes a campaign that has at least one contact. It requires Consent to Charge. See Outbound campaigns.
Before a Zap places calls
Place Outbound Call and Start Campaign dial real phone numbers and start billable calls.
- If ThunderPhone asks your organization to confirm that its outbound calls follow the TCPA and other calling laws, an admin must record that confirmation in the dashboard before a Zap can start calls.
- The From Number must be enabled for outbound calls. Numbers you bring from your own carrier qualify once verified. ThunderPhone-provided numbers start inbound-only, and you can request outbound access for them in the dashboard. See Get a phone number.
- Place Outbound Call requires an Idempotency Key. Map a stable ID from the trigger or source record, such as the ThunderPhone event ID or a CRM record ID. If Zapier retries the step, ThunderPhone recognizes the key and returns the original call instead of placing a second one. Avoid timestamps, random values, or the Zap ID alone.
- Start Campaign requires Consent to Charge, which confirms the Zap may start billable outbound calls on your account.
- Your organization is responsible for having consent to call each number and for following the calling laws that apply. See outbound calling laws.
An idempotency key is unique across your organization and can be at most 128 characters. Reusing a key with a different agent, number, or variables fails with a conflict, so if two Zaps can call about the same record, give each Zap its own fixed prefix before the record ID. Place outbound calls covers the API behind this action.
Example Zaps
- Call Completed to a CRM. Log an activity for each finished call with its status, end reason, and transcript.
- Call Graded to follow-up. Filter on the call outcome or score and route the call into the right follow-up workflow.
- New lead to a campaign. Add the lead to a draft campaign with Add Contacts to Campaign, then run Start Campaign once someone approves the list.
Call transcripts, summaries and recordings can contain personal or health information. Send them only to apps your organization is allowed to use for that data, under a BAA where health information is involved, and keep only the fields you need.
Troubleshooting
A step fails with an authorization error. Reconnect the ThunderPhone connection in Zapier and approve again. A connection stops working when the person who connected revokes it in ThunderPhone under Organization → Keys → Authorized apps, when that person leaves the organization, or when it goes 30 days without a successful token refresh. See Connect with OAuth.
Turning a Zap on or off fails, or an action is refused. The person who connected needs the admin or owner role in the organization. Reconnect with an account that has it. A trigger Zap that is already on keeps receiving call events after the role changes or the connection is revoked. Turn it off to stop them.
You want to disconnect the app. Turn off your ThunderPhone Zaps before
you revoke the connection, since turning a Zap off deletes its endpoint and
needs a working connection. If you revoked first, delete the leftover
Zapier: … endpoint with DELETE /v1/developer/webhook-endpoints/{id}
using an admin API key. See Webhook endpoints.
The Zap should use a different organization. Each connection covers one organization. Turn the Zap off first, so its webhook endpoint is deleted from the current organization. Then connect a new ThunderPhone account in Zapier, choose the other organization when you approve, and select that connection on each ThunderPhone step. Agents, numbers and campaigns differ between organizations, so pick Agent, From Number and Campaign again on each step that has them. Then turn the Zap back on.
The trigger stopped firing. Each Zap with a ThunderPhone trigger owns one
webhook endpoint in your organization, named Zapier: Call Completed or
Zapier: Call Graded. It is created when the Zap turns on and deleted when
it turns off. Leave it as it is. If it was edited or deleted in ThunderPhone,
turn the Zap off and on again to create a fresh one.
With an admin API key,
GET /v1/developer/webhook-deliveries
shows recent delivery attempts.