Why Fintech Can't Tell Which Ads Actually Drive Deposits (and the Fix)
Babar founded Propaxio after leading growth at Multibank Group, where he ran acquisition for one of the most heavily regulated trading environments in the industry. He now works exclusively with prop firms, fintech brands, and trading coaches - operators who need acquisition that survives compliance scrutiny and scales without burning accounts.

Why doesn't standard server-side tracking work for fintech?
The problem is a mismatch of timing. Standard server-side tracking is built for a funnel where the conversion fires within hours of the click. The fintech funnel takes weeks. Read the Conversions API docs, the Enhanced Conversions guides, the GA4 measurement protocol references - every one assumes a conversion window of hours or, at most, a few days. The identifiers they pass forward (click IDs, hashed emails, browser fingerprints) hold up fine across that window. They do not hold up across the seventeen days it takes a fintech signup to become a funded deposit.
So fintech platforms running the same stack a prop firm or an online store uses get a system that works at signup and falls apart by the time the deposit lands. The top of the funnel looks healthy. The bottom - where the money actually moves - decays stage by stage, until your most valuable conversions have the worst tracking. The platform optimizes toward the conversions it can see, and the deposits it can't see get dumped into "direct" or "organic" or nowhere at all.
The fix is an attribution setup built for the real timeline of the fintech funnel. That means stitching identity at signup, storing every identifier you might need later in your own database, firing the conversion weeks later instead of hours later, and handling the verification gap where most consumer tracking gives up. None of the parts are exotic. The hard part is the discipline to design for the seventeen-day window instead of the seventeen-minute one.
What does the fintech funnel time domain actually look like?
Five stages, each on its own clock. The click is day zero. The signup lands at day zero to one, longer if the prospect checks a comparison page and comes back later. KYC submission - when the buyer uploads documents - happens at day one to three, sometimes later, sometimes within the hour if they're motivated. KYC completion lands between day three and ten, depending on the verification provider, document quality, and how many edge cases the case hits. The funded deposit, the conversion that actually matters, fires between day seven and day twenty-one in most engagements, with a long tail past thirty days for a meaningful share of buyers.
Across that stretch, every standard tracking method breaks down. Browser cookies expire or get cleared. Click identifiers age out of the windows the ad platforms credit. Device IDs change because the buyer signed up on their phone and did KYC on a laptop. The email address stays the same, but the hashed email sent to the ad platform at signup doesn't automatically link to the deposit event two weeks later unless someone built that link. By the time the deposit fires, the trail back to the original click has been cut in three or four places.
In the engagements we've measured, browser-only tracking holds around 86% at signup and drops to roughly 28% by the funded deposit. Server-side tracking, built properly, holds at 94% at signup and decays far more gently - usually to around 81% at the deposit. That gap between 28% and 81% is the whole point: it's the difference between knowing which campaign produced your funded customers and guessing.
Verify before publishing: The stage-by-stage coverage figures in the chart are representative of the pattern we see across fintech audit engagements and consistent with the 54%→92% top-line coverage range used across the cluster. The specific per-stage decay numbers are operational synthesis rather than figures pulled from one named account. Babar should confirm the per-stage breakdown matches his real engagement data before publishing.
How does identity stitching at signup actually work?
This is the piece that holds the whole funnel together over time, and it's the piece most fintech platforms get wrong without noticing. The idea is easy to state and unforgiving to build: at the moment of signup, capture every identifier you might need later and store it against the user record so it survives the next three weeks.
The identifiers worth capturing come in three groups. First, the platform click IDs - Meta's fbc and fbp cookies, Google's gclid, gbraid, and wbraid, TikTok's ttclid, plus the equivalents from any other platform you're spending on. Read these from the browser at signup and write them to the user record, because they're the only thing that lets the ad platforms credit the deposit back to the original campaign weeks later. Second, the hashed customer data the platforms use for matching - email, phone, name, date of birth, in the format each platform expects. Third, session and device context - IP, user agent, landing-page URL - which act as backup signals when the main identifiers weaken.
Capture has to happen at signup specifically, because that's the one moment you reliably have both the click context (still in the browser) and the user's identity (just submitted). After signup, the click context starts to decay - cookies clear, the prospect switches devices, the next session opens with no referral data. Wait until KYC completion or first deposit and the click context is usually gone, so the whole connection you were trying to preserve is lost.
Store it in your own database, not in an analytics tool or a CRM. Analytics tools drop data past their retention window. CRMs aren't built to be identity stores. The user record in your own database is the one place guaranteed to survive the full funnel, so that's where the identifiers have to live until the conversion fires weeks later. In most audits we run, the right identifiers are being captured somewhere - just the wrong somewhere, usually a marketing-analytics tool that purges before the deposit event ever fires.
How does the deferred conversion fire when the deposit lands weeks later?
The deposit event has to fire from your server, using the identifiers you captured at signup, with the event time set to the actual moment of the deposit and the platform click IDs passed through so the ad platform has something to match against. None of this happens on its own. Every piece has to be wired by hand.
The trigger is the deposit event in your core ledger - the same event that moves money into the user's funded account. When it fires, a webhook or a queued job pulls the user record, reads the stored identifiers, and builds a server-side payload for each ad platform the user might have come from. Meta gets a Conversions API event with the fbc and fbp IDs from signup, the hashed customer data, the event source URL, and the real deposit timestamp. Google gets an Enhanced Conversions payload with the gclid and the hashed email. GA4 gets a Measurement Protocol event with the client ID and event parameters. Each payload uses the identifiers that platform actually matches on.
The event time matters more than most teams realize. Send the current timestamp and you're telling the ad platform the conversion happened now - so it credits whatever campaign ran this morning instead of the campaign three weeks ago that actually sourced the user. The right event time is the deposit timestamp, sent as a Unix epoch, landing inside each platform's attribution window. Meta's is currently up to 7 days for click-through but stretches longer for the value-optimization signal, Google's varies by conversion action setting, and GA4's is set per property. Miss the window and the conversion gets recorded but not credited to any campaign - measurement that looks complete and is quietly useless.
Verify before publishing: The specific attribution-window mechanics here reflect publicly documented behavior of each platform as of early 2026, but ad-platform attribution windows shift and the exact current values should be confirmed against the platforms' own documentation at the moment of publication. Babar should also confirm whether the webhook-vs-queued-job pattern matches the implementation he typically recommends.
What about the multi-step events between signup and deposit?
They're useful as optimization signal, even though they aren't the conversion you're billing against. The KYC submission event, the KYC completion event, and the first-deposit-intent event each carry signal the ad platforms can use to steer campaigns toward funded users without waiting the full seventeen days for the deposit. Passing them through server-side gives the optimization algorithms early feedback they wouldn't have otherwise.
But there's a tradeoff to name. Pass too many of these as conversions and you train the platform to chase the cheaper, earlier event instead of the deposit you actually care about. Most fintech platforms do best by setting the funded deposit as the primary conversion and passing KYC submission and completion as custom events - they reach the platform and inform the model, but they don't count as conversion volume in the bidding. Done right, this gives the platforms plenty of signal to optimize quickly without pulling them off target.
Done wrong, the platforms start treating KYC completions as a stand-in for the deposit. Cost-per-funded-deposit climbs even as cost-per-KYC-completion falls. This is the most common failure we see in fintech accounts that are otherwise set up correctly: too many events firing as conversions, the bidding algorithm chasing the wrong one, and the deposit economics quietly sliding while every early metric looks better. The fix is discipline about which events count, not more events.
What does the rollout actually look like in sequence?
Four phases, each finishing one change before the next starts. Skip a phase or rush them together and you usually knock your running campaigns off balance - the exact trap most teams fall into when they treat this as one big sprint instead of a staged rollout.
Phase one is the identity-capture layer at signup, deployed alongside the existing pixel without changing anything the ad platforms see. You start capturing and storing every identifier you'll need later, but no new conversion events fire yet. This is observation-only. Let it run a week or two to confirm the identifiers are captured cleanly and the storage layer works. Coverage usually climbs from the 54% pixel-only baseline to roughly 71% as the captured identifiers start enriching later pixel fires.
Phase two is the funded-deposit Conversions API event, fired server-side against the captured identifiers and deduplicated against any existing pixel event using the shared event ID convention the ad platforms publish. Deduplication is critical here - without it, the deposit gets counted twice when both the pixel and the server-side event fire, and your attribution ends up worse than the pixel-only baseline, not better. Coverage at the end of phase two usually reaches around 83%.
Phase three wires the intermediate events - KYC submission and completion - as custom events that feed the optimization model without inflating conversion volume. This is where optimization starts to compound. Coverage holds around 88% as the signal gets denser.
Phase four handles GA4 reconfiguration and the Enhanced Conversions equivalent for Google, plus equivalents for any other platforms you spend on. Coverage settles around 92%, which is the practical ceiling for fintech in our experience - pushing higher costs more than it returns.
That 54% → 71% → 83% → 88% → 92% climb is the same path the platform's rebuild followed, and it took roughly a quarter end to end. Your running campaigns stay live the whole time, because each phase deploys next to the existing measurement layer before replacing it. This sequencing is the difference between a rebuild that ships and one that gets abandoned halfway through when performance dips and someone panics.
Verify before publishing: The four-phase rollout sequence and the per-phase coverage progression reflect the implementation pattern we use, but the exact pacing varies by engineering capacity and product complexity. Babar should confirm whether the quarter-long timeline matches what he typically scopes against, since this number will get quoted back during discovery calls.
The architecture isn't exotic. The time domain is.
None of this needs a technology that didn't exist a year ago. The Conversions API has been stable for years. Enhanced Conversions is well-documented. Identity stitching at signup is something a solid backend engineer can ship in a sprint. What separates the fintech platforms that get this right from the ones that don't is discipline: building the whole thing for a seventeen-day funnel instead of a seventeen-minute one - capturing identifiers the moment they're available, storing them where they'll survive the window, firing the conversion at the right time with the right payload, and resisting the urge to count early events as conversions just because they fire sooner.
The platforms that build for the long funnel measure what really happened. The ones that build off the standard template measure the first day and a half and guess at the rest. The gap shows up in deposit economics, in fundraise diligence, and in every model the company builds on its acquisition data. It's the single highest-leverage piece of infrastructure most fintech platforms still aren't doing.
Find out what your fintech attribution loses across the multi-week window
Book a free 45-minute Growth Strategy Session ($2,500 value). We'll audit your current measurement setup against the real timeline of your funnel, find where coverage drops between signup and funded deposit, and map the identity-stitching and server-side rebuild that holds attribution together across the seventeen-day window. No obligation, no gated case studies.