symfony/linked-in-notifier
Provides LinkedIn integration for Symfony Notifier, letting your app send notifications through LinkedIn. Configure it with a DSN like linkedin://ACCESS_TOKEN:USER_ID@default, where the token is your LinkedIn access token and the user ID identifies the recipient.
symfony/notifier, not Illuminate\Notifications. Laravel does not ship Notifier, so adoption introduces a second, parallel notification abstraction. That is a platform-architecture decision (how many notification spines do we tolerate?) rather than a per-feature toggle — worth an explicit call before the first channel ships.Consider it when all of the following hold:
^7.x line matching the rest of the dependency graph; the 8.x line requires PHP ≥ 8.4.Look elsewhere when:
Http::withToken() against LinkedIn's versioned REST API costs 5–10 days, gives full control of version headers, retries, and error typing — likely the better long-term trade given the maintenance-only release signal.To executives: This is not a LinkedIn integration — it is a LinkedIn send button. It is MIT-licensed from the Symfony organization, so provenance is credible, and it replaces roughly 2–3 days of HTTP and auth plumbing for outbound posts only. The full cost is 4–7 dev days to wrap it for Laravel, plus permanent ownership of token rotation and API-drift patching, because the release history is maintenance-only and there is essentially no adoption evidence to lean on. The decisive constraint is not code — it is platform access: without an approved LinkedIn app covering our exact use case, the answer is no regardless of engineering effort. Recommendation: authorize a one-day spike (one live send under our own approved app, plus induced 401 and 429 mapped to typed exceptions, plus confirmation of which API version the transport emits). If the spike succeeds within the grant we hold, wrap it and ship. If it fails or the grant is narrower than the use case requires, fall back to a direct client — 5–10 days, we own everything, and given the vendor signals it is probably the sounder long-term position.
To engineering: Wrap, do not port. The transport is a stateless outbound delivery client with a static DSN factory; it runs without a Symfony kernel, DI container, or FrameworkBundle, so no service-provider bridging is needed. Coupling exists at three seams only: HTTP (needs a PSR-18 / symfony/http-client implementation, not the Http facade), events (pass null to skip the Symfony dispatcher), and async (do not introduce Messenger — run it synchronously inside a normal queued job with $tries = 3 and exponential backoff so the queue owns retries). Expose exactly one Illuminate\Notifications channel plus one container-bound client so no Symfony class leaks into the codebase and the swap option stays open. Pin symfony/notifier and the bridge together on ^7.x, verify with composer update --dry-run, and store the token in a secrets manager with DSN redaction enforced in exception handlers and config:cache output. Plan on patching this ourselves within a quarter or two.
How can I help you explore Laravel packages today?