Senddera is a Laravel 11+ email marketing platform that ships with full unencrypted PHP source — and a typed Hook system that lets your plugins add sending drivers, automated behaviors, AI agents, or even REST APIs. Without ever touching core.
Full unencrypted PHP source ships with every license. Modify any class, override any service, fork into your own namespace — your code, your rules. Built on Laravel 11+ so the framework you already know is the heavy lifting.
Drop a Composer-shaped folder under storage/app/plugins/{vendor}/{name} and the app autoloads it. ServiceProvider injects routes, views, migrations, hooks — activate, deactivate, delete cleanly.
CRUD endpoints for campaigns, lists, subscribers, templates, webhooks. Path-based versioning. Every plugin can expose its own API endpoints to the same API client users use — no second-class endpoints.
Your server, your DB, your subscriber data. No vendor lock-in. Pay once for the license; pay only the underlying SMTP cost (e.g. Amazon SES at $0.10/1k). Deploy anywhere PHP runs — bare metal, Kubernetes, Forge, Laravel Vapor. Scale however your stack scales.
Extend how Senddera connects to the world. A driver-based architecture means you can add any third-party service without changing core files.
Postmark, Mailgun, SES, or your own proprietary MTA tunnel.
Stripe, Paddle, LemonSqueezy, or custom bank transfer verification.
Bi-directional sync with Salesforce, HubSpot, or internal ERPs.
Inject your views directly into the admin dashboard. From simple buttons to entire reporting suites, the dashboard is your canvas.
Tell the app how to build a service. Perfect for adding new sending drivers or billing providers.
Intercept and modify data before it's saved. Filter spam words, auto-format phone numbers, or append tracking parameters.
React to state changes. Send a Slack notification when a campaign finishes, or sync a new subscriber to your CRM.
Add custom validation logic. Prevent sending if a user has unpaid invoices or if a campaign doesn't meet specific criteria.
$ app -> on('campaign.sending', function($campaign) {
// Take logic action
if ($campaign->total > 100000) {
Log::high_volume($campaign);
}
});
$ app -> mutate('email.body', function($body) {
return str_replace('!!', '!', $body);
});
storage/app/plugins/acelle/hello-world
Standard Laravel ServiceProvider logic apply.
Inject your routes, views, and logic via $this->app->on().
One click in the Admin Panel to boot your code.
{
"name": "acelle/hello-world",
"description": "Just a test",
"version": "1.0.0",
"provider": "Acelle\\HelloWorld\\ServiceProvider"
}
Early boot. Bind any services into the container.
The app is ready. Listen for events or define filters.
Run logic during request or CLI execution.
Request finishes. Clean up or log metrics.
Every action you can take in the dashboard is exposed via our REST API. No "internal only" endpoints. No missing features. Pure, programmatic power.
$ curl -X POST https://api.senddera.com/v1/campaigns \
-H "Authorization: Bearer sk_live_..." \
-d '{
"subject": "Welcome home",
"recipients": "segment_active",
"delivery": "instant"
}'
Deep dive into the kernel, dependency injection, and our custom service container.
Documentation →Submit your plugins to our global marketplace and monetize your developer skills.
Browse Plugins →Join 2,000+ engineers building high-scale email infrastructure on Senddera.
Join Discord →