We just released Octeth v5.7.3, and this one's all about operational reliability. If you've ever had a campaign mysteriously stop sending, or dealt with journey emails failing silently, this release is for you.
The Stuck Campaign Problem
Here's a scenario that's happened to all of us: you launch a campaign, it starts sending, and then... it just stops. The campaign status still says "Sending", but nothing's happening. You dig into the logs, check the workers, and realize something got stuck somewhere.
This is exactly the kind of problem that costs you time, damages deliverability, and frustrates your customers. So we built an automated system to detect and fix it.
Automated Stuck Campaign Detection
The new Stuck Campaign Detector runs every 5 minutes and automatically identifies campaigns that have stopped progressing. It checks for three specific conditions:
- No workers are processing pending batches
- All workers are silent (haven't checked in for over 60 seconds)
- Worker assignments are lost (batches show as "Working" but have no ProcessID)
When a stuck campaign is detected, you get a webhook notification immediately. The notification includes full campaign details, the reason it's stuck, and comes with HMAC-SHA256 signature support for security.
To prevent alert fatigue, there's a 30-minute cooldown between notifications for the same campaign. ### Managing Stuck Campaigns
The Admin UI now has a "Stuck Campaigns" filter that shows all campaigns that have stopped progressing. From there, you can:
- Unstuck: Reset stuck batches to Pending status and let them resume
- Mark as Failed: Cancel the campaign entirely if recovery isn't possible
Everything is logged in a new oempro_stuck_campaigns_log table, so you have a complete audit trail of what happened and how it was resolved.
Journey Email Reliability Fix
We fixed a critical bug that was causing journey emails to fail with "Reply-To email address is invalid" errors. The root cause was simple but annoying: trailing whitespace in email addresses.
If your journey action had "[email protected] " (note the space at the end), it would pass through fine until it hit email validation, then fail. Now we trim all email fields (From, Reply-To, CC, BCC) and validate them before sending. If a personalized Reply-To field returns an invalid email, we skip it entirely rather than failing the send.
This means your journey emails will be more reliable, and when something does fail, the error logs will tell you exactly what went wrong.
Security Improvements
Two security enhancements worth noting:
Password Change Protection: You now need to enter your current password before setting a new one. This prevents unauthorized password changes if someone gets access to your active session.
XSS Prevention: We added whitelist validation for the DatePreset parameter, which was a potential XSS vector. Only predefined safe values (like "today", "yesterday", "last7days") are accepted now.
Performance and Developer Tools
We added a composite index on the oempro_link_stats table to speed up link click deduplication queries. If you're running large campaigns, you'll notice faster reporting.
For developers, there are two new CLI commands:
# View MySQL slow query log ./cli/octeth.sh mysql:slow-log # Reset all logs including daily error logs ./cli/octeth.sh logs:reset
The slow query log analyzer is particularly useful for identifying performance bottlenecks.
UI and UX Fixes
We cleaned up several rough edges in the campaign reporting interface:
- Fixed chart overlap issues that made the "Scheduled" link unclickable
- Removed the confusing "CREATE CAMPAIGN" button from admin views (admins shouldn't be creating campaigns)
- Improved empty state messaging throughout
- Made column widths better for Recipients/Delivered and Open/Click Rate metrics
- Fixed subscription failures caused by invalid custom field values
What's Next
This release wraps up a focused sprint on operational reliability and security. The stuck campaign detector alone should save you hours of manual troubleshooting and prevent campaigns from failing silently.
Get Octeth v5.7.3
Existing Octeth clients can login to the Octeth Client Area and download the latest version.
If you're interested in learning more about Octeth or want to see it in action, fill in our contact form and we'll get back to you.