Generated banner for Build Zoom Phone Integration
Generated logo for Build Zoom Phone Integration

Build Zoom Phone Integration

AnthropicOfficialCreated by ZoomDistributed by Anthropic

  • Skill
  • Tool integration
  • Automation and integrations
  • MIT
  • No issues found

From the author

Reference skill for Zoom Phone. Use after routing to a phone workflow when implementing OAuth, Phone APIs, webhooks, Smart Embed events, URI schemes, CRM or CTI dialers, or call handling automation.
— the description by Zoom

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides architectural guidance and implementation patterns for developers building integrations with Zoom Phone. It covers the full lifecycle of phone-related integrations, including OAuth authentication, handling real-time events via webhooks, embedding softphone functionality in web applications, and automating call-handling settings. It serves as a central hub for navigating documentation, migration paths, and common integration scenarios like CRM softphone panes or click-to-dial functionality.

What it does

  • Provides architectural patterns for Zoom Phone integrations.
  • Offers guidance on choosing between Smart Embed, REST APIs, and URI schemes.
  • Details the lifecycle for provisioning, authentication, and event handling.
  • Includes patterns for call handling, analytics, and CRM integration.
  • Provides troubleshooting and migration advice for legacy call logs.
  • Links to standardized environment variable configurations.

When to use it

  • When building a CRM or web application that requires embedded softphone capabilities.
  • When automating call handling settings for users, auto-receptionists, or call queues.
  • When implementing click-to-dial or click-to-SMS features in external interfaces.
  • When setting up real-time operational dashboards using phone webhooks.
  • When migrating from legacy call logs to modern call history and element APIs.

Advantages

  • Centralizes complex integration documentation and best practices.
  • Provides clear routing guardrails to select the right integration surface.
  • Includes practical patterns for handling OAuth and event validation.
  • Offers guidance on avoiding common pitfalls in API payload structures.
  • Supports migration-safe data mapping for evolving API schemas.

Usage examples

“How do I implement a click-to-dial feature in my web app for Zoom Phone?”
The agent will guide you to use URI schemes like zoomphonecall:// and explain how to trigger them from your UI.
“What is the best way to embed a softphone in my CRM?”
The agent will recommend the Smart Embed approach, providing details on using iframes and the postMessage bridge for communication.
“How do I automate call handling settings for an auto-receptionist?”
The agent will provide the REST API pattern for reading and patching call handling settings, including validation tips.
“I need to track call events in real-time. Where do I start?”
The agent will direct you to the webhook and Smart Embed event documentation to capture and correlate call identifiers.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/anthropics/build-zoom-phone-integration/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip build-zoom-phone-integration.zip -d .agents/skills

Documentation by Zoom

/build-zoom-phone-integration

Background reference for Zoom Phone integrations across API, webhook, Smart Embed, and URI-launch workflows.

Implementation guidance for Zoom Phone integrations across API, webhook/event, Smart Embed, and URI-launch workflows.

Official docs:

Routing Guardrail

  • If the user needs embedded softphone behavior in a web app, use Smart Embed (examples/smart-embed-postmessage-bridge.md).

  • If the user needs call records, analytics, or automation, use Phone REST API and webhooks (references/deprecations-and-migrations.md).

  • If the user needs click-to-dial/SMS launch from external UI, use URI schemes (zoomphonecall://, zoomphonesms://).

  • If the user mixes Zoom Phone and Contact Center, chain with ../contact-center/SKILL.md.

Start here:

  1. concepts/architecture-and-lifecycle.md

  2. scenarios/high-level-scenarios.md

  3. references/deprecations-and-migrations.md

  4. references/forum-top-questions.md

  5. references/smart-embed-event-contract.md

  6. references/call-handling-patterns.md

  7. references/environment-variables.md

  8. references/crm-sample-validation.md

  9. troubleshooting/common-issues.md

  10. RUNBOOK.md

  11. examples/smart-embed-postmessage-bridge.md

  12. examples/phone-api-service-pattern.md

  13. references/source-map.md

Common Lifecycle Pattern

  1. Provision account prerequisites (Zoom Phone license, admin setup, SMS readiness).

  2. Create OAuth app and scopes in Marketplace.

  3. Choose integration surface:

  • Smart Embed (iframe + postMessage)

  • REST + webhooks

  • URI launch (callto, tel, zoomphonecall, zoomphonesms)

  1. Capture real-time events (Smart Embed events and/or webhooks).

  2. Persist call identifiers and correlate records (call_id, call_history_uuid, call_element_id).

  3. Apply migration-safe data mapping (v1 -> v2 -> v3) and handle renamed fields.

  4. Harden security (origin validation, webhook signature validation, least-privilege scopes).

High-Level Scenarios

  • CRM softphone pane using Smart Embed + contact search/match callbacks.

  • Click-to-call from account/contact table via zp-make-call.

  • Call disposition workflow using zp-save-log-event and custom notes page.

  • SMS engagement workflow with zoomphonesms:// and zp-sms-log-event.

  • Real-time operational board driven by phone.* webhook events.

  • Call analytics migration from legacy call logs to call history/call elements.

  • Admin automation for user/auto-receptionist/call-queue call-handling settings.

See scenarios/high-level-scenarios.md for details.

Chaining

  • OAuth setup/token lifecycle: ../oauth/SKILL.md

  • Phone and account resources via REST: ../rest-api/SKILL.md

  • Event delivery and signature validation: ../webhooks/SKILL.md

  • Contact Center blended journey: ../contact-center/SKILL.md

Environment Variables

Files

references/forum-top-questions.md


title: "Forum-Derived Top Questions (Phone)"

Forum-Derived Top Questions (Phone)

Use this as a checklist of the most common recent Developer Forum asks for Zoom Phone integrations.

Fast Routing Questions (Ask First)

  • Integration surface: Smart Embed, Phone REST API, webhooks, or URI launch (zoomphonecall://, zoomphonesms://).

  • App/auth type: Server-to-Server OAuth vs user OAuth, and who the token is acting as.

  • Account posture: Zoom Phone license assigned, user enabled, admin permissions, site/queue scope.

  • Exact failure: HTTP status + Zoom code/message + endpoint/event name + sample payload.

  • Correlation IDs available: call_id, call_history_uuid, call_element_id, recording ID.

Smart Embed Sign-In or Calling Fails

Common asks:

  • Smart Embed shows login but never completes.

  • Widget loads, but outbound/inbound calling does not work.

  • zp-make-call/search-and-match behaviors are inconsistent.

Answer pattern:

  • Confirm approved Smart Embed domain matches the real runtime origin exactly.

  • Confirm origin parameter is domain-level where required and not path-mismatched.

  • Verify Zoom client sign-in state and account licensing prerequisites.

  • Add strict postMessage origin handling and validate event init sequence.

call_logs to call_history Migration Gaps

Common asks:

  • Missing fields after migrating to call_history.

  • Existing call analytics pipelines break after deprecation migration.

Answer pattern:

  • Treat migration as a schema migration, not a drop-in endpoint swap.

  • Build a mapping layer from legacy fields to current call history/call element fields.

  • Persist both legacy and new IDs during transition for reconciliation.

  • Update downstream reports that assumed removed fields.

Recording and Download URL Auth Errors

Common asks:

  • download_url returns 401/403.

  • Invalid access token, does not contain scopes on recordings/transcripts.

Answer pattern:

  • Generate a fresh token from the app that owns the needed scopes.

  • Re-authorize after scope changes; verify token scope set, not just app config.

  • Handle redirects while preserving auth headers where needed.

  • Keep a fallback retry path for temporary scope/permission regressions.

"Zoom Phone Has Not Been Enabled" (2013/2031)

Common asks:

  • Token works for some APIs/users but Phone endpoints return not enabled.

Answer pattern:

  • Verify account_id is present in S2S token request and token is from expected account.

  • Verify target users actually have Zoom Phone entitlement.

  • Verify caller/admin context has permission for account-level Phone resources.

  • Re-test with one known-good licensed admin and one known-good licensed user.

Webhooks: Missing Events or Duplicates

Common asks:

  • Expected call events not received.

  • Missed-call events delivered more than once.

Answer pattern:

  • Acknowledge webhooks quickly with 200/204 and process asynchronously.

  • Implement idempotency keyed by event ID/call identifiers.

  • Expect retries and occasional ordering variance.

  • Validate event subscription scope and verify webhook logs before blaming delivery.

Correlating Calls Across APIs and Events

Common asks:

  • Hard to tie recordings, call path/history, and webhook events to one interaction.

Answer pattern:

  • Persist all call identifiers emitted at each lifecycle phase.

  • Build a correlation table keyed by your internal interaction ID.

  • Do not rely on a single identifier across all endpoints.

Pagination and Incomplete Result Sets

Common asks:

  • /phone/users or call list endpoints appear to miss records.

Answer pattern:

  • Always iterate next_page_token until exhausted.

  • Keep query filters stable between page requests.

  • Add dedupe + page-audit logging to detect loops or repeated pages.

Requirements and compatibility

Written for: Claude Code, Claude apps

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Zoom
Publisher
Anthropic (Official)
Distributed by
Anthropic
Source
anthropics/knowledge-work-plugins · partner-built/zoom-plugin/skills/phone · commit e050c2e
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from partner-built/zoom-plugin/LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Zoom or Anthropic.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download build-zoom-phone-integration.zip