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

Slack Laravel Package

alek13/slack

A Laravel package for Slack integration that makes it easy to send messages and notifications to Slack channels via incoming webhooks or the Slack API, with rich message formatting, configurable settings, and a simple, expressive PHP interface.

Deep Wiki
Context7

Technical Evaluation

What we're actually evaluating. alek13/slack is a thin, opinionated wrapper around Slack Incoming Webhooks, descended from the long-abandoned maknz/slack lineage. Its value proposition is developer ergonomics (Slack::to('#ops')->send('...')), not platform capability. That framing drives every conclusion below.

Architecture fit. It fits cleanly as a single-direction, fire-and-forget notification adapter — CI results, deploy notices, error-alert fan-out, internal ops pings. It does not fit anything resembling a Slack integration: no OAuth install flow, no Events API, no slash commands, no interactivity, no per-user messaging, no Web API (chat.postMessage) access. If the roadmap includes "users act on messages" or "message a specific person," this package is the wrong primitive and should be rejected up front.

Integration feasibility. Low friction: Composer-installable, optional Laravel service provider/facade, Guzzle-based transport, config-file + env-var webhook URL. A competent PHP engineer can have a working proof-of-concept in under a day. The real friction is governance, not code.

Technical risk.

  • Capability drift with Slack. Block Kit is the current message-authoring model; attachments (the format this package's API surface was designed around) is legacy. Even where it still renders, we are building on a deprecation path with no upstream owner obligated to track Slack's changes.
  • Webhook model constraints. A webhook is bound to one workspace and one channel. Multi-tenant or multi-channel requirements mean N secrets to store, encrypt, and rotate — an operational liability that the package does not help with.
  • No first-class resilience. No queue integration, no retry/backoff, no 429/Retry-After handling, no idempotency. Error signal is weak: webhooks return HTTP 200 with a short body, so naive usage silently drops messages.
  • Supply chain. Repository is unknown in the metadata, stars are modest (137), and release metadata shows a future-dated release (2026-08-07) — a strong signal the dataset is noisy or the release feed is unreliable. We cannot currently verify CI, security policy, or provenance. This is the single largest gating item.
  • Redundancy. Laravel ships a native Slack notification channel (SlackMessage) with Block Kit support that rides on the framework's HTTP client, queue, and retry machinery. We must justify adding a third-party dependency that duplicates first-party capability.

Key questions.

  1. What is the canonical repository URL, and can we verify commit history, CI status, and a security disclosure process?
  2. Is the 2026-08-07 release date real, or a metadata artifact? What is the actual last-commit date?
  3. Which PHP and Guzzle versions are supported, and does the Guzzle constraint resolve against our Laravel version's lockfile?
  4. Does it support Block Kit payloads at all, or only legacy attachments?
  5. Is there any retry, rate-limit, or transport-injection hook we can wrap?
  6. Why not Laravel's built-in Slack notification channel, which gives us queueing and Block Kit for free?
  7. Is our requirement genuinely outbound-only, or is this a placeholder for a real Slack app we'll need in 12 months?

Integration Approach

Stack fit. Good — but conditionally. It assumes Composer, PSR-4 autoloading, and Guzzle; the Laravel provider is optional, so it also works in plain PHP/Symfony contexts. For a Laravel codebase the natural home is a single notification service class, not scattered facade calls in controllers and jobs.

Migration path. Two migrations matter. Inbound: teams on the abandoned maknz/slack get a drop-in-ish API, which is the package's main practical draw — treat it as a bridge, not a destination. Outbound: we should design an internal SlackNotifier interface from day one with one implementation backed by this package, so swapping to Laravel's native channel or the official Slack SDK is a one-class change. Do not let the package's facade leak into domain code.

Compatibility. Verify before committing: PHP 8.2/8.3 support, Laravel 10/11, and — critically — that its Guzzle constraint co-resolves with the framework's (Laravel pins Guzzle 7; an old ^5.3|^6 constraint will block the install or force a downgrade elsewhere). Also confirm illuminate/support is a suggest rather than a hard pin to an old major.

Sequencing.

  1. Diligence gate (week 0): confirm repo identity, license (BSD-2-Clause is fine), commit recency, open-issue posture, and Guzzle/PHP constraint resolution against our lockfile. Stop here if it fails.
  2. Spike (week 1): one non-critical channel, one webhook, verify Block Kit support and 429 behaviour empirically.
  3. Adapter (week 2): internal interface + config-driven webhook map + encrypted secret storage.
  4. Harden (week 3): route sends through the queue, add throttling per channel, structured logging on 4xx, alert on send failure.
  5. Decide (week 4): adopt as-is, replace with Laravel's native channel, or graduate to the official Slack SDK — decided on evidence, not inertia.

Operational Impact

Maintenance. The code surface is small, so bug risk is low; dependency risk is the real exposure. Budget for: quarterly review of upstream activity, a pinned-version policy with a documented fork-and-patch fallback (BSD-2-Clause permits it), and monitoring of Slack's changelog for attachment/Block Kit deprecations. Assume a bus factor of roughly one and plan for the package going quiet.

Support. Community-only, no SLA, no vendor. Internal ownership must be explicit — name a team and an on-call escalation path for "Slack alerts stopped working," because that failure is invisible until someone notices the silence.

Scaling. Slack's webhook ceiling is roughly 1 message per second per channel, bursted; exceeding it yields 429 with Retry-After, which this package won't handle for us. Message size is bounded (text ~4,000 chars, 50 blocks, 20 attachments) and payloads are synchronous HTTP calls — meaning any send in a request path adds Slack's latency to our own. For anything beyond tens of messages per hour: queue it, throttle it, batch it. Multi-workspace scale means a secret-per-tenant store, not a single env var.

Failure modes.

  • Silent drop — HTTP 200 with an error body misread as success. Mitigate with response inspection and a heartbeat check.
  • Timeout-induced latency — synchronous send blocks the caller. Mitigate by queueing.
  • Secret leakage — a webhook URL is a bearer credential; it will end up in logs, stack traces, and screenshots. Redact it, store it encrypted, and mandate rotation.
  • Channel-orphaning — a deleted or renamed channel or a webhook revoked by a workspace admin fails with a 4xx and no automatic recovery. Needs a health check.
  • Payload schema breakage — Slack rejects malformed attachments/blocks; no client-side validation here.

Ramp-up. Very low — the API is intuitive and junior developers will be productive in an hour. That is precisely the risk: ease of use invites direct facade calls sprinkled across the codebase, bypassing queues, throttles, and redaction. Counter it with a lint/architecture rule restricting the package to the single adapter class, plus a short "how to send a Slack message" runbook. Expect half a day of ramp-up per engineer, and one owner accountable for the integration overall.

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.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console