NetSendo
Platform Updates

NetSendo v2.5.1: Google Analytics Removed from Your Panel

NetSendo Team7 min read

You chose a self-hosted email and SMS platform so you would control your data. Until this release, NetSendo did not fully live up to that. Every installation, self-hosted or NetSendo Cloud, loaded a Google Analytics script in the admin panel, and it reported your page views to NetSendo's own analytics property. Nobody asked you first, and the panel showed no notice about it.

NetSendo v2.5.1 removes that script completely. We want to explain plainly what was sent, what has changed and what you should do now.

TL;DR: In versions 2.5.0 and earlier, every page of the NetSendo panel, the sign-in page and the affiliate partner portal loaded Google's gtag.js with NetSendo's measurement ID G-96J7WQ3SMT. v2.5.1 removes it. The panel and portal now load no analytics or tracking scripts from NetSendo or anyone else. You don't need to configure anything. Just update. Your own open/click tracking, the NetSendo pixel and Live Visitors are not affected.

🔍 What Changed in v2.5.1

What was being sent before

The main layout template, app.blade.php, included a partial called resources/views/partials/google-analytics.blade.php. Because that layout renders the whole panel, the script ran on:

  • The NetSendo admin panel: campaigns, lists, stats and settings
  • The sign-in page
  • The affiliate partner portal (/portal/...)

On each page view, Google and NetSendo's analytics received:

  • The page address, for example /messages/36/stats
  • The page title
  • The browser details and IP address of the person using the page

This applied to your team members and, through the partner portal, to your affiliates. There was no consent banner, and operators were not told.

⚠️ Important: Installations on 2.5.0 or earlier keep sending these page views until they are updated. The fix only takes effect after you upgrade.

What v2.5.1 does

  • ✅ The google-analytics.blade.php partial and its include are deleted
  • ✅ The panel and partner portal load no analytics or tracking script from NetSendo or any third party
  • ✅ A new regression test, tests/Feature/NoThirdPartyAnalyticsTest.php, checks that the sign-in page and panel load no Google Analytics or Google Tag Manager script
  • ✅ No configuration needed. Updating is enough.

What stays exactly the same

Removing analytics from the panel does not affect the tracking you set up yourself. These features send data only to your own installation:

📬

Open & Click Tracking

Campaign statistics work as before.

🎯

NetSendo Pixel

Site tracking still reports to your server.

👀

Live Visitors

Real-time visitor data stays on your installation.

ℹ️ Note: Think of the difference this way. Your tracking is a camera you installed in your own shop. The removed script was a camera the shop builder installed, and it sent footage of you working to someone else. v2.5.1 removes the second camera. Yours keeps working.

💼 Why This Matters: Real-World Scenarios

🏢

Agencies Running Multi-Client Setups

Agency staff move between client campaigns all day. Each panel URL and page title revealed some of that activity, such as which messages they opened and which stats they reviewed. After updating:

  • Panel activity is no longer reported to a third party
  • You can tell clients accurately that the panel loads no external analytics
  • Your vendor and sub-processor list for the panel gets shorter
🤝

Affiliate & Partner Programs

The partner portal at /portal/... is used by people outside your company. Before this release, their visits were sent to Google too. Now partners can sign in and check their results without any third-party scripts running.

🛒

E-commerce & SaaS Teams Under GDPR

If you operate in the EU, an analytics script that runs without consent is something your privacy team will want to know about. Updating to v2.5.1 stops it going forward. Then you can:

  • Check whether your privacy documentation mentions panel analytics
  • Record when you updated
  • Ask your DPO or legal advisor whether the earlier data flow needs further action

🛠️ Step-by-Step: Update and Verify

  1. Back up first

    Take a database dump and back up your .env file and storage volumes, as you would for any upgrade.

  2. Pull and restart (Docker)

    From the directory that contains your docker-compose.yml:

    docker compose pull
    docker compose up -d

    If you deploy from source, check out the v2.5.1 tag and run your usual build and deploy steps.

  3. Clear cached views

    Make sure no compiled template still contains the old include:

    docker compose exec app php artisan view:clear

    Adjust the service name (app) to match your compose file.

  4. Verify from the command line

    Fetch your sign-in page and search it for Google tags. This command should print nothing:

    curl -s https://your-netsendo-domain/login | grep -iE "gtag|googletagmanager|G-96J7WQ3SMT"
  5. Verify in the browser

    Open DevTools → Network, sign in and click through a few panel pages and the partner portal. You should see no requests to googletagmanager.com or google-analytics.com.

  6. Run the regression test (optional)

    If you maintain a fork or run CI:

    php artisan test --filter=NoThirdPartyAnalyticsTest

Common pitfalls

  • Customized layouts: If you edited app.blade.php in a fork, merge carefully and confirm the @include for the analytics partial is gone.
  • Stale caches: A CDN or reverse proxy that caches HTML may keep serving old pages for a while. Purge it after the update.
  • Pinned image tags: If your compose file pins a specific version, change it to v2.5.1 or later before you pull.

🎯 Expert Tips

1
Add a Content Security Policy

A strict script-src header on your reverse proxy stops third-party scripts from loading, even if one comes back by mistake. Start with Content-Security-Policy-Report-Only so you can see what would be blocked before you enforce it.

2
Monitor outbound requests

Add the curl | grep check from step 4 to a scheduled job or uptime monitor. If an external tracking domain shows up in your panel HTML, you'll know about it.

3
Review your privacy records

Write down the date you updated and review your record of processing activities and your privacy notice. If you're unsure about the period before the update, ask your DPO or legal advisor.

4
Tell your partners

If you run an affiliate program, a short note saying the partner portal no longer loads third-party analytics shows them you take their privacy seriously.

5
Keep CI tests in forks

Keep NoThirdPartyAnalyticsTest in your pipeline when you customize NetSendo, so new layout changes can't bring tracking back.

✅ Conclusion

Self-hosting is supposed to mean your data stays with you, and before this release the panel's analytics script didn't respect that. v2.5.1 removes it. The panel, sign-in page and partner portal now load no third-party tracking, and a test checks that it stays that way.

  • Versions 2.5.0 and earlier send page views to Google until you update
  • You don't need to configure anything. Updating is the fix.
  • Your open/click tracking, NetSendo pixel and Live Visitors work exactly as before

Update to v2.5.1 Today

Read the upgrade guide, check your integrations, or get the latest release:

Want to follow privacy-focused changes as they ship? Star NetSendo on GitHub and see the full v2.5.1 release notes.

#privacy#security#gdpr#self-hosted#release-notes#google-analytics
Share