EnrichmentAvailable now

    Move your container without touching a tag.

    A server container is wired to header names. Change provider and every Request Header variable points at something that no longer arrives. This module sends your old provider's names too, carrying our values, so the container that worked yesterday works today.

    Both names, one value
    Stape and MetricsGate built in
    Any other name you need
    All modules
    Headers we send
    X-User-Id9f4c1ab7e0d2385c6a17be49f03d7c82
    X-Geo-Postal-Code1012
    Also sent
    Your previous provider's names
    X-Stape-User-Id9f4c1ab7e0d2385c6a17be49f03d7c82
    X-GEO-PostalCode1012

    The same value under both names. Move your variables across whenever you are ready, then switch the module off.

    One value, two header names

    The part of a migration nobody budgets for

    Moving a container is a DNS change and a redeploy. What takes the afternoon is the tag layer: every variable that reads a header the previous provider invented, and every tag downstream of it.

    01

    Variables fail quietly

    A Request Header variable that finds nothing returns undefined. The tag still fires, the parameter is simply absent, and the gap surfaces in the vendor's reporting days later rather than in your preview.

    02

    The list is longer than it looks

    Visitor identifiers, location, device data. Each provider spells them its own way, and which ones happen to match cannot be told from the names alone.

    03

    There is nothing to rehearse against

    The old headers only exist at the old provider. Until the DNS change lands there is nothing to test, so the first real traffic is also the first test.

    How it works

    You tell us where you are coming from. Every request then arrives with that provider's header names as well, carrying the values our own modules compute.

    01

    Pick your previous provider

    Stape and MetricsGate ship with a mapping. For anything else, read the header names off your old container and point each one at ours.

    02

    Both names are delivered

    Ours and theirs, same value, same request. Nothing is replaced, so a variable you have already migrated keeps working.

    03

    Move your variables when it suits you

    Repoint them one at a time, with real traffic flowing and nothing depending on the order you do it in.

    04

    Switch the module off

    Once no variable reads an old name, disable it. The extra headers stop and nothing else changes.

    What you get

    Most names already match

    Header names are case-insensitive, and so is the Request Header variable. A variable asking for X-GEO-Country is answered by our X-Geo-Country untouched, so only genuinely different names are aliased.

    Nothing is overwritten

    Aliases are additional headers. Our own names are always sent too, so the module can be switched on and off without a coordinated change on the tag side.

    Only what you actually run

    An alias is sent only when the module producing that value is enabled on your container. Turning on migration support does not turn on anything else.

    Names you supply are checked

    A custom name has to look like a header, and it cannot target the fields that carry the visitor's address, so a typo can never quietly undo your privacy settings.

    Specification

    Header names
    Your previous provider's, alongside ours
    Built-in providers
    Stape, MetricsGate
    Other providers
    Custom mapping, up to 20 names
    Values
    Identical to our own headers
    Cost
    Included with your container
    Request headers
    X-Stape-User-IdX-GEO-PostalCodeX-Geoip2-CountryX-Geoip2-RegionX-Geoip2-City

    When to use it

    You are moving from Stape

    X-Stape-User-Id and X-GEO-PostalCode arrive exactly as before. The rest of their set already matches ours, so there is nothing else to arrange.

    You inherited the container

    When nobody remembers which variables read which headers, send both names and work through them from the reporting instead of from memory.

    You are cutting over in phases

    Point part of your traffic at the new container while the old one still serves the rest. As far as the tag layer can tell, the two behave identically.

    Questions about Migration Headers

    Do I have to change anything in my container first?

    No, and that is the point. Enable the module, move the DNS, and the variables you already have keep resolving. Repointing them to our names is a cleanup task for afterwards, at whatever pace suits you.

    Why is the list of aliases so short?

    Because HTTP header names are case-insensitive, and so is the Request Header variable in your container. Most of a competitor's set already resolves against ours without help. Only names that differ by more than capitalisation need an alias at all.

    My previous provider is not in the list.

    Open your old container's preview, copy the incoming header names, and map each one to the value it should carry. That covers any provider, including the ones that never published their header names.

    Does sending two headers cost anything?

    No. They are added at our edge from values already computed for the request, and the module is included with your container.

    Should I leave it enabled forever?

    There is no cost or performance reason to switch it off, but it is meant to be temporary. Once every variable reads our names, disabling it removes headers nobody is reading any more.

    Other modules

    Modules stack. Enable as many as you need. They compose into one configuration in front of your container.

    Ready to switch it on?

    Every module is included with your container at no extra cost. Create a container, open the modules panel, and toggle.

    See pricing