laravel-notification-channels/intercom
Laravel Notification Channels Intercom adds an Intercom channel to Laravel notifications, letting you send messages and updates to users through Intercom from your existing notification classes. Requires Laravel and an Intercom access token.
Architecture fit
send() contract required by Notification::via(). Integration is idiomatic: add IntercomChannel::class to a notification's via() array, implement a toIntercom() payload builder, and resolve the recipient via routeNotificationForIntercom() on the Notifiable model.intercom/intercom-php), so the real coupling is transitive — we inherit the SDK's PHP and Guzzle constraints, not just the channel's. v1.4.0 does not change this, and the release notes give no indication the SDK constraint was bumped.Integration feasibility
composer require laravel-notification-channels/intercom, publish config, set the access token via environment, map Notifiable models to Intercom user_id or email. Spike still under a day.user_id or email; our user records must be reconciled with Intercom contacts, and email-only matching inherits email-change and merge semantics that Intercom owns and we cannot audit. v1.4.0 does not touch this, and the changelog shows no new routeNotificationForIntercom behavior or identity-verification support.Technical risk
Intercom-Version header, endpoint coverage, or the upstream SDK version. A 2023-era wrapper with a 2024+ release that still does not pin a version header is a latent production break with no upstream patch path. Intercom's history of breaking, non-negotiable changes (v1 → v2, leads deprecation, contacts unification) is the exposure we are underwriting.^8.0 (likely, since Laravel 9 requires it), that is a lockfile consideration for any app still on PHP 7.4.Key questions
composer.json bump additive or did it raise the PHP floor and drop older Laravel lines?Intercom-Version, and can we override it per-request? Nothing in 1.4.0 indicates a change.intercom/intercom-php constraint move in 1.4.0, and is that SDK actively maintained? The release notes are silent.ShouldQueue respected and are retries bounded? No described change.Stack fit
Migration path
IntercomTransport interface with one implementation delegating to the package. This converts "abandoned dependency" from an emergency into a swap — and v1.4.0 is a good reminder that a dormant package can still publish an unexpected diff, so the blast radius should be one class either way.Compatibility
intercom/intercom-php, Guzzle, and PSR packages are the actual constraint risk. Because 1.4.0 touches framework constraints, the PHP floor is the thing to check first.composer.json, not the changelog summary. "laravel 9 support" could mean an additive |^9.0 or a narrowing rewrite.Sequencing
composer.json diff; re-run the install against our target Laravel/PHP matrix and record exactly which versions pass.Maintenance
Support
Scaling
ShouldQueue; synchronous dispatch inside request cycles will couple API latency to user-facing response times and amplify 429s into request failures.Failure modes
| Mode | Symptom | Mitigation |
|---|---|---|
| Intercom API version drift | 4xx across all sends after a platform change | Pin Intercom-Version in the fork; alert on error-rate spike |
| Contact not found / mismatched identity | Message silently dropped | Explicit throw on 404; monitor send-vs-intent ratio |
| Rate limiting (429) | Queue backlog, retry amplification | Dedicated queue, jittered backoff, concurrency cap |
| Upstream SDK constraint conflict | composer update blocked app-wide |
Fork; pin SDK major; isolate in a dedicated package |
| Constraint bump regression | Package installs but PHP floor rises / older Laravel line drops | Read the 1.4.0 composer.json diff; test the full matrix before merging |
| Unmaintained security advisory | No patch path available | Fork ownership + monthly advisory review; note that reactive releases may lag advisories |
| Notification errors swallowed | No signal at all | Wrap send() in structured logging and metrics |
Ramp-up
How can I help you explore Laravel packages today?