Mar 18, 2026
Latest PostMar 18, 2026
Latest PostIf you run workloads with data residency requirements like GDPR or CCPA, or any other location-based requirements, you've probably had to think carefully about where your traffic actually goes. Now you can control it.
Region & IP Resolution (also known as region pinning) is now available. It lets you "pin" your domains to specific ngrok points of presence (PoPs) — fully self-serve, no DNS changes needed.
ngrok domains have always resolved globally for performance, routing traffic to the nearest PoP to minimize latency for your end users. But "wherever is fastest" isn't good enough for your compliance needs & geographic policies, and many customers asked for the ability to restrict traffic to specific regions.
We heard your feedback! Region pinning gives you both: you choose the locations, then ngrok optimizes performance among them.
When you configure Region & IP Resolution on a domain, you're telling ngrok: only route traffic for this domain through these specific locations. Any traffic to your endpoints on this domain will only be routed through those locations.
For example, this means your European customers' data never touches a U.S. server, keeping you on the right side of GDPR compliance.
You can pin to one PoP or multiple, like us-cal-1 (California) and eu (Frankfurt). In the future, we may also add regional aliases to cover multiple PoPs, and we'd love your feedback on this.
If you pin to multiple PoPs, ngrok uses latency-aware routing among your selected locations, so your end users get the best performance possible within the boundaries you've defined.
A few things you'll like:
Hop into the Dashboard, click a domain, and select your target regions.
Or you can use our API: update the resolves_to property in your Domain object.
Here's an example of creating a domain that's pinned to only PoPs in the United States:
curl --request POST \
--url https://api.ngrok.com/reserved_domains \
--header "Authorization: Bearer <token>" \
--header "Content-Type: application/json" \
--header "ngrok-version: 2" \
--data '{
"domain": "api.example.com",
"resolves_to": [
{ "value": "us-cal-1" },
{ "value": "us" }
]
}'Or if you already have a domain, you can just update it — no need to create a new one.
curl --request PATCH \
--url https://api.ngrok.com/reserved_domains/{domain_id} \
--header "Authorization: Bearer <token>" \
--header "Content-Type: application/json" \
--header "ngrok-version: 2" \
--data '{
"resolves_to": [
{ "value": "eu" }
]
}'Want to switch back to global routing? Set resolves_to to an empty list and you're back to normal.
Region pinning is available on the Pay-as-you-Go plan. It will be charged at $0.02 per active endpoint hour, on top of the existing rate for endpoints. An endpoint is considered active if it receives any traffic in a given hour. Learn more on the pricing page.
If your pinned endpoints don't receive any traffic, you won't be charged for region pinning — no need to disable endpoints to save money. Your costs scale with your usage.
Whether it's a contractual requirement from a customer, an internal security policy, or just the peace of mind that comes from knowing your European users' data never leaves Europe — this feature gives you that control, without complexity.
This is the first phase of a broader investment in giving you more control over your traffic's geography. We're working on additional regional aliases (like united-states and european-union), dedicated IP addresses, and more.
See our documentation to learn more. If you have feedback, we'd love to hear from you (click "Let us know").
Region pinning is production-ready today. Try it in the dashboard in under two minutes.