BACK TO BLOG
USE CASESNovember 11, 20269 min read

Affonso With Causality Engine: Check the Partner Revenue

JH

By Joris van Huët

Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs

Published

2026-11-11

The short answer: when Affonso's partner revenue climbs and the store's total does not move with it, look at the two rules before the partners. Affonso, a partner platform that finds affiliates, tracks what they sell and pays them, credits the last affiliate link a buyer clicked, with a cookie that lasts 30 days unless you set another value, per its cookie default article. A personal affiliate coupon overrides the link on a first purchase. GA4 sees only visits and their tags. If your checkout runs through Stripe or your own backend and GA4 records the purchase, take its Attribution paths export to the start page of Causality Engine, which estimates what each channel caused from that file, for a free first finding.

Disclosure: I founded Causality Engine and own it, and this page recommends it. Every claim about it links to Causality Engine's own pages.

What to check first:

  • The coupon override, counted. For example, if 37 of last month's 131 credited sales came through a personal coupon, then 37 ÷ 131 = 28% of partner revenue was assigned with no click on any link, so no GA4 visit will ever say Affiliates for those orders.
  • The tag field you already have. Affonso's Program Tracking Template appends parameters you choose to the landing URL after a referral click, once you turn it on, per the templates article.
  • The one word GA4 reads. Google's default channel group files a visit under Affiliates when the medium is affiliate. Not the source.

Is this pairing for your store?

Partly, and it depends on the checkout. Affonso connects five payment providers directly, Stripe, Paddle, Polar, Creem and Dodo Payments, and its integrations page says the Stripe connection tracks one-time payments and checkout sessions as well as subscriptions. Its help centre also documents a backend route: send a conversion to the API when your provider confirms "a successful payment or order", with an is_subscription field for the kind of sale, per the custom provider guide. So a store selling through Stripe Checkout, or with its own order backend, fits. The list read on 11 November 2026 names no Shopify or WooCommerce connection, and the WordPress guide installs the click script only; on those platforms the API route is developer work.

Affonso and the read, side by side

WhatAffonsoCausality Engine
The productPartner discovery, tracking and payouts (entry)One causal read of a GA4 export (entry)
Credit ruleLast-touch for links; a redeemed personal coupon beats a link on the first paid purchase (attribution article)Each channel's caused share next to last-click (how it works)
Window30 days when data-cookie_duration is left out (cookie default)12 months or more of history reads best (how it works)
Links?atp= by default; ?via=, ?affonso=, ?aff= and ?ref= also work (parameters article)Adds no parameter
UTM tagsOnly through the Program Tracking Template, off until set (templates article)Reads whatever GA4 filed
Link between the twoNoneNone: the input is a GA4 file (integrations)
Price of a checkWithin the planFree first finding, then €99 per read excluding VAT (pricing, checked on 11 November 2026)

Who gets the sale in Affonso

Affonso's attribution article sets the order of precedence:

  1. Links: the last click wins. A's link, then B's, then a purchase with no coupon: B gets it.
  2. A personal coupon beats a link on the first paid purchase, if redeemed at the payment provider and owned by an affiliate in the same program. A program-wide code takes nothing.
  3. The first paid sale locks the customer. Later coupons from others still discount but do not move the customer, and a full refund does not reopen them.
  4. Clicks, leads and trials lock no one.

The window is the script's data-cookie_duration attribute, in days; left out or invalid, it is 30, per the cookie default article. A commission can also sit Pending for a hold period you set per incentive, and a refund during the hold cuts it to zero or pro-rates it, per the hold period article. Set the hold to your returns window.

Each rule is fair for paying partners. None says whether the partner changed what the buyer did.

Making partner visits readable in GA4

The ?atp= parameter means nothing to GA4. An untagged click from a partner's blog lands in Referral; from an app with no referrer, Google's direct traffic page explains, the source is lost and the visit counts as (direct) / (none).

The Program Tracking Template fixes this inside Affonso. Under Affiliate Program, Tracking, Advanced, turn on Program Tracking Template and add key and value pairs; fixed values and macros such as {tracking_id}, {affiliate_name} or {group_name} both work, per the templates article. A setup that GA4 files correctly:

  • utm_medium=affiliate, fixed.
  • utm_source={tracking_id}, so each partner is a source.
  • utm_campaign={program_slug}.

Watch two details in the same article. Its example sets utm_source=affiliate and no medium, which GA4 does not file under Affiliates. And the parameters are added in the browser after the page loads, so whether GA4's first page view records them depends on your tag order: click a test link with ?atp=test and check in GA4's Realtime report that the session shows medium affiliate.

The claim gap, as a worked example

For example, with numbers made up for illustration and no store's results behind them: a shop selling prints through Stripe Checkout takes 1,204 paid orders in November, $86,690 in all. Affonso credits partners with 131 orders and $9,432. Meta's dashboard claims 702 orders, Google Ads 455.

For example, add the claims: 131 + 702 + 455 = 1,288 orders, against 1,204 the store took, so 1,288 - 1,204 = 84 orders are claimed twice or more, with email and organic search not yet counted.

For example, the 131 Affonso orders broken out by GA4's last click: Affiliates 49, Referral 22, Organic Social 26, Direct 23, Email 11. The check: 49 + 22 + 26 + 23 + 11 = 131. The 26 Organic Social orders fit the coupon rule: a partner's code read in a post, typed at checkout after the buyer arrived some other way.

Causality Engine's read sits beside those figures. Its how-it-works page describes every channel shown next to last-click with a data-health score from 0 to 100 and a next step, raise, cut or hold, to be tested in one region first. If Affiliates comes out far below Affonso's 131, test before cutting: shorten data-cookie_duration for one partner group and watch that group's store orders for a month.

A free check before anything is bought

The template makes a by-hand split possible on GA4's free reports. With utm_source={tracking_id} in place, open Traffic acquisition, set Session source as the dimension, filter the medium to affiliate, and read purchases per partner. Set those beside Affonso's conversions per partner for the same month in a spreadsheet:

  • A partner close on both is sending visits that end in orders.
  • A partner far ahead in Affonso is earning on coupons or on cookies set long before the purchase.

That comparison stands on its own.

For the channel-level question, Causality Engine, which I founded, gives the first finding free on the start page, computed in your browser. The full read is €99 once with a refund inside 30 days, per the one-off read page and the pricing page, checked on 11 November 2026.

What the read cannot do here

It reads channels, so Affiliates is one line, not one per partner. It needs history: the one-off read page says no method recovers data that was never collected, and that a channel under 1% causally and on last-click is called too small to act on. A program three months old, tagged for half of that, sits there. And Affonso does the jobs the read never touches: recruiting partners through its Affiliate Finder, payouts, and the Risk Center's self-referral detection.

Affonso's plans step up with revenue from partners, up to $1,000 a month on Launch and up to $10,000 on Growth per the pricing page checked on 11 November 2026, so a coupon that takes the sale from a link-less buyer counts toward that ceiling exactly as a referred click does, and the precedence rule settles the question in the partner column's favour.

See also

FAQ

Can Causality Engine pull conversions from my Affonso account?

No. Nothing connects the two products. The read takes the GA4 Attribution paths export, where Affonso's partners appear only as the visits GA4 recorded (integrations page).

Does Affonso offer first-touch attribution?

Not for links, per its attribution article: links are last-touch, a personal coupon overrides a link on the first paid sale, and the first paid sale then keeps the customer with that affiliate.

Will the tracking template change my affiliates' links?

No. Referral Parameters set the link format affiliates share; the template only adds parameters once the visitor arrives, per the templates article.

TAGS
Causality EngineAffonsoAffiliate AttributionGA4Worked Example

ABOUT THE AUTHOR

I am Joris van Huët, an enterprise interim CMO. 15+ years, 50+ organizations, including ING, P&G, Nestlé, BNP Paribas, WeTransfer and Vinted. I take on innovation projects (venture building, design sprints), agentic marketing (setting up and running AI agents) and hands-on multi-channel work. See the track record.

I wrote and published this with AI assistance, and I answer for it. Claims about my own experience are limited to the track record above, and a statistic links to its source or is labelled as an example. I sell interim and fractional CMO work, which is why this site exists. How this site is written.

Agentic marketing, built for your team

The agents in this article, built into your workflows and handed over to your team: the first one within two weeks.

With Joris van Huët, interim and fractional CMO in Utrecht. From EUR 5,000 a month, monthly cycles, a 30-day exit.