Hosting sGTM on Google Cloud Run or App Engine? This guide walks you through migrating to DataNostro step by step. Done in an afternoon, zero data loss, full rollback plan.
Why move from GCP to DataNostro
- Cost: Google Cloud Run for a typical sGTM workload (5M req/month) runs ~$110 USD/mo (vCPU + RAM + egress + Cloud Logging + ops overhead). DataNostro PRO plan 990 CZK/mo (~$42) — everything included, no egress shock.
- Predictable invoice: Fixed CZK amount, ISDOC for Czech accounting, no monthly surprise from traffic spikes. GCP bills variably in USD without ISDOC.
- EU-only data residency: Hetzner Falkenstein (Germany). No US-parent puzzle for corporate clients who need a DPA without US transfers. Google Cloud has EU regions but the parent is US.
- Updates + monitoring included: When Google releases a new GTM Server image, we deploy it. You don't manage Node versions, IAM roles, Cloud Logging filters.
- Native CZ integrations: Sklik retargeting + conversion, Heureka satisfaction tracking, Heureka XML feed proxy — native, no custom code.
- Czech support: We respond during EU business hours, not via a $500/mo Google Premium Support contract.
When DataNostro is NOT for you
Being honest — there are cases where GCP makes more sense:
- Multi-region failover — Cloud Run can auto-failover across regions. DataNostro runs in one EU location. Non-issue for 99% of EU shops, but global SaaS audiences may need it.
- Custom autoscaling rules — we autoscale automatically; you can't say "hold 50 instances over Black Friday". Enterprise dedicated tier supports it on request.
- BigQuery streaming export — GCP does direct BigQuery export with one click. We do REST API + daily CSV dump, custom integration on request.
- VPC peering / Cloud Armor / IAP — enterprise security features we replace with Hetzner firewall + nginx rate-limiting + Cloudflare. Sufficient for most setups, may be insufficient for corporate compliance.
Pre-flight checklist (24–48 h ahead)
1. Lower DNS TTL to 5 minutes
Insurance for DNS cutover. Set TTL for your sGTM subdomain (e.g. sst.yourcompany.com) to 300 s at least 24h before cutover.
2. Inventory your GCP setup
Note your Project ID, Cloud Run service name, any static IP, Cloud Logging sinks, Cloud Build triggers — anything you'll need to decommission later.
3. Export Container Config from GCP
Cloud Run console → your sGTM service → Variables & Secrets → copy CONTAINER_CONFIG env var (Base64 string starting with aWQ9R1RNLVhYWFhYWFgm...).
Or via gcloud:
gcloud run services describe sgtm-service \ --region=europe-west1 \ --format='value(spec.template.spec.containers[0].env[?name=="CONTAINER_CONFIG"].value)'
Migration — 5 steps
Step 1: Create DataNostro account
Sign up at datanostro.com/signup. 14-day trial, no card required. Promo code GCP-MIGRATION-20 = 20% off for 3 months.
Step 2: Open Import sGTM in dashboard
Dashboard → Import sGTM → switch source to "Google Cloud". Paste Container Config Base64 + your current tracking domain. Click "Load preview". Confirm.
Step 3: Parallel deploy
Dashboard → Containers → "Deploy" the newly-created container. DataNostro provisions on our subdomain. SSL via Let's Encrypt automatically, ~2 min. GCP Cloud Run stays running — zero impact on live traffic.
Step 4: DNS cutover
Flip your tracking subdomain CNAME from GCP target to our subdomain. Propagation 5–15 min with pre-lowered TTL.
Rollback: if anything breaks, flip CNAME back. Same 5–15 min.
Step 5: Post-cutover validation
Test DNS resolve (dig), HTTPS endpoint (curl -I), GA4 DebugView, Meta Test Events, DataNostro Activity stream.
Decommission GCP (whenever ready)
Keep Cloud Run running 24–48 h as safety net. Then:
gcloud run services delete sgtm-service --region=europe-west1 --quiet gcloud compute addresses delete sgtm-static-ip --region=europe-west1
Plus: delete Cloud Build triggers, logging sinks, dedicated service accounts. Monitor Cloud Billing for a few days to confirm the line items drop.