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

Contact Plugin Laravel Package

visiosoft/contact-plugin

A Laravel/PHP contact plugin from VisioSoft for adding contact functionality to your application. It offers a lightweight starting point for integrating contact forms and related features into Laravel or VisioSoft-based projects; refer to the package documentation for setup and usage details.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What this actually is. visiosoft/contact-plugin is not a general-purpose Laravel contact-form package. It is a Streams Platform addon — the addon architecture used by PyroCMS and OpenClassify. It ships as a Composer package of type stream-addon/pyrocms-extension, registers service providers, migrations, and stream/field definitions, and surfaces a contact form + submission capture inside the CMS admin. Any evaluation must start from that fact: its blast radius is the CMS, not a standard Laravel app.

Architecture fit.

  • Fits only if the target application is already a Streams Platform / PyroCMS / OpenClassify instance. In that case it is a natural, low-ceremony extension: it plugs into the existing addon lifecycle, admin navigation, permissions, and stream storage conventions.
  • Does not fit a vanilla Laravel, Symfony, or headless app. There is no standalone Mailable, route, controller, or Blade view intended for direct consumption; extracting one would mean rewriting the package rather than integrating it.
  • The coupling is to Streams, not to Laravel — meaning your Laravel version is a proxy for compatibility, and the real compatibility question is the Streams Platform major version.

Integration feasibility. Moderate-to-low, and entirely conditional. The mechanical steps (require via Composer, register the addon, run migrations, seed stream configuration, assign role permissions, wire the frontend form) are well-trodden for anyone who has shipped a Pyro addon. The friction is in the unknowns: whether the 2022-era code runs cleanly against a current Streams/Laravel/PHP matrix, whether migrations are idempotent, and whether the form rendering assumes specific theme or block conventions from the OpenClassify distribution.

Technical risk (ranked).

  1. Staleness / abandonment. Last release May 2022, 0 stars, 0 dependents. There is effectively no upstream maintenance, no issue triage, and no security response path. Treat this as code you are adopting, not a dependency you are consuming.
  2. Silent breakage on framework upgrades. Streams addons are sensitive to Streams major versions and to Laravel's mail/view/migration internals. Without a maintainer, every platform upgrade is an unowned risk.
  3. Spam and abuse surface. A "simple contact form" of this vintage very likely lacks CAPTCHA/Turnstile, honeypot, or rate limiting. This must be added at the edge or via middleware, not assumed.
  4. PII handling. Submissions are stored as stream entries. Retention, deletion-on-request, and export are not features you get for free — plan for them explicitly for GDPR/CCPA.
  5. Mail deliverability. If notifications are sent synchronously via Mail::send, submission latency and failure handling are coupled to your SMTP/ESP. Queueing and failure logging are almost certainly additive work.
  6. Zero community = zero signal. No dependents means no downstream testing, no informal compatibility reports, and no one else to split maintenance with.

Key questions to resolve before committing.

  • Which Streams Platform major version does the 2022 release target, and what is our current platform version? Is there a version constraint in composer.json, or is it unpinned?
  • Does the addon include tests, and do they run in our CI?
  • Where are submissions stored, and does the schema include timestamps/soft-deletes suitable for retention policy?
  • Does it send mail directly or dispatch a job? Is the recipient configurable per-site or hardcoded?
  • Is there any spam mitigation, and what is the frontend rendering contract (block, field type, or hardcoded view)?
  • Do we already run OpenClassify/PyroCMS anywhere, or is this an attempt to bolt CMS functionality onto a plain Laravel app?

Integration Approach

Stack fit. Green light only for a PyroCMS/Streams/OpenClassify estate. For a mainstream Laravel application, the honest answer is: do not integrate — the cost of adapting a CMS addon exceeds the cost of writing a contact form from scratch (a Mailable, a form request with validation, a ContactSubmission model, a queued notification, and a Blade/Livewire view is roughly a one-to-two-day task, with full ownership and no legacy coupling).

Migration path (if the stack fits).

  1. Pin and vendor. Fork the repository into our own namespace and pin to a specific commit. Do not rely on a floating dev-main; there will be no upstream fixes to pull.
  2. Install into a disposable environment first. Composer require, register the addon, run migrations against a scratch database, and diff the resulting schema. Confirm nothing collides with existing stream namespaces or slugs.
  3. Harden the edges before exposing it. Put Cloudflare Turnstile (or equivalent) in front of the form, add route-level rate limiting, and add a server-side honeypot/time-to-submit check. Assume the package provides none of this.
  4. Decouple mail. Route notifications through a queued job and an established ESP (Postmark/SES) rather than PHP mail(). Add a failure log and an alert on sustained send failures.
  5. Own the retention story. Add a scheduled job for PII purge, and document the data flow for privacy review.

Compatibility. Validate against our exact PHP/Laravel/Streams triple rather than the package's advertised constraints — the 2022 dates suggest PHP 7.4–8.0 and Laravel 8/9-era APIs. Run the app's full test suite after install, not just the addon's (if any). Pay attention to any use of deprecated helpers (str_*, array_*), the Mail facade signature, and the migrations' use of Streams schema builders, which are the most common break points on upgrade.

Sequencing. Spike in a branch → schema and behaviour review → hardening (spam, queue, retention) → staging with real mail delivery → production behind a feature flag, with the form disabled until anti-spam is verified. If the spike shows more than a couple of days of adaptation work, stop and switch to the build-it-in-house option — the break-even is low and the maintenance profile is far better.

Operational Impact

Maintenance. Assume full ownership from day one. Budget for: re-validating the addon on every Streams/Laravel major upgrade, patching PHP deprecations, and auditing for vulnerabilities without an upstream CVE feed. This is a small, self-contained codebase, so the ongoing cost is modest — but it is nonzero and permanent, and it will not be absorbed by anyone else.

Support. No vendor, no SLA, no meaningful community. Internal documentation is the only support artifact; write a short runbook covering where submissions land, how notifications are configured, and how to purge data. Escalation path is "whoever owns the fork."

Scaling. Submission volume is inherently low for a contact form; throughput is not a concern. The scaling risks are elsewhere: unbounded table growth if submissions are never pruned, attachment handling (if present) landing on local disk rather than object storage, and notification fan-out blocking request threads if mail is synchronous. All three are addressable with retention jobs, a storage driver, and queueing.

Failure modes to instrument.

  • Silent mail failure — the most dangerous, because everything looks healthy. Alert on zero sends in a window.
  • Migration drift — stream configuration registered imperatively can diverge between environments; treat seeding as a deploy step, not a one-off.
  • Spam flood — no built-in mitigation means a bad week if the edge protection lapses.
  • Upgrade breakage — a Laravel or Streams bump removes a helper the addon depends on; caught only if CI exercises the form path.
  • Orphaned PII — submissions retained indefinitely in a table nobody watches.

Ramp-up. For an engineer already fluent in PyroCMS/Streams, roughly half a day to a day to install, inspect, and harden; near-zero conceptual overhead. For a team with only mainstream Laravel experience, ramp-up is dominated by learning the Streams addon model — a multi-day detour for a feature that does not require it. That asymmetry, combined with a stale 2022 codebase and no downstream users, is the decisive input: adopt only inside an existing Streams estate, otherwise rebuild.

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.
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment