How to Install Sendy: Complete 2026 Setup Guide for Amazon SES

Isometric illustration of a tall teal server pillar with a glowing terminal cursor beside faded gray PHP and MySQL config icons with a single purple settings gear accent and the headline Sendy Install

Sendy is a $69 one-time-license PHP application that turns Amazon SES into a workable newsletter platform: drag-and-drop editor, list management, autoresponders, bounce handling, and per-campaign reports (Sendy, 2026). A clean install on a fresh LAMP server takes about 30 to 60 minutes if your DNS, AWS SES production access, and hosting are already in order. The harder question - which this guide also addresses - is whether the install ROI still works in 2026 given how cheap hosted alternatives have become.

This guide covers the full installation workflow, the prerequisites that quietly break most first attempts, and the operational reality of running Sendy long-term.

What You Need Before Installing Sendy

Sendy is a standard PHP application that talks to Amazon SES via the AWS SDK. Before you touch the installer, you need five things lined up: a LAMP-stack server, an Amazon SES account out of sandbox mode, a verified sending domain with full email authentication, an SSL certificate on the install domain, and the Sendy license file ($69 one-time, downloaded after purchase). Missing any one of these will cause the installer to fail in a way that's hard to debug from the browser.

The official Sendy system requirements are PHP 7.4 or newer with several extensions enabled (cURL, OpenSSL, zlib, MySQLi or PDO), MySQL 5.7 or MariaDB 10.x or newer, and a web server with mod_rewrite enabled for clean URLs (Sendy, 2026). Sendy is intentionally lightweight - it runs comfortably on a $5-per-month VPS for moderate volumes - but the LAMP stack itself has to be solid. Skipping PHP extension installation is the single most common cause of "blank page on install" reports.

The Amazon SES side has its own checklist. Your AWS account needs to be in production mode, not the default sandbox. Sandbox accounts can only send to verified addresses, which makes any kind of real newsletter test impossible. Production access is a manual approval that AWS typically grants within 24 hours of submitting the request via the SES console. You also need an IAM user with AmazonSESFullAccess (or a narrower custom policy), the access key and secret stored ready to paste into Sendy's settings, and a verified sending domain with SPF, DKIM (DomainKeys Identified Mail), and DMARC records published.

Requirement Why it matters Common failure
PHP 7.4+ with extensionsSendy uses cURL for AWS API calls and OpenSSL for SES authenticationBlank installer page when extensions are missing
MySQL 5.7+ / MariaDB 10.x+Sendy stores all data here; older versions have charset issuesSubscriber import fails on non-ASCII names
mod_rewrite enabledClean URLs for campaigns and unsubscribe links404 on every campaign link except the homepage
SES production accessSandbox only allows verified recipients - no real newsletter possible"Email address not verified" on every send attempt
SPF, DKIM, DMARC on sending domainWithout these, Gmail and Yahoo reject bulk mail outright as of Feb 202420-50% bounce rate on first campaign
SSL certificate on install domainSendy requires HTTPS for the admin interface in productionBrowser security warnings, broken admin login
Source: Sendy installation documentation and Amazon SES production-access requirements.

Step-by-Step Sendy Installation

Sendy installation is a five-stage process: upload the application files, create a database, run the web installer, connect Amazon SES, and configure the cron job that drives campaign sending. The total active time is about 20 minutes if all prerequisites are in place; the actual wall-clock can stretch to an hour if DNS records need to propagate.

The first three stages are standard PHP-app installation. Upload the Sendy ZIP contents to your web root (/var/www/sendy/ is a typical path), set permissions so the web server user can write to uploads/ and includes/config.php (typically chown -R www-data:www-data then chmod 755 on directories and 644 on files), create a MySQL database and user with full privileges on that database, and visit the install URL in your browser. The web installer asks for the license key, database connection details, and the AWS credentials. It then writes the config file and creates the schema in one pass.

The Amazon SES connection happens in two places. In Sendy's brand settings, you paste the AWS access key, secret key, and the SES region your sending identities are verified in. Sendy validates the credentials by making an SES GetSendQuota API call, which will fail loudly if the keys are wrong or the region doesn't match where you verified your domain. In your AWS SES console, you set up SNS bounce and complaint feedback to a Sendy webhook URL so bounces are automatically removed from your subscriber list. This second step is easy to forget on the first install, and skipping it means your bounce rate climbs steadily until AWS notices.

The final stage is the cron job. Sendy sends campaigns in chunks via a PHP script that has to be triggered every minute. The standard cron entry is * * * * * php /path/to/sendy/scheduled.php > /dev/null 2>&1. Without this, campaigns will queue but never actually send. The cron is also how autoresponders, segmentation triggers, and bounce processing run, so a broken cron breaks everything that isn't a manual campaign.

When Sendy Installation Goes Wrong

Three failure patterns account for most install issues: license errors, blank installer pages, and "no permissions" errors after a successful install. Each has a clean diagnosis.

License errors typically mean one of two things. Either the license has been used on a different domain (Sendy licenses are per-domain - moving a Sendy install to a new domain requires regenerating the license at sendy.co), or the installer can't reach Sendy's license-validation server because the host firewall is blocking outbound HTTPS. The fix for the first is regenerating; the fix for the second is checking that curl https://sendy.co works from the server command line before retrying the installer.

Blank installer pages almost always indicate missing PHP extensions or a PHP error that's being swallowed by your display_errors setting. The fastest diagnosis is to enable error display temporarily: php -d display_errors=1 -d error_reporting=E_ALL /var/www/sendy/install.php from the command line will print the actual error. The most common culprits are missing cURL, OpenSSL, zlib, or MySQLi PHP extensions, all of which Sendy uses but which aren't installed by default on minimal LAMP setups.

"No permissions" errors after successful install are usually one of three things: the cron user can't read the Sendy install directory (check the file ownership and the cron user's effective permissions), the AWS credentials don't have ses:SendEmail and ses:SendRawEmail permissions (check the IAM policy attached to the access key), or the SES sending identity has been deactivated by AWS due to bounce or complaint rate issues (check the SES reputation metrics console). The third is the most painful because it means you have a deliverability problem on top of a configuration problem.

Connecting Sendy to Amazon SES Authentication

Sendy's value proposition depends entirely on Amazon SES delivering well, which depends entirely on email authentication being correctly configured at your DNS provider. The three records you need - SPF, DKIM, and DMARC - are non-negotiable as of February 2024, when Gmail and Yahoo started rejecting unauthenticated bulk mail at scale. AWS SES will tell you whether DKIM is valid from the SES console; it cannot tell you anything about SPF or DMARC, which you have to verify yourself with a DNS lookup tool.

The minimum viable configuration looks like this:

  • SPF: a TXT record on your sending domain that includes include:amazonses.com and ends with ~all (soft fail) or -all (hard fail).
  • DKIM: three CNAME records that AWS SES generates for you when you verify a domain. SES rotates the underlying keys automatically.
  • DMARC: a TXT record at _dmarc.yourdomain.com with at minimum v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com. Start with p=none and only move to quarantine or reject after analyzing reports for at least 30 days.

Get this right before your first send. Bouncing 30% of an unwarmed list at AWS SES will put you under SES reputation review at 5% hard bounce rate (AWS, 2026) and may pause your sending entirely. See our deeper writeup on SES bounce handling for the production-ready setup.

Is Sendy Still Worth Installing in 2026?

For a developer running 10,000-plus emails per month, Sendy's economics are still excellent: $69 one-time, $5-20/month hosting, $0.10 per thousand emails to AWS SES. At 50,000 emails per month, the all-in monthly cost is roughly $10 to $25 - a fraction of Mailchimp's $130-plus at the same volume. The trade is operational ownership: server uptime, PHP version upgrades, security patches, MySQL backups, deliverability monitoring, and bounce-list hygiene all become your problem.

The honest pattern across the Sendy community: most installs run cleanly for the first few months, then hit one of three friction points. PHP 8 migration breaks plugins or custom code. AWS SES reputation issues require investigation that Sendy's analytics don't expose. Or the operator's time on Sendy maintenance hits the point where a hosted Amazon SES management layer (such as Mailblast) becomes net cheaper despite the subscription. Roughly half of the Sendy operators we talk to are looking to migrate within 12 months for exactly these reasons.

If you want to install Sendy anyway - and there are real cases where this is the right call, such as agencies running many client accounts or developers with strong Linux ops chops - the install guide above is the production-ready path. If you'd rather skip the install entirely and let someone else operate the management layer while you keep the SES economics, Mailblast vs Sendy walks through the head-to-head numbers.

FAQ

How much does Sendy cost to install?

Sendy is a $69 one-time software license (Sendy, 2026). There are no recurring fees for the application itself. You pay separately for: web hosting (typically $5-20/month for a basic VPS), and Amazon SES sending costs at $0.10 per 1,000 emails (AWS, 2026). For a 50,000-email-per-month newsletter, the all-in monthly cost runs around $10-30 depending on hosting choice.

What do I need before I can install Sendy?

Sendy requires a LAMP-style stack: a web server (Apache or Nginx with mod_rewrite), PHP 7.4 or higher with required extensions, MySQL or MariaDB, and an Amazon SES account in production-access mode (not the default sandbox). You also need a verified sending domain with SPF, DKIM, and DMARC records configured at your DNS provider, and an SSL certificate on the install domain.

How long does Sendy installation take?

A clean Sendy install on a fresh LAMP server runs about 30 to 60 minutes if everything is configured correctly: upload files, create database, run the web installer, point at Amazon SES, configure cron, verify a test send. The longer end of that range covers DNS propagation for new domain verification (SPF, DKIM) and waiting for AWS SES production access, which can take 24 hours on its own.

Why does my Sendy install say "license invalid" or "no permissions"?

Three causes account for most failed Sendy installs. First: the license is per-domain - moving Sendy to a new domain requires regenerating the license at sendy.co. Second: file permissions on uploads/ and includes/ must be writable by the web server user (typically 755 on directories, 644 on files, with the right ownership). Third: missing PHP extensions such as cURL, OpenSSL, or zlib will silently break the installer; verify with phpinfo() before retrying.

Is Sendy still worth installing in 2026?

For a developer comfortable maintaining a Linux server, sending 10,000+ emails per month to a stable list, Sendy's economics are still excellent: the all-in cost is a fraction of Mailchimp or Brevo at scale. The trade is operational. You own deliverability, server uptime, security patches, PHP version upgrades, and database backups. Many Sendy users move to a hosted Amazon SES management layer (like Mailblast) within 6 to 12 months once they discover the time cost of self-hosted operations. See our Sendy vs Mailblast comparison for the head-to-head numbers.


Disclosure: Mailblast is a hosted management layer for your own Amazon SES account, sold as a paid alternative to running Sendy yourself. The Sendy install workflow and AWS SES requirements described above belong to Sendy and AWS; Mailblast handles the operational layer (campaign sending, bounce and complaint processing, suppression, analytics) on top of your existing SES account. Specific UI details may differ across Sendy versions; the official documentation at sendy.co is authoritative for version-specific steps.

Ready to Start Your Email Marketing Journey?

Join thousands of businesses using Mailblast to grow their audience.

← Back to Blog