mettle /sendportal-core

Core functionality for SendPortal

★ 299⑂ 148👁 11⑃ 200● 43▤ 23◈ 0
PHPMITCreated 2020-06-04sendportal.io
299
stars
148
forks
11
watchers
200
prs
43
issues
23
releases
0
discussions

README

Modern open-source self-hosted email marketing.

- Website
- Documentation (V4)

 Introduction

The core functionality of SendPortal is contained within the SendPortal Core package. If you would like to add SendPortal to an existing application, you only require this package.

 Features
SendPortal includes subscriber and list management, email campaigns, message tracking, reports and multiple workspaces/domains in a modern, flexible and scalable application.

SendPortal integrates with Amazon SES, Postmark, Sendgrid, Mailgun and Mailjet.

The SendPortal application acts as a wrapper around SendPortal Core. This will allow you to run your own copy of SendPortal as a stand-alone application, including user authentication and multiple workspaces.

 Installation

SendPortal can be installed as a stand-alone application (i.e. including everything you need to run SendPortal), or as a package inside an existing Laravel application.

The V4 guides below are hosted in the documentation repository while sendportal.io is being updated.

If you would like to install SendPortal as a stand-alone application, please follow the installation guide.

If you would like to add SendPortal to an existing application, please follow the package installation guide.

If you are upgrading from SendPortal V3, please follow the upgrade guide.

 Requirements
SendPortal V4 requires:

- PHP 8.3+
- Laravel 12+
- MySQL (≥ 5.7) or PostgreSQL (≥ 10)

If you are on PHP 8.2 or Laravel 10/11, please use SendPortal V3

If you are on an earlier version of PHP (7.3+) or Laravel (8+), please use SendPortal V2

Top issues

Latest release

v4.0.1 v4.0.1 2026-10-12
What's Changed
 Update CHANGELOG for version 4.0.0 release by @JonoB in https://github.com/mettle/sendportal-core/pull/228
 Return 404 rather than 500 for subscription links that no longer resolve by @emtiazzahid in https://github.com/mettle/sendportal-core/pull/225
 Avoid passing null to str_replace() when merging campaign content by @emtiazzahid in https://github.com/mettle/sendportal-core/pull/224
 Fix PostalAdapter by @L4ky in https://github.com/mettle/sendportal-core/pull/205
 Timezone for displayDate Helper defaults to config timezone by @neurotools in https://github.com/mettle/send

Snapshot: 2026-11-11T15:31:17Z · Data license Apache-2.0 · JSON