Debug and validation
A walkthrough for validating the integration end to end and diagnosing conversions that never arrive.
End-to-end validation#
-
Open the landing page through the campaign URL
Use the tracking link Moclick provided, or the destination URL with the tagging parameter, so the test arrives as tracked traffic. See tagging the destination URL.
-
Confirm the tag loaded
DevTools → Network, filter on
moclick. The tag request should return200or304. -
Confirm the campaign configuration
The configuration call should return
200, with the campaign identified. A missing or unpublished campaign returns a neutral response and the tag stops without acting. -
Check the cookies
DevTools → Application → Cookies. Check the name, domain and lifetime. See cookies written.
-
Complete the flow through to confirmation
Place a real test order. Do not mock the confirmation page — the point is to verify that the platform fills in the value and the identifier correctly.
-
Check the conversion record
The conversion request should appear in Network. On
POSTthe parameters go in the body, not in the URL — open the Payload tab. -
Confirm in the dashboard
Under Campaigns → Results, the test conversion should appear in Latest conversions. This is the only definitive criterion — a success response in Network does not guarantee a write.
Parameters to check on the conversion#
| Parameter | Should contain |
|---|---|
slug | The campaign identifier |
click_id | A non-empty value, matching the identification cookie |
txid | The order identifier |
value | The value with a decimal dot and two places |
When the campaign also forwards the conversion to external media platforms, you may see extra requests in Network. Confirmation on those platforms is handled by the Moclick team, and can take a few hours depending on the platform.
Inspecting from the console#
// Did the configuration load? window.MoclickConfig // Is the conversion object present and well formed? window.MoclickConversion // Which Moclick cookies exist? document.cookie.split("; ").filter(c => c.indexOf("moclick") === 0) // Clear the local markers to repeat a test Object.keys(localStorage) .filter(k => k.indexOf("moclick_") === 0) .forEach(k => localStorage.removeItem(k)); sessionStorage.clear();
Deduplication blocks a second record with the same transaction_id. To
test again, use a different transaction_id — that is the recommended
method — or clear local storage with the snippet above. Note that server-side
deduplication still applies: even with a clean browser, the same click + transaction
pair is not written twice.
Diagnosis#
No conversion request appears#
- The global tag loaded on this page — not just on the previous ones
window.MoclickConversionexists and is an object- The object was set within 120 seconds of the tag loading
- The campaign was identified in the configuration call
- The click identification cookie exists
- No conversion is already recorded with the same
transaction_id
The request goes out, but the dashboard shows nothing#
- The campaign uses Moclick’s own measurement — confirm with the Moclick team
click_idis not empty in the request- The test agent is not identified as a bot — command-line tools are filtered out
- The date filter covers the moment of the test
- The campaign or source filter is not excluding the event
- It is not a duplicate of an event already recorded
Wrong conversion value#
| Symptom | Likely cause |
|---|---|
| Value 100× too high | The platform sends cents. Divide by 100 — the classic Shopify case |
| Value zero or null | Comma as the decimal separator, a currency symbol, or an empty data layer variable |
| Value includes shipping and tax | The chosen total field includes extras. Use the subtotal if the contract is on merchandise |
| Value truncated | More than two decimal places. This is expected: the stored format has two places |
Duplicate conversions#
- Check that the
transaction_idreally is unique per order - A timestamp or random number as the identifier creates a duplicate on every reload
- Confirm the conversion tag is not firing on more than one tag manager trigger
- If you use Postback S2S and the conversion object, send the same
txidin both — that is how dedup recognizes them as one event
Go-live checklist#
- Global tag installed on every page, including the confirmation page
- Campaign identifier checked and matching the tag
- Conversion object on the confirmation page
transaction_idunique and stable per order- Value with a decimal dot, no currency symbol, at the right scale
- Test conversion completed in a real environment
- Test conversion confirmed in the results dashboard
- Cookies verified on the correct domain and subdomain
- No JavaScript errors in the console
- If using Postback S2S: token stored server-side and a retry queue implemented
- The advertiser’s privacy policy updated with the cookies in use
Once the checklist is done, send the domain and the campaign identifier to the Moclick team for a final validation before scaling up media spend.