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

Whatsapp Manager Laravel Package

scriptdevelop/whatsapp-manager

scriptdevelop/whatsapp-manager is a Laravel/PHP package that helps developers add and manage WhatsApp messaging in their applications, offering a convenient integration layer for message sending, contact or conversation handling, and related WhatsApp workflows.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. scriptdevelop/whatsapp-manager is a conventional Laravel package: a service provider, publishable config, facade, and a thin HTTP client layer over Meta's WhatsApp Business Cloud API (Graph API). It slots into the standard Laravel idioms most teams already use — config publishing, .env-driven credentials, queueable jobs, and an event/webhook ingress point. If the application is Laravel 9–11 and the messaging use case is transactional (OTP, order updates, appointment reminders) rather than high-volume marketing, the architectural shape is a reasonable fit. It is not a framework-agnostic SDK, so adopting it couples the messaging boundary to Laravel's lifecycle.

Integration feasibility. Straightforward on the surface: composer require, publish config, set WHATSAPP_PHONE_NUMBER_ID, WABA_ID, and access token, register the webhook route. The real work sits outside the package — creating the Meta app, provisioning a test WABA number, obtaining a permanent system-user token, verifying business, and getting message templates approved. That Meta-side onboarding, not the PHP integration, is the schedule driver. Webhook verification (hub.challenge handshake) and X-Hub-Signature-256 validation are the two integration points to confirm in a spike before committing.

Technical risk. Material, and mostly maintenance, not capability:

  • Single-maintainer, 80 stars, 0 dependents. No ecosystem validation and no second pair of eyes. Bus-factor of one.
  • Spanish-only documentation. Adds onboarding friction for non-Spanish-speaking teams; expect to read the source for edge behaviours.
  • Graph API version drift. Meta deprecates Graph API versions on roughly a two-year cadence. A hardcoded or stale version string is the most common way packages like this silently break.
  • Credential and token lifecycle. Long-lived token rotation, per-number scoping, and multi-tenant isolation are rarely handled by small wrappers.
  • Webhook hardening. Signature verification, idempotency on Meta's at-least-once retries, and replay protection are the highest-severity gaps in utility packages.
  • No visible security policy or CI matrix (unverified — must be checked).

The low aggregate score (1.06) against a high opportunity score (11.54) reads as "real gap in the market, weak incumbent" — which argues for adoption with a wrapper, not adoption as a dependency of record.

Key questions for the maintainer / spike:

  1. Which Graph API versions are supported, and is the version configurable or hardcoded?
  2. Are template messages with components (header/body/buttons, variables) fully supported?
  3. Does it implement X-Hub-Signature-256 verification and provide idempotency hooks?
  4. Media upload/download, or does it only pass media IDs and links?
  5. Multi-number / multi-tenant support, or single-WABA assumption?
  6. Token refresh, 429 backoff, and Meta error-code mapping to retryable vs. terminal?
  7. Laravel/PHP version matrix and test coverage — is there CI?
  8. Does it model the 24-hour customer service window and template-required-outside-window rule?

Integration Approach

Stack fit. Target Laravel 10/11 on PHP 8.1+, queue driver of choice, Redis for idempotency and rate-limit counters, and object storage for inbound/outbound media. The package occupies the outbound-send and inbound-webhook boundary. Everything upstream — notification routing, template catalogue, opt-in state — should remain application-owned.

Migration path. Adopt behind an internal seam from day one:

  • Define an application-owned WhatsAppGateway interface (sendText, sendTemplate, sendMedia, markRead) and implement it with this package.
  • Route all sends through queued jobs, never synchronously in a request cycle.
  • Keep credentials in config, not in package-specific helpers scattered through the codebase.
  • If the package stalls, the fallback is a ~200-line Guzzle client against the same endpoints — the interface makes that a contained swap, not a rewrite.

Compatibility checks before committing. Composer constraint range; PHP version; whether it pulls a conflicting Guzzle or HTTP client version; whether the service provider auto-discovers; whether it registers global middleware or routes you don't want. Pin to a specific commit or patch version and record the SHA in the ADR.

Sequencing.

  1. Spike (2–3 days): install in a sandbox app, send a text and a template to a test number, receive and verify a webhook. Confirm signature validation and media handling by reading source.
  2. Meta onboarding in parallel: app creation, business verification, system-user token, template submission. Start this on day one — it is the long pole (days to weeks).
  3. Adapter layer: implement the internal interface; write contract tests against it so the package is swappable.
  4. Webhook ingress hardening: signature verification, idempotency store keyed on message ID, fast 200 ack with async processing.
  5. Queue and resilience: retry policy distinguishing 429/5xx (retry with backoff) from 4xx terminal errors; dead-letter queue; alerting.
  6. Production rollout: canary on one number/use case, dashboards on delivery rate, template rejection rate, and quality rating, then expand.

Operational Impact

Maintenance. Budget for a fork-or-patch posture, not passive dependency consumption: pin the version, enable Dependabot, and review upstream monthly. Track Meta's Graph API deprecation calendar independently of the package's release cadence — assume you will be the one who notices the version string is stale. Plan for ~1–2 engineer-days per quarter of stewardship, more if you fork.

Support. GitHub issues only, single maintainer, Spanish-language docs, no SLA. Internally you need a runbook covering: token rotation, number quality-rating degradation, template pause/rejection remediation, and webhook replay. Do not let this package become a dependency the on-call roster doesn't understand.

Scaling. Throughput ceilings are set by Meta, not by PHP: per-number messaging tier limits, pair rate limits, and 429 throttling. The package's job is to surface those errors cleanly; the queue and backoff discipline are yours. Media is the other scaling axis — inbound media must be pulled promptly (Meta's media URLs expire) and persisted; outbound media should be uploaded once and referenced by ID. Webhook volume scales with inbound traffic; make the endpoint stateless, idempotent, and horizontally scalable behind the load balancer.

Failure modes to instrument:

  • Expired or revoked access token (silent total outage — alert on auth-error rate).
  • Template paused or rejected by Meta (sends fail closed).
  • 24-hour window violations (error 131047) surfacing as user-visible failures.
  • Undeliverable recipients (131026) inflating retry volume.
  • Webhook duplicate delivery causing double-processing without an idempotency key.
  • Quality-rating drop throttling the number before anyone notices.
  • Package abandonment: upstream silent for 6+ months with a Graph API deprecation pending.

Ramp-up. A Laravel-fluent engineer reaches productive use in ~1–2 days. The real ramp is domain knowledge: Meta Business Manager setup, template approval workflow, messaging-tier mechanics, and the customer-service-window rules. Allocate that learning explicitly — it is not in the package, and the Spanish docs won't teach it. Net recommendation: viable for a focused transactional-messaging use case, adopted behind an internal adapter with a pinned version and a quarterly stewardship budget; not appropriate as the sole messaging dependency for a multi-tenant, high-volume, or compliance-sensitive platform without a fork commitment.

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.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings