How to Set Up Hyros for Multi-Channel

I audit about 15-20 attribution setups per quarter, and Hyros consistently shows up in accounts running complex multi-channel funnels. The tool’s strength is its call tracking integration and long-funnel attribution, but the setup is where most people screw it up. Specifically, the URL parameter passthrough — I’d say 60% of Hyros implementations I see are missing critical attribution data because someone skipped the platform-specific parameter mapping.

What You’ll Have Working By The End

Prerequisites

Step 1: Install the Hyros Universal Script

First, grab your universal tracking script from Hyros. In your Hyros dashboard, go to Integrations → Universal Script and copy the code.

The script needs to fire on every page of your funnel — landing pages, checkout, thank you pages, everything. Most people install it in the site header, but if you’re using GTM (which I recommend), create a new tag:

The script automatically captures standard UTM parameters, but you need to configure it for platform-specific parameters. Here’s the enhanced version that captures the parameters I see mattering most for attribution:

<!-- Hyros Universal Script with Enhanced Parameter Capture -->
<script>
!function(h,y,r,o,s){
  // Standard Hyros script code here (use your actual script from dashboard)
  
  // Enhanced parameter capture
  function getUrlParams() {
    const params = new URLSearchParams(window.location.search);
    const hyrosParams = {};
    
    // Standard UTM parameters
    ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'].forEach(param => {
      if (params.get(param)) hyrosParams[param] = params.get(param);
    });
    
    // Platform-specific parameters
    const platformParams = {
      'fbclid': 'facebook_click_id',
      'gclid': 'google_click_id', 
      'ttclid': 'tiktok_click_id',
      'msclkid': 'microsoft_click_id',
      'twclid': 'twitter_click_id'
    };
    
    Object.keys(platformParams).forEach(param => {
      if (params.get(param)) hyrosParams[platformParams[param]] = params.get(param);
    });
    
    return hyrosParams;
  }
  
  // Pass parameters to Hyros
  if (typeof hyros !== 'undefined') {
    const urlParams = getUrlParams();
    Object.keys(urlParams).forEach(key => {
      hyros.setData(key, urlParams[key]);
    });
  }
}();
</script>

Critical: The enhanced parameter capture is essential. I see setups losing 20-30% of attribution accuracy because they’re only capturing UTM tags and missing platform click IDs.

Step 2: Configure Platform CAPI Integrations

Hyros’ server-side integration is what makes it actually useful for attribution. Without CAPI connections, you’re just getting client-side data that’s missing 15-25% of users due to iOS ATT and ad blockers.

Facebook CAPI Setup

In Hyros dashboard, go to Integrations → Facebook and click “Connect Account.” You’ll need:

  1. Facebook Business Manager admin access
  2. The Facebook App ID for your pixel
  3. Access token with proper permissions

The integration setup wizard will walk you through OAuth, but verify these events are mapped correctly in the Event Mapping section:

Important: Set your attribution window to match Facebook’s settings (default is 7-day view, 1-day click). Mismatched attribution windows are the #1 reason for reporting discrepancies.

For Google, you’ll configure Enhanced Conversions rather than traditional CAPI. In Hyros:

  1. Go to Integrations → Google Ads
  2. Connect your Google Ads account via OAuth
  3. Map your Hyros conversion events to Google conversion actions
  4. Enable Enhanced Conversions data sharing

The key configuration is in Settings → Enhanced Conversions where you map customer data fields:

// Example customer data mapping for Enhanced Conversions
{
  "email": "user_email_hash", // SHA-256 hashed
  "phone": "user_phone_hash", // SHA-256 hashed  
  "first_name": "user_first_name",
  "last_name": "user_last_name",
  "address": "user_address"
}

TikTok Events API

TikTok’s integration is newer but critical for accounts spending on TikTok ads. In Integrations → TikTok:

  1. Connect your TikTok Business Center account
  2. Select your pixel ID
  3. Map events (CompletePayment, SubmitForm, ViewContent)
  4. Test the connection with TikTok Events Manager

Step 3: Set Up Call Tracking Attribution

This is where Hyros shines compared to other attribution tools. The call tracking integration connects phone conversions back to the original ad source.

Call Tracking Integration

In Integrations → Call Tracking, you can connect with:

I recommend CallRail for most setups — the integration is cleanest and most reliable. Once connected:

  1. Dynamic Number Insertion: Configure your call tracking to dynamically insert phone numbers based on traffic source
  2. Webhook Setup: Point your call tracking webhooks to Hyros’ endpoint (found in Integration settings)
  3. Attribution Mapping: Map call outcomes (answered, voicemail, busy) to conversion values

Call Attribution Configuration

Critical setting: Attribution Lookback Window. Set this to match your sales cycle. For most B2B funnels, I use 30 days. For e-commerce, 7 days is usually sufficient.

The webhook payload should include:

Step 4: Configure URL Parameter Passthrough

This step trips up more people than anything else. You need to ensure attribution parameters persist across your entire funnel — landing page to checkout to thank you page.

Landing Page Configuration

On your landing pages, capture and store attribution parameters in hidden form fields or session storage:

// Store attribution data for funnel passthrough
function storeAttributionData() {
  const params = new URLSearchParams(window.location.search);
  const attributionData = {};
  
  // Capture all UTM parameters
  ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'].forEach(param => {
    const value = params.get(param);
    if (value) {
      attributionData[param] = value;
      sessionStorage.setItem(param, value);
    }
  });
  
  // Capture platform click IDs
  ['fbclid', 'gclid', 'ttclid', 'msclkid'].forEach(param => {
    const value = params.get(param);
    if (value) {
      attributionData[param] = value;
      sessionStorage.setItem(param, value);
    }
  });
  
  return attributionData;
}

// Run on page load
document.addEventListener('DOMContentLoaded', storeAttributionData);

Form Configuration

Add hidden fields to your lead forms and checkout forms:

<!-- Hidden attribution fields -->
<input type="hidden" id="utm_source" name="utm_source" value="">
<input type="hidden" id="utm_medium" name="utm_medium" value="">
<input type="hidden" id="utm_campaign" name="utm_campaign" value="">
<input type="hidden" id="fbclid" name="fbclid" value="">
<input type="hidden" id="gclid" name="gclid" value="">

<script>
// Populate hidden fields with stored attribution data
['utm_source', 'utm_medium', 'utm_campaign', 'fbclid', 'gclid'].forEach(param => {
  const field = document.getElementById(param);
  const value = sessionStorage.getItem(param);
  if (field && value) {
    field.value = value;
  }
});
</script>

Cross-Domain Tracking

If your funnel spans multiple domains (landing page → checkout on different domain), you need cross-domain parameter passing:

// Append attribution parameters to cross-domain links
function appendAttributionParams(url) {
  const params = new URLSearchParams();
  
  ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'fbclid', 'gclid'].forEach(param => {
    const value = sessionStorage.getItem(param);
    if (value) params.append(param, value);
  });
  
  const separator = url.includes('?') ? '&' : '?';
  return url + separator + params.toString();
}

// Apply to checkout links
document.querySelectorAll('a[href*="checkout"]').forEach(link => {
  link.href = appendAttributionParams(link.href);
});

Step 5: Event Tracking Configuration

Configure conversion events that match your funnel stages. In Events → Event Mapping:

Standard E-commerce Events

Custom Events for Complex Funnels

Each event needs proper revenue attribution. For lead generation funnels, assign average customer value to lead events. For e-commerce, pass actual order values.

// Example event firing with proper attribution
hyros.trackEvent('purchase_completed', {
  value: 149.99,
  currency: 'USD',
  order_id: 'ORDER_12345',
  utm_source: sessionStorage.getItem('utm_source'),
  utm_campaign: sessionStorage.getItem('utm_campaign')
});

Testing & Verification

Hyros Debug Mode

Enable debug mode in Settings → Debug Mode to see real-time event firing. Test your entire funnel:

  1. Visit a landing page with UTM parameters
  2. Submit a form (should see lead_generated event)
  3. Complete a purchase (should see purchase_completed event)
  4. Verify attribution data is captured correctly

Platform Verification

Check that events are appearing in ad platform reporting:

Expected Timeline: Events typically appear in Hyros within 2-5 minutes, and in ad platforms within 15-30 minutes.

Attribution Report Verification

In Reports → Attribution, verify:

Acceptable Variance: Expect 5-15% variance between Hyros and ad platform native reporting. Hyros typically shows 10-20% more conversions due to better cross-device tracking and view-through attribution.

Call Tracking Verification

Test call attribution by:

  1. Visiting your site with UTM parameters
  2. Calling the displayed phone number
  3. Checking Reports → Call Attribution for the conversion
  4. Verifying the original traffic source is properly attributed

Troubleshooting

Problem: Events firing in Hyros debug mode but not appearing in Facebook Events Manager
→ Check your Facebook CAPI connection in Integrations → Facebook. Verify the access token has proper permissions (ads_management, business_management). Regenerate the token if it’s older than 60 days.

Problem: Attribution showing “Direct” for traffic that should be attributed to paid ads
→ URL parameter passthrough is broken. Check that fbclid/gclid parameters are being captured and stored correctly. Verify cross-domain parameter passing if your funnel spans multiple domains.

Problem: Call conversions not attributing to original ad source
→ Dynamic number insertion isn’t working properly. Verify your call tracking integration webhook is hitting Hyros’ endpoint correctly. Check Settings → Call Attribution for proper source mapping.

Problem: Hyros showing significantly different conversion counts than ad platforms
→ Attribution window mismatch. Check Settings → Attribution Windows and align with your ad platform settings. Facebook defaults to 7-day view/1-day click. Google Ads varies by conversion action.

Problem: Events firing multiple times for single conversions
→ Script is installed multiple times or firing on page refresh. Check for duplicate Hyros scripts in your GTM container or website header. Implement event deduplication using order IDs or form submission IDs.

Problem: Cross-device attribution not working properly
→ Enhanced Conversions/CAPI isn’t configured correctly. Verify customer data (email, phone) is being hashed and passed to Hyros properly. Check Integrations → Enhanced Conversions for proper field mapping.

What To Do Next

Ready to get your attribution dialed in? Here are your next steps:

This guide is part of the Attribution Tools Hub — comparing and configuring attribution solutions for multi-channel marketing funnels.