How to Avoid Missing Ad Click ID on iPhone Using Matomo
By JoeVu, at: Dec. 19, 2024, 11:03 a.m.
How to Avoid Missing Ad Click IDs on iPhone Using Matomo
With iOS 17’s Link Tracking Protection stripping common tracking parameters like dclid
, msclkid
, and others, maintaining accurate ad tracking has become more challenging. A recent case with one of our clients revealed significant data loss in Matomo, despite consistent data in Google Ads and Shopify.
To address this issue, we devised a custom solution by renaming ad parameters and restoring them in Matomo’s JavaScript tracking. This method bypasses iOS’s link tracking removal while preserving data integrity. Here’s how we solved the problem.
Understanding the Challenge
Link Tracking Protection in iOS 17 automatically strips known tracking parameters from URLs. Affected parameters include:
gclid
– Google AdWords / Analytics
dclid
– Google Display Network
foclid
– Facebook Advertising
twelkd
– Twitter Advertising
msclkid
– Microsoft Advertising
mc_eid
– Mailchimp
igshid
– Instagram
While these changes enhance user privacy, they disrupt marketing attribution workflows, leading to incomplete data in analytics platforms like Matomo.
Our Solution
To bypass iOS 17’s restrictions, we devised a two-part strategy:
- Customize Parameter Names in Ad URLs
- Restore Original Parameter Names in Matomo Tracking Code
This ensures that tracking parameters are not stripped by iOS while preserving their functionality in Matomo.
1. Customize Parameter Names in Ad URLs
Modify your ad URLs to replace the default tracking parameters with custom names that iOS does not recognize as tracking identifiers.
Example Parameter Mapping:
gclid
becomescustomMatomoGclid
dclid
becomescustomMatomoDclid
foclid
becomescustomMatomoFoclid
twelkd
becomescustomMatomoTwelkd
msclkid
becomescustomMatomoMsclkid
mc_eid
becomescustomMatomoMc_eid
igshid
becomescustomMatomoIgshid
Updated Ad URL Example:
https://www.glinteco.com/?customMatomoGclid=12345&customMatomoFoclid=67890
By replacing these parameters with custom names, they are not flagged or removed by iOS’s Link Tracking Protection.
2. Restore Original Parameter Names in Matomo Tracking Code
Use JavaScript to map the custom parameters back to their original names before sending them to Matomo.
Custom Matomo JavaScript Example:
// Capture URL parameters
var urlParams = new URLSearchParams(window.location.search);
// Map custom parameters back to original names
var paramsMapping = {
'customMatomoGclid': 'gclid',
'customMatomoDclid': 'dclid',
'customMatomoFoclid': 'foclid',
'customMatomoTwelkd': 'twelkd',
'customMatomoMsclkid': 'msclkid',
'customMatomoMc_eid': 'mc_eid',
'customMatomoIgshid': 'igshid'
};
// Loop through the mapping and send to Matomo
for (const [customParam, originalParam] of Object.entries(paramsMapping)) {
var paramValue = urlParams.get(customParam);
if (paramValue) {
_paq.push(['setCustomVariable', 1, originalParam, paramValue, 'visit']);
}
}
What This Does:
- Extracts custom parameters from the URL.
- Maps them back to their original names.
- Sends the data to Matomo for accurate tracking and attribution.
Implementation Steps
-
Update Ad Campaigns: Modify all active campaign URLs in Google Ads, Facebook, Microsoft Ads, and other platforms to use custom parameter names.
-
Update Matomo Tracking Code: Add the custom mapping logic to your website’s JavaScript tracking code.
-
Test the Tracking: Verify the functionality by clicking on test ads and checking that Matomo receives the correct parameters.
Why This Solution Works
-
Avoids Parameter Stripping: Custom names prevent parameters from being identified and removed by iOS’s tracking protection.
-
Maintains Data Integrity: By restoring parameters in Matomo, the data remains accurate and actionable.
-
Seamless Integration: This method works across all major ad platforms without disrupting other tracking systems.
Conclusion
iOS 17’s privacy updates present challenges, but with a proactive approach, you can maintain accurate ad tracking. By customizing parameter names and restoring them in Matomo, you can navigate these changes effectively while safeguarding your campaign attribution.
Would you like assistance implementing this solution or exploring additional tracking strategies? Let us know!