What CRM fields prove you fixed UTM loss across subdomains after migrating to Zoho CRM for multi-product bundles ?
What CRM fields prove you fixed UTM loss across subdomains after migrating to Zoho CRM for multi-product bundles (batch 1 #434) is a gap most SaaS vendors gloss over — here is the operator-level answer.
Focus on one measurable outcome, a single RevOps owner, and fields/reports in the CRM of record. Most content online stops at definitions; execution needs audit → design → pilot → automate → measure.
Why this is under-answered online
Vendor blogs optimize for top-of-funnel keywords, not your motion, CRM, or constraint stack. Playbooks that ignore integration limits, ownership, and board metrics fail in production.
Kory WhiteFractional CRO · 25 yrs · $0→$200MHire a Fractional CRO
CRO Syndicate connects you with vetted fractional & interim revenue leaders — nationwide and across Maryland & DC.
Book a CallWhat good looks like
- Definition of done tied to revenue or data quality, not activity counts.
- Documented rollback and a named DRI.
- No shadow spreadsheets for metrics leadership reviews.
<!--pillar-weave-->
Related on PULSE
- [What CRM fields prove you fixed UTM loss across subdomains after migrating to Zoho CRM for multi-product bundles ?](/knowledge/q10272)
- [What CRM fields prove you fixed UTM loss across subdomains after migrating to Zoho CRM for multi-product bundles ?](/knowledge/q10192)
- [What CRM fields prove you fixed UTM loss across subdomains after migrating to Zoho CRM for multi-product bundles ?](/knowledge/q10112)
- [What CRM fields prove you fixed UTM loss across subdomains after migrating to Zoho CRM for multi-product bundles ?](/knowledge/q10032)
- [What CRM fields prove you fixed UTM loss across subdomains after migrating to Zoho CRM for multi-product bundles ?](/knowledge/q9952)
- [What CRM fields prove you fixed UTM loss across subdomains after migrating to Zoho CRM for enterprise outbound ?](/knowledge/q10412)
UTM Field Schema for Multi-Product Bundle Tracking
The first concrete proof that UTM loss is fixed comes from a deliberately designed field schema that captures bundle-level attribution without overwriting single-product UTM data. In Zoho CRM, you need three custom fields per deal record that work together, not in isolation:
Bundle_UTM_Source(picklist: organic, paid, referral, email, direct, other) — this field is populated by a workflow rule that fires only when the deal contains two or more distinct product line items from different subdomains. For example, if a visitor lands onblog.example.comvia a paid ad, then navigates toshop.example.comto add a product, the workflow concatenates the UTM parameters from the first touchpoint on the primary subdomain. The field value is locked after 24 hours to prevent overwrites from subsequent page visits.
Subdomain_Attribution_Map(multi-line text, 500 chars) — stores a JSON-like string mapping each subdomain involved in the deal to its original UTM parameters. Example:{"blog":"utm_source=linkedin&utm_medium=social","shop":"utm_source=direct&utm_medium=none"}. This field is populated by a custom function in Zoho’s Deluge that parses the visitor’s session history (stored in a custom module calledVisitor_Sessions) and writes the mapping at deal creation. The key proof: if this field shows UTM values for every subdomain in the bundle, you have eliminated the loss.
First_Touch_Bundle_Date(date-time) — captures the timestamp of the earliest UTM-bearing visit across any subdomain in the bundle’s session. This field is critical because it proves you are not mixing attribution from different sessions. A common error is to use the deal creation date, which can be days after the actual first touch. By storing this timestamp from theVisitor_Sessionsmodule, you can run a simple report: filter deals whereFirst_Touch_Bundle_Dateis within 24 hours of the first page visit. If >90% of your multi-product bundles pass this check, your UTM loss fix is working.
To verify these fields are populated correctly, run a weekly audit in Zoho CRM’s report builder: create a custom report on the Deals module, filter for deals with Bundle_UTM_Source not equal to null, and cross-reference the Subdomain_Attribution_Map field. Export 50 random records and manually check that the UTM parameters in the map match the original landing page URLs from your web analytics tool (e.g., Google Analytics or Plausible). A 95% match rate indicates the fix is solid.
Session Reconciliation Logic in Zoho Deluge
The mechanism that proves UTM loss is fixed lives in the session reconciliation logic—a Deluge script that runs when a lead or contact is created from a multi-subdomain visit. Without this logic, UTM parameters from different subdomains are stored in separate browser sessions, and Zoho CRM sees them as unrelated events. Here is the exact logic pattern you need to implement:
Step 1: Identify the visitor across subdomains. Use Zoho CRM’s Visitor_Sessions custom module (or a third-party tool like Segment) to store a hashed visitor ID (e.g., based on email or cookie) along with the subdomain and UTM parameters. When a new lead comes in, the Deluge script queries Visitor_Sessions where the visitor ID matches and the session timestamp is within the last 30 minutes. This window accounts for the typical time a user spends browsing across subdomains before converting.
Step 2: Merge UTM parameters with priority rules. The script must decide which UTM parameters take precedence. For multi-product bundles, the rule is: the first UTM source across any subdomain wins for the bundle-level attribution, but individual product line items retain their subdomain-specific UTM. In Deluge, this looks like:
if (visitor_sessions.size() > 1) { bundle_utm_source = visitor_sessions.get(0).get("utm_source"); for each session in visitor_sessions { if (session.get("subdomain") != primary_subdomain) { subdomain_map.put(session.get("subdomain"), session.get("utm_source") + ":" + session.get("utm_medium")); } } zoho.crm.updateRecord("Deals", deal_id, {"Bundle_UTM_Source": bundle_utm_source, "Subdomain_Attribution_Map": subdomain_map.toString()}); }
Step 3: Write a fallback for missing UTM. If any subdomain in the bundle has null UTM parameters, the script should set a flag UTM_Gap_Detected (boolean) to true. This flag is your proof of loss—if it is rarely triggered after the fix, you know the issue is resolved. In practice, after implementing this logic, you should see UTM_Gap_Detected drop from >30% of multi-product deals to <5% within two weeks.
To test this logic, create a test visitor session by visiting blog.example.com?utm_source=test&utm_medium=email, then shop.example.com (without UTM), then submit a form on checkout.example.com. In Zoho CRM, the resulting deal should show Bundle_UTM_Source as “test” and Subdomain_Attribution_Map as {"blog":"test:email","shop":"direct:none"}. If the map shows “direct:none” for the shop subdomain, that is correct—it means the UTM loss was fixed by capturing the first touchpoint, not by fabricating data.
Weekly Pulse Report to Validate UTM Integrity
The final proof that UTM loss is fixed is a weekly pulse report that tracks three metrics over time. This report should be built in Zoho CRM’s Analytics module (or exported to a BI tool like Power BI) and reviewed every Monday by the RevOps owner. The report answers one question: “Are we losing UTM data on multi-product bundles, and if so, where?”
Metric 1: Bundle UTM Completeness Rate. Calculate the percentage of multi-product bundle deals (deals with ≥2 distinct product line items from different subdomains) that have non-null values in both Bundle_UTM_Source and Subdomain_Attribution_Map. A healthy rate is >95%. If this drops below 90%, investigate the Deluge script or the Visitor_Sessions module for failures. For example, if the script times out on high-traffic days, you might see a dip—this tells you to optimize the script or increase the timeout limit in Zoho’s workflow settings.
Metric 2: Subdomain Gap Distribution. Create a pie chart in the report that shows the distribution of subdomains where UTM_Gap_Detected is true. Common culprits are subdomains that use a different CMS (e.g., help.example.com built on a separate platform) or subdomains behind a CDN that strips UTM parameters. If blog.example.com accounts for 70% of gaps, you know to focus your fix there—perhaps by adding a JavaScript snippet that persists UTM parameters in local storage before the page redirects.
Metric 3: Time-to-Attribution Delta. Measure the average time between the First_Touch_Bundle_Date and the deal creation date. If this delta is consistently under 2 hours, your session reconciliation is working efficiently. A sudden spike to 24+ hours suggests that the Visitor_Sessions module is not capturing visits in real time, possibly due to a caching issue or a delay in webhook delivery from your tracking tool. Set an alert in Zoho CRM to notify the RevOps owner when this delta exceeds 4 hours.
To build this report in Zoho CRM, go to Analytics → Create New Report → Select Deals module. Add filters: Bundle_UTM_Source is not null, Product_Line_Items count > 1. Add columns: Bundle_UTM_Source, Subdomain_Attribution_Map, First_Touch_Bundle_Date, UTM_Gap_Detected. Then create a summary view with the three metrics above. Schedule the report to run every Sunday at 8 PM and email it to the RevOps owner. Within three weeks of consistent >95% completeness and <5% gap detection, you can confidently tell stakeholders that UTM loss across subdomains is fixed.
Sources
- Zoho CRM official documentation — covers field mapping, UTM tracking, and cross-subdomain data handling
- Google Analytics Help Center — explains UTM parameter behavior across subdomains and attribution loss
- HubSpot Knowledge Base — details best practices for UTM preservation in CRM integrations
- Salesforce CRM documentation — provides insights on UTM field mapping and multi-domain tracking solutions
- Moz Blog — discusses UTM consistency and attribution challenges in multi-product setups
- Gartner CRM Market Reports — analyzes CRM migration impacts on marketing attribution and data integrity
FAQ
What exactly is "UTM loss across subdomains" in this context? It means that when a visitor moves from blog.yourdomain.com to app.yourdomain.com or shop.yourdomain.com, the original UTM parameters (source, medium, campaign) are dropped because each subdomain is treated as a separate referrer. In Zoho CRM, this results in deals tagged as "Direct Traffic" even when the lead came from a paid campaign. The fix requires passing UTM values via first-party cookies or URL parameters across subdomains, then mapping them to custom fields in Zoho CRM.
Which specific Zoho CRM fields should I create to prove the fix is working? Create at least three custom fields: "Original UTM Source," "Original UTM Medium," and "Original UTM Campaign." You can also add "UTM Cross-Domain Status" (dropdown: Passed / Dropped / Unknown). The proof is when a deal created from a subdomain-to-subdomain visit shows non-empty values in those fields, matching the original campaign data. Run a weekly report comparing "Direct Traffic" deals before and after the fix — a drop of 30-70% in false direct attribution is a strong indicator.
How do I audit whether UTM loss is actually happening before I fix it? Export your Zoho CRM deals for the last 90 days and filter for "Lead Source = Direct Traffic." Cross-reference with your web analytics (Google Analytics or similar) to see which of those deals actually arrived via a UTM-tagged URL on a different subdomain. A mismatch of more than 20-30% confirms the loss. You can also use browser dev tools to inspect network requests as you navigate between subdomains — if the UTM parameters disappear from the URL, you have the problem.
What's the simplest technical fix for keeping UTMs across subdomains in Zoho CRM? Use a first-party cookie set on the root domain (e.g., .yourdomain.com) that stores the UTM values on the first page load. Then, on every subsequent page across any subdomain, read that cookie and append the UTMs as hidden form fields or URL parameters before the lead is captured into Zoho CRM. This avoids reliance on third-party cookies and works with most form builders. The fix typically takes 2-4 hours for a developer to implement and test.
How do I measure success after implementing the fix? Create a Zoho CRM report that shows the "Original UTM Source" field for all new leads created after the fix date. Compare the percentage of leads with a non-empty "Original UTM Source" to the same metric before the fix — a jump from near 0% to 60-90% is realistic. Also track the "Direct Traffic" lead source count week-over-week; it should drop by at least 40% as those leads get correctly attributed to their original campaigns.
What if I have multiple products on different subdomains — does this still work? Yes, but you need to ensure the first-party cookie domain covers all subdomains (e.g., .yourdomain.com instead of product1.yourdomain.com). Each product's subdomain must read the same cookie. In Zoho CRM, you can add a "Product Interest" field to capture which subdomain the lead converted on, so you can still segment by product bundle. This setup works for 3-5 subdomains without significant performance issues.
Bottom line
Treat as RevOps product work: prove value on one slice, then scale. Polish can deepen this entry later.