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

N8N Bundle Laravel Package

freema/n8n-bundle

A PHP bundle for integrating n8n workflow automation into your application. Configure n8n connections, trigger workflows via webhooks, and exchange data between your app and n8n automations with minimal setup.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for the automation layer. The core decision this package informs is whether your product should own workflow orchestration (queues, retries, schedulers, state machines) or delegate it to n8n and keep only a thin integration surface in your app. This bundle represents the "thin" end of that spectrum: it is a convenience wrapper, not an orchestration engine.
  • Where automation logic lives on the roadmap. If you're planning features like "trigger a customer onboarding sequence," "notify Slack when an enterprise deal closes," or "sync records to a partner system," this package supports a roadmap where non-engineers (ops, RevOps, support) own the workflow graph in n8n and engineering owns only the trigger points and payload contracts.
  • Feature scope for an internal integrations team. Useful input to decisions about whether integrations ship as first-class product features (owned, tested, versioned) or as configurable workflows customers/CSMs can edit. The latter reduces engineering throughput cost per integration.
  • Reducing time-to-market on one-off integrations. Each new "when X happens, do Y in system Z" request becomes an n8n workflow plus one webhook call rather than a new module, migration, and deploy. This is a roadmap-velocity argument, not a correctness argument.
  • Vendor and architecture posture. It is MIT-licensed and narrow, so adopting it is close to reversible — which supports a decision to trial rather than commit, and to keep n8n itself (self-hosted vs. cloud, community vs. enterprise) as the real strategic decision.
  • Buy-vs-build on observability. Delegating workflows to n8n shifts execution logs, failure visibility, and retry semantics out of your app and into n8n's UI. That has real support and on-call implications worth deciding explicitly.
  • Security ownership of inbound callback endpoints (new in 2.1.0). The release fixes a forgery hole: the callback endpoint accepted any POST carrying a _n8n_bundle.uuid, letting anyone who could reach it dispatch N8nResponseReceivedEvent and run a pending request's response handler. This is the concrete cost of owning an inbound webhook surface — signing, expiry, and replay handling are now yours to operate (via callback.secret, defaulting to kernel.secret/APP_SECRET). Budget for it: secret management and rotation now sit on your platform's critical path, because rotating APP_SECRET silently invalidates in-flight callbacks.
  • Workflow governance / ops contract (new in 2.1.0). Callbacks are now signed and the callback URL is passed to n8n at call time; a hard-coded URL in a workflow gets a 401. This is a governance decision, not a code decision: ops must consume the callback_url handed to them rather than saving an endpoint in the workflow. It also means version-skew between app deploys and workflow edits becomes a visible failure mode.
  • Infrastructure dependency for scale-out (new in 2.1.0). Pending-request tracking moved from process memory into a cache pool (tracking.cache_pool, default cache.app); with several application servers you must point it at a shared pool such as Redis. This converts a library choice into an infra commitment, and the cache becomes state your callback reliability depends on (eviction or TTL expiry means a callback with no handler).
  • Credibility test of the "thin wrapper is low-risk" assumption (new in 2.1.0). Two findings in one release are material: callbacks were forgeable and callback handlers never ran at all under PHP-FPM, because pending requests lived in the memory of the sending process. The package's flagship feature — the callback round-trip — was effectively non-functional in the most common PHP deployment model, and it took a security advisory to surface it. Treat "it's just a thin wrapper" as unproven for anything on a request/response path.

Framework note (material to the decision): this is a Symfony bundle, not a Laravel package, and it will not drop into a Laravel application. If your stack is Laravel, treat this as a reference design (a small typed client around n8n's REST/webhook API, plus HMAC-signed callbacks and cache-backed pending-request tracking) rather than an adoptable dependency; you would build the equivalent in-house or wrap the n8n API directly.

When to Consider This Package

Consider it when all of the following hold:

  • Your application is Symfony (the bundle's only supported target).
  • You have already chosen n8n as the automation platform, or are running a deliberate spike to evaluate it — not the other way around.
  • Your integration needs are shallow and one-directional: firing webhooks into n8n workflows, triggering executions, passing structured payloads, and receiving a signed callback result. Nothing that requires bidirectional state reconciliation.
  • You can adopt 2.1.0 or later, never 2.0.x. The prior line is both unauthenticated on its callback route and functionally broken under PHP-FPM; treat 2.0.1 as unsafe rather than merely old.
  • You can satisfy the new operational preconditions: a stable APP_SECRET (or explicit n8n.callback.secret), a shared cache pool if you run more than one app server, response handlers registered as services (autoconfigured N8nResponseHandlerInterface) rather than constructed with new, and callback routing defined in your own routing config now that callback.route_path is deprecated.
  • You can coordinate the n8n side of the upgrade: existing workflows must post results to the callback_url they receive. This is an ops change with a hard cutover — old workflows break with a 401, not a soft failure.
  • You want to avoid hand-rolling an HTTP client, config, and DI wiring for a handful of endpoints, and you value Symfony-native configuration (services, environment config, autowiring) over a framework-agnostic SDK.
  • You have the engineering capacity to read the source and own it — at 5 stars, 0 dependents, and a low composite score, this is effectively an unvetted third-party component. Assume you are the maintainer.

Look elsewhere — or build in-house — when:

  • You are on Laravel or any non-Symfony stack. Direct n8n API calls behind your own interface are the right move. The 2.1.0 release is actually a good specification for that build: HMAC-SHA256 over the request UUID, expiring callback URLs, 401 on bad signature, 409 on replay, pending state in a shared cache keyed to a handler service id.
  • You cannot meet the crypto/state preconditions. No stable app secret, no shared cache pool across servers, or an unwillingness to register handlers as services — callbacks will fail or be forgeable. Don't adopt into that gap; the failure mode is silent.
  • You need guarantees. No dependents and a tiny community means no meaningful signal on production hardening or backwards compatibility. The 2.1.0 changelog confirms the concern rather than allaying it: a security advisory plus a "the core feature never worked in typical deployments" bug in the same release. The maintainer did respond properly (advisory, signing, replay guard, upgrade notes) — that's a genuine positive — but one responsive fix is not a track record. For anything on a revenue path, wrap it behind an internal interface so you can replace it without touching call sites.
  • You need durable delivery semantics. Signed callbacks raise the floor but are not delivery guarantees: a callback whose cache entry has expired, or an n8n run that never posts back, still leaves a request stranded. If a webhook must not be lost, or must be retried/idempotent with your own outbox, that logic belongs in your app, not in this client.
  • You need credential/OAuth management, workflow provisioning as code, or multi-tenant isolation. These are n8n platform concerns, and a 5-star bundle is unlikely to abstract them usefully.
  • You need vendor support, SLAs, or a security review trail. This is a community convenience library; treat a formal procurement/security review as a cost you must fund yourself. The advisory is a helpful artifact, not a substitute for one.

How to Pitch It (Stakeholders)

To executives — one paragraph: n8n is an open-source workflow automation platform that lets us move repetitive cross-system integrations out of our codebase and into editable workflows. This bundle is a small, MIT-licensed connector that lets our Symfony application trigger those workflows and receive signed results back. The strategic value is not the connector — it's the option to stop hand-building every integration. Version 2.1.0 is the first release worth touching: it fixes a callback-forgery vulnerability and a bug that meant callbacks silently never completed on standard PHP-FPM hosting. That's reassuring as a fix and sobering as a signal — the package is low-maturity (5 GitHub stars, no downstream dependents), and its headline feature was broken until now. My recommendation is unchanged and now firmer: a timeboxed spike, not a platform commitment. Use 2.1.0 or later, prove the pattern on one or two real workflows, keep it behind our own internal interface, and make the larger n8n build-vs-buy decision on its own merits once we have evidence.

To engineering — the practical framing:

  • Upgrade rules. Pin >=2.1.0. Do not deploy 2.0.x. Required changes are config and code, not a composer bump: set a stable APP_SECRET or n8n.callback.secret, define the callback route in our routing config (callback.route_path is deprecated and never worked), register handlers as autoconfigured N8nResponseHandlerInterface services, and point tracking.cache_pool at a shared pool (Redis) wherever we run more than one app server.
  • Cut over the n8n workflows in the same change window. Workflows must post results to the callback_url they're handed; a hard-coded URL now returns 401. Ship app and workflows together, and record the payload/callback contract as an ops-facing document — that's also a chance to make good on the earlier goal of ops editing workflows without an engineering deploy.
  • This is a thin convenience layer, not an orchestration framework. It saves you DI wiring and config boilerplate; it gives you signed, replay-guarded callbacks and cache-backed pending tracking, but no retries, no delivery guarantees, no schema validation, and no guarantee a stranded pending request ever gets resolved.
  • It is Symfony-only. Laravel teams should treat 2.1.0 as a reference implementation — HMAC-signed expiring callback URLs, 401/409 semantics, cache-backed handler lookup — and write a ~200-line client against n8n's API instead.
  • Adopt it behind an anti-corruption interface in our own code (WorkflowTrigger / WorkflowCallback). That gives us the ergonomics today and a one-file swap if the bundle stalls or n8n is replaced — and it lets us add outbox/retry semantics ourselves without forking.
  • Our obligations if we take the dependency: pin the version, vendor or fork it, own the callback.secret rotation story, and assign an owner. At zero dependents there is no community safety net — the bus factor is us.
  • Revised spike success criteria: one production-shaped workflow triggered from the app; a signed callback completing across two workers (the exact case that was broken before 2.1.0); explicit demonstration of 401 on an unsigned callback and 409 on replay; documented failure behaviour when a callback never arrives or its cache entry expires; and a documented payload contract ops can change without an engineering deploy.
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.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
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
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core