Lattice DevTools
Replaced three separate tools — link shortener, attribution cron, and affiliate platform — in a single week.
The challenge
Lattice had stitched together a stack: Bitly for links, a brittle internal cron job for attribution, and a separate platform for affiliate payouts. Three bills, three logins, and three places for the data to disagree.
What they did
They moved branded links onto their own domain in TrackRev, switched attribution over to the first-party pixel, and stood up an affiliate program in the same dashboard — commissions accruing automatically from real Stripe sales.
The result
One tool, one bill, one source of truth. They onboarded twelve affiliates in a week without anyone writing a payouts script, and retired the internal cron job for good.
“We stopped paying for three tools. TrackRev's link side replaced Bitly, the attribution replaced our internal cron job, and the affiliate program replaced Rewardful — same week.”
How a setup like this is put together
Every story on this page rests on the same four pieces. None of them are specific to Lattice DevTools — this is the whole mechanism, and it is worth understanding before you read anyone’s numbers, including ours.
1. One link per channel, not one link
A tracking link is created per channel with its UTMs already baked in, so the channel is decided when the link is made rather than reconstructed from a referrer afterwards. This is the step that makes everything downstream unambiguous: a click cannot later be argued into a different bucket, because it arrived through a link that only ever belonged to one.
2. A first-party pixel, on your own domain
The click drops a visitor ID and redirects. A script on the destination ties the browser session to that ID and reports pageviews and, when you have it, an email. Because it is first-party and server-side, it survives Safari’s tracking prevention and iOS link-tracking protection — the conditions under which third-party pixels quietly lose a chunk of their data and nobody notices until the numbers stop reconciling.
3. The payment processor as the source of truth
A read-only key pulls settled charges from Stripe, Paddle, Polar or Lemon Squeezy and joins them to the visitor ID. This is the part that separates a revenue number from a conversion count: the figure comes from money that actually cleared, so a refund reverses it and a renewal extends it, automatically. Nothing is counted because a pixel fired.
4. One definition of a sale, shared by every channel
Affiliate commissions, channel revenue and lifetime value all read the same ledger. That is what makes a partner program and a paid campaign comparable at all — most stacks compute them in two different tools against two different definitions, and then spend the quarter arguing about which is right.
The honest caveat: none of this decides anything for you. It makes a channel legible, and the team still has to act on what it shows — cut the spend that is not converting, back the partner who is. Any case study implying the tool did that part is selling you something. For the population-level view rather than one account, our attribution benchmarks publish the ranges.
Other teams, other outcomes
Want results like Lattice DevTools?
Set up TrackRev in 5 minutes and start attributing revenue to the channel that earned it.