FroggyAds Insights
On this page

Guides

How to preserve a click identifier across redirects

A tracking link can return a successful page while losing the click identifier on the way there. The visitor still sees the offer. Your attribution system sees a landing request it cannot match to the original click. A useful test follows a synthetic identifier through each redirect and checks the first landing request before any page script changes the address.

Give the test a known value

Use a preview link or a staging copy of the redirect chain. Add one synthetic identifier with a recognizable value and record the parameter name as well as the value. For instance, click_id=preview-7fd2 is easy to spot without using data from an actual visitor. Use the field name your tracking setup expects. Some platforms append their own identifier, so a synthetic value tests whether the URL preserves it. It does not produce a conversion in the platform.

For a campaign created in the FroggyAds self-serve DSP, start from the configured campaign destination or an authorized preview. A direct visit to the final page skips any tracking or redirect step between the campaign and the landing page.

Find the first hop that loses the value

Open the browser network panel, preserve the log, then load the test URL. For each redirect, record the request path, status and destination. A server-side redirect supplies its next location in a response header. A JavaScript redirect can leave an ordinary successful response before the browser makes another navigation. The MDN guide to HTTP redirects explains how these mechanisms differ and how they can interact.

Follow the value through the chain. A common pattern is that a tracking service forwards it correctly, but a language selector constructs a new URL using only the path. Another is that a redirect already has a query string and the additional parameters are joined with a second question mark. In both cases the first response that builds an incorrect destination is where the fix belongs. A successful status at the end of the chain says little about that earlier decision.

Compare the decoded parameter values. Percent-encoding can change the spelling in the address bar while preserving the value. A literal plus sign is a good additional test because form-style query parsers can treat it as a space unless it is encoded correctly. The URLSearchParams reference shows that behavior and distinguishes replacing a parameter from appending another copy.

Keep the forwarding rule small

If you control the redirect, parse the intended destination as a URL and preserve its existing query parameters. Copy the expected tracking fields explicitly. Keep the destination host in the configured allowlist, and apply the same rule when the visitor lands on a locale or device-specific variant. Avoid copying arbitrary request parameters because they may contain unrelated state.

Decide what to do when the incoming request contains the same identifier twice. A test that only checks whether the key exists can miss two different values. For an identifier expected to be unique, capture the duplicate in the test output and resolve it according to the tracking contract. Make the outcome deterministic across the redirect service and the landing application.

Run four cases against the same redirect rule. The plain synthetic ID should arrive once. Send a value such as preview+east as preview%2Beast and confirm that it decodes with the plus intact. A destination that already includes lang=en should keep it, while the duplicate-ID case should follow the agreed rule. If the redirect emits %252B, check whether it encoded a string that was already encoded. If the landing application receives a space instead of a plus, inspect how the first hop that changed the value parsed the query.

Check the landing request and the collection step

After the fix, repeat the test with a clean browser session. Confirm that the first request to the landing page contains one expected identifier and that an existing destination parameter still has its original value. Then confirm that the site collects the permitted value where your attribution setup expects it, under the applicable consent state. A page script can clean the address bar after reading it, so the visible address alone cannot tell you which of those two steps succeeded.

Keep one before-and-after redirect trace with synthetic values. It gives the person reviewing the change the exact hop to inspect when a new language route or tracking domain is added.

Improve this page

Spot something confusing or outdated? Send the docs team a private note.

Suggestions are reviewed before any docs change.
HollahoopGet yours
How to preserve a click identifier across redirects · FroggyAds Insights Docs · Hollahoop