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

Sendportal Laravel Package

mettle/sendportal

SendPortal is a self-hosted email marketing platform built on Laravel. Manage subscriber lists, compose and send campaigns through your own SMTP or API providers, and track opens and clicks in a clean dashboard. Open source, with no per-subscriber fees.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. SendPortal (mettle/sendportal) is a Laravel package that installs a full, opinionated email-marketing application — subscribers, lists, tags, templates, campaigns, and automations — into a Laravel host. It is a "package that behaves like an app," which is the single most important architectural fact for planning: you get a working product surface quickly, but you inherit its opinions about routing, auth, user/workspace modeling, and front-end assets. The sending layer is provider-abstracted (SMTP, SES, Mailgun, Postmark, SendGrid), which is the part most teams actually want to own, and the domain layer is conventional Eloquent with workspace scoping. For a TPM, the fit question is less "does it run on Laravel" (it does) and more "does its workspace/auth model match ours," because that is the seam that resists customization.

Integration feasibility. Installation is composer require plus the sp:install artisan command, which is a meaningful convenience but also the primary integration risk surface — it writes migrations, seeds, and config into your application. v4.0.0.1 directly addresses a defect in exactly this path (install skipping migrations on a fresh install), which tells you the installer is the least-exercised code in the release and should be validated in a disposable environment before it touches anything shared. The second fix (duplicate logout route breaking route:cache) is more consequential for mature teams than it appears: it means v4.0.0 could not be deployed under a standard production optimization pipeline. Both fixes are good news, but both are evidence that v4.0.0 shipped without a fresh-install test and without a route-cache test in CI.

Technical risk. Three risks dominate. First, coupling to the host application's auth and user model — retrofitting SendPortal's user/workspace concepts onto an existing user table is the classic place these integrations go over budget. Second, front-end asset ownership — the package ships compiled UI assets and a build toolchain; you inherit its Blade/Vue surface and its styling, and deep UI customization can quietly become a fork. Third, version pinning — the package's supported Laravel major constrains your framework upgrade cadence, inverting the usual "we upgrade when we want" dynamic. The v4.0.0.1 patch does not introduce breaking changes, deprecations, or new features; it is a corrective release and does not materially change the risk profile, only the reliability of first contact.

Key questions.

  • Which Laravel and PHP versions does v4.0.0.1 officially support, and what is the package's historical lag behind new Laravel majors?
  • Does the release target the package-as-application path, the embed-into-existing-app path, or both — and is the auth/workspace model replaceable without forking?
  • What is the CI coverage story that allowed a broken fresh install and a broken route cache to reach a tagged release? Is there a published test matrix?
  • Are sending-provider credentials, webhooks, and bounce/complaint handling fully within our control and auditable?
  • What is the maintenance posture of the maintainer (release cadence, issue responsiveness, security disclosure process)?
  • Is there a supported path to consume the domain layer headlessly (API-only) if we do not want the bundled UI?

Integration Approach

Stack fit. Best fit is a Laravel application that already has a queue worker, scheduler, and transactional mail configuration, and that wants campaign/automation capability without building it. Poor fit is a non-Laravel stack, a polyglot environment where email is a platform service, or an app with a strongly customized auth model. Confirm Laravel/PHP alignment before any code is written; this is a go/no-go gate, not a detail.

Migration path. Two viable shapes, and the choice should be made explicitly rather than discovered:

  • Standalone deployment — SendPortal as its own Laravel app on its own database and subdomain, with the main product integrating via its REST API (Sanctum tokens). Lower blast radius, cleaner rollback, but a second app to operate and a data-sync/identity story to design.
  • Embedded deployment — SendPortal inside the existing app sharing the user table. Fewer moving parts at runtime, but the installer mutates your schema and the auth integration becomes bespoke work with fork risk.

For a first adoption, standalone is the lower-variance choice, and it lets you defer the auth-model decision until the product proves useful.

Compatibility. Verify Laravel major, PHP version, database engine, cache/queue drivers, and object storage assumptions against the package's documented matrix. Validate the sp:install command in a throwaway container with the exact target versions — given the v4.0.0.1 fix, do not assume a clean run. Then immediately validate php artisan route:cache, config:cache, and optimize in a production-like build, because that is the other thing this patch fixes.

Sequencing. (1) Version/compatibility spike in a disposable environment, including fresh install and full cache optimization. (2) Auth and workspace modeling decision — standalone vs embedded — with a written record of the trade-off. (3) Provider integration and webhook plumbing in a sandbox sending domain, including bounce and complaint handling. (4) Data model review against existing subscriber/consent data, with a documented consent and unsubscribe semantics mapping. (5) Deployment pipeline work: migrations, cache warmup, queue topology, scheduler. (6) Pilot with an internal list, then a small consenting segment, before any general rollout.

Operational Impact

Maintenance. Ongoing cost is dominated by three recurring activities: tracking the package's Laravel version support and planning upgrades around it; maintaining any UI or auth customizations (each one is a potential fork); and keeping the asset build reproducible. Budget for a named owner, not a shared responsibility — packages that install an application tend to accumulate quiet local modifications.

Support. Upstream is a small-maintainer open-source project. That is acceptable for a non-critical channel like marketing email and unacceptable as the sole path for transactional mail. Establish an internal runbook, pin versions, and vendor or fork the package if the roadmap depends on it. Confirm the security disclosure channel before go-live.

Scaling. The realistic bottlenecks are the queue workers (campaign sends are fan-out heavy), the database under subscriber and event tables, and the sending provider's rate limits — not the Laravel layer. Size workers and provider throughput per campaign volume, and load-test a single large campaign rather than many small ones, since that is the shape that breaks first. Multi-workspace deployments concentrate risk in noisy-neighbor sends.

Failure modes. Watch for: installer partial-completion leaving a half-migrated schema (this release's fix is exactly here — treat re-runs as non-idempotent until proven otherwise); deployment failures from route/config caching (fixed here, but assume regressions); provider credential or webhook misconfiguration causing silent non-delivery with no bounce feedback; duplicate sends if a worker retries without idempotency; unsubscribe/consent handling diverging from your compliance obligations; and upgrade dead-ends if the package lags a Laravel major you need. Each of these should have a named detection signal, not just a mitigation.

Ramp-up. Expect roughly a week of engineering for a standalone install with a provider wired up, plus two to three weeks if auth/workspace integration and consent-data mapping are in scope. TPM-level effort is front-loaded in the compatibility spike and the standalone-vs-embedded decision; both are cheap to do early and expensive to reverse. The v4.0.0.1 patch does not change this estimate — it removes two known blockers (unreliable fresh install, broken route caching) that would otherwise have appeared as unexplained schedule slip during exactly this ramp-up window.

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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager