NetSendo
Platform Updates

NetSendo v2.5.2: Self-Hosted Fonts & Logos for Privacy

NetSendo Team5 min read

You chose a self-hosted marketing platform to keep control of your data. But a self-hosted app can still leak small details. Each time a page loads a font, logo or script from another domain, the visitor's browser sends that host its IP address and user agent. That happens quietly, on every page view.

NetSendo v2.5.2 closes those gaps. The admin panel, the sign-in page, the affiliate partner portal and the public webinar pages now load their own assets from your installation. Nothing changes visually. The only difference is that fewer third parties get information about your visitors.

TL;DR: NetSendo v2.5.2 bundles the logos, favicon and Figtree/Inter fonts into your installation, so they no longer come from gregciupek.com and fonts.bunny.net. Webinar pages swap the Tailwind Play CDN for a compiled ~6 KB (gzipped) stylesheet. A new automated test stops third-party assets from coming back, and the gradients on the webinar watch page are fixed.

๐Ÿš€ What's New in v2.5.2

๐Ÿ–ผ๏ธ

Local Brand Assets

Logos and favicon ship in public/images/brand.

๐Ÿ”ค

Bundled Fonts

Figtree and Inter are built by Vite from @fontsource packages.

๐ŸŽฅ

CDN-Free Webinars

A compiled stylesheet replaces cdn.tailwindcss.com.

๐Ÿงช

Regression Test

The test suite fails if third-party assets come back.

Logos, Favicon and Fonts Served From Your Installation

Before this release, every panel page, the sign-in page and the affiliate partner portal fetched the NetSendo logos and favicon from gregciupek.com. The Figtree and Inter fonts came from fonts.bunny.net. Think of it as every visitor signing a guest book at two other buildings before they could enter yours.

Here is what changed:

  • Brand images now live in public/images/brand, and the n8n logo is in public/images/integrations.
  • Fonts are bundled by Vite from the @fontsource/figtree and @fontsource/inter packages (SIL Open Font License).
  • The share image (og:image, twitter:image) points at your own installation.

Public Webinar Pages Without the Tailwind Play CDN

Five public webinar pages (registration, post-registration, thank-you, watch and replay) loaded cdn.tailwindcss.com on every visit. That meant a request to an outside host from your subscribers' browsers. It also relied on a script that Tailwind does not support for production use.

These pages now use a stylesheet compiled with the app, resources/css/webinar.css, which is about 6 KB gzipped. The watch and replay pages also no longer load the panel's JavaScript bundle. They never used it, and it only threw a console error there.

โ„น๏ธ Note: Content that a webinar owner adds still loads from the source they picked. That covers YouTube, Vimeo and Calendly embeds, plus any Google Font chosen in the page builder. Only NetSendo's own assets were moved.

A Test That Keeps Third-Party Assets Out

The new tests/Feature/NoThirdPartyAssetsTest.php checks three things:

  • The sign-in page, the panel and the five webinar pages load scripts, styles, icons and images only from your installation.
  • The old hosts no longer appear anywhere in the frontend sources.
  • Every @vite() entry that a view requests is actually built.

Fixed: Webinar Gradients

The countdown, "not started yet" and "session ended" screens on the watch page show their gray, indigo and purple gradient again. Before the fix, they faded to black at the edges because the panel stylesheet and the Tailwind CDN cancelled out each other's gradient colours.

๐Ÿ’ผ Benefits & Use Cases

  • โœ… Fewer third parties receive your users' IP addresses
  • โœ… No runtime dependency on outside font or CDN hosts
  • โœ… Lighter webinar pages with no unused JavaScript
  • โœ… The same look, with no redesign or retraining
๐Ÿ›’

E-commerce: Product Launch Webinars

A store runs live demos to warm up buyers before a launch. Now the registration and replay pages:

  • Load NetSendo's styles from your own domain, with no Tailwind CDN request
  • Make it easier to explain in your privacy policy which hosts a visitor's browser contacts
  • Load faster because they use a small precompiled stylesheet
๐Ÿš€

SaaS: Onboarding Webinars

If you onboard new users with recurring webinars, the watch page no longer loads a bundle it doesn't use and no longer throws a console error. Your countdown screens also look polished again.

๐Ÿข

Agencies: Client and Partner Portals

Agencies that give clients panel access, or run affiliate programs through the partner portal, can now tell clients that NetSendo's own fonts, logos and favicon load from the agency's server. Clients who ask about data processing will get a simpler answer.

๐Ÿ› ๏ธ Step-by-Step: Upgrading and Verifying

  1. Back Up First

    Take a snapshot of your database and any customised files before upgrading. That's good practice for every release.

  2. Pull v2.5.2

    Update your installation the way you normally do. Docker users can pull the new image and restart the stack. Source installs should check out the v2.5.2 tag. See the documentation for the steps that match your setup.

  3. Rebuild Frontend Assets (Source Installs)

    This release adds new npm packages and a new Vite entry (webinar.css), so reinstall dependencies and rebuild:

    npm install
    npm run build
  4. Clear Caches

    Clear the application and view caches, and purge your reverse proxy or CDN cache, so browsers get the new HTML.

  5. Verify in DevTools

    Open the panel and a public webinar page with the browser's Network tab open. Every NetSendo asset should come from your own domain. You should see no requests to gregciupek.com, fonts.bunny.net or cdn.tailwindcss.com.

  6. Run the Test (Optional)

    Developers can run the new check directly:

    php artisan test --filter=NoThirdPartyAssetsTest
โš ๏ธ Common Pitfall: If a webinar page comes up unstyled or throws a Vite manifest error after the upgrade, the assets probably weren't rebuilt. Run npm run build again and confirm that public/build was deployed.

๐ŸŽฏ Expert Tips

๐ŸŽฏ Expert Tips

1
Tighten Your Content Security Policy

The panel no longer needs outside font or image hosts, so you can restrict font-src, img-src and style-src to 'self' there. On webinar pages, still allow the embed providers and Google Fonts your page builder uses.

2
Set Long Cache Headers

Vite outputs fingerprinted file names. Serve /build assets with long-lived, immutable cache headers so returning visitors load fonts and styles instantly.

3
Review Owner-Added Embeds

Owner-added content still contacts other hosts. If privacy is a priority, pick system fonts in the page builder instead of Google Fonts, and mention YouTube, Vimeo and Calendly embeds in your privacy notice.

4
Keep the Test in CI

If you maintain a fork or custom themes, run NoThirdPartyAssetsTest in your CI pipeline. It catches CDN links that slip back in during customisation.

5
Check Your Share Previews

og:image now points at your own installation. Make sure your domain is publicly reachable over HTTPS so social platforms can fetch the preview image.

โœ… Conclusion

NetSendo v2.5.2 is a small release that makes self-hosting more meaningful. Your logos, favicon and fonts now come from your own server. Webinar pages drop an unsupported CDN script, and a new automated test helps keep it that way. You keep the same look and lose some external dependencies.

Ready to Upgrade?

Get v2.5.2 and keep your visitors' data on your own server:

Explore what connects to NetSendo on our integrations page, and if you value privacy-first tools, give us a star on GitHub โญ

#privacy#self-hosted#webinars#performance#release-notes#security
Share