DocsBuyersPay Per Conversion (CPA)

Pay Per Conversion (CPA)

How to bill a destination only when a lead converts instead of at delivery. Set a cost per retainer, per signed case, per booked install, or per closed sale, lock the payout at delivery, and let the destination confirm the conversion from the Partner Portal or straight from their CRM.

Last updated:

Most lead sales are billed at delivery: the destination (the buyer who pays you) gets the lead, and they owe you for it right then. Pay Per Conversion flips that. The lead is delivered at $0 and you get paid only if it turns into something real, like a signed retainer, a booked install, a bound policy, or a closed sale. This is often called CPA, and in legal campaigns it is usually called cost per retainer or CPR.


When to use it

  • Your destination will not pay per lead, but will happily pay a large amount for an outcome. A law firm that says no to $60 a lead may say yes to $2,500 a signed case.
  • Lead quality varies a lot and you would rather share the risk than argue about returns.
  • You are selling to a destination that already reports outcomes in their own CRM, so confirming a conversion costs them nothing.

Pay Per Conversion is set per destination, not per campaign. One campaign can have some destinations paying $50 a lead at delivery and others paying $2,500 a conversion. They compete for the same leads normally.


Turn it on for a destination

  • Open the campaign, find the destination in the routing table, and click Edit.
  • Set Payout Type to Per Conversion (CPA).
  • Fill in Payout Per Conversion. This is what you get paid when a lead converts.
  • Optional: add pricing rules if the amount changes based on the lead, for example a different price per state.
  • Save. Delivery, caps, filters, and schedules all keep working exactly as before.

The payout is locked onto the lead at delivery. If you raise your price later, leads already sitting in the destination's pipeline still convert at the price that was in effect the day they were delivered, so a price change never rewrites your past P&L.


What happens when a lead is delivered

  • The lead is delivered normally and marked Accepted.
  • Revenue is $0 for now. The lead detail page shows a Per Conversion badge with the amount it will be worth if it converts.
  • It counts against the destination's caps, because caps control how much volume they can handle, not how much they owe you.
  • Your supplier cost is recorded as usual, so an unconverted lead correctly shows as a loss until it converts.

How a conversion gets reported

This is the step people forget, and it is the one that decides whether you ever get paid. A per-conversion lead sits at $0 forever until somebody says it converted. Set up at least one of these three before you send real volume.

  • The Partner Portal. Give the destination a portal login and they mark the lead Converted themselves. They can backdate it to the day the deal actually closed so your reporting lines up with theirs. See Partner Portal.
  • Their CRM, automatically. Their CRM posts back to Lead Distro AI the moment the deal closes. This is the best option for a destination with any real volume, because nobody has to remember to do anything.
  • You mark it. Open the lead and set the outcome to Converted. Fine for a handful of deals, and useful as a backstop.

Setting up the CRM postback

Every destination gets its own webhook secret and a shareable setup page. Send them the link and their developer can wire it up without ever logging into your dashboard. One URL covers all of your campaigns with that destination.

curl -X POST https://www.leaddistro.ai/api/webhooks/buyer-outcome \
  -H "Content-Type: application/json" \
  -H "X-Buyer-Secret: your_destination_webhook_secret" \
  -d '{
    "lead_id": "<lead-uuid-from-the-original-delivery>",
    "outcome": "converted",
    "conversion_revenue": 2500,
    "lead_value": 40000,
    "note": "Retainer signed",
    "idempotency_key": "crm-event-12345"
  }'
FieldWhat it is
outcomeconverted when the deal is real, not_qualified when they reviewed it and passed. Leave it out entirely to send revenue or a note without changing the outcome.
lead_idThe lead's ID from the original delivery. If their system never stored it, they can match on phone or email plus campaign_id instead, or on a custom field like a click ID.
conversion_revenueOptional. What you get paid for this deal. Send it when the amount varies case by case, and it overrides the fixed payout on file. Leave it out to use your configured price.
lead_valueOptional. What the deal is worth to them, for example the case value. Stored for reporting only. It never affects what you get paid.
idempotency_keyOptional but recommended. Stops a CRM retry from being processed twice.

conversion_revenue is your money. lead_value is theirs. Mixing the two up is the single most common setup mistake, and it quietly inflates your revenue reporting.

Full field list, every lead matching option, and response codes are in the API Reference.


If a deal falls through

Change the outcome back to Pending or Not Qualified and the revenue backs out automatically. Your P&L updates, and the lead goes back to being worth $0. Returns work the same way they always have, including your return window, so a converted lead can still be returned later. See Lead Returns.


Signed retainers for legal campaigns

Cost per retainer is the most common use of Pay Per Conversion, so here is the whole thing end to end. Motor vehicle accident campaigns are the usual example, but this setup is identical for mass tort, workers compensation, or any campaign where a law firm pays for signed cases instead of leads.

  • One destination per firm. Each firm gets its own destination, with Payout Type set to Per Conversion and the payout set to your cost per retainer for that firm.
  • Different rate per state? Add pricing rules on the destination instead of creating extra destinations, for example Florida at $2,500 and Georgia at $3,250. The right rate is picked and locked when the lead is delivered.
  • Leads flow in and out normally. Your ad forms, funnels, or API feed the campaign, and the campaign delivers to the firm or to your call center. Nothing is billed yet.
  • Your call center works the lead and gets the retainer signed.
  • The firm confirms the retainer. Either they mark it Converted in the Partner Portal, or their case management system posts back automatically. That is the moment revenue lands and the case shows up in your P&L.
StageLead statusYour revenue
Ad form submittedNew$0
Delivered to the firmAccepted, marked Per Conversion$0, payout locked
Call center signs the retainerAccepted$0, still unconfirmed
Firm confirms the retainerAccepted, ConvertedYour cost per retainer
Case turns out to be a dudAccepted, Not Qualified$0, reversed

If you are also recording the warm transfer to the firm on a tracking number, keep that call campaign priced at $0. Calls are billed on connection and duration, not on a later outcome, so if you price the transfer call as well you will bill the same case twice. Let the call campaign do recording and attribution, and let the leads campaign do the money. See Warm Transfer.


Things to know before you go live

  • Conversions record revenue, they do not charge a card. A confirmed conversion updates your revenue and your P&L. It does not debit a prepaid wallet, so per-conversion money is still invoiced and collected outside the app.
  • Do not mark conversions with bulk edit. Changing the outcome on many leads at once writes the outcome without running the billing steps, so no revenue is recorded. Mark them one at a time, or let the destination report them.
  • Nothing expires on its own. A lead stays open until somebody reports on it. There is no timer that converts or closes a lead automatically, so if a destination goes quiet you need to chase them.

Frequently Asked Questions

How do I get paid per signed retainer instead of per lead?
Open the campaign, edit the destination, and set Payout Type to Per Conversion (CPA). Enter your cost per retainer as the Payout Per Conversion. Leads then deliver at $0 and the payout is locked onto each lead. When the firm confirms a retainer, in the Partner Portal or by posting back from their case management system, the revenue lands on that lead and flows into your P&L.
What if the retainer price is different in each state?
Add pricing rules on the destination rather than creating a separate destination per state. Set a rule per state, for example Florida $2,500 and Georgia $3,250. The rate is evaluated against the lead's data and locked onto the lead when it is delivered, so a later price change never re-prices leads already in the pipeline.
What happens if a case falls through after it was marked converted?
Change the outcome from Converted back to Pending or Not Qualified. The revenue is reversed automatically and the lead returns to $0, and your P&L updates. If the destination wants the lead formally returned instead, the normal returns process still applies, including your return window.
Can I have per-lead and per-conversion destinations in the same campaign?
Yes. Payout Type is set per destination, not per campaign. One destination can pay $50 at delivery while another pays $2,500 on conversion, and both compete for the same leads through your normal routing rules.
Does marking a lead converted charge the destination automatically?
No. Confirming a conversion records the revenue on the lead and updates your reporting, but it does not debit a prepaid wallet or run a card. Per-conversion amounts are invoiced and collected outside the app today.
How does a destination tell Lead Distro AI that a deal closed?
Three ways. They mark it Converted in the Partner Portal, optionally backdating it to the real close date. Their CRM posts to https://www.leaddistro.ai/api/webhooks/buyer-outcome with their webhook secret in the X-Buyer-Secret header. Or you mark it yourself on the lead. Each destination has a shareable setup page you can send to their developer so they never need a login.
What is the difference between conversion_revenue and lead_value?
conversion_revenue is what you get paid for that conversion, and it sets the lead's revenue, overriding the fixed payout on file. lead_value is what the deal is worth to the destination, for example the value of the case, and it is stored for reporting only. It never affects billing.

If you have any questions, send us an email at support@leaddistro.ai