Skip to content
Skip to main content
Hyros OG story attribution analytics dashboard
12 min readBy Carlos AragonAttribution & Tracking

Hyros OG Story Attribution: The Setup That Actually Works

Facebook story ads routinely under-report conversions by 30–60% in standard setups. OG attribution in Hyros is the fix — but only if you configure it correctly. Here's everything: pixel mistakes to avoid, server-side tracking, UTM templates, multi-touch model config, and a verification workflow.

Why Story Attribution Breaks Everyone

If you're running Facebook story ads and your attribution numbers feel wrong — they probably are. Story placements have a fundamental problem that standard pixel-based setups can't solve: users interact with stories inside a full-screen, swipe-driven environment where the browser context is inconsistent, cookies often don't fire, and the click-to-landing-page journey gets interrupted by Meta's native story UI.

The result is chronic under-reporting. Across the accounts I've audited, story placements under-attribute by 30–60% compared to actual purchases confirmed in Shopify or CRM. You scale down a campaign that's actually printing money because the numbers say it's breaking even.

Hyros's OG (Original) story attribution model exists specifically to address this. But "using Hyros" and "using Hyros correctly for stories" are very different things. Most teams install the pixel, add UTMs, and call it done — and then wonder why their Hyros numbers still don't match reality.

What this guide covers:

  • What OG story attribution actually is and why it differs from other models
  • The five most common mistakes that corrupt your story data
  • Server-side tracking setup via Meta Conversions API
  • UTM templates and bulk-apply workflow for story ads
  • Multi-touch model configuration with real ROAS before/after
  • Verification workflow to catch attribution gaps daily

What Is OG Story Attribution in Hyros?

Hyros calls it the "OG" model — Original attribution. It's the proprietary logic Hyros uses to connect ad events to downstream conversions across the full customer journey, as opposed to importing or trusting Meta's own attribution window.

Understanding it requires a quick comparison with the other models you might be running:

ModelLogicStory Accuracy
Last-ClickCredits the final touchpoint before purchasePoor — stories rarely last-click
First-ClickCredits the first touchpoint in the journeyBetter — catches top-of-funnel exposure
LinearEqual weight across all touchpointsModerate — dilutes story credit
Hyros OGWeighted multi-touch + server-side + email matchingBest — built for incomplete browser signals

The OG model works because it doesn't rely solely on browser-side pixel fires. It layers in server-side events, email address matching (when users opt in on your funnel), and Hyros's own click-tag infrastructure — so even when the story placement drops the cookie, the server event captures the conversion and maps it back to the correct campaign.

Stories specifically need this because the swipe-up (now "tap to open link") behavior frequently opens landing pages inside Meta's in-app browser on iOS, where cookie-based attribution is heavily restricted post-iOS 14.5. Without a server-side layer, you're flying blind on roughly half your iOS traffic.

Common Mistakes That Corrupt Your Story Data

Before touching any configuration, audit your current setup against these five failure patterns. I see at least three of these in every account I audit.

Mistake 1: Pixel-Only Tracking

Installing the Hyros pixel on your landing page and calling it done. The pixel fires a browser-side event that gets blocked by iOS privacy protections, ad blockers, and Meta's in-app browser sandboxing. Without a server-side companion event, you're losing 40–60% of conversions before they even hit Hyros.

Mistake 2: Missing or Malformed UTMs

Stories with no UTMs — or UTMs that don't include utm_content with the ad ID — can't be mapped back to the correct creative. Hyros needs the ad-level identifier to match clicks to campaigns. If your UTM template stops at utm_campaign, you're aggregating story performance incorrectly.

Mistake 3: Missing fbclid Passthrough

Meta appends fbclid to landing page URLs. If your funnel or landing page builder strips query parameters on redirect (common in ClickFunnels, Unbounce, and some WordPress setups), Hyros loses the click identifier it needs to stitch the journey. Always verify that fbclid survives every redirect in your funnel.

Mistake 4: Wrong Script Placement

The Hyros tracking script must fire before the page is visible to the user — it should be in <head>, not deferred, not at the bottom of <body>. If a user bounces before the script loads, no event fires. On story ads, bounce rates are high and page-load times matter more than average — a deferred script misses a significant portion of traffic.

Mistake 5: Not Excluding Story Views from Conversion Windows

Hyros can attribute a conversion to anyone who viewed an ad within your attribution window. If you're running broad story placements with high impression volume, view-through attribution will inflate your story ROAS by crediting purchases to people who scrolled past your ad and bought for entirely different reasons. Exclude view-through events or set view-through window to 0 for story campaigns while you calibrate.

Server-Side Tracking Setup

iOS 14.5 changed the game. Apple's App Tracking Transparency (ATT) framework means that roughly 60–70% of iOS users have opted out of cross-app tracking. For story ads — heavily consumed on mobile — this is catastrophic for pixel-only setups.

The fix is Meta Conversions API (CAPI), routed through Hyros so that server-side events feed into the same attribution model as your pixel events. Here's how to configure it.

Step 1: Generate Your Hyros Server-Side Token

In Hyros, go to Settings → Integrations → Facebook. You'll find a field labeled "Server-Side Access Token." Generate or copy this token — it's what Hyros uses to authenticate server events sent to Meta CAPI on your behalf.

Step 2: Configure Meta CAPI in Hyros

Under the same Facebook integration settings, enable Conversions API and paste your Meta System User token (generated from your Meta Business Manager under System Users). Map your conversion events — at minimum: Lead, Purchase, and InitiateCheckout.

Step 3: Verify the Server Event Payload

Use Meta's Events Manager test tool to confirm your server events are arriving. A correctly configured server event payload looks like this:

{
  "data": [
    {
      "event_name": "Purchase",
      "event_time": 1711324800,
      "action_source": "website",
      "event_source_url": "https://yoursite.com/thank-you",
      "user_data": {
        "em": ["<hashed_email>"],
        "ph": ["<hashed_phone>"],
        "fbc": "fb.1.1711324800.AbCdEfGhIjKlMnOp",
        "fbp": "fb.1.1711324000.1234567890",
        "client_ip_address": "203.0.113.42",
        "client_user_agent": "Mozilla/5.0..."
      },
      "custom_data": {
        "currency": "USD",
        "value": 997.00,
        "order_id": "ORD-20260325-001"
      }
    }
  ]
}

Key fields to verify: fbc (click identifier — must match the fbclid from the ad click), fbp (browser pixel identifier), and hashed email if collected. Without fbc, CAPI can't link the server event to the original story click.

Step 4: Verify Event Deduplication

You will now have both a browser pixel event and a server-side event firing for the same conversion. Without deduplication, Hyros and Meta will both double-count. Set the event_id field to a consistent identifier — typically your order ID or a UUID generated at purchase — in both the pixel and the server event. Meta uses this to deduplicate; Hyros does the same on its side.

UTM Configuration for Story Ads

UTMs are how Hyros knows which campaign, ad set, and creative gets credit. For story ads, your UTM structure needs to be more granular than what most teams use for feed placements — because stories are a distinct placement with distinct performance characteristics.

Required Parameters

ParameterValuePurpose
utm_sourcefacebookPlatform identifier
utm_mediumpaid_socialChannel type
utm_campaign{{campaign.name}}Campaign-level grouping
utm_term{{adset.name}}Ad set / audience
utm_content{{ad.id}}_storyAd-level ID + placement flag

The _story suffix on utm_content is not just a naming convention — it lets you filter Hyros reports to story placements only, so you can compare story ROAS against feed ROAS using the same attribution model.

Full UTM Template

utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.id}}_story

Bulk Apply in Meta Ads Manager

  1. In Ads Manager, select all story ad creatives across your campaigns
  2. Click Edit → scroll to TrackingURL Parameters
  3. Paste the template above — Meta will auto-populate the dynamic fields
  4. Click Publish — this applies to existing ads without creating new ad IDs
  5. Verify by clicking through a story ad preview and checking that the landing page URL contains all five UTM parameters

Warning: Preserve Your Historical Baseline

Changing UTMs on active ads does not reset delivery, but it breaks data continuity in Hyros for historical comparisons. Before applying in bulk, export a report of current story performance so you have a pre-change baseline to compare against.

Multi-Touch Attribution Config

Single-touch attribution — last-click or first-click — lies to you about stories. A story ad almost never closes a sale on its own. It creates awareness, builds familiarity, and starts a journey that might convert days later via email retargeting, a Google search, or a direct visit. If you credit only the last touch, stories look worthless. If you credit only the first touch, stories look like they're driving everything.

Multi-touch attribution in Hyros solves this by distributing credit across the full journey. Here's how to configure it for story campaigns.

Setting Up Multi-Touch in Hyros

  1. Go to Reports → Attribution Settings
  2. Set Attribution Model to Multi-Touch (Position Based)
  3. Configure position weights: First Touch 40%, Middle Touches 20% (distributed equally), Last Touch 40%
  4. Set Click-Through Window to 7 days for story campaigns
  5. Set View-Through Window to 0 days until you've validated baseline — then test at 1 day
  6. Enable Cross-Device Attribution — critical for mobile story → desktop conversion paths

Attribution Window Logic for Stories

A 7-day click window is appropriate for story ads because the purchase intent triggered by a story often doesn't convert same-session. The user sees the story on Monday, does some research, gets retargeted by email on Wednesday, and purchases on Thursday. The 7-day window captures that full arc. A 1-day window — common in last-click setups — misses it entirely.

Real ROAS: Before vs After Multi-Touch Setup

Last-Click Attribution

Story campaign ROAS0.8x
Email retargeting ROAS11.2x
Decision: kill storiesWrong

Hyros OG Multi-Touch

Story campaign ROAS3.4x
Email retargeting ROAS4.1x
Decision: scale storiesCorrect

The email retargeting ROAS dropped from 11.2x to 4.1x — not because email got worse, but because it was previously taking credit for conversions that story ads initiated. Multi-touch reveals the actual contribution of each channel, which makes budget allocation decisions dramatically more accurate.

Verification & Debugging

A working Hyros story attribution setup should show event-level data in the Hyros event log within minutes of a conversion. Here's how to verify it and what to do when something's off.

Hyros Event Log Check

  1. In Hyros, go to Tracking → Event Log
  2. Filter by event type: Purchase
  3. Find a recent conversion and expand it — you should see the full attribution path
  4. Confirm the path includes at least one story ad touchpoint with utm_content ending in _story
  5. Check the event source: you should see both Pixel and Server listed — if only Pixel appears, your CAPI setup isn't firing

Cross-Check with Meta Attribution Tool

In Meta Events Manager, run the Attribution Comparison report. Compare Hyros-attributed story conversions against Meta's own count for the same period. You should expect Hyros to report 10–25% more conversions than Meta's last-click default — because Hyros is capturing assisted conversions that Meta misses. If Hyros is reporting fewer than Meta, something is broken in your pixel or CAPI setup.

n8n Workflow for Daily Attribution Gap Check

Manual verification doesn't scale. I run a daily n8n workflow that pulls yesterday's Hyros story attribution data via API and compares it against Shopify orders, flagging any day where the gap exceeds 20%.

Daily Attribution Gap Check (n8n nodes)

1.Schedule Triggerruns at 6:00 AM daily
2.HTTP RequestGET Hyros API /conversions for yesterday, filter utm_content CONTAINS _story
3.HTTP RequestGET Shopify Orders API for same date range
4.Code Nodecalculate attribution gap: (shopify_orders - hyros_attributed) / shopify_orders
5.IF Nodeif gap > 20%, route to Slack alert
6.Slackpost daily summary to #attribution-alerts channel

This workflow catches problems before they compound. An attribution gap that goes unnoticed for a week means a week of bad scaling decisions — you're either cutting spend on campaigns that are actually working or doubling down on ones that aren't.

What Accurate Attribution Changes

Getting Hyros OG story attribution right isn't a vanity exercise. It directly changes downstream decisions: which campaigns you scale, which creatives you kill, how you split budget between top-of-funnel awareness (stories, Reels, YouTube pre-roll) and bottom-of-funnel closers (email, retargeting, Google branded).

The accounts I've audited that had broken story attribution shared a common pattern: they were under-investing in top-of-funnel because the data said it wasn't working. Their email retargeting was profitable — but it was cannibalizing from a shrinking audience because nothing was filling the top of the funnel. Once attribution was fixed, they could see the flywheel: story ads build the audience that email converts.

The full setup covered here — pixel + CAPI deduplication, correct UTM structure, multi-touch position-based model, daily verification workflow — takes about a day to implement correctly. The ongoing maintenance, once the n8n workflow is running, is essentially zero.

Quick Setup Checklist

  • Hyros pixel installed in <head> on all funnel pages
  • Meta CAPI configured in Hyros with System User token
  • Server events verified in Meta Events Manager
  • Event deduplication enabled (matching event_id in pixel and server event)
  • fbclid passthrough verified across all redirects
  • UTM template applied to all story ads with _story suffix on utm_content
  • Multi-touch position-based model enabled (40/20/40 weights)
  • Click-through window set to 7 days, view-through to 0
  • Cross-device attribution enabled
  • Daily attribution gap check running in n8n

If you're working through a Hyros setup and hitting walls — whether it's CAPI integration, funnel redirect issues swallowing your fbclid, or a multi-touch model that just doesn't look right — feel free to reach out. This is the kind of setup work I do regularly for performance marketing teams and agencies.

Need Help with Your Hyros Setup?

I help performance marketing teams and agencies get accurate attribution data — from Hyros configuration to server-side tracking to automated reporting. If your story attribution is broken, let's fix it.

Get in Touch
HyrosAttributionFacebook AdsServer-Side TrackingMeta CAPIMarketing Analytics