Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Zoom Laravel Package

macsidigital/laravel-zoom

A Laravel wrapper for the Zoom API that lets you manage meetings, users, webinars, and recordings from your PHP app. It provides a clean, expressive interface for common Zoom operations, making it easy to integrate video conferencing into Laravel projects.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. macsidigital/laravel-zoom is a thin SDK adapter, not a domain layer. It ships a service provider, a facade, a publishable config file, and a set of resource-wrapper classes that map roughly one-to-one onto Zoom REST v2 endpoints (users, meetings, webinars, recordings, reports). It provides no persistence, no Eloquent models backed by your schema, no queue orchestration, no webhook ingestion, and no event model. That makes it a reasonable anti-corruption boundary — you can place it behind your own ZoomClient interface so no other code imports MacsiDigital\Zoom\* directly — but it will not carry any of the product logic. Expect to build the meetings table, the attendee sync, the recording lifecycle, and the webhook receiver yourself. The package only saves you the HTTP plumbing and the request-shape boilerplate.

Integration feasibility. Mechanically straightforward: composer require, publish config, drop credentials in .env, inject the facade. The gating item is authentication. Zoom retired JWT app types (deprecation 2023, full sunset September 2023), and the last tagged release here is September 2023 — exactly the boundary. Server-to-Server OAuth (account ID + client ID + client secret) is the only viable production path now, so the first task is verifying that the tagged release actually implements the S2S token exchange and refresh, or whether that only exists on dev-main. Everything downstream depends on that answer.

Technical risk. Three risks dominate:

  • Maintainer/bus factor. 267 stars, single-vendor ownership, sparse release cadence. This is a hobby-to-semi-commercial package, not a supported product.
  • Framework drift. The last tag predates Laravel 11 and 12. If illuminate/support is pinned to ^9|^10, you are choosing between pinning your framework, forking, or abandoning the package.
  • API drift. Zoom has continued to evolve meeting, webinar, and recording endpoints. A two-year-old wrapper will be right for the happy path and wrong at the edges — and the edges are where recordings and webinars live.

There is also a smaller but real concern: no built-in rate-limit handling, backoff, or pagination ergonomics. Zoom enforces per-minute and per-day caps, so any loop over users or recordings will hit 429s in production unless you wrap it.

Key questions to resolve before committing:

  • Which auth flows does the latest tagged release support — JWT only, or S2S OAuth?
  • What are the illuminate/* and PHP version constraints?
  • Does it use Laravel's Http client (mockable, retryable) or raw Guzzle?
  • Are webhook signature-verification helpers included?
  • How are recording-download tokens handled (query-string tokens are a logging/PII hazard)?
  • Is there CI, a test suite, or any coverage signal?
  • Are there active forks or is the repo effectively dormant?
  • Which of our required endpoints are actually wrapped, versus needing raw HTTP escape hatches?

Integration Approach

Stack fit. Good fit if you are on Laravel 9 or 10 with PHP 8.0–8.2 and your needs are conventional: create/update meetings, list webinars, pull recordings and reports. Poor fit if you are on Laravel 11+ or need anything Zoom has changed since mid-2023 — you will spend the saved time on workarounds.

Migration path. Do not let it leak. Define a narrow internal interface (createMeeting, cancelMeeting, listRecordings, getParticipants) and implement it with a package-backed adapter. That gives you a one-file swap to a fork, to raw Http:: calls, or to a maintained alternative if the package stalls. Treat the facade as an implementation detail and ban it from controllers and jobs.

Compatibility. Pin the exact version and commit the lock file. Add a CI job that runs against the next Laravel major before you upgrade the framework, so the constraint break surfaces as a planned task rather than a release-day surprise. Confirm S2S OAuth against a sandbox Zoom account on day one — not in week three.

Sequencing.

  1. Spike (2–3 days). Install in a throwaway branch, authenticate with S2S OAuth, exercise the exact endpoints you need. This is a go/no-go gate.
  2. Contract. Write the internal interface and adapter; stub it for tests.
  3. Own the persistence. Schema for meetings, participants, recordings; sync jobs with idempotency keys.
  4. Own the webhooks. Separate controller, signature verification, queue-based processing, replay protection.
  5. Harden. Rate-limit middleware, retry with jitter, observability on 401/429/5xx.
  6. Feature work.

Steps 3–5 are yours regardless of package choice — budget for them honestly in the estimate.

Operational Impact

Maintenance. You inherit the upgrade burden. Realistically, assume you will fork within 12 months to patch the OAuth flow or lift a Laravel constraint. That is a low-cost fork (small codebase) but it converts a dependency into an owned artifact, and that ownership should be named and resourced, not assumed.

Support. Community-only. GitHub issues with no SLA, no vendor contact, no security disclosure process. When Zoom changes a response shape, your escalation path is reading Zoom's changelog and patching the wrapper yourself. For an internal tool that is acceptable; for anything customer-facing with revenue attached, it is a material gap.

Scaling. The package does not help you scale, and it can actively hurt. Watch for N+1 call patterns (per-user meeting lists), missing pagination helpers, and absent caching for largely-static data like user directories. Plan a token cache (S2S tokens are account-scoped and should be reused, not re-minted per request) and a shared rate-limit budget across workers.

Failure modes to design against:

  • Token expiry mid-batch, producing partial writes and confusing retries.
  • 429 storms under backfill or bulk sync — needs queue-level throttling, not per-job sleeps.
  • Silent partial failures where the package returns a collection that looks complete but was truncated by pagination.
  • Webhook duplication and out-of-order delivery — requires idempotency on meeting.ended / recording.completed.
  • Recording download URLs expiring; any cached URL must be treated as short-lived and re-minted on demand.
  • Timezone and UTC drift between your scheduler and Zoom's meeting start times.

Ramp-up. Low for a mid-level Laravel developer to get a meeting created — the API is idiomatic and the README is adequate. Moderate to make it production-safe: the auth migration, rate limiting, webhook handling, and observability are all outside the package and all require someone who understands Zoom's platform quirks, not just Laravel.

Bottom line. This is a convenience wrapper with a real but bounded time-to-first-call benefit, priced against a nonzero and growing maintenance liability. Green-light it as an internal adapter behind an owned interface on Laravel 9/10; do not adopt it as a dependency of record, and do not assume it is current until the OAuth and framework-constraint questions are answered with evidence.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log