@Karl was VERY glad to see your post, as I am a new Flarum user on a shared hosting platform, and have been having some issues.
I've been on Bluehost for 15+ years running multiple sites, one with recently installed Flarum. I want to share a few things that cost me way too much time before the lightbulbs went on.
The Problem: Shared Host Mail Is Fundamentally Broken for Flarum
Symfony Mailer on shared hosting is fighting an uphill battle from the start. You're dealing with restricted sendmail configs, limited or no access to mail logs, shared IP addresses with trashed sender reputations, and that beautiful sender identity of "bluehost box 5712" instead of your actual domain. Registrations don't arrive, PM notifications vanish, followed-thread alerts never show up — and your users just think your forum is broken.
The Cron Problem You Don't Know You Have
Flarum's schedule:run expects to be called every minute. I set mine to * * * * * in cPanel — twice — and both times my host silently changed it to */16 without telling me. Many shared hosts enforce a minimum cron interval (15-16 minutes on mine), and they just quietly overwrite your setting. Flarum reports Scheduler status: Inactive, and anything that depends on the scheduler — digest notifications, sitemap regeneration, cleanup tasks, extension scheduled jobs — either runs late or never fires at all. You'd never know unless you went back and checked, because nothing errors out. It just silently doesn't happen.
The Real Killer: Silent Failures
That's the pattern with shared hosting — when things fail, they fail silently. No bounce log for failed emails. No error when your cron gets throttled. No delivery status, no trail. You're left guessing — was it a config issue? Did the host block it? Did the email land in spam? Did it even leave the server? Did your scheduled job run or not? You can't fix what you can't see, and shared hosting gives you almost zero visibility into what's actually happening. Flarum itself could benefit from more granular mail and scheduler logging at the application level, but even then, once it's in the host's hands, it's a black box.
The Email Fix: Stop Fighting It — Route Around It
Instead of patching around shared host quirks (custom sendmail flags, PHP mail configs, ini overrides), skip the host's mail system entirely. Use an external SMTP relay service. I went with SMTP2GO which has free and paid plans. Setup took maybe 15 minutes:
Sign up for the service
Add SPF and DKIM records to your domain's DNS to verify it
Enter the SMTP credentials in Flarum's admin panel under Mail settings
That's it. Emails now come from noreply@yourdomain.com, deliverability is night and day, and here's the bonus — you get a full delivery dashboard with bounce tracking, spam reports, and delivery confirmations. Every single email is traceable. No more silent failures. No more guessing.
Thanks again for a great post @Karl. I think helping out with some of the many share hosting problems, could really help increase Flarum's market share.