NetSendo v2.8.0: Smarter Deliverability & Free GOLD
Mail that never reaches the inbox earns nothing. Often the cause is a DNS record that is almost right: a DKIM selector the checker never tried, an SPF record that dropped your CRM, or a DMARC policy so strict that it rejects your own subdomains. Send times can drift in a similar way when the message, the list and the account each use a different timezone.
NetSendo v2.8.0 fixes these problems. This release reworks the Deliverability Shield, applies one timezone order to every message, translates the rest of the panel and opens a new contributor programme. If you contribute code or report a security issue, you can earn a free NetSendo GOLD licence.
- Contributor programme: merged contributions earn points, and points earn a free GOLD licence.
- DKIM selectors: you can enter a custom selector, which Amazon SES needs.
- Safer generators: the SPF generator keeps your current record, and the DMARC generator starts at
p=none. - One timezone rule: every send time follows Message โ List โ Group โ User Account.
- Fixes: many bugs are fixed, including sales funnel thank-you pages, webhook URLs and Reverb security.
๐ What's New in v2.8.0
GOLD for Contributors
NetSendo now gives something back to the people who improve it. Maintainers label a merged pull request reward (1 point) or reward-large (3 points). A confirmed vulnerability reported through SECURITY.md also counts as 3 points.
- 1st point: 12 months of GOLD
- 2nd point: 12 more months
- 3rd point: GOLD with no end date
Contributions merged before the programme started count too. To claim your licence:
- Email
contact@netsendo.com. You'll get a one-time code within minutes. - Post the code as a comment on GitHub to confirm your account.
- You'll then receive your licence key. Any points you earn later extend the licence automatically.
A new Contributor reward workflow comments on rewarded pull requests. It runs safely on pull_request_target and never checks out the pull request's code. The EULA has a new ยง5.7, "Complimentary GOLD Licence", which sets the terms. The licence covers one installation and is personal. It is a thank-you, not payment, and it does not include the GOLD support described in ยง12.3 unless the grant says otherwise.
Deliverability Shield, Rebuilt
Custom DKIM Selector
Amazon SES Easy DKIM uses token selectors that the check cannot guess. You can now enter the token, or paste the full token._domainkey.example.com name, and the check looks it up first.
Safer DMARC
The generator starts with p=none and suggests quarantine and then reject as next steps. It uses relaxed alignment and keeps your existing rua address.
SPF That Keeps Your Senders
The generator now adds the includes your providers need to your current record instead of replacing it.
Badges That Turn Green
Status badges now show the real result. Before this release, they compared against a value the check never stored.
A typical record from the new DMARC generator looks like this:
_dmarc.example.com TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
The old generator used strict alignment (adkim=s; aspf=s). That broke mail sent from subdomains and through relays that sign with a parent domain.
The SPF generator now recognises SMTP relays by their host: Amazon SES, SendGrid, Google Workspace, Microsoft 365 and Mailgun. If it doesn't recognise the server and the domain has no SPF record, it asks you for the provider's include instead of guessing one.
Several other Deliverability Shield bugs are fixed:
- The published DMARC policy is now stored. Before, a domain with
p=rejectwas shown and scored asp=none. - DKIM records without the optional
v=DKIM1tag are now recognised. - The common selectors of Microsoft 365, Google, Mailchimp and SendGrid are now tried automatically.
One Timezone Rule for Every Message
Every time in a message now follows the same order: Message โ List โ Group โ User Account. Think of it as a chain of command: the most specific setting wins.
Before this release, the Pick a time option of queue messages was read in UTC, and scheduled broadcasts ignored list and group timezones. Both now use Message::resolveTimezone(). If a message has several lists, the list with the lowest ID decides.
Gmail Reply Detection Help
If your reply inbox is on Gmail, the panel now shows the settings Gmail needs: imap.gmail.com, port 993, SSL and your full email address as the user. It also reminds you that Gmail needs an app password here, not your Google account password. A Fill in Gmail settings button enters these values for you.
A/B Test Update API
PUT/PATCH /api/v1/ab-tests/{id} now works for draft tests. Before this release, every call returned a 500 error. A running or finished test returns 409.
curl -X PATCH https://your-netsendo.com/api/v1/ab-tests/42 \
-H "Authorization: Bearer $NETSENDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Subject line test โ v2"}'
๐ผ Benefits & Use Cases
E-commerce: Paid Funnels That Finish
After paying through Stripe, Polar or Tpay, buyers in a sales funnel used to see a 404 page instead of your thank-you page. Now they reach the right page, so your post-purchase sequences start as planned.
SaaS: Onboarding at the Right Hour
Onboarding emails set to 09:00 now arrive at 09:00 in the list's or account's timezone, not in UTC. If you send through Amazon SES, you can enter your token selector and finally see DKIM pass.
Agencies: Multi-Language, Multi-Client
Validation errors, login messages and about 140 backend messages now appear in English, Polish, German or Spanish. Your clients no longer see raw keys like polar.settings_saved. Each new account's default lead scoring rules are also named in the owner's language.
๐ ๏ธ Step-by-Step Upgrade Guide
- Back up and pull
Run
docker compose pull && docker compose up -d. Three migrations run automatically:dkim_selector,webhooks.urlwidened to 2,048 characters, and the renaming of the lead scoring rules. - Review queue send times
Subscribers who sign up after the update get the Pick a time hour in the message's timezone. For example, with an account in Europe/Warsaw, 09:00 now means 09:00 Warsaw time. If you had set the hour in UTC on purpose, set it again in your timezone or give the message the UTC timezone.
- Add DKIM selectors
Open Deliverability Shield โ domain, paste your provider's selector and run the check again.
- Secure Reverb
Installations from 2.7.2 or older still use the public example keys. Replace them:
openssl rand -hex 16 # use for REVERB_APP_KEY openssl rand -hex 16 # use for REVERB_APP_SECRET docker compose up -dIf a reverse proxy forwards
/app/to Reverb, also setREVERB_BIND_ADDRESS=127.0.0.1using the newdocker-compose.yml.
โ ๏ธ Important: Broadcasts that are already scheduled keep their stored time. But if you open and save one, its date is read in the new timezone, so check it before you save.
๐ง Other Fixes
- You can now enter a GOLD licence key while SILVER is active.
- Upgrade to GOLD no longer stays locked for 72 hours after you close the order tab, and you can cancel a started purchase.
- The public activation webhook can no longer downgrade GOLD to SILVER; such a request now returns 409.
- A GOLD licence changed on the server to have no end date no longer expires locally on the old date.
- The default mailbox you choose when creating a list is now saved, and only mailboxes from your own account are accepted.
- Webhook URLs can be up to 2,048 characters. Before, longer URLs caused a 500 error on MySQL. Switching a webhook back on resets its failure count.
DOCKER_INSTALL.mdhas corrected backup commands, andREADME.mdnow gives the right install port, 5029.
๐ฏ Expert Tips
Stay on p=none for 2โ4 weeks and read your rua reports. Move to quarantine only when every legitimate sender passes.
Set a timezone on each list or group, especially for regional lists, so that every message inherits the right one.
Bind Reverb to 127.0.0.1 behind your proxy and use REVERB_HOST_PORT if its default port conflicts with another service.
A confirmed report through SECURITY.md is worth 3 points, which is enough for GOLD with no end date.
โ Conclusion
v2.8.0 brings more reliable deliverability checks, predictable send times and a fully translated panel. The full test suite (729 tests) passes. The new contributor programme also lets you earn a free GOLD licence by improving the self-hosted platform you already rely on. You keep your data and your sending infrastructure, with no vendor lock-in.
Ready to Upgrade?
Update your Docker installation today, or contribute and earn GOLD.
Check out our integrations to connect Stripe, Polar, Tpay and more.



