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 Core Laravel Package

mettle/sendportal-core

Core Laravel package powering SendPortal, a self-hosted email marketing platform. It provides models, services, and backend logic for managing subscribers, lists, campaigns, templates, and sending email through multiple providers.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for email marketing infrastructure. SendPortal Core gives you a self-hosted Laravel-native email marketing stack (campaigns, subscribers, segments, templates, webhooks) instead of paying for Mailchimp/ConvertKit/etc. This release's fixes confirm the core is production-hardening rather than feature-expanding — the right moment to evaluate it as a cost-reduction or data-sovereignty play.
  • ESP-agnostic sending strategy. The Fix PostalAdapter (#205), HandleSesWebhook update (#193), Normalize header case for message ID extraction (#213), and the new Postmark SubscriptionChange webhook (#191) collectively signal that the package's value proposition is "bring your own ESP" (SES, Postmark, Postal, SMTP). This supports a roadmap decision to decouple your product from a single email vendor.
  • Deliverability/reporting integrity for internal dashboards. Fix SMTP sends being reported as successful when they fail (#223) and the header-case fix (#213) matter if you expose delivery stats to customers or depend on them for billing/analytics. Prior to this release, failure rates could be silently understated.
  • Scale/performance headroom for in-app notifications or newsletters. Fix: slow campaign query (#204) enables consideration of this package for larger subscriber lists without premature infrastructure investment.
  • Migration/schema maturity. Add IDs to campaign statuses in migration (#217) improves the ability to key off status records programmatically — useful for integrations and reporting.
  • Content-personalization contract stability (important caveat). The revert of #161 (#229) is the single most decision-relevant item: merge tags {{email}}, {{first_name}}, {{last_name}} are once again not replaced by that change. Any roadmap betting on that personalization behavior must be re-validated against this version before committing.

When to Consider This Package

Consider adoption when:

  • You are building a Laravel app and need first-party newsletters, drip campaigns, or transactional-adjacent messaging without a third-party SaaS dependency.
  • Data residency, GDPR, or cost controls make self-hosting attractive, and you want to keep subscriber lists in your own database.
  • You are already or willing to be ESP-agnostic (SES, Postmark, Postal, generic SMTP) and want webhook plumbing (opens, clicks, bounces, subscription changes) handled for you.
  • You want the core domain model (campaigns, subscribers, tags/segments, templates, message-sending pipeline) rather than a full UI — good fit if you'll build your own admin/UX on top.
  • You can accept patch-level dependency tracking — v4.0.1 is a maintenance release; expect to keep pace with bug-fix upgrades.

Look elsewhere when:

  • You need an out-of-the-box hosted marketing platform with advanced automation, A/B testing at scale, or a polished end-user UI (SendPortal's companion app, or a SaaS, is a better fit).
  • Template merge-tag behavior is a hard requirement today — the #161 revert means the {{email}}/{{first_name}}/{{last_name}} substitution contract just changed (back). Validate your content and tests before upgrading from 4.0.0.
  • You require a vendor-supported SLA — this is community-maintained (nine new contributors this release is a positive health signal, but not a support guarantee).
  • You cannot run a self-managed queue/worker and database — this package expects a real Laravel deployment.

How to Pitch It (Stakeholders)

For executives: SendPortal Core is a free, open-source Laravel package that lets us own our email marketing infrastructure — subscriber lists, campaigns, templates, and delivery webhooks — on our own servers, using whichever email provider we choose. Version 4.0.1 is a stabilization release: it fixes a false-success reporting bug for SMTP sends (accuracy of our delivery metrics), fixes a performance issue in campaign queries (scale), repairs multiple ESP adapters (Postal, SES, Postmark), and adds Postmark subscription-change webhook support (broader vendor flexibility). One behavior change — a revert of name/email merge-tag substitution — needs validation before we rely on it. Net: lower vendor cost, better data control, and improving reliability, with a community contribution trend that suggests active maintenance.

For engineering: This is a patch release on the 4.0.x line — mostly bug fixes plus one additive feature (Postmark SubscriptionChange webhook). Highlights worth flagging in upgrade notes: (1) revert of #161 means {{email}}, {{first_name}}, {{last_name}} are no longer substituted by that change — audit templates and any tests asserting personalization before bumping from 4.0.0; (2) SMTP failure reporting (#223) and header-case normalization (#213) change delivery-status semantics, so any dashboards/alerts may shift; (3) campaign query performance fix (#204) and 404-instead-of-500 for stale subscription links (#225) are straightforward wins; (4) migration adds explicit IDs to campaign statuses (#217) — run migrations and check any status lookups. Nine first-time contributors landed in this release; CI now runs on fork PRs (#230). Recommended upgrade path: pin, run test suite, spot-check ESP adapters in staging, then roll.

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.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package