@extends('layouts.public') @section('title', 'Self-Hosted Email Marketing Platform') @section('pageId', 'home-2') @section('content') @php $navTheme = 'dark'; try { $heroDescription = (string) \App\Models\Setting::get('home_2_hero_description', 'Build, automate, and scale your email marketing without the recurring costs. Self-host on your own server and keep 100% of your profits.'); $heroScrollText = (string) \App\Models\Setting::get('home_2_hero_scroll_text', ''); $heroButtonText = (string) \App\Models\Setting::get('home_2_hero_button_text', 'Start Free Trial'); $heroButtonType = (string) \App\Models\Setting::get('home_2_hero_button_type', 'link'); $heroButtonUrl = (string) \App\Models\Setting::get('home_2_hero_button_url', route('register')); $heroImagePath = (string) \App\Models\Setting::get('home_2_hero_image', ''); } catch (\Throwable $e) { $heroDescription = 'Build, automate, and scale your email marketing without the recurring costs. Self-host on your own server and keep 100% of your profits.'; $heroScrollText = ''; $heroButtonText = 'Start Free Trial'; $heroButtonType = 'link'; $heroButtonUrl = route('register'); $heroImagePath = ''; } $brandingDisk = (string) config('filesystems.branding_disk', 'public'); $heroImageUrl = (is_string($heroImagePath) && trim($heroImagePath) !== '') ? \Illuminate\Support\Facades\Storage::disk($brandingDisk)->url($heroImagePath) : null; $heroButtonUrl = is_string($heroButtonUrl) && trim($heroButtonUrl) !== '' ? $heroButtonUrl : route('register'); $heroButtonType = in_array($heroButtonType, ['link', 'video'], true) ? $heroButtonType : 'link'; try { $logoPaths = \App\Models\Setting::get('home_2_logos', []); } catch (\Throwable $e) { $logoPaths = []; } $logoPaths = is_array($logoPaths) ? $logoPaths : []; $logoUrls = []; foreach ($logoPaths as $p) { if (!is_string($p) || trim($p) === '') { continue; } $logoUrls[] = \Illuminate\Support\Facades\Storage::disk($brandingDisk)->url($p); } try { $faqTitle = (string) \App\Models\Setting::get('home_faq_title', 'FAQs'); $faqSubtitle = (string) \App\Models\Setting::get('home_faq_subtitle', 'Quick answers to common questions.'); $faq1Question = (string) \App\Models\Setting::get('home_faq_1_question', 'What are the server requirements?'); $faq1Answer = (string) \App\Models\Setting::get('home_faq_1_answer', 'PHP 8.2+, MySQL database, and a web server (Apache/Nginx). Redis is recommended for queues. Works on shared hosting, VPS, or dedicated servers.'); $faq2Question = (string) \App\Models\Setting::get('home_faq_2_question', 'Can I run this as a SaaS for my clients?'); $faq2Answer = (string) \App\Models\Setting::get('home_faq_2_answer', 'Absolutely! MailPurse is built for multi-tenancy. Create customer accounts, define plans with limits, accept payments via Stripe/PayPal/Paystack, and let customers manage their own lists and campaigns.'); $faq3Question = (string) \App\Models\Setting::get('home_faq_3_question', 'Which email providers are supported?'); $faq3Answer = (string) \App\Models\Setting::get('home_faq_3_answer', 'Amazon SES, Mailgun, SendGrid, Postmark, SparkPost, and any standard SMTP server. You can configure multiple providers and rotate between them for better deliverability.'); $faq4Question = (string) \App\Models\Setting::get('home_faq_4_question', 'Is there a limit on subscribers or emails?'); $faq4Answer = (string) \App\Models\Setting::get('home_faq_4_answer', 'No limits from our side. You can send as many emails as your server and email provider allow. The only limits are what you define in your customer plans.'); } catch (\Throwable $e) { $faqTitle = 'FAQs'; $faqSubtitle = 'Quick answers to common questions.'; $faq1Question = 'What are the server requirements?'; $faq1Answer = 'PHP 8.2+, MySQL database, and a web server (Apache/Nginx). Redis is recommended for queues. Works on shared hosting, VPS, or dedicated servers.'; $faq2Question = 'Can I run this as a SaaS for my clients?'; $faq2Answer = 'Absolutely! MailPurse is built for multi-tenancy. Create customer accounts, define plans with limits, accept payments via Stripe/PayPal/Paystack, and let customers manage their own lists and campaigns.'; $faq3Question = 'Which email providers are supported?'; $faq3Answer = 'Amazon SES, Mailgun, SendGrid, Postmark, SparkPost, and any standard SMTP server. You can configure multiple providers and rotate between them for better deliverability.'; $faq4Question = 'Is there a limit on subscribers or emails?'; $faq4Answer = 'No limits from our side. You can send as many emails as your server and email provider allow. The only limits are what you define in your customer plans.'; } try { $pricingTitle = (string) \App\Models\Setting::get('home_pricing_title', 'Simple pricing'); $pricingSubtitle = (string) \App\Models\Setting::get('home_pricing_subtitle', 'Buy once. No monthly subscriptions.'); $pricingPopularBadge = (string) \App\Models\Setting::get('home_pricing_popular_badge', 'Most Popular'); $pricingCard1Title = (string) \App\Models\Setting::get('home_pricing_card_1_title', 'Starter'); $pricingCard1Description = (string) \App\Models\Setting::get('home_pricing_card_1_description', 'For your own business or a single brand.'); $pricingCard1CtaText = (string) \App\Models\Setting::get('home_pricing_card_1_cta_text', 'Get Started'); $pricingCard2Title = (string) \App\Models\Setting::get('home_pricing_card_2_title', 'Agency / Reseller'); $pricingCard2Description = (string) \App\Models\Setting::get('home_pricing_card_2_description', 'Built for multi-tenant + white-label setups.'); $pricingCard2CtaText = (string) \App\Models\Setting::get('home_pricing_card_2_cta_text', 'Get MailPurse'); $pricingCard3Title = (string) \App\Models\Setting::get('home_pricing_card_3_title', 'Services'); $pricingCard3Description = (string) \App\Models\Setting::get('home_pricing_card_3_description', 'Want installation, migration, or a custom feature?'); $pricingCard3CtaText = (string) \App\Models\Setting::get('home_pricing_card_3_cta_text', 'View on CodeCanyon'); $ctaBadge = (string) \App\Models\Setting::get('home_cta_badge', 'One-time license. Self-hosted.'); $ctaTitle = (string) \App\Models\Setting::get('home_cta_title', 'Stop paying monthly fees'); $ctaSubtitle = (string) \App\Models\Setting::get('home_cta_subtitle', 'Own your email marketing platform. One-time purchase, lifetime updates, unlimited potential.'); $ctaPrimaryText = (string) \App\Models\Setting::get('home_cta_primary_text', 'Get MailPurse for $29'); $ctaPrimaryUrl = (string) \App\Models\Setting::get('home_cta_primary_url', route('register')); $ctaSecondaryText = (string) \App\Models\Setting::get('home_cta_secondary_text', 'View on CodeCanyon'); $ctaSecondaryUrl = (string) \App\Models\Setting::get('home_cta_secondary_url', 'https://codecanyon.net/item/mailpurse-selfhosted-email-automation-marketing-saas/61213414'); $ctaNote = (string) \App\Models\Setting::get('home_cta_note', ''); } catch (\Throwable $e) { $pricingTitle = 'Simple pricing'; $pricingSubtitle = 'Buy once. No monthly subscriptions.'; $pricingPopularBadge = 'Most Popular'; $pricingCard1Title = 'Starter'; $pricingCard1Description = 'For your own business or a single brand.'; $pricingCard1CtaText = 'Get Started'; $pricingCard2Title = 'Agency / Reseller'; $pricingCard2Description = 'Built for multi-tenant + white-label setups.'; $pricingCard2CtaText = 'Get MailPurse'; $pricingCard3Title = 'Services'; $pricingCard3Description = 'Want installation, migration, or a custom feature?'; $pricingCard3CtaText = 'View on CodeCanyon'; $ctaBadge = 'One-time license. Self-hosted.'; $ctaTitle = 'Stop paying monthly fees'; $ctaSubtitle = 'Own your email marketing platform. One-time purchase, lifetime updates, unlimited potential.'; $ctaPrimaryText = 'Get MailPurse for $29'; $ctaPrimaryUrl = route('register'); $ctaSecondaryText = 'View on CodeCanyon'; $ctaSecondaryUrl = 'https://codecanyon.net/item/mailpurse-selfhosted-email-automation-marketing-saas/61213414'; $ctaNote = ''; } $ctaPrimaryUrl = is_string($ctaPrimaryUrl) && trim($ctaPrimaryUrl) !== '' ? $ctaPrimaryUrl : route('register'); $ctaSecondaryUrl = is_string($ctaSecondaryUrl) && trim($ctaSecondaryUrl) !== '' ? $ctaSecondaryUrl : 'https://codecanyon.net/item/mailpurse-selfhosted-email-automation-marketing-saas/61213414'; @endphp
Now with AI-Powered Features

Send emails that convert

{{ $heroDescription }}

10M+
Emails Sent
99.9%
Uptime
$0
Monthly Fees
@if(is_string($heroScrollText) && trim($heroScrollText) !== '')

{{ $heroScrollText }}

@endif
@if(isset($logoUrls) && count($logoUrls) > 0)
@foreach($logoUrls as $url) @endforeach
@else
Amazon SES Mailgun SendGrid Postmark SparkPost Any SMTP
@endif

Why businesses choose MailPurse

Everything you need to run professional email marketing

Complete White-Label Solution

Rebrand everything - from the dashboard to emails. Your clients will never know you're using MailPurse. Perfect for agencies and resellers.

Lightning Fast

Send millions of emails per hour with optimized queue processing.

AI Writing Assistant

Generate compelling subject lines and email copy with built-in AI.

Built-in Monetization

Accept payments via Stripe, PayPal, or Paystack. Create subscription plans, manage billing cycles, and generate invoices automatically.

A platform you can customize

Explore core areas in seconds. Built to be simple now, powerful later.

Connect multiple delivery providers

Use Amazon SES, Mailgun, SendGrid, Postmark, SparkPost, ZeptoMail, or any SMTP server.

Primary server + failover friendly setup
Delivery testing and diagnostics
Separate transactional vs marketing routing
Tracking + bounce processing ready

MailPurse vs. Monthly SaaS

See how much you save with a one-time purchase

Feature MailPurse Mailchimp ConvertKit
10,000 subscribers $29 once $100/mo $119/mo
Unlimited emails Limited
White-label
Self-hosted
Annual cost (10K subs) $29 $1,200 $1,428

Up and running in 3 steps

1

Deploy

Upload to any PHP 8.2+ server, run the installer, configure your database.

2

Connect

Add Amazon SES, Mailgun, SendGrid, or any SMTP server for delivery.

3

Launch

Create campaigns, import subscribers, or invite customers to your SaaS.

{{ $pricingTitle }}

{{ $pricingSubtitle }}

{{ $pricingCard1Title }}
$29
one-time

{{ $pricingCard1Description }}

  • Unlimited emails (provider limits apply)
  • Campaigns, automations, templates
  • Multiple delivery servers
{{ $pricingCard1CtaText }}
{{ $pricingPopularBadge }}
{{ $pricingCard2Title }}
$29
one-time

{{ $pricingCard2Description }}

  • White-label branding
  • Customers, plans, and limits
  • Billing integrations included
{{ $pricingCard2CtaText }}
One-time purchase. Self-hosted.
Need help?
{{ $pricingCard3Title }}

{{ $pricingCard3Description }}

  • Installation & configuration
  • Custom integrations
  • Priority support options
{{ $pricingCard3CtaText }}

{{ $faqTitle }}

@if(is_string($faqSubtitle) && trim($faqSubtitle) !== '')

{{ $faqSubtitle }}

@endif
{{ $faq1Answer }}
{{ $faq2Answer }}
{{ $faq3Answer }}
{{ $faq4Answer }}
"Switched from Mailchimp and saved over $1,000 in the first year alone. The white-label feature lets me resell to my clients."
Digital Agency Owner
Managing 25+ client accounts
{{ $ctaBadge }}

{{ $ctaTitle }}

{{ $ctaSubtitle }}

@if(is_string($ctaNote) && trim($ctaNote) !== '') {{ $ctaNote }} @else Prefer CodeCanyon? Open listing @endif
@endsection @push('scripts') @endpush