Understand Icodrip's attribution engine, including first-click and last-click models, server-side attribution, and edge cases.
When a conversion event arrives — whether from a Stripe webhook, a Paddle notification, or an API call — Icodrip's attribution engine determines which affiliate, if any, should receive credit for the sale.
The engine follows a multi-step process. First, it checks for a direct match using a click ID passed in the conversion event's metadata. If no click ID is present, it falls back to matching by customer email. Finally, it checks for a cookie-based match using the visitor's browser cookie.
Each match is validated against the program's rules. The click must be within the cookie window (not expired), the affiliate must be active, and the program must be running. If all conditions are met, a conversion record is created and a commission is calculated based on the program's commission structure.
Icodrip supports two attribution models: first-click and last-click. First-click attribution credits the affiliate who generated the first click, even if the visitor later clicked a different affiliate's link. This rewards affiliates who introduce new prospects to your product.
Last-click attribution credits the affiliate who generated the most recent click before the conversion. If a visitor clicks Affiliate A's link on Monday, then Affiliate B's link on Wednesday, and purchases on Thursday, Affiliate B receives the commission under last-click attribution.
You configure the attribution model at the program level. Most SaaS companies prefer last-click because it credits the affiliate most directly responsible for the purchase decision. However, first-click can be valuable if you want to incentivize awareness-building activities.
Server-side attribution is the most reliable method because it does not depend on browser cookies. When your payment processor sends a webhook event, Icodrip can match the conversion to an affiliate using the customer's email address or a custom identifier.
To enable server-side attribution, pass the Icodrip click ID or referral code in your checkout flow. For Stripe, include it in the client_reference_id or metadata field of your Checkout Session. For Paddle, use the custom_data or passthrough field. Icodrip extracts this identifier from the webhook payload and looks up the corresponding click.
Server-side attribution works even when cookies are blocked, cleared, or expired. It is the recommended method for high-value transactions where accurate attribution is critical.
Sometimes automated attribution is not possible — for example, when a deal was closed offline or through a channel that does not support tracking links. Icodrip allows you to manually attribute conversions to affiliates.
In the Conversions tab, click "Add Manual Conversion." Select the affiliate, enter the sale amount, and Icodrip calculates the commission based on the program rules. You can also override the commission amount for special cases.
Manual conversions are flagged as "manual" in the dashboard so you can distinguish them from automatically tracked conversions. They follow the same payout workflow as regular conversions and are included in affiliate earnings reports.
Refunds are handled automatically. When a refund event arrives from your payment processor, Icodrip marks the original conversion as refunded and reverses the commission. If the commission has already been paid out, the amount is deducted from the affiliate's next payout.
Subscription upgrades and downgrades are tracked as separate conversion events. If an affiliate referred a customer who later upgrades to a higher plan, the affiliate earns additional commission on the price difference (for percentage-based commissions) or a new flat-rate commission.
Duplicate conversions are prevented using idempotency keys derived from the payment processor's event ID. If the same webhook is delivered multiple times (which is common with retry logic), Icodrip only processes the first instance. This ensures affiliates are never double-credited for the same transaction.