The short version
Revenue share sounds great in theory: the agency gets paid when the client makes money, everyone's incentives align, and nobody's guessing about ROI. In practice, most revenue share deals fall apart because the tracking can't handle B2B sales cycles. Affiliate tools built for ecommerce pay on 30-day cookies and checkout conversions. B2B deals close in 90 days (or longer), and the "conversion" is a signed contract logged in a CRM, not a cart page. This article is not a generic pricing essay. It's a walkthrough of how to set up affiliate tracking for agencies so revenue share and performance deals pay on actual closed pipeline, not platform-reported conversions that may never turn into revenue.
Why traditional affiliate tools don't work for agency revenue share
Most affiliate tracking platforms (Impact, PartnerStack, Rewardful, even Shopify's native affiliate app) are built for ecommerce:
- A customer clicks an affiliate link
- A cookie tracks the session for 30–90 days
- The customer buys something on the site
- The affiliate gets credited with a percentage of the transaction
This works when the "conversion" is an immediate purchase logged by the ecommerce platform. It breaks for B2B because:
- The conversion isn't a checkout page. It's a CRM deal that closes weeks or months after the first click.
- Cookie windows are too short. A 30-day cookie doesn't survive a 90-day sales cycle. By the time the deal closes, the cookie is gone and the attribution is lost.
- Contract value isn't recorded in the affiliate platform. The affiliate tool sees a "conversion" (usually a form fill), but it has no idea whether that lead turned into a $5,000 deal or a $50,000 deal. So it can't calculate the actual payout.
If you're trying to run a revenue share or performance pricing model using ecommerce affiliate software, you're either tracking leads (which isn't revenue) or manually reconciling CRM deal data with affiliate link clicks in a spreadsheet every month. Neither is scalable.
What revenue share actually requires (for agencies with B2B clients)
A working revenue share setup has four components:
1. Tracking links that survive long sales cycles
You need a unique link for every client, campaign, or partner. That link needs to attach a source identifier to the lead when they fill out a form, and that identifier needs to stay attached through the entire sales cycle—even if the deal takes six months to close.
Cookies won't do this. Hidden form fields will, as long as the source data gets written into the CRM and mapped forward to the deal record when the lead converts to an opportunity.
2. CRM field mapping that ties deals back to the original source
When a lead becomes a closed deal, the CRM needs to know where that lead came from. Most CRMs (Salesforce, HubSpot, Pipedrive) don't do this automatically. You have to explicitly map the contact's source fields (the ones populated from your tracking links) to the opportunity's source fields.
Without this mapping, every closed deal shows up as "unknown origin," and you can't calculate payouts.
3. A payout calculation based on closed deal value, not lead count
Revenue share is a percentage of revenue, not a flat fee per lead. That means your tracking system needs to know:
- Which deals came from your tracking link
- The contract value of each deal
- The payout percentage agreed in the revenue share contract
If your affiliate tool only tracks "conversions" (form fills) and has no visibility into deal size, you can't automate payouts. You're back to spreadsheets.
4. A reporting dashboard that shows both parties the same numbers
For a revenue share arrangement to work long-term, both sides need to see the same data. The agency needs to see which campaigns drove how much revenue. The client (or partner) needs to see the same report and agree with it.
If the agency is pulling numbers from one system and the client is pulling numbers from another, every payout becomes a negotiation. Transparency kills those arguments before they start.
Set up affiliate tracking for your agency →
How to set up revenue share tracking (step by step)
Here's the structure agencies use when they charge clients on a performance or revenue share basis.
- Tracking linkAgency
One tracking link per client, campaign or partner
The source tag is part of the link, so every visit it sends already says who sent it.
clientsite.com/demo?utm_source=agency-clienta&utm_medium=partner&utm_campaign=q3-revenue-share
- Site visitTrakt
The tracking snippet keeps the source
The visitor lands on the client's site and browses. The Trakt snippet keeps the source in a first-party cookie, so it's still there on later pages and return visits.
- Form submissionTrakt
The source is captured on the lead
Hidden fields fill in at submit, so the lead arrives with its source attached, on every form on the site.
- utm_source
- agency-clienta
- utm_campaign
- q3-revenue-share
- CRM contactYour CRM
The source lands in a custom CRM field
Send it to your CRM through your form's field mapping or an export, into a field like Affiliate Source, not the CRM's default Lead Source.
- Affiliate Source
- agency-clienta
- Closed wonWon
The deal closes with its contract value
A CRM workflow copies the source from contact to deal, so the value your sales team records sits next to the link that started it.
- attributed to
- agency-clienta
- contract value
- $42,000
- Revenue sharePayout
Revenue share calculated per partner
The agreed percentage of closed value, per partner, with the deals behind it for both sides to check.
- rate
- 15% of closed value
- payout
- $6,300
The source tag is written into the link, captured by the form and carried on the record until the deal closes, so the payout is calculated from closed revenue rather than clicks. Example values are illustrative.
Step 1: Create a unique tracking link for each revenue share arrangement
This could be:
- A unique link per client (if you have multiple clients on revenue share)
- A unique link per campaign (if you're tracking performance by channel)
- A unique link per partner (if you're running an affiliate or referral programme for the agency itself)
The link contains a source identifier—usually a UTM parameter like utm_source=agency-clientA or a custom parameter like ref=clientA-q3. That identifier gets captured in the form's hidden fields and written into the CRM.
Most agencies use a UTM builder with saved templates so every link follows the same structure, but if you're running revenue share across multiple clients or partners, you'll want a tool that can generate a unique link per affiliate and track it separately. Trakt's affiliate builder does this—it creates a tracking link, stores the payout terms (percentage, attribution window, qualified deal criteria), and gives each affiliate their own dashboard so they can see their performance without accessing your full client CRM.
Step 2: Ensure forms capture and pass the source identifier to the CRM
When someone clicks your tracking link and lands on the client's site, the source identifier is in the URL. The form needs hidden fields to capture it and submit it along with the lead's name and email.
For agencies running revenue share across multiple client sites, setting up hidden fields manually on every form is tedious. Trakt scans the site automatically and injects hidden fields across every form, so the source data gets captured whether the lead fills out a contact form, a webinar registration, or a content download form.
The key is that the source identifier needs to be written into a custom CRM field (like "Affiliate Source" or "Partner ID"), not overwritten by the CRM's default "Lead Source" logic. Otherwise, when the CRM auto-assigns a lead source based on referrer data or its own attribution model, your revenue share tracking gets lost.
Step 3: Map source data from contacts to opportunities
When a lead converts to an opportunity (or "deal" in HubSpot, "opportunity" in Salesforce, "deal" in Pipedrive), the source data needs to carry forward. This doesn't happen by default in most CRMs. You need a workflow rule that says:
When an opportunity is created from a contact, copy the contact's "Affiliate Source" field into the opportunity's "Affiliate Source" field.
Without this, you'll have leads that are properly tagged, but when those leads turn into closed deals, the deal record won't show where they came from.
Step 4: Set up a revenue report filtered by source
Now that source data is on the deal record, you can pull a report that shows:
- Total deal value where Affiliate Source = "agency-clientA"
- Closed deals where Affiliate Source = "partner-referralB"
- Revenue by source, filtered by date range (so you can calculate monthly payouts)
If your CRM can't do this natively (many can't without custom fields and report views), you'll need a tool that sits on top of the CRM and aggregates revenue by source. Trakt's affiliate dashboard does this—you record each closed deal's value against the lead in Trakt (entered by your sales team or brought over from a CRM export), it stays matched to the original tracking link, and payouts are calculated from the terms you set, with a payout report for each affiliate or revenue share partner.
Step 5: Share the report with the partner (or client, if they're the one paying you)
Transparency is what makes revenue share work long-term. Both parties need to see the same numbers. If the agency says "you owe us $10,000" and the client's internal report says "$7,500," someone's tracking is broken, and the trust is gone.
The simplest way to handle this: give the partner (or client) access to a filtered view of the report. They see their own performance, they can audit the source data, and they can verify the payout before paying it.
Trakt's affiliate portal does this—each affiliate gets a login where they can see the leads they drove, which ones converted to deals, and what their commission is for the period. No shared spreadsheets, no monthly reconciliation calls.
Revenue share vs. cost-per-lead vs. retainer (which one to track)
Here's how the three common agency pricing models differ in what they require from your tracking setup:
| Pricing model | What gets tracked | Tracking complexity | When to use it |
|---|---|---|---|
| Retainer | Activity (campaigns launched, content published) | Low—no revenue tracking needed | When the client values ongoing work more than immediate ROI |
| Cost-per-lead (CPL) | Form fills or MQLs | Medium—track lead volume, not revenue | When the client has a consistent lead-to-close rate and trusts their sales team to convert |
| Revenue share / performance | Closed deals and contract value | High—track from click to closed deal | When both parties want to align incentives and the client has a working CRM |
Revenue share is the hardest to track, but it's also the model that proves value most clearly. If the client made money, you get paid. If they didn't, you don't. There's no ambiguity about whether the marketing "worked."
The catch is that revenue share only works if your tracking infrastructure can handle it. If you're still relying on platform conversion reports (Google Ads says "12 conversions") or manual spreadsheet reconciliation, revenue share pricing will consume more time in reporting than it saves in trust.
How this applies to affiliate programmes (not just client work)
The same tracking structure agencies use for revenue share with clients also works for agencies running their own affiliate or partner programmes. If your agency wants to pay affiliates or referral partners a commission on closed business, you need:
- Unique tracking links per affiliate
- CRM field mapping that ties deals back to the affiliate's link
- Automated payout calculation based on closed deal value
- A partner dashboard so affiliates can see their own performance
Most agencies cobble this together with a spreadsheet, a UTM builder, and monthly manual reconciliation. It works until you have more than five affiliates, at which point the reporting overhead makes the programme unsustainable.
Trakt's affiliate programme builder is designed for this: you define the commission structure, generate tracking links for each affiliate, and let Trakt calculate payouts from the closed deal values you record (manually or from a CRM export). Affiliates get their own portal, you get a payout report, and nobody's arguing about whether a lead "counted."
Common mistakes that break revenue share tracking
Even with the right setup, here are the failure points agencies hit when they run revenue share or affiliate deals:
Mistake 1: Using the CRM's default "Lead Source" field
If the CRM auto-populates "Lead Source" based on referrer data, and you're relying on that field for revenue share tracking, your data will be wrong. Referrer-based attribution often misattributes direct traffic, paid clicks, or email traffic. Use a custom field (like "Affiliate ID" or "Partner Source") that only gets populated from your tracking links.
Mistake 2: Not mapping source data to the opportunity
You've tagged the contact with the affiliate source. Sales converts the contact to an opportunity. The opportunity has no source data. When the deal closes, you can't tie it back to the affiliate. Fix: set up a CRM workflow that copies source data from contact to opportunity on creation.
Mistake 3: Using a 30-day cookie for a 90-day sales cycle
If your tracking relies on browser cookies, and the cookie expires before the deal closes, you lose attribution. Use form-based source capture (hidden fields) instead, which writes the source into the CRM where it survives indefinitely.
Mistake 4: Not defining "qualified deal" criteria up front
Revenue share agreements need to specify what counts as a qualified deal. Is it any closed deal? Or does it have to be a certain size, from a certain industry, or sourced from a specific campaign? Define this before the first payout, or you'll spend more time arguing about edge cases than running campaigns.
How to pitch revenue share to clients who are used to retainers
Clients on retainers like predictability. Revenue share feels riskier to them, even though it's actually less risk (they only pay when they make money). Here's how to frame it:
"We're confident this will drive revenue. So confident that we're willing to tie our fee to your closed deals instead of charging a flat retainer. You pay us a percentage of the contracts we help close. If we don't drive revenue, you don't pay. If we exceed targets, we both win."
The key is to show them the tracking infrastructure up front. Walk them through:
- How you'll tag every campaign
- How source data flows from click → form → CRM → deal
- What the monthly revenue report will look like
- How they'll verify the numbers before paying
If the client sees that the tracking is transparent and automated, revenue share feels less like a risk and more like a better deal than the retainer they're currently paying.
Where to start
If you're running agency work and want to test revenue share or performance pricing, start with one client, one campaign, and a clear tracking path. Set up unique tracking links, ensure forms capture the source, map it through to deals, and report the closed revenue back.
Once you've proven the model works with one client, expand it. For agencies managing multiple revenue share clients or running affiliate programmes at scale, Trakt's affiliate workspace handles the tedious parts—link generation, source capture on every form, payout calculation, partner dashboards—so you can focus on the campaigns, not the spreadsheets.
Related reading
- How agencies prove marketing revenue to B2B clients
- How to manage B2B affiliates at scale
- Closed-loop attribution: connecting first click to closed deals
- Why your CRM lead source shows "direct" even when it shouldn't
Frequently Asked Questions
How is revenue share different from a standard agency retainer?
A retainer charges a fixed monthly fee regardless of results. Revenue share ties your agency's compensation to actual closed deals—you earn a percentage of contract value only when the client makes money. This aligns incentives but requires tracking infrastructure that connects clicks to closed pipeline in the CRM, not just platform conversions.
Can I track revenue share payouts with normal ecommerce affiliate tools?
Not for B2B. Ecommerce affiliate platforms (Impact, PartnerStack, Rewardful) are built for 30-day cookies and instant checkout conversions. B2B deals close in 90+ days, and the "conversion" is a CRM deal record, not a cart page. You need tracking that survives long sales cycles and calculates commission based on contract value pulled from the CRM.
What happens if a lead converts to a deal but the cookie expired?
Cookie-based tracking fails here. Use form-based source capture instead—hidden fields that write the affiliate source into the CRM as soon as the lead submits. That source stays attached to the contact record, gets mapped to the opportunity when sales converts it, and survives however long the deal takes to close.
How do I stop revenue share tracking from breaking when a client's web team rebuilds a form?
Manually configured hidden fields break every time someone edits a form. Use a tool that scans the site automatically and injects source-capture fields across every form, so tracking stays intact even when forms change. That way a rebuilt landing page doesn't kill your revenue share attribution.