In this guide
- A transformation edits event data before triggers and tags run. It has three types: Allow, Exclude and Augment.
- You can scope a transformation to one tag or one client, so Meta can get a field that GA4 does not, and the reverse.
- Use them to keep personal data away from vendors that do not need it, and to fix names and values once instead of in every tag.
Before transformations existed, changing the data a tag sent meant editing the tag, or building a variable for every field. If five tags needed the same fix, you made the fix five times. A transformation lets you make the change once, in one place, and decide exactly who it applies to. This guide covers the three types, the scope rules and some practical recipes. The surrounding parts are described in clients, tags, triggers and variables.
Where a transformation sits
The server container handles an event in a fixed order: the client builds event data, transformations run, triggers are checked, tags fire. A transformation therefore sees the event exactly as the client produced it, and the tags see the event exactly as the transformation left it.
Orders from your store, back to the ad that earned them
Your store sends the order once. Open Tracked passes it on to each ad platform, cleaned and deduplicated.
The three types
Allow parameters
You list the parameters to keep. Every other parameter is removed from the event the tag sees. This is the strictest option and the safest one for a vendor that should receive very little, for example an advertising network that only needs an event name, a value and a click ID.
Exclude parameters
You list the parameters to remove. Everything else stays. Use it when one field must never leave, for example the visitor IP address or an internal customer number.
Augment event
You add or overwrite a parameter. The value can be fixed text or the result of a variable. Common uses are adding a currency when the site forgot it, setting a hashed e-mail address, normalising an event name, or copying a value from a cookie into the event.
Match conditions and scope
Every transformation answers two questions:
| Question | What you set | Example |
|---|---|---|
| Which events does it apply to? | A match condition on the event data | Only events named purchase |
| Who does it apply to? | A scope: the clients and tags it is allowed to affect | Only the Meta Conversions API tag |
Scope is the point most people miss. A transformation with no scope set can affect every tag, which usually is not what you want. Setting it to one tag keeps the change local and makes the container easier to reason about when you return to it six months later.
Ask Ari instead of digging through reports
Ari reads your tracking and ad data and answers in plain words.
Six practical recipes
Keep the IP away from GA4
Create an Exclude transformation for ip_override, scoped to the GA4 tag. The same event still reaches Meta with the IP it needs for matching.
Send Meta only what it needs
Create an Allow transformation scoped to the Meta tag, listing event name, value, currency, content IDs and the user data fields. New fields added to the site later do not leak by accident.
Fix a currency once
Create an Augment transformation that sets currency to USD when it is missing. Every tag now sees a currency.
Hash an e-mail once
Augment the event with a hashed e-mail variable. Meta, TikTok and Google Ads all read the same prepared value.
Rename an event
If your site sends order_complete and a vendor expects purchase, Augment the event name for that vendor only.
Add the country
Augment the event with the visitor's country from a request header. With Open Tracked, the Visitor Location power-up supplies it.
Transformations and privacy
Transformations are the right tool for data minimisation: send each vendor the least it needs to do its job. They also leave a clear trail, because the container lists every transformation and what it does. When a reviewer asks "which vendors receive the visitor's e-mail address", you can answer by reading the scope of the transformations. See GDPR and server-side tracking and personally identifiable information.
Testing a transformation
- Open Preview in the server container and send an event.
- Click the event, then the Transformations tab.
- Check that your transformation is listed as "applied" for the event.
- Open the tag and read the event data it received. The removed field must be missing or the added field present.
- Send an event the match condition should skip, and check the transformation is shown as not applied.
Common mistakes
- No scope. The transformation hits tags you did not mean.
- Allow list too short. A tag stops working because a field it needs was not listed. Check the vendor's required fields first.
- Order assumptions. Two transformations on the same event run one after the other, so the second sees the output of the first.
- Augmenting with an empty variable. The field is added but empty, and the vendor rejects the event.
In Open Tracked
The container files from the Open Tracked Setup Wizard use variables for the power-up data (Visitor Location, Device Info, User ID and the Enricher's stored values), so you can read them in a transformation or a tag without writing code. Keep your own rules in transformations, so they survive when you download fresh files.
Transformations compared with other ways to change data
| Method | Where it acts | Best for | Drawback |
|---|---|---|---|
| Transformation | On event data, before tags | Changes that apply to many tags or one vendor | Easy to forget the scope |
| Variable inside a tag | In one tag field | A single value for a single tag | You repeat it in every tag |
| Change in the web container | In the browser, before sending | Fixing the source of a wrong value | Does not help for events from other sources |
| Custom client | Where the request is read | Odd formats such as webhooks | Needs JavaScript |
A checklist before you publish a transformation
3 things to remember
Scroll and the points stack up.
A transformation edits event data before triggers and tags run. It has three types: Allow, Exclude and Augment.

You can scope a transformation to one tag or one client, so Meta can get a field that GA4 does not, and the reverse.

Use them to keep personal data away from vendors that do not need it, and to fix names and values once instead of in every tag.

Frequently asked questions
Do transformations change what the browser receives?
No. They change the event data inside the server container before tags run. The browser response is not affected.
Can a transformation apply to only one tag?
Yes. Set the scope to that tag and the other tags keep seeing the original event data.
Are transformations the same as variables?
No. A variable reads a value. A transformation changes the event so that every tag in scope sees the change.
Will an Allow transformation break my tag?
It can if you leave out a field the tag needs. Start with an Exclude transformation, or list the vendor's required fields, then test in Preview.
Do I need transformations for GDPR?
They help with data minimisation but they do not replace a lawful basis or consent.
Do I need spreadsheets to read my results?
No. Once tracking is live, the Open Tracked analytics shows spend, revenue, ROAS and profit, and you can ask Ari, the built-in AI assistant, questions about your own numbers in plain words. Ari's allowance depends on your analytics plan.
Is Open Tracked different from Open Track or Open Space Track?
No. Open Tracked is the official name of our server-side tracking platform, and the website is opentracked.io. Many people search for it as Open Track, OpenTrack or Open Space Track. All of them lead to the same product: server-side Google Tag Manager hosting, first-party analytics and a CRM pipeline.

Fix your tracking at the source
Open Tracked hosts your server-side Tag Manager, keeps first-party cookies alive and shows what each ad is really worth.
The Open Tracked team
We build Open Tracked: server-side tracking hosting, analytics and the tools around them, for stores that spend on ads. Questions about this guide, or an idea for the next one?
Comments
Loading comments...

