Connect SkipCalls to 7,000+ apps on Zapier — Google Sheets, Slack, HubSpot, Salesforce, Gmail, Airtable, Notion, you name it. This is our official Zapier app, so triggers deliver in real time and every field comes pre-named.
What you get
Triggers (SkipCalls → Zapier)
Every trigger is webhook-based — no polling, no delay. Fires the moment the event happens.
Outbound Call Completed — an AI-placed outbound call finishes successfully
Outbound Call Failed — no answer, busy, rejected, or error
Incoming Call Completed — your AI receptionist handles an inbound call
New SMS Received — an inbound text arrives on one of your numbers
Outbound SMS Sent — an SMS is sent from one of your numbers
SMS Delivery Failed — an outbound SMS fails to deliver
Appointment Booked — the AI agent successfully books a slot on your calendar during a call
Actions (Zapier → SkipCalls)
Schedule Outbound Call — queue an AI-powered phone call to any number. Pass the agent, goal, scheduled time, max duration, timezone, and optional context.
Send SMS Reply — post a reply into an existing SMS conversation (pair with the "New SMS Received" trigger).
Searches
Find Outbound Calls — past outbound calls, optionally filtered by status or phone
Find Incoming Calls — inbound call history with filters
Find SMS Conversation — look up a thread by customer phone or status
Setup (about 2 minutes)
1. Add SkipCalls to Zapier
Click Open in Zapier. Accept the invite to add SkipCalls to your Zapier account. Free plans work.
2. Create an API key
In the SkipCalls dashboard open Integration → API Keys (or go to app.skipcalls.com/integration?tab=keys). Click Create API key, give it a name like "Zapier", and copy the sk_… value. Keys don't expire; you can revoke them any time.
3. Connect in Zapier
When Zapier asks for authentication, paste the key. That's the whole auth. Now pick a trigger, map fields into the destination action, turn the Zap on. Every subscription you create shows up in the Zapier tab inside SkipCalls — toggle it on/off or scope to a specific receptionist without leaving the dashboard.
Field reference
All webhook payloads are flat, snake_case JSON — no nested objects to parse. Map them straight into your destination app.
Incoming Call Completed
event_type— alwaysINCOMING_CALL_COMPLETEDcall_id,call_title,call_status,call_duration_minutes,call_type='inbound'caller_name— populated if the caller is in your Contactsphone_from— the caller's numberphone_to— your SkipCalls number they dialedphone_countrycall_started_at,call_finished_at— ISO-8601summary_full— full AI-generated call summarysummary_short— one-line versionrecommended_next_actionagent_id,agent_name,agent_descriptiondata_collected_count+data_1_field,data_1_type,data_1_value,data_2_*… up todata_10_*(structured info the agent extracted during the call)evaluations_total,evaluations_passed,evaluations_failed,evaluations_unknown,evaluation_success_rateeval_1_name,eval_1_type,eval_1_rationale… up toeval_5_*tasks_count,next_task_title,next_task_priority,next_task_due_date,lead_status(HOT/WARM/COLD/UNQUALIFIED)recording_url
Outbound Call Completed — same as above, plus:
call_goal— the goal you set for the callcall_phone_number— the number dialedcall_scheduled_atbusiness_goal,business_context,needs_retrytransfer_allowed,was_transferred,transfer_number
New SMS Received
event_type='SMS_RECEIVED',communication_type='sms'sms_conversation_id— capture this to use with Send SMS Replysms_message_id,sms_message_content,sms_message_direction='INBOUND'sms_message_status,sms_created_atsms_conversation_message_count,sms_conversation_agent_messages,sms_conversation_customer_messages,sms_conversation_unread_messagesis_inbound_sms,is_outbound_sms— booleans for easy filteringphone_from(customer),phone_to(your number)agent_id,agent_name
Appointment Booked
appointment_id,appointment_title,appointment_descriptionappointment_start_time,appointment_end_time,appointment_duration_minutes,appointment_timezoneappointment_source_type—INCOMING_CALL/OUTBOUND_CALL/MANUALappointment_calendar_provider,appointment_calendar_name,appointment_external_event_urlguest_name,guest_phone,guest_email— captured during the callcontact_id,contact_first_name,contact_last_name,contact_phone,contact_email,contact_lifecycle_stage— CRM matchsource_call_id,source_call_summary,source_call_caller_name,source_call_phone_fromagent_id,agent_name
Popular recipes
📱 SMS yourself every new lead (with details)
Trigger: Incoming Call Completed
Action: SMS by Zapier or Twilio → Send SMS
Body template:
New lead: #{{caller_name}} at #{{phone_from}}. #{{summary_short}}. Tap to call back.
📇 Save every caller to HubSpot / Salesforce / Pipedrive
Trigger: Incoming Call Completed
Action: Create or Update Contact in your CRM
Map
phone_from→ Phone,caller_name→ Name,summary_full→ Notes,lead_status→ Lifecycle Stage
📊 Log every call to Google Sheets
Trigger: any Call Completed
Action: Google Sheets → Create Spreadsheet Row
Map the fields you care about —
timestamp,caller_name,phone_from,call_duration_minutes,summary_short,recording_url,lead_status
📅 Slack the team when an appointment is booked
Trigger: Appointment Booked
Action: Slack → Send Channel Message
Body:
📅 New booking: #{{guest_name}} on #{{appointment_start_time}} (#{{appointment_calendar_name}}). Phone: #{{guest_phone}}
💬 Auto-reply to texts from your CRM
Trigger: New SMS Received
Filter / Paths: route by
sms_message_contentkeywords or contact ownerAction: Send SMS Reply — pass
sms_conversation_idfrom the trigger
📞 Call leads automatically when they land in your pipeline
Trigger: HubSpot / Pipedrive → New Contact
Action: Schedule Outbound Call — set phone from the contact, craft a goal like "Qualify the lead and book a 15-min intro if there's fit"
📧 Email the transcript + recording
Trigger: Incoming Call Completed
Action: Gmail / Outlook → Send Email
Subject:
Call from #{{caller_name}} — #{{summary_short}}Body:
#{{summary_full}}+Recording: #{{recording_url}}
Already using "Webhooks by Zapier"?
If you set up SkipCalls before this official app existed by creating a Webhooks by Zapier catch URL, your Zap will keep working — nothing breaks. You can leave it as-is.
For new Zaps we recommend the official app because:
No manual webhook URL pasting, no "test webhook" round-trips
Fields are pre-named (
phone_from,summary_full) instead of raw JSON keysYou can pause, enable, or scope subscriptions per-receptionist from the SkipCalls dashboard
Automatic retries and delivery error handling on our side
To migrate: install the app, rebuild the trigger step using the matching SkipCalls trigger, and re-map the action. The action step stays the same.
Troubleshooting
Trigger not firing? Check the Zap is turned on in Zapier AND the subscription shows Enabled in the Zapier tab inside SkipCalls.
Wrong receptionist firing? In the Zapier tab, change the Which receptionist column for that subscription, or pick All to fire for every agent.
API key rejected? Keys don't expire but can be revoked. Open Integration → API Keys and generate a new one.
Empty
caller_name? That field is only populated when the caller already exists in your Contacts.phone_fromis always set — use it as a fallback.Dates aren't parsing? All datetime fields are ISO-8601 UTC (
2026-04-21T15:00:00Z). In Zapier, set the field type to "datetime" — formatting works automatically in Gmail, Slack, Google Calendar, etc.No data in
data_1_field? That means the agent didn't have any data collection fields configured. Open the agent, add structured fields under "Data Collection", and those fields will appear on every future call.
Need help?
Reply here with what you're trying to build — trigger, destination app, and what you want to happen — and we'll help you map the fields or pick the right recipe.
