Affiliate programs fail when referral data disappears between the landing page and checkout. Paddle affiliate tracking with Rewardful fixes that gap, but only when your Paddle version, checkout code, and webhook events match.
This setup is for SaaS teams using Paddle Classic. You will connect Rewardful, pass the affiliate referral ID into Paddle checkout, and verify that paid subscriptions create the right sale records.
Confirm your Paddle product before you deploy
Rewardful currently supports Paddle Classic, not Paddle Billing. This is the first check. Don’t install scripts or edit checkout code until you confirm which Paddle product your account uses.
Check whether you use Paddle Classic
Rewardful’s Paddle compatibility page states that its integration works with Paddle Classic only. Paddle Billing is a separate platform with different APIs, events, and implementation patterns.
Open Paddle and confirm the product version in your account documentation and developer area. If your team recently migrated, don’t assume old checkout code means you still run Classic.
Paddle’s Classic-to-Billing workflow mapping helps teams compare the two products before they change payment or subscription logic.
Stop if you use Paddle Billing
A Paddle Billing webhook URL is not a substitute for a Paddle Classic integration. Rewardful’s documented flow relies on Classic checkout passthrough data and Classic event notifications.
If you use Billing, select an affiliate platform that states direct Billing support, or treat this as part of a broader migration plan. Don’t build around an unsupported connection and expect conversion records to appear later.
How Paddle affiliate tracking works with Rewardful
The process has four parts. An affiliate sends a visitor to your site. Rewardful stores the referral ID. Your checkout code sends that ID to Paddle Classic. Paddle then sends payment events to Rewardful through webhooks.

The referral ID is the connection between the click and the purchase. It is not enough to install a tracking script. The ID must reach the Paddle.Checkout.open() call as a JSON passthrough value.
The payment event closes the loop
Rewardful receives Paddle notifications after checkout activity occurs. A new subscription can create a lead. A successful payment can create a sale and commission. A full or partial refund can adjust the recorded sale and commission.
Rewardful records the sale using the amount actually paid after discounts or account-balance deductions. Review how Rewardful uses Paddle account events before you set commission rules.
A successful checkout page does not prove affiliate attribution worked. A paid Paddle event tied to the correct referral does.
Connect Rewardful to Paddle Classic
Start in Rewardful. Choose Paddle as the payment processor during setup, then create your first campaign. Rewardful will provide a webhook endpoint for your account.
Use the current Rewardful Paddle Classic configuration guide while you work. Dashboard wording can change, but the required connection points stay the same.
Add the Paddle public key
In Paddle Classic, go to Developer Tools and open Public Key. Copy the entire public key, including the BEGIN and END markers.
Paste that value into the Paddle connection area in Rewardful. Don’t remove line breaks or trim the markers. A partial key can break validation and leave you with a setup that looks connected but cannot verify events.
The public key is not a password, but keep Paddle and Rewardful dashboard access limited to people who manage billing or growth operations.
Send Paddle events to Rewardful
Go to Paddle Classic’s Developer Tools, then Events. Add the Rewardful webhook URL in the area for receiving webhooks.
Configure the event notifications Rewardful requires, then save the Paddle changes. Your current Rewardful setup should confirm the exact event selections before you go live.
Use this order:
- Copy the unique webhook URL generated in Rewardful.
- Add it to Paddle Classic under the webhook notification settings.
- Select the required subscription, payment, and refund events.
- Save the Paddle configuration and return to Rewardful.
- Confirm that the integration status is active before sending affiliate traffic.
Keep your product-access and provisioning logic separate from affiliate reporting. Rewardful tracks referral outcomes. Your application should still use its normal billing process to grant or remove customer access.
Pass the Rewardful referral ID to checkout
This is the part most teams miss. Rewardful JavaScript captures the referral when a visitor arrives through an affiliate link. Your Paddle checkout call must then send that referral value in passthrough.
Load the tracking script before checkout can open
Install the current Rewardful JavaScript snippet on every page where an affiliate can arrive and continue toward payment. Your pricing page, landing pages, sign-up flow, and checkout trigger all need access to the same referral context.
Rewardful’s docs do not require a separate server-side referral mapping step for Paddle Classic. The key handoff happens in the client-side checkout call.
Test your own site flow. A visitor may land on a blog post, browse two product pages, create an account, then return to pricing. The referral needs to survive that path according to your active campaign rules.
Build valid passthrough JSON
Rewardful creates a referral ID as a UUID string. Pass it to Paddle under the rewardful object, inside the passthrough parameter.
The required JSON shape is: {"rewardful":{"referral":"REFERRAL_UUID"}}.
In practice, your checkout code should create the referral payload before calling Paddle. The important pieces are Paddle.Checkout.open(...), the passthrough field, and the referral ID returned by Rewardful.
If your app already sends internal values through Paddle passthrough, merge the objects before serializing them. For example, build JSON.stringify({ ...existingData, rewardful: { referral } }). Do not replace existing order metadata without checking what your support, analytics, or provisioning systems need.
Then pass the resulting string into your checkout call, such as Paddle.Checkout.open({ product: YOUR_PRODUCT_ID, passthrough }).
A blank referral value should not create malformed JSON. Check for a valid referral before adding the rewardful object. Direct visitors should still complete checkout normally.
Configure the campaign before sending affiliate links
Technical tracking is only half the system. Your campaign rules decide when an affiliate earns credit and what happens when a customer upgrades, cancels, or receives a refund.
Decide what affiliates earn
Set commission rules that match your real revenue model. A one-time commission for the first paid invoice has different economics than recurring commission on subscription renewals.
Write down the decisions before recruiting partners:
- Which plans qualify for commission.
- Whether discounts change commission calculations.
- How refunds affect prior payouts.
- Whether upgrades and downgrades earn commission.
- When you approve payouts and resolve disputes.
Don’t promise an affiliate a rule your payment records cannot support. Your campaign terms, payout workflow, and Rewardful settings must agree.
Keep attribution settings documented
Confirm the current attribution and referral settings in Rewardful before launch. Don’t rely on a copied 30-day or 60-day policy from another SaaS program.
Record the active campaign name, referral-link format, commission rate, payout schedule, and attribution rules in one internal document. Store the date each setting changed and the person who approved it.
That record matters when an affiliate asks why a customer was or was not credited. It also prevents a dashboard change from becoming an invisible revenue decision.
Test Paddle affiliate tracking before launch
Use a controlled referral and a real end-to-end checkout path. Don’t begin with a public affiliate promotion.

Run a controlled test
Create one test affiliate or use an approved internal affiliate account. Start with a clean browser profile so an older referral cookie cannot mask a problem.
Run this sequence:
- Open the affiliate referral link in a private browser window.
- Move through your normal landing page and pricing flow.
- Open Paddle checkout and complete an approved test purchase path.
- Confirm that Paddle records the payment event.
- Check Rewardful for the expected lead, sale, and affiliate attribution.
The current Rewardful Paddle documentation does not state a separate required test-mode process. Confirm the payment environment and available test options in your live Paddle and Rewardful dashboards before charging any card.
Check returned records, not a completed checkout
Verify the referral ID in the browser before checkout opens. Then verify the Paddle transaction or order record. Finally, verify the Rewardful lead or sale record after the relevant webhook arrives.
For webhook troubleshooting, review Paddle webhook delivery practices. Check the destination URL, event selection, payload delivery status, and response errors.
If your checkout code has several product paths, test each one. A pricing-page modal, annual-plan button, upgrade flow, and in-app checkout may use different Paddle.Checkout.open() calls.
If custom checkout code, old passthrough logic, or a Paddle migration leaves ownership unclear, Book A Call before you send paid affiliate traffic.
Monitor refunds, failures, and future changes
Your first conversion proves the wiring works. It does not prove every checkout path is safe.
Review attribution integrity each week
Check a small sample of paid affiliate orders against Paddle and Rewardful. Compare customer email, checkout or order identifier, amount paid, affiliate, and commission result.
Measure accepted sale records, not checkout clicks. A campaign that reports many clicks but creates disputed or missing commissions needs correction work, not more traffic.
Watch for these signals:
- Referrals appear in the browser but no attributed sales appear after payment.
- One checkout path has sales but another does not.
- Refunds are not adjusting affiliate records as expected.
- A site release replaced or removed the
passthroughfield. - Product IDs changed but checkout code still uses an older flow.
Keep an audit trail for exceptions
Store the Paddle order identifier, Rewardful referral ID, campaign, purchase date, amount, refund status, and reviewer decision for disputed conversions. Keep the original payment data unchanged.
Give one person ownership of each exception. They should approve the record, reject it, or return it for further review. This prevents an informal Slack decision from becoming your only commission evidence.
Final checks before affiliate traffic goes live
Reliable Paddle affiliate tracking depends on a simple chain: the referral reaches your site, Rewardful captures it, Paddle checkout receives it in passthrough, and Paddle webhooks report the paid outcome.
Confirm you use Paddle Classic. Test every checkout path. Then compare real Paddle payments against Rewardful attribution before scaling the program.
The strongest affiliate setup is not the one with the most tracked clicks. It is the one your team can verify when money changes hands.