---
title: "Meta Ads Revenue Tracking Without Cookies — Sealmetrics"
description: "Track Meta Ads campaigns, ad sets and creatives in Sealmetrics with UTM parameters, measured without consent loss. Setup, parameters and what it does not do."
summary: "Sealmetrics works with Meta Ads through the landing page URL. You add UTM parameters to every ad in Meta's URL Parameters field: utm_source set to facebook or instagram, utm_medium to paidsocial or cpc, utm_campaign to the campaign, and utm_term and utm_content to the ad set and the ad. Sealmetrics reads those values…"
canonical_url: "https://sealmetrics.com/integrations/meta-ads/"
lang: "en"
author: "Rafa Jiménez"
author_url: "https://sealmetrics.com/authors/rafa-jimenez/"
date_modified: 2026-09-15
content_type: "implementation"
owner: "engineering"
llm_priority: "critical"
last_verified: "2026-09-15"
source: https://sealmetrics.com/integrations/meta-ads/
publisher: Sealmetrics
---

Integration · Meta Ads

# Meta reports what it credits. *Measure what arrived.*

Sealmetrics does not send conversions to Meta and does not replace the pixel or the Conversions API: bidding keeps running on them. What it does is read the UTMs of every Meta ad click from the landing page, whether or not the visitor accepts the banner, and credit conversions and revenue to the campaign, ad set and ad that brought the session, so Meta's reported results can be set beside a figure Meta does not produce.

URL parameters with UTMs · Facebook and Instagram · no conversions sent to Meta · no cookies

By [Rafa Jiménez](https://sealmetrics.com/authors/rafa-jimenez.md) · Published 15 September 2026

What each click should carry Set in the ad

01 · **utm_source** · **facebook or instagram**

02 · **utm_medium** · **paidsocial or cpc**

03 · **utm_campaign** · **The campaign**

04 · **utm_term · utm_content** · **Ad set · ad or creative**

Read server-side from the landing URL · no cookie · no identifier

Quick answer

Sealmetrics works with Meta Ads through the landing page URL. You add UTM parameters to every ad in Meta's URL Parameters field: utm_source set to facebook or instagram, utm_medium to paidsocial or cpc, utm_campaign to the campaign, and utm_term and utm_content to the ad set and the ad. Sealmetrics reads those values server-side from the URL of each tagged visit, without cookies, and credits each conversion and its revenue to the campaign, ad set and ad of the session in which it happens, by last click. Without UTMs, paid and organic traffic from Meta blend together, because a Meta referrer alone does not say whether the click was an ad. Sealmetrics does not send conversions to Meta, does not replace the pixel or the Conversions API and does not store ad spend, so Meta keeps optimising on its own data.

Two views of the same ad set

## Meta reports the results it credits. *Sealmetrics reports the sessions that arrived.*

Neither is wrong. They count different things, and reading the gap between them is the point of running both.

| Question | Meta Ads Manager | Sealmetrics | Why they differ |
| --- | --- | --- | --- |
| How many people came? | Link clicks | Entrances carrying the ad's UTMs | Clicks that never load the page, in-app browsers closed early, parameters lost in redirects |
| How many converted? | Results credited under the ad set's attribution setting | Conversions in sessions that arrived from the ad | Credit after views and engagement, modelled conversions, duplicate pixel and server events |
| Who gets the credit? | Meta's own ads only | The channel of the converting session, across every channel | Meta does not see Google or email; Sealmetrics does not see views |
| Which campaign, ad set and ad? | Names and IDs in Ads Manager | Whatever the UTMs carry | Only what the URL parameters pass |
| Paid or organic? | Paid only | Paid when the UTMs say so | Without UTMs, ad clicks and organic posts from Meta look alike |
| What did it cost? | Amount spent | Not stored | Spend is joined from Meta when you calculate ROAS |

Why Meta and your CRM or order system never match, and a weekly method to reconcile them, is in [Meta Ads conversions vs CRM](https://sealmetrics.com/blog/meta-ads-conversions-vs-crm.md). The attribution rule is [last-click attribution](https://sealmetrics.com/glossary/last-click-attribution.md) within the session.

What judging Meta on its own report hides

## Meta optimises *the view it is given.*

That is what the pixel and the Conversions API are for. The risk is using the same figure to decide how much Meta should get against every other channel.

01

### Views and engagement count as results

Depending on the ad set's attribution setting, Meta credits conversions after an ad was seen or engaged with, not only clicked. Those orders are real, but nothing in the visit that produced them points to Meta.

02

### Consent-gated analytics shrinks social

On Incapto's Shopify store, Sealmetrics recorded 133% more organic social traffic than GA4 and 37–52% more from paid campaigns over the same days. Judged in GA4, social starts from a far smaller base than the one that exists; the mechanism is in [Consent Mode: measured vs modelled](https://sealmetrics.com/blog/consent-mode-measured-vs-modelled.md).

03

### Untagged ads disappear into organic

Meta traffic often arrives with little referrer information. Without UTMs, Sealmetrics cannot reliably separate an ad click from an organic post, so campaign, ad set and creative reporting is lost.

Set it up

## URL parameters *on every ad.*

The work is in Meta Ads Manager, not in Sealmetrics. Agree a naming convention first, because the reports will only be as readable as the names you pass.

1. Agree the naming convention

   Decide the values once: utm_source facebook or instagram, utm_medium paidsocial or cpc, and lowercase campaign, ad set and ad names without spaces. Consistent names are what make the reports comparable month to month.

2. Add the URL parameters to each ad

   In Meta Ads Manager, open the ad, find the URL Parameters field under the destination and add utm_source, utm_medium and utm_campaign, plus utm_term for the ad set and utm_content for the ad or creative. Meta's parameter builder can insert campaign, ad set and ad names dynamically.

3. Check the resolved URL

   Preview the ad and open its link, or use Meta's URL preview, and check that the landing page URL carries the parameters with real names filled in, not placeholders.

4. Confirm the hit in Sealmetrics

   Load a tagged URL on your site. The Last hit timestamp in Overview should read seconds ago, and the Sources report should show your medium, facebook or instagram as the source, the campaign under Campaigns and the ad set under Terms.

5. Check redirects and parameter names

   Open a live ad link and look at the address bar after every redirect: the parameters must still be there. If your team uses other parameter names, map them in Settings → Sites → UTM Mappings instead of retagging every ad.

The parameters

## Paste into *URL Parameters.*

The UTM values follow the conventions in the Sealmetrics documentation. The placeholders in double braces are Meta dynamic parameters; if your account uses different names, build the string with Meta's own parameter builder and keep the same UTM keys.

### Facebook placements

Campaign, ad set and ad names passed dynamically, with facebook as the source.

```
utm_source=facebook&utm_medium=paidsocial&utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.name}}
```

### Instagram placements

The same pattern with instagram as the source, for ads you report separately.

```
utm_source=instagram&utm_medium=paidsocial&utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.name}}
```

### Resolved URL

The structure from the Sealmetrics documentation, for a smoke test without waiting for a real click.

```
https://yourwebsite.com/?utm_source=facebook&utm_medium=cpc&utm_campaign=summer_sale&utm_term=running_shoes
```

What stays, what changes

## Meta keeps optimising. *The budget decision moves.*

Nothing in the Meta account is replaced. What changes is which figure decides how much Meta gets against the other channels.

### Pixel and Conversions API

Stay: conversions for Meta's delivery.

Meta keeps optimising on the events it receives, behind your consent setup. Sealmetrics does not send it any.

[Meta Ads conversions vs CRM](https://sealmetrics.com/blog/meta-ads-conversions-vs-crm.md)

### Paid social manager

Ad sets and creatives on measured revenue.

utm_term and utm_content carry the ad set and the ad, so revenue per creative can be read without consent loss.

[Campaign revenue attribution](https://sealmetrics.com/use-cases/revenue-attribution.md)

### CMO and finance

Meta against every other channel.

One last-click rule for all traffic, checked against real orders, instead of each platform's own credit.

[One number for marketing and finance](https://sealmetrics.com/use-cases/single-source-of-truth.md)

### Analysts

Spend and revenue in one table.

Join Meta spend with Sealmetrics revenue on utm_campaign in BigQuery, or ask an AI assistant connected to both.

[BigQuery export](https://sealmetrics.com/integrations/bigquery.md)

Measured on paid social

> “The value is in optimising budget and investment. You shift toward a channel or strategy you were not seeing before.”
>
> Eduardo Martin · Analytics & Campaigns · Dreamplace Hotels

Dreamplace checks the sales Sealmetrics attributes against its CRM total, and Meta and Google were the first budgets it moved. Incapto's parallel run shows how much smaller social looks when it is measured only on consenting visitors.

**15–20%**

more sales attributed than the previous tool; Meta and Google were the first budgets moved

Dreamplace Hotels [Read the case](https://sealmetrics.com/case-studies/dreamplace-hotels.md)

**+133%**

more organic social traffic recorded by Sealmetrics than by GA4 over the same days

Incapto [Read the case](https://sealmetrics.com/case-studies/incapto.md)

**62%**

paid campaigns' share of traffic measured without consent loss, against 50% in GA4

Incapto [Read the case](https://sealmetrics.com/case-studies/incapto.md)

What it does not do

## A measurement layer. *Not a delivery signal.*

These are deliberate. The same pattern for Google is on [Sealmetrics for Google Ads](https://sealmetrics.com/integrations/google-ads.md).

### — No conversions sent to Meta

Sealmetrics does not replace the pixel or the Conversions API, so Meta's delivery and optimisation keep running on the events it receives.

### — No spend import

Amount spent is not stored in Sealmetrics. Join it from Meta in a spreadsheet, in BigQuery or through an AI assistant connected to both.

### — UTMs are required

Without them, paid and organic Meta traffic blend, and campaign, ad set and creative reporting is not available.

### — No view-through

Last click per session: ads that were seen but not clicked, and earlier sessions, get no credit.

### — Names are whatever you pass

Reports show the values in the URL. Inconsistent or default names in Meta make the reports hard to read.

### — Parameters must reach the page

Anything dropped by a redirect or a link shortener before the tracker fires is gone for good.

Common Meta Ads questions

## Before you tag *your ads.*

### How do I track Meta Ads campaigns in Sealmetrics?

Add UTM parameters to every ad in Meta Ads Manager's URL Parameters field: utm_source facebook or instagram, utm_medium paidsocial or cpc, utm_campaign for the campaign, and utm_term and utm_content for the ad set and ad. Check the resolved URL, load it on your site and confirm the values in the Sources report.

### Does Sealmetrics send conversions to Meta or replace the Conversions API?

No. Sealmetrics does not send conversions to Meta, so it does not affect delivery or optimisation. Keep the Meta pixel and the Conversions API for Meta, and use Sealmetrics to measure revenue by campaign, ad set and ad without consent loss when you decide budget between channels.

### Why does Meta report more conversions than Sealmetrics?

Meta credits results under each ad set's attribution setting, which can include conversions after a view or engagement, and it models part of what it cannot observe. Duplicate pixel and server events inflate it further when they do not share an event ID. Sealmetrics counts conversions in sessions that arrived from the ad.

### Can Sealmetrics tell paid from organic Facebook and Instagram traffic?

Yes, when the ads carry UTMs. Meta traffic often arrives with little referrer information, and Meta also adds click identifiers to organic links, so without UTMs Sealmetrics cannot reliably separate an ad click from an organic post.

### Can I see revenue by ad set and creative?

Yes, if utm_term and utm_content carry the ad set and the ad or creative. Sealmetrics reports conversions and revenue by those values, and the BigQuery export includes utm_term and utm_content on every conversion row.

### How do I calculate Meta Ads ROAS with Sealmetrics?

Take amount spent per campaign from Meta and revenue per utm_campaign from Sealmetrics for the same dates, timezone and currency, and divide. Compare it with the ROAS Meta reports: Meta's figure is for its own optimisation, the measured one for budget between channels.

### Does iOS affect what Sealmetrics measures from Meta ads?

Sealmetrics reads UTMs from the landing page, so a tagged click from an iOS device is measured like any other visit. Meta's own reporting relies partly on modelling where it cannot observe conversions, which is why the Sealmetrics prompt library compares Meta and Sealmetrics conversions by device.

### Does tagging Meta ads require cookie consent for Sealmetrics?

The UTMs travel in the URL and Sealmetrics sets no cookie to read them. The Meta pixel still needs consent, and whether your analytics configuration is exempt depends on your national authority's criteria.

Meta Ads review

## Tag your ads. *See revenue by ad set and creative.*

Book 30 minutes with the founder. We agree the naming convention, confirm the first tagged hits and set Sealmetrics revenue beside your Meta spend for last month.
