Meta Ads, counted once.

Meta credits itself with a week of clicks and a day of views, and can report one purchase three times. Duct reads Meta Ads, recounts on the window you choose, and checks the result against Stripe.

  • System User token
  • Reads four datasets
  • Read-only
  • Checked Sep 29, 2026
An example answer. Yours is read from your own accounts.
A Duct session: asked why Meta looks cheaper than Google, Duct reads Meta ad sets and insights on three attribution windows beside Google Ads, and recounts purchases on one-day click
Ask why Meta looks three times cheaper. Duct recounts its purchases the way Google counts, one action type and a one-day click, and puts the two side by side.

Ask

Questions you can just ask

  • Is Meta really cheaper than Google, counted the same way?

    Meta Ads + Google Ads
  • Which ad sets bring customers who pay?

    Meta Ads + Stripe
  • How much of Meta's credit comes from views, not clicks?

    Meta Ads
  • Why did a campaign stop getting results?

    Meta Ads

Access

What it reads. What it can change.

What it reads

  • Campaigns, every statusnamestatusobjectivebid strategydaily budgetlifetime budgetspend cap
  • Ad sets and adsnamestatusdaily budgetoptimization goalbid amountattribution setting
  • PerformancespendimpressionsclicksCTRCPCCPMpurchasespurchase valueROAS
  • Pixels and custom conversionsnamelast firedevent typedefault value

Meta Marketing API v26.0 · checked against the fetch code Sep 29, 2026 · read the source

What it can change

Nothing.

Duct has no Meta Ads change operation, so it cannot edit anything in Meta Ads. It can still recommend a change for you to make there.

Knowledge

What Duct already knows about Meta Ads

  1. 01

    One purchase, three action types.

    The same order can arrive as a pixel purchase, a purchase and an omni purchase. Summing them triples the count, so Duct picks one.

  2. 02

    Attribution is a choice, not a fact.

    Meta defaults to seven-day click and one-day view; Google counts the last click. Duct asks Meta for one-day click, seven-day click and one-day view separately, so the platforms can be compared on the same terms.

  3. 03

    Paused history is hidden by default.

    Without a status list Meta returns only active campaigns. Duct asks for every status, so what was switched off last month is still in the audit.

  4. 04

    Budgets come back in cents.

    Meta reports budgets in minor units and spend in whole currency. Read as euros, a €25 daily budget becomes €2,500.

Read the Meta Ads notes Duct's agent works from

Setup

Connect Meta Ads in three steps

  1. 1

    In Meta Business Settings, open Users, then System users, and give one access to the ad account.

  2. 2

    Generate a token for it with ads_read (and business_management, so Duct can list your accounts).

  3. 3

    In Duct, open Connections, choose Meta Ads and paste the token.

Read-only: the token needs ads_read, and Duct has no Meta change operation. A System User token does not expire the way a person's login does.

Keys and tokens are stored encrypted by Duct's hosted API, never in your browser, and you can remove a connection at any time. A self-host build keeps them on your own machine.

FAQ

Meta Ads, answered

Can Duct change my Meta campaigns?

No. Duct has no Meta change operation. It reads campaigns, ad sets, ads, pixels and results, and can recommend a change for you to make in Ads Manager.

Why doesn't Meta's purchase count match Stripe?

Meta credits itself with purchases up to seven days after a click and a day after a view, and can report one order under three action types. Stripe counts money that settled. Duct counts each purchase once, on the window you pick, and reconciles against Stripe.

Why a System User token and not my own login?

A token made from a person's login expires after about 60 days, and the connection stops without warning. A System User token does not expire, so the weekly brief keeps working.

My ad account runs ads for two products. Can Duct keep them apart?

Yes. Give it the part of the campaign names that marks this product, and Duct filters to those campaigns before Meta adds anything up, so the other product never reaches the totals.

Is it free?

Yes. Duct is free with your own model keys or the ChatGPT plan you already have, and the core is MIT licensed. A paid plan later bundles the models; nothing open today moves behind it. What will cost money.