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

Microsoft Teams Laravel Package

laravel-notification-channels/microsoft-teams

Send notifications to Microsoft Teams from your Laravel app. This channel plugs into Laravel's notification system so you can post rich MessageCard or Adaptive Card messages to Teams channels via incoming webhooks, all through a clean, familiar API.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

Feature and roadmap scoping. This package lets a Laravel app push a notification to a Microsoft Teams channel with roughly one notification class and one config entry. That makes "send alerts to Teams" a line item in a sprint, not an initiative — the difference between shipping Teams support this quarter and putting it on a roadmap review.

Build vs. buy. The alternative is building a Teams integration in-house: Azure app registration, OAuth token acquisition and refresh, Adaptive Card JSON schema, webhook throttling (~4 messages/second per webhook), retry and failure handling, and ongoing Microsoft Graph API version churn. That is realistically 4–8 engineer-weeks plus permanent maintenance. Adopting an MIT-licensed channel library collapses this to a day or two of integration work. The buy case here is unusually strong because the work being avoided is undifferentiated — it is plumbing, not product.

Prioritization and addressable market. Most large B2B accounts standardize on Microsoft 365. If your app sends alerts only to Slack or email, "we use Teams, not Slack" is a recurring objection in enterprise evaluations. Teams notifications are cheap to add and can be sequenced as a small enhancement while unlocking a segment that would otherwise require a workaround.

Representative use cases to validate demand against:

  • Operational/incident alerts to an on-call or #eng-alerts channel
  • Approval and review requests to a team channel (notify only; see limitations below)
  • Sales/ops signals — new order, churn risk, quota threshold — to a revenue channel
  • CI/CD, deployment and job-failure notifications for internal tooling
  • Customer support escalation pings into a triage channel
  • Internal admin tooling and back-office notifications where email gets ignored

Packaging decisions. Teams delivery is a credible checkbox for an enterprise or "integrations" tier. Because the marginal cost is near zero, it is better positioned as a retention/competitive-parity feature than a paid add-on.

Constraint that shapes product scope. This is a one-way, channel-level notification channel. It is not a bot, does not support interactive cards, slash commands, inbound messages, or DMing an individual via Graph. Any roadmap item implying "approve from Teams" or "chat with our app inside Teams" is a different project (Bot Framework + Azure AD app + Graph permissions) and should be scoped and priced separately. Decide this explicitly now so it does not surface as scope creep later.

When to Consider This Package

Adopt when:

  • The app is a modern Laravel version on a supported PHP runtime and already uses Laravel's Notification system (adoption is essentially a composer require plus a channel in via()).
  • Outbound, one-way notifications are sufficient — "tell a human something happened."
  • The customer base or your own organization is Microsoft-365-centric.
  • The failure mode is tolerable: a dropped alert degrades an experience, it does not corrupt data or break a workflow. Treat Teams as a secondary channel alongside email or paging until proven.
  • You want time-to-market and are prepared to own the dependency: pin the version, wrap it behind an internal TeamsNotifier interface, and feature-flag it.

Look elsewhere or build custom when:

  • You need interactivity — buttons, approvals with callbacks, threaded conversations, or inbound commands. That is Bot Framework territory, not this package.
  • You need to target individuals (DMs) or read channel content. That requires an Azure AD app registration and Graph permissions, plus a security review you should not try to avoid.
  • Your organization mandates vendor SLAs, security review of every dependency, or a supported commercial relationship. This is a community package with a modest footprint (162 stars, MIT, zero listed dependents), which means limited production evidence and single-maintainer risk.
  • Notification volume is high or delivery guarantees matter. Webhook throttling and lack of durable retry make this a poor fit for critical paging — pair it with a real alerting provider for anything with an SLA.
  • You are not on Laravel, or you are consolidating notifications through a central service rather than per-app integrations.

Before committing, run a two-day spike: one real webhook, one high-value alert, one failure scenario (webhook deleted, channel renamed), and confirm the payload format renders acceptably in the Teams client. Low star count and zero dependents are not disqualifying for a thin, well-understood adapter — but they are a reason to verify rather than assume.

How to Pitch It (Stakeholders)

To executives — one paragraph: Our customers live in Microsoft Teams, and right now we can't reach them there. This open-source, MIT-licensed Laravel package lets us deliver notifications into Teams channels in about a day of engineering instead of the six-plus weeks it would take to build and maintain the equivalent integration ourselves. There is no license cost and no vendor lock-in — it's a thin adapter we can swap out. It is deliberately limited to one-way notifications, so it satisfies the common "just tell my team something happened" need without committing us to building a Teams bot. Recommendation: approve a small pilot on two or three internal channels, and revisit interactive workflows as a separately scoped investment only if customers ask.

To engineering — the honest version: This removes Graph API, token refresh, Adaptive Card templating and webhook retry work from our backlog. In exchange, we take on a low-traffic community dependency. Mitigations: pin the version, isolate it behind our own notifier interface so a replacement is a one-file change, feature-flag it per tenant, and keep email as the fallback channel. Known limits are one-way delivery and channel-level targeting only — no DMs, no buttons, no inbound. If any of those become requirements, that's a new project, not a config change.

To sales/customer success: "Teams notifications" becomes a demoable checkbox for Microsoft-standardized accounts, at essentially no incremental cost. Position it as delivery to a team channel, not as an interactive Teams app, so we don't over-promise in the room.

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