Table of contents
Your attribution model says the Meta click deserves 30% of last week’s orders. Ads Manager claims all of them. Finance looks at both numbers and trusts neither.
If you run your own attribution, you have sat in that meeting. The models disagree. The dashboards never reconcile. And Meta keeps optimizing on its own version of the story, because until now you had no way to tell it yours.
That is changing. Meta has a new Conversions API feature in beta called AppendAttribution. In plain terms: it lets you send your attribution model’s verdict back to Meta. Which click gets credit. How much of it. What it is worth in money.
For the product setup, see Meta Conversions API.
This post explains what it does, who is eligible, how it works, and what you should get ready now while the rollout reaches your account.
What is AppendAttribution?
Think of it as a note you send Meta after every sale.
A customer buys. Your normal Purchase event goes out as usual. Then, within 48 hours, you send a second event that says: “About that order. Our model gives your ad click 35% of the credit. The order was $329, so your share is $115.”
That second event is AppendAttribution. It carries three things:
- Which ad click you are crediting
- How much credit it gets, as a share between 0 and 1
- What that credit is worth in revenue
This is a first. Until now, everything you sent Meta was all-or-nothing. A conversion happened or it did not. There was no way to say “your ad helped, but it was one touch among four.” Now there is.
One caveat before you get excited: this is an open beta, rolled out in phases. There is no toggle in Events Manager. Your ad account has to be enrolled by Meta, and your Meta contact can check whether it already is (and request enrollment if not). The good news: the eligibility bar is public enough to plan against, and the data plumbing it assumes takes most teams months to get right. That is why this is worth reading today.
Are you eligible for the beta?
Enrollment is phased, and Meta is checking for a specific advertiser profile in this rollout. The markers we have seen:
- An existing Conversions API connection. Pixel-only setups are not supported.
- Optimizing for Purchase events using Autobid. Manual bid caps and non-purchase optimization do not fit this phase.
- At least 150 standard purchase events per day. The passback needs volume for Meta’s systems to learn from it.
- A recognized attribution source. Either an approved measurement partner (Adobe, Northbeam, Triple Whale, Rockerbox) or an in-house click-based attribution system.
Notice what this list is really saying. Meta wants advertisers who already run server-side tracking at real volume and already have a working attribution model. The feature rewards teams whose data operations are in order. It is not the thing that fixes them.
That last marker matters most for mid-market brands: you do not need to buy an enterprise measurement tool. An in-house click-based attribution setup qualifies, and that is exactly what CustomerLabs gives you: every Meta click ID captured, preserved, and tied to the person who eventually purchased.
Why Meta built it
Every platform grades its own homework. Meta reports Meta-attributed sales, Google reports Google-attributed sales, and added together they always claim more revenue than you actually made.
So serious teams built their own source of truth. Multi-touch models, Media mix models, and CRM Revenue mapping resolved reporting disputes. That fixed the reporting argument, but created a new problem: the platform never sees your model. Meta kept optimizing toward conversions as Meta counted them, not as your business valued them.
AppendAttribution closes that loop. And it fits a pattern Meta has followed for years. Value-based bidding asked for your revenue numbers. Offline conversions asked for your CRM outcomes. Now attribution passback asks for your credit assignments. The message is the same every time: the platform performs better when you feed it your version of the truth.
How it works, in plain terms
Your first-party data pipeline (this is where CustomerLabs sits for our customers) sends Meta a server-side event named AppendAttribution. Inside it:
- The verdict. The ad that was clicked, when it was clicked, the credit share (say 0.35), and the money value of that share.
- The anchor. Which conversion this verdict is about: the event name (like Purchase), when it happened, and ideally the order ID.
- The person. The same customer identifiers you send with normal Conversions API events, like the Meta click ID and a hashed email, so Meta can match everything up.
For your developer, here is what the actual event looks like when your model credits a Meta click with 35% of a $329 order:
{ "event_name": "AppendAttribution", "event_time": 1755408600, "event_id": "attr-passback-8843", "action_source": "website", "event_source_url": "https://yourstore.com/checkout/thank-you", "attribution_data": { "ad_id": 987654321, "touchpoint_ts": 1755321000, "attribution_share": 0.35, "attribution_value": 115.15 }, "original_event_data": { "event_name": "Purchase", "event_time": 1755395400, "order_id": "ORDER-88431" }, "custom_data": { "currency": "USD" }, "user_data": { "fbc": "fb.1.1755321000123.IwAR2xY...", "client_user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5...)", "client_ip_address": "203.0.113.42", "em": "<SHA256-hashed lowercase email>" }}You do not need to memorize the fields. You do need to know the rules, because they decide whether any of this works.
The rules that matter
- You get 48 hours. Meta must receive the passback within 48 hours of the conversion. So attribution cannot be a month-end report an analyst produces. It has to run continuously, like your tracking does.
- The click ID is everything. Meta matches your credit note to a real ad click using the click ID (the
fbcvalue) plus identifiers like hashed email. If the click ID got lost somewhere between the ad and the purchase, your credit goes nowhere. - Duplicates are handled by IDs. Meta uses event IDs to make sure the same event is not counted twice. If your events go out without stable IDs, things get messy.
- In-store sales are the exception. Passbacks for physical store conversions count for measurement and audiences, but they do not feed ad optimization.
What this changes for you
If you run last-click attribution straight out of Ads Manager, nothing changes. Carry on.
But if your team maintains its own model, three things get better:
Meta finally sees partial credit. The platform can learn that a click was an assist, not the goal. It stops taking full credit for sales your model says it barely touched.
The dashboard war gets an exit. Instead of arguing every quarter about whose number is right, you push your number into Meta and its reporting starts reflecting your model.
Your attribution starts earning its keep. Most custom attribution models are read-only. People look at them. This turns your model into something that actively steers the biggest ad platform you spend on.
What you need in place first
Here is the honest checklist. Every item on it is something the feature quietly assumes you already have:
- Click IDs that survive the journey. The click ID dies constantly: Safari limits cookies, browsers strip URL parameters, people switch devices. Running your tracking on a first-party domain is what keeps the click ID from the first ad click alive until the purchase weeks later.
- One customer, not five anonymous visitors. Your model can only credit a click from three weeks ago if it knows the person who clicked is the person who just paid. That stitching is identity resolution, and it has to happen on your side before any passback is possible.
- Stable IDs on every conversion. Event IDs for deduplication, order IDs to tie credit to a specific sale.
- A Conversions API setup that already performs. If your regular Purchase events have poor match quality today, your passbacks will fail the same way. Quietly.
None of this is exotic. It is the same first-party data foundation that value-based bidding and offline conversions already asked for. AppendAttribution just raises the price of not having it.
Where CustomerLabs fits
CustomerLabs builds that foundation for advertisers today. Click IDs are captured from the first anonymous visit and preserved through the journey, while purchases and CRM conversions go server-side to the Facebook destination with the event IDs platforms use for deduplication. Offline conversions get mapped back to the original ad click.
And there is one more piece that matters specifically for AppendAttribution: control over what the event actually looks like.
Strip away the novelty and an AppendAttribution event is just a Conversions API event with an unusual shape. Most CAPI setups cannot produce it. They send whatever their template defines, and nothing else.
CustomerLabs destinations work differently. Every event passes through an Event Workflow, and every event has a callback function: a small piece of logic that can reshape the event in real time before it is sent. Marketers use this today (usually with a developer’s help) to rename events, enrich them with extra data, and route them conditionally. It is the same mechanism we have used to update and reshape attribution data on events before they reach Meta.
That is exactly the muscle custom attribution passback needs. Take a conversion, compute the credit, and send a second, differently shaped event within Meta’s 48-hour window, with the click ID, hashed identifiers, and order ID already attached because the pipeline never lost them.
We are building our AppendAttribution proof of concept right now. Once it clears beta, we will publish the full walkthrough. Teams already routing Meta events through CustomerLabs will be ready on day one; teams that aren’t will spend the rollout fixing their tracking.
The bottom line
AppendAttribution is a small beta with a big signal. Meta is willing to let your attribution model overwrite its own story: partial credit, real revenue values, delivered server-side within 48 hours.
The rollout is phased, so your account may not be enrolled yet. But everybody can prepare. And the preparation list (preserved click IDs, stable event and order IDs, resolved identities, a healthy Conversions API setup) pays off immediately in match quality and offline attribution, whether or not you ever get beta access.
The platforms keep repeating the same sentence in different features: bring us your real data and we will optimize on it. AppendAttribution is that sentence, applied to attribution itself.