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:
| Model | Logic | Story Accuracy |
|---|---|---|
| Last-Click | Credits the final touchpoint before purchase | Poor — stories rarely last-click |
| First-Click | Credits the first touchpoint in the journey | Better — catches top-of-funnel exposure |
| Linear | Equal weight across all touchpoints | Moderate — dilutes story credit |
| Hyros OG | Weighted multi-touch + server-side + email matching | Best — 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
| Parameter | Value | Purpose |
|---|---|---|
| utm_source | Platform identifier | |
| utm_medium | paid_social | Channel type |
| utm_campaign | {{campaign.name}} | Campaign-level grouping |
| utm_term | {{adset.name}} | Ad set / audience |
| utm_content | {{ad.id}}_story | Ad-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}}_storyBulk Apply in Meta Ads Manager
- In Ads Manager, select all story ad creatives across your campaigns
- Click Edit → scroll to Tracking → URL Parameters
- Paste the template above — Meta will auto-populate the dynamic fields
- Click Publish — this applies to existing ads without creating new ad IDs
- 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
- Go to Reports → Attribution Settings
- Set Attribution Model to Multi-Touch (Position Based)
- Configure position weights: First Touch 40%, Middle Touches 20% (distributed equally), Last Touch 40%
- Set Click-Through Window to 7 days for story campaigns
- Set View-Through Window to 0 days until you've validated baseline — then test at 1 day
- 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
Hyros OG Multi-Touch
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
- In Hyros, go to Tracking → Event Log
- Filter by event type: Purchase
- Find a recent conversion and expand it — you should see the full attribution path
- Confirm the path includes at least one story ad touchpoint with
utm_contentending in_story - 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)
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