Case Study: How a 40-Person European SaaS Replaced Its US Tech Stack (and Saved €60,000/Year)
A Note on This Case Study
This is an illustrative composite based on patterns we’ve observed across multiple European SaaS migrations, not a single specific company. We’ve drawn from publicly-reported migrations, conversations with European tech operators, and the realistic numbers our cost calculator produces.
We’ve used the composite format rather than naming specific companies for two reasons:
- Real migrations are rarely single-decision moments — they unfold over quarters with real-world friction, partial successes, and adjustments. A composite captures the realistic shape better than a single before/after.
- Confidentiality — actual European companies migrating their tech stacks rarely want to advertise their internal procurement decisions publicly.
The numbers below are realistic for the company size described. Specific tool names are real. Quarterly progression is realistic. The sovereign cloud story is the actual common pattern.
We’ll publish actual interviews with named companies in our upcoming “Built in Europe” interview series. This case study fills the gap until those are published.
The Company
Berlin-based B2B SaaS, 40 employees, profitable, €4-6M ARR. Sells project management software primarily to European mid-market customers. Founded 2018, originally bootstrapped, now slightly venture-backed. Engineering and product team of 18; sales and marketing of 14; finance and operations of 8.
The company was running a typical “default European startup tech stack” in early 2025: Google Workspace for productivity, AWS for infrastructure, HubSpot for marketing, Salesforce Starter for CRM, Slack for team chat, Notion for internal docs, GitHub for code. Total monthly tooling cost: roughly €18,500/month or €222,000/year.
The migration trigger wasn’t ideological — it was a procurement question from a German enterprise customer asking about subprocessors and data residency for an upcoming contract. The question forced the company to actually examine their data flows. The realization: most of their stack was US-resident with documented but uncomfortable transfer arrangements.
The CTO and COO co-led the migration over four quarters in 2025-2026.
Quarter 1: Email and Analytics
Migrations: Google Workspace → Proton Mail Business · Google Analytics → Plausible
Why first: Email is the most-used tool but least disruptive to migrate (each user’s setup is independent). Analytics is fast and visible.
Process:
- Email migration: Used Proton’s Easy Switch tool. Each user took roughly 30 minutes including setup of mobile clients and Proton Bridge for Outlook users. Total team time: ~25 person-hours over two weeks.
- Email forwarding: Kept Google Workspace forwarding active for 90 days to catch any external services that hadn’t been updated.
- Analytics migration: Replaced Google Analytics tag with Plausible script across 47 marketing pages and product pages. Configured Plausible’s GA import to bring over 18 months of historical data. Updated dashboards in marketing reporting tools.
Cost change: Google Workspace Business Standard at €11.50/user/month for 40 users = €5,520/year. Proton Mail Business at €11.99/user/month = €5,755/year. Plausible Pro at $49/month vs Google Analytics free.
Net cost change: Roughly +€800/year (slightly higher).
But: Removed cookie banner from product, which conversion analytics showed measurably improved trial signup conversion. Estimated conversion lift: 4-6%, worth significantly more than the €800 cost increase.
Friction: Two engineers strongly preferred Gmail UX and pushed back. Resolved by giving them temporary access to a Gmail forwarder during transition. Both adapted within 3 weeks.
Lesson: Don’t underestimate UI familiarity. Plan for 2-4 weeks of “this is different” feedback.
Quarter 2: Cloud Hosting
Migrations: AWS → Hetzner (primary) + Scaleway (GPU and managed databases)
Why second: Highest cost-saving potential, biggest sovereignty improvement, but highest technical complexity.
Process:
- Inventory: 18 EC2 instances, 4 RDS databases, S3 buckets totaling 8TB, AWS Lambda for various automations, CloudFront CDN, AWS SES for transactional email.
- Migration timeline: 6 weeks of focused engineering work split across two engineers part-time.
- Approach: Lift and shift production workloads to Hetzner Cloud with managed Kubernetes; databases moved to self-managed PostgreSQL on Hetzner with daily snapshots; object storage moved to Hetzner Object Storage; CDN moved to Bunny.net; transactional email moved to Brevo’s transactional API.
- Lambda functions: Most rewritten as small services on Kubernetes. Three complex functions kept on AWS Lambda due to specific AWS service dependencies that didn’t have direct EU equivalents.
Cost change:
- AWS bill: ~€8,200/month average (€98,400/year)
- Hetzner + Scaleway combined: ~€2,400/month (€28,800/year)
- Bunny.net CDN: ~€80/month (€960/year)
- Brevo transactional: ~€60/month (€720/year)
Net annual savings: ~€67,000/year on infrastructure alone.
Friction: Two specific issues consumed disproportionate engineering time:
- AWS-specific managed services (RDS Multi-AZ, IAM-integrated S3 policies) needed to be redesigned. Two weeks of engineering work to build equivalent setup on Hetzner.
- CloudFront → Bunny.net migration required updating ~200 hardcoded references in product code. Discovered late in migration; added a week.
Lesson: Inventory carefully before estimating timeline. AWS-specific patterns are deeper than they look. Plan for 25-50% timeline overrun.
Quarter 3: Marketing Stack
Migrations: HubSpot → Brevo · Salesforce Starter → Pipedrive
Why third: Marketing/sales tooling has clear cost savings and the migration friction is largely organizational rather than technical.
Process:
- HubSpot → Brevo: 12 weeks. Most time spent on automation/workflow translation. HubSpot’s complex multi-branch workflows needed to be simplified and rebuilt in Brevo. Used the migration as opportunity to clean up accumulated workflow cruft.
- Salesforce Starter → Pipedrive: 4 weeks. Smaller scope (only 6 users on Salesforce Starter; this was a pre-scaling decision before they’d built much custom). Pipedrive’s data import handled CSV well. Field mapping took time but was straightforward.
- Internal data model alignment: Used the migration to align CRM and marketing data models, which they’d been meaning to do for two years. Forced cleanup.
Cost change:
- HubSpot Marketing Hub Professional: €1,250/month (€15,000/year)
- Salesforce Starter: €25/user × 6 users = €150/month (€1,800/year)
- Brevo Premium: €145/month (€1,740/year)
- Pipedrive Professional: €59/user × 8 users = €472/month (€5,664/year)
Net annual savings: ~€9,400/year
Friction: The most significant non-technical resistance came from the Head of Marketing, who’d built deep familiarity with HubSpot’s reporting. Resolved by ensuring Brevo’s reporting capabilities matched the most-used HubSpot reports before fully cutting over. The CMO also took a HubSpot certification course separately on personal time during the transition — recognizing that EU-built tools may not have the same training resource ecosystem yet.
Lesson: Deep tool familiarity is real. Marketing teams especially have invested significantly in learning HubSpot. Migration friction is largely about retraining, not capability gaps.
Quarter 4: Documents, Code, and Communications
Migrations: Google Drive → Nextcloud + OnlyOffice (self-hosted on Hetzner) · Slack → Element (self-hosted Matrix server) · GitHub → kept (US, but acceptable trade-off)
Why fourth: Lower-cost migrations with significant sovereignty improvement, plus accepting one US dependency that doesn’t have a credible direct alternative for our use case.
Process:
- Document migration: Spun up Nextcloud on Hetzner (4 vCPU, 16 GB RAM, 1TB volume). Used Nextcloud’s bulk migration tool to import from Google Drive. About 240 GB of company documents migrated cleanly. OnlyOffice integrated into Nextcloud for collaborative editing.
- Slack migration: Set up self-hosted Matrix Synapse server on Hetzner. Migrated active channels using community migration tools. Kept Slack read-only for 90 days for historical reference.
- GitHub decision: Evaluated Codeberg (Germany) and self-hosted Forgejo. The team decided GitHub’s tooling ecosystem (Copilot, Actions, third-party integrations) was sufficiently better for their use case to accept the US dependency. Documented this as an explicit accepted exception in their data classification policy.
Cost change:
- Google Workspace storage upgrade for Drive (no longer needed): -€800/year
- Slack Pro at €7.25/user/month for 40 users: was €3,480/year
- Self-hosted Nextcloud + Matrix: ~€600/year infrastructure cost
- GitHub Team plan: €4/user/month for 40 users = €1,920/year (kept)
Net annual savings on this quarter alone: ~€2,500/year
Friction: Self-hosting requires real ongoing operational commitment. Two engineers became “Nextcloud maintainers” with explicit time allocation. Worth it economically but a real cost.
Lesson: Self-hosting is a deliberate choice, not a default better option. The TCO of self-hosting includes ongoing operational time, not just infrastructure cost.
Twelve Months Later: The Numbers
Annual tooling cost before: ~€222,000/year Annual tooling cost after: ~€158,000/year Annual savings: ~€64,000/year (~29% reduction)
Infrastructure complexity: Increased modestly. Now operating Nextcloud + Matrix self-hosting alongside production infrastructure. Trade-off accepted.
Sovereignty posture: Substantially improved. Documented EU-resident processing for customer data, employee data, and core business operations. Accepted exceptions documented (GitHub, occasional ChatGPT use, etc.).
Procurement positioning: Three German enterprise customers signed in 2026 explicitly cited the company’s EU sovereignty story as a positive differentiator vs US-headquartered competitors.
Team morale: Mostly positive. The overall narrative of “we built a European company on European infrastructure” became part of the company identity in a way that resonated with the team and especially with engineering hires.
What Didn’t Work
Three things were harder than expected:
1. AI tooling decisions weren’t resolved. The team uses ChatGPT, Cursor, and Claude for engineering and content work. Tried Mistral Le Chat as alternative but team consensus was the workflow integrations weren’t sufficient for full migration. Documented as accepted US dependency.
2. SOC 2 Type II audit complexity. Switching cloud providers mid-year extended their SOC 2 audit timeline. Worth it but added 3 months to certification renewal.
3. One marketing team member left. Sales rep with 4 years of HubSpot certifications didn’t want to retrain. Departure was civil but specifically caused by tool migration. Replaced within 6 weeks.
What Worked Surprisingly Well
1. Customer reception. Expected mild interest, got significant positive feedback. Multiple sales conversations now lead with the sovereignty story. Marketing pivoted to feature it prominently.
2. Hetzner specifically. Cost savings exceeded forecast. Service reliability has been better than AWS for their workload. Engineering team’s general impression: “we should have done this earlier.”
3. Compounding effect on hiring. Two senior engineers cited the European tech stack story as a positive in their interview decisions. Marginal but real talent acquisition advantage in privacy-sensitive engineering market.
Would They Do It Again
Both the CTO and COO say yes, with two caveats:
-
Plan more time for tool retraining. Especially marketing/sales tools. The org-change cost is the biggest hidden cost of migration.
-
Be explicit about accepted US dependencies. Pretending you’re 100% EU-sovereign is operationally false for most companies. Documenting “we use these specific US tools for these specific reasons with these specific safeguards” is more credible than purity narratives.
What This Case Study Demonstrates
For European companies considering their own migration:
1. The cost savings are real. ~30% reduction on tooling costs is achievable. The cost story is the strongest practical argument.
2. The sovereignty improvement is substantial but takes work. Don’t expect “switch tool, get sovereignty.” Expect “make 8-10 deliberate vendor decisions over 12 months, get measurably better sovereignty posture.”
3. Marketing/customer reception matters. The procurement pressure that triggered this migration converted into a competitive advantage. European sovereignty became a sales feature.
4. Plan for friction. Engineering complexity, marketing retraining, and accepting strategic exceptions are all real. Migrations that pretend these aren’t real fail more often than ones that plan for them.
5. Don’t pursue purity; pursue better. Accepting documented US dependencies (GitHub, ChatGPT) while replacing the 80% of stack that has clean EU alternatives is operationally sound. Insisting on 100% sovereignty creates more cost than it solves.
Concrete Next Steps for Your Company
If you’re considering a similar migration:
- Inventory your tools: list every SaaS tool, monthly cost, and rough sovereignty assessment
- Identify quick wins: usually email + analytics + cloud hosting + marketing automation are the first four
- Run our cost calculator to estimate cloud-specific savings
- Browse our migration guides for step-by-step instructions for specific switches
- Take the 2-minute decision wizard for personalized recommendations
This kind of migration takes 4-8 quarters to do well. Starting in Q3 2026 means you complete it in 2027 — well in time for the operational tailwinds of EU AI Act enforcement, eIDAS 2.0 wallet adoption, and continued DORA implementation.
The pattern is repeatable. The numbers are real. The trade-offs are manageable. The strategic position you build through 12 months of deliberate vendor decisions is significantly different from where most European companies are today.
If you’re a European company that has actually completed (or is in the middle of) a migration like this, we’d love to talk. We’re starting an interview series with named companies in 2026 and can offer editorial control over how your story is told. Email hello@betterineurope.eu.
Was this helpful?