Mautic on Elestio: Building Automated Email Campaigns, Lead Scoring, and Multi-Channel Workflows
HubSpot charges $890/month for their Professional tier with 10,000 contacts. Mautic gives you every feature, unlimited contacts, and full data ownership for the cost of a server. If you've been putting off self-hosting your marketing automation, this is the guide that gets you from zero to running campaigns.
What Mautic Actually Does
Mautic is the largest open-source marketing automation platform. Email campaigns, lead scoring, landing pages, contact segmentation, multi-channel workflows, CRM integrations. Everything HubSpot and ActiveCampaign charge per-contact fees for, Mautic does with no license costs and no feature gates.
The current stable release is Mautic 5.x (with Mautic 7 "Columba Edition" available for early adopters). It runs on PHP 8.2+, Symfony, and MySQL 8.4+. The Docker image makes deployment straightforward.
Deploy on Elestio (The Fast Way)
If you want Mautic running in production without managing Docker, cron jobs, and SMTP configuration yourself:
- Head to Mautic on Elestio
- Select your provider (Netcup, Hetzner, DigitalOcean, etc.)
- Choose at least 2 CPU / 4 GB RAM (the NC-MEDIUM-2C-4G at $16/month works well for up to 50K contacts)
- Click Deploy
Elestio handles SSL, backups, updates, and the cron job configuration automatically. You'll have a working instance in under 3 minutes.
For custom domain setup, follow the official Elestio documentation.
Configure SMTP (You Need This First)
Nothing works without email delivery. Mautic 5+ uses Symfony Mailer with DSN-based configuration.
In your Mautic admin, navigate to Settings > Email Settings and configure:
SMTP Host: smtp.yourprovider.com
Port: 587
Encryption: TLS
Authentication: Login
Username: your-smtp-user
Password: your-smtp-password
For production, use a transactional email service like Amazon SES, SendGrid, or Mailgun. They handle deliverability, bounce management, and reputation. If you're using Amazon SES, the DSN format is:
mautic+ses+api://ACCESS_KEY:SECRET_KEY@default?region=us-east-1
Set your delivery mode to Queue instead of "Send immediately." This prevents email sending from blocking web requests and lets you process messages in batches through the worker.
Build Your First Campaign
The campaign builder is where Mautic shines. It's a visual drag-and-drop workflow with three building blocks:
Contact Sources bring people in. You can pull from dynamic segments (e.g., "all contacts tagged 'trial-user'") or form submissions.
Actions are things you do to contacts: send an email, adjust points, add tags, push to a CRM, fire a webhook.
Decisions branch based on contact behavior. Did they open the email? Green path. Didn't open after 3 days? Red path, send a follow-up.
Here's a practical example: a welcome sequence for new signups.
[Form Submission]
→ Send Welcome Email (immediately)
→ Wait 2 days
→ Decision: Opened Welcome Email?
✅ Yes → Send Feature Guide Email
❌ No → Send Reminder Email → Wait 3 days
→ Decision: Opened Reminder?
✅ Yes → Send Feature Guide Email
❌ No → Tag "cold-lead", remove from campaign
Every campaign runs through the mautic:campaigns:trigger cron command. Without cron jobs, campaigns won't execute.
Set Up Lead Scoring
Lead scoring tells you which contacts are actually interested versus who just downloaded one PDF six months ago.
Navigate to Points > Manage Actions and create scoring rules:
| Behavior | Points |
|---|---|
| Opens an email | +5 |
| Clicks a link in email | +10 |
| Visits pricing page | +15 |
| Submits a contact form | +20 |
| Downloads an asset | +10 |
| No activity for 30 days | -15 |
Then set up Point Triggers at Points > Manage Triggers. When a contact crosses a threshold (say, 50 points), automatically:
- Add them to a "Marketing Qualified" segment
- Push them to your CRM (Salesforce, SuiteCRM, HubSpot)
- Notify your sales team via email
- Move them to a new campaign stage
Mautic 5+ introduced Point Groups, which let you score contacts across multiple dimensions (product interest, engagement level, content consumption) instead of a single number. Each group acts as a separate scoring axis you can filter on in segments and campaigns.
The Cron Jobs You Can't Skip
This is the part everyone messes up. Mautic depends on scheduled jobs to process segments, trigger campaigns, and send queued emails. Without them, your instance looks functional but nothing actually happens.
The critical jobs (stagger them to avoid overlapping):
# Update segments every 15 minutes
*/15 * * * * php bin/console mautic:segments:update
# Rebuild campaign membership
5,20,35,50 * * * * php bin/console mautic:campaigns:update
# Execute campaign events
10,25,40,55 * * * * php bin/console mautic:campaigns:trigger
# Process email queue
*/5 * * * * php bin/console messenger:consume email --time-limit=160
# Send scheduled broadcasts
*/15 * * * * php bin/console mautic:broadcasts:send
# Fetch bounced emails
*/15 * * * * php bin/console mautic:email:fetch
On Elestio, these are preconfigured. If you're self-managing, get these running before you build your first campaign.
Connect Your CRM
Mautic integrates natively with Salesforce, HubSpot, and SuiteCRM. For a fully open-source stack, pair it with SuiteCRM on Elestio for bi-directional contact sync, timeline views, and automatic lead handoff when scoring thresholds are hit.
For everything else, Mautic's REST API supports OAuth and Basic Auth:
# Create a new contact via API
curl -X POST https://your-mautic.com/api/contacts/new \
-H "Authorization: Basic BASE64_CREDENTIALS" \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","firstname":"Jane","tags":["webinar-attendee"]}'
You can also fire webhooks on any event (contact created, email opened, form submitted, points changed) to connect Mautic with n8n, Zapier, or custom workflows.
Troubleshooting
Emails not sending? Check that your cron jobs are running (crontab -l) and that messenger:consume is processing the queue. Verify SMTP credentials in Settings > Email Settings and send a test email.
Campaigns not triggering? The mautic:campaigns:trigger cron must be active. Check logs at var/logs/mautic_prod.log for errors.
Contacts not updating segments? Run mautic:segments:update manually and check for PHP memory limits. Large segments may need --batch-limit=100.
Slow performance? Increase PHP memory to 512M+, enable OPcache, and make sure MySQL has appropriate buffer pool sizing. For 50K+ contacts, upgrade to at least 4 CPU / 8 GB RAM.
The Bottom Line
Mautic gives you the same marketing automation capabilities that cost $10,000+/year on HubSpot. The trade-off is setup time and maintenance. If you want full control and zero contact limits, self-host it. If you want that without managing cron jobs and SMTP, deploy on Elestio starting at $16/month.
Your contacts, your campaigns, your data. No vendor lock-in, no per-seat pricing, no surprise invoices when your list grows.
Thanks for reading ❤️ See you in the next one 👋