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

Lander Tracking House Bundle Laravel Package

exs/lander-tracking-house-bundle

Symfony bundle that detects tracking parameters in incoming requests, stores them in cookies, and appends them to any URL through Twig filters such as appendTracking and getTracking. Includes built-in extractors for cmp, cup, cu, exid, and visit parameters, with configurable default values.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is not a Laravel package. It is a Symfony bundle — AppKernel::registerBundles, YAML under exs_lander_tracking_house, DI service tags (exs_tracking.parameter_extracter, exs_tracking.parameter_formatter), and a Twig extension. As presented to a Laravel team it has no architectural fit: no service provider, no config publish, no Blade integration, no middleware. The pattern, however, is framework-agnostic and sound: request-scoped extraction → cookie persistence → formatter services → template-time URL decoration. That four-stage pipeline maps cleanly onto a Laravel middleware + cookie jar + service class + Blade directive, which is the realistic way a TPM should frame this. The bundle assumes server-rendered HTML and a cookie-bearing browser request; it is not designed for SPA/JSON-API funnels where URL decoration happens client-side.

Integration feasibility. As a Composer install into a Laravel app: infeasible. As a port: small. The functional surface is a few hundred lines — roughly ten extractors (cmp, cup, cu, cuvp, cuv, exid, product_id, uvp, uv, visit), six formatters, a placeholder replacer, and a Twig filter/function. A single engineer can reproduce it in days. The important unknown is composer.json version constraints (not provided); the AppKernel/Travis signals suggest a Symfony 2/3-era codebase, so even in a Symfony shop I would verify PHP and Symfony version pins before assuming it installs.

Technical risk. Material, in four buckets:

  • Maintenance risk — zero stars, zero dependents, Travis CI (long deprecated), README-level maturity, and documentation that is already internally inconsistent (appendParameter vs appendTracking; tag key misspelled priotiry). That is evidence of low ongoing stewardship, not a nitpick.
  • Compliance risk — the README describes writing cookies with no mention of consent, cookie lifetime, Secure/HttpOnly/SameSite, or PII handling. For an EU/UK audience this is a GDPR/ePrivacy problem, not a detail.
  • Trust-boundary risk — inbound query and cookie values become outbound query strings with no signing, allowlisting, or validation. Attribution is trivially spoofable by any visitor (set cmp= yourself, it persists), and reflected values flow into href attributes. Injection is mitigated only if the template layer escapes correctly.
  • Silent-failure risk — the failure mode is "attribution quietly disappears," which is the hardest class of bug to notice in a marketing funnel.

Key questions.

  1. Is the target application Symfony or Laravel — is this an adoption or a reimplementation?
  2. What is the authoritative definition of cmp / exid / visit / product_id, and who in marketing/affiliate ops owns it?
  3. Do partner or affiliate contracts require these parameters (auditable obligation), or is this best-effort attribution?
  4. Is consent required for the jurisdictions we serve, and does anyone own that decision?
  5. Does an existing analytics/CDP already solve cross-domain attribution, making this redundant?
  6. Are we willing to fork and own the code, or is "no production dependency" the default?
  7. What cookie lifetimes, scopes, and cross-domain boundary are required?

Integration Approach

Stack fit. In a Symfony codebase: native fit, low friction. In Laravel: do not attempt direct integration; treat the repository as a specification. The Laravel-shaped equivalent is (a) a TrackParameters middleware that reads query + cookies and queues a signed cookie on the response, (b) a TrackingFormatter service with named formatters mirroring cu, cuv, cup, cuvp, uv, uvp, (c) a config file for defaults and formatter bindings, (d) a Blade directive or Url::withTracking() helper, (e) placeholder replacement for {cmp}/{exid}/{visit}.

Migration path.

  1. Inventory every inbound parameter name and compound format actually in use today (the README's ~-delimited compound strings are the contract to preserve).
  2. Extract the semantics into an internal one-page spec — the README's typos mean it cannot be the source of truth.
  3. Implement extraction as middleware; persist to a signed, scoped cookie.
  4. Implement formatters as a single tagged/bound service, one method per named formatter.
  5. Implement the template helper plus placeholder replacement.
  6. Test against recorded request fixtures covering each compound format and the "no params present" path.
  7. Roll out behind a feature flag, compare generated URLs against a manual baseline per funnel.

Compatibility. Two incompatibility layers: framework (Symfony bundle mechanics have no Laravel analogue — service tags become container bindings, YAML becomes config/*.php, Twig becomes Blade) and syntax (the {cmp} placeholder token is harmless in Blade, but any attempt to reuse Twig {{ }} output syntax will collide with Blade; keep the token scheme distinct). Placeholder-in-URL construction also interacts with route helpers — verify behavior with existing query strings, fragments, and already-encoded URLs.

Sequencing. The first decision is buy-vs-build, not which package to install. If build: parameter contract → port → consent and cookie hardening → security review → single-funnel pilot → general rollout. Do not sequence the security review after rollout; cookie behavior is expensive to change once live.

Operational Impact

Maintenance. Assume zero upstream maintenance. Either vendor the code into the app or rewrite it; in both cases your team owns it permanently. Budget periodic review for PHP deprecations, browser cookie default changes (SameSite in particular), and privacy-regulation shifts. The README has no upgrade guide and no changelog, so internal documentation is mandatory.

Support. No vendor, no SLA, no community. Name an owning team and an on-call path for "attribution broke" tickets — because marketing will notice before engineering does. Publishing a parameter contract as an internal doc is the difference between a supportable system and folklore.

Scaling. Compute cost is negligible — a handful of cookie reads and string operations per request. The real scaling concerns are (a) cookie bloat, since these cookies ride every request and browsers cap total cookie size, (b) cache fragmentation or leakage: decorating URLs per-visitor inside cached HTML either destroys CDN hit rate or, worse, serves one visitor's tracking params to another — decoration must happen in uncached fragments or be made deterministic per campaign, and (c) cross-domain cookie scope at the landing-page → app boundary.

Failure modes to instrument and alert on.

  • Missing/blocked cookie → parameters silently dropped, zero attribution with no error.
  • Default leakage — default_cmp: ~ and default_exid: 'exid' mean placeholder or literal garbage can be appended to every URL (e.g. exid=exid), producing meaningless analytics.
  • Malformed compound strings (cup/cuv) → partial or swapped field extraction with no validation.
  • Double decoration — a filter applied to a URL that already carries cmp yields duplicate or conflicting keys.
  • Re-entry loops — a decorated URL that re-enters the extraction path can self-reinforce.
  • Spoofing — visitor-supplied attribution accepted verbatim and persisted.

Ramp-up. Engineering ramp-up is short (half a day to understand, one to two days to port). Domain ramp-up is the longer pole: a PM/analytics partner needs a day or two to define the parameter contract, success metrics, and reporting expectations. Add a legal/privacy review cycle if cookies are set without consent — that is calendar time, not engineering time, and it is the item most likely to slip a launch date. Because the README is inconsistent and unversioned, plan specifically for authoring onboarding docs in-house as a deliverable rather than a follow-up.

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.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
adachsoft/php-code-style