Affirm closes the sale. Your ads get the credit wrong, or none at all.
Affirm's default checkout sends the shopper to Affirm's site to apply, then back to your confirmation URL only if they finish. That round trip is where the ad click goes missing: GA4 can hand the sale to affirm.com, and a thank-you-page tag keeps counting loans that are later voided or refunded. We save the click ID on your order before Affirm opens and report only captured Affirm charges, so Google Ads and Meta bid toward the rings, hot tubs and collision repairs that actually got financed.
Free30 minutesNo obligation
Affirm · what breaks
What goes wrong when Affirm closes the sale
- 01
"GA4 says Affirm sold it, not our ads"
The shopper leaves for Affirm's site to apply and comes back from it after checkout. Unless affirm.com is listed as an unwanted referral, GA4 can credit the financed sale to Affirm, and the Google or Meta campaign that paid for the click looks like it sold nothing, so it's the one you cut.
- 02
"Meta says we sold more than Affirm's records show"
A thank-you-page tag fires when the shopper lands on your confirmation URL, before your server has authorized the checkout and long before anything is captured. Voids and refunds never flow back, so return on ad spend stays inflated and bidding chases buyers who never paid.
- 03
"Our showroom Affirm sales count for nothing"
In-store, customers scan a QR code or text a store code, apply on Affirm's own landing page and pay with a virtual card at your terminal. The ad that drove the jewelry or kitchen showroom visit gets zero credit.
- 04
"We added Affirm's analytics code and nothing changed"
Affirm's confirmation-page analytics sends order data to Affirm, not to your ad accounts, and Affirm says its Enhanced Analytics plugin can no longer be used as of March 2025. Neither tells Google Ads or Meta which campaign sold the order.
Affirm · the fix
What changes — Affirm
Financed sales credited to the right campaign
The click ID is written to your own order record, next to Affirm's order_id, before the shopper leaves for Affirm. Each captured charge then matches the Google or Meta click that started it, whatever referrer the return trip carries.
Bidding trained on captured money
Checkout opens become a secondary signal. Only captured charges report as the purchase, at the captured amount.
Showroom financing back in the picture
In-store Affirm sales are uploaded from your records and matched to earlier ad leads where you collected the customer's email or phone.
Affirm · architecture
What Affirm actually lets you hook into
Affirm's payments docs describe checkout, transaction and webhook hooks. The pages we reviewed describe no Google Ads, GA4 or Meta connection, so every ad-platform signal has to come from your side.
- 1
The checkout object and confirmation URL
You pass an order_id and a user_confirmation_url; after a successful checkout Affirm sends a checkout_token there by POST or GET. Redirect is the default, and modal is an option set in the checkout metadata.
- 2
Transactions API
Authorize, capture, void, refund and read endpoints, with order_id and reference_id for reconciling against your own records.
- 3
Checkout webhooks, set up by Affirm
Events for opened, approved, not_approved and confirmed. Only confirmed is guaranteed; merchants can't add endpoints themselves, so we confirm with Affirm support what your account has.
- 4
In-store POS checkout
Your POS triggers a checkout that Affirm sends to the customer by text or email, then Affirm posts a checkout ID to your server to authorize.
- 5
Affirm Landing Page and virtual card
QR or text-code signage, an Affirm-branded application and a virtual card at the terminal. No POS integration, so the only marker is the Affirm BIN or a POS flag you add.
Affirm · diagnose
Where Affirm tracking breaks, in diagnostic order
Start with what gets counted as a sale, because a purchase tag on the confirmation page counts loans your server hasn't authorized or captured yet.
- 01
Find what fires the purchase event
If it's the confirmation page load, unauthorized and later-voided loans are counted.
- 02
Trace one ad click through the Affirm round trip
Check out from an ad-tagged URL, then open the order carrying the Affirm order_id and see which source GA4 gave the session.
- 03
Line captured charges up against platform purchases
Order by order, at the captured amount, not the cart total.
- 04
Check how voids and refunds are handled
Did any ad platform hear about a refunded transaction?
- 05
Separate in-store from online
Flag showroom sales by POS checkout or Affirm BIN.
Affirm · prove
The QA evidence — Affirm
Run with Affirm's sandbox for the plumbing and a real captured order on your live site for the proof.
Source of truth
Affirm transaction records: authorized, captured, voided and refunded transactions by order_id and amount
- A test checkout from an ad-tagged URL, with the click ID confirmed on the order before Affirm opens.
- The GA4 session on that test order credited to the ad, not to affirm.com.
- No purchase reported for a checkout that was opened, declined or abandoned.
- One purchase per captured charge in Google Ads and Meta, with a shared event ID and the captured amount.
- A voided authorization and a refunded order reversed at every destination.
- Every captured Affirm order in a closed month accounted for by order_id.
- Rechecked after 30 days, and again whenever your checkout or Affirm plugin changes.
Affirm · free audit
What we check in the free audit
- Find what fires the purchase event
- Trace one ad click through the Affirm round trip
- Line captured charges up against platform purchases
- Check how voids and refunds are handled
- Separate in-store from online
Checked against
Affirm transaction records: authorized, captured, voided and refunded transactions by order_id and amount
Free30 minutesNo obligation
Affirm · when not to buy
When you don't need this for Affirm
Plenty of Affirm merchants should spend nothing here.
- If Affirm is a handful of orders a month and most sales are paid by card, fix card purchase tracking first.
- If you don't run Google or Meta ads, Affirm's own reporting is enough.
- If nearly all your Affirm volume comes from the QR signage in the store and you collect no customer details before the visit, there's nothing to match an ad click to, and we'll say so.
- If your conversions already reconcile with Affirm's captured orders within a few percent, leave it alone.
Affirm · what we deliver
The event map on Affirm
Affirm checkout opened
Fired on your page before the redirect or modal, with the click ID written to the order record that carries Affirm's order_id.
Approved (where Affirm shares it)
A secondary signal from Affirm's approved webhook event, which only arrives for customers who opted into data sharing. Not_approved is excluded everywhere.
Loan confirmed and authorized
Your server authorizes the checkout token from the confirmation URL or confirmed webhook. Logged, not yet revenue.
Charge captured
The primary purchase conversion, sent server-side to Google Ads and Meta with the captured amount and a shared event ID.
In-store financed sale
From POS-initiated checkouts or Affirm-BIN virtual card transactions, uploaded offline and matched by customer details, never by guesswork.
Void or refund
Pulled back out of Google Ads and Meta when Affirm's transaction record shows the loan voided or refunded.
Written guarantee
95%+ tracking accuracy
Measured against Affirm transaction records: authorized, captured, voided and refunded transactions by order_id and amount. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Affirm questions, answered
Not that Affirm's payments documentation describes. Financed sales reach Google Ads and Meta only if your own backend sends them, using the order_id and transaction data Affirm gives you.
No. An approval can still be abandoned, and the approved webhook only arrives for customers who opted into data sharing. Count the captured charge; keep checkout opens as a secondary signal.
Because the shopper comes back from Affirm's site after checking out. Google's help names third-party payment processors as the reason to list a domain as an unwanted referral; we do that and also save the click ID on your order before the redirect, so ad credit doesn't hang on the referrer.
Partly. POS checkouts carry your order ID and QR-code sales show up as an Affirm virtual card; either can be uploaded when the customer's email or phone matches an earlier ad lead. Bankruptcy and family law firms or laser clinics usually start from a lead form, which makes that match easier.
Not for ads. Its confirmation-page call reports to Affirm, and Affirm says the Enhanced Analytics plugin can no longer be used as of March 2025.
More on Affirm
- Affirm → Google AdsConnecting Affirm to Google Ads
- Affirm → MetaConnecting Affirm to Meta Conversions API
- Affirm → GA4Connecting Affirm to GA4
RELATED GUIDES
Booking tools beside Affirm, and what their bookings feed
- Alphaeon CreditYour Alphaeon patients finance the procedure. Your ad accounts only saw a form fill.
- HearthHearth says the loan funded. Your ads still think it was a bounce.
- GoodLeapGoodLeap funds the job at the kitchen table. Your ads only ever saw the form fill.
- LawPayGoogle Ads counts consultation calls. LawPay knows which callers paid a retainer.
- Climb CreditClimb Credit funds the student, but your ads only saw an Apply click
- Prosper Healthcare LendingPatients finance surgery through Prosper. Your ads only see the consult form.
- SunbitYour Sunbit deals close at the counter. Google Ads and Meta never find out.
- InstaMedYour ads can't tell a new patient from an old bill paid on InstaMed. We fix that.
Free · 30 min
Get your Affirm sales back into your ads
Free30 minutesNo obligation
