Showing

Why is my coupon code not tracking sales?

A coupon only credits an affiliate when LinkJolt holds a registration that matches the discount data your payment processor sends with that order. The usual causes are a code registered on one side only, a Stripe promotion code id that was never entered, a Paddle discount id left blank, or a code registered on the wrong campaign or with a test key.

4 min read
Updated Sep 14, 2026

A coupon only credits an affiliate when LinkJolt holds a registration that matches the discount data your payment processor sends with that order. The match is exact, so a code that exists on one side only, or a registration pointing at the wrong campaign, records as a direct sale with nobody credited. Work through these checks in order.

1. The code has to exist in two places

Registering a code in LinkJolt does not create the discount in your processor, and creating a discount in Stripe does not tell LinkJolt who to credit. You need both: a working discount in Stripe, Paddle, Polar or App Store Connect, and a registration on the Coupons tab of the Campaigns page, tying that exact code to one affiliate on one campaign.

Two routes are the exception. Both work once the Coupons tab says new codes are created in your Stripe or your Polar: use "Set up with Stripe" there, or connect Polar. Choosing "Create it in my Stripe for me", or "Create it in my Polar for me", in the Create coupon dialog creates that one code in that account and registers it here in one step, with the matching ids already filled in. The "Automatic coupon codes" switch, in a campaign's own settings, does the same for every affiliate as they are approved, so on a campaign with that switch on you do not add those codes by hand.

2. Register the value your processor actually sends

Most processors do not send us the code the customer typed, so the registration has to hold the identifier that does arrive.

  1. Stripe. If customers type a promotion code, paste its id into the "Stripe Promotion Code ID" field when you register. It starts with promo_ and is on the coupon's page in Stripe. If the discount is applied directly rather than typed, LinkJolt falls back to matching against the Stripe coupon's own id, then its display name, so make the coupon id in Stripe identical to the code. The display name is free text you set in Stripe and is the least reliable of the three.
  2. Paddle. Paddle sends the discount id, starting with dsc_, and never the code, so the Paddle Discount ID field is required.
  3. Polar. Polar sends the code itself along with the discount's id, and LinkJolt matches either, so registering the code is enough and the Polar Discount ID field is optional. Capital letters do not matter.
  4. Apple. Matched on the offer identifier from App Store Connect. This one is case sensitive, so type it exactly.

Register a Stripe promotion code without its promo_ id, on a coupon whose Stripe id is not the code, and the order carries nothing we can match. Every redemption is credited to nobody, and that commission stays lost until you fix the registration.

3. Right campaign, right affiliate, right brand

Each registration points at one campaign and one affiliate, and the sale is credited under that campaign, so the wrong campaign means the wrong commission terms. Also confirm the campaign is active, that the affiliate is not rejected or suspended on it, and, if you run several brands, that the campaign belongs to the brand whose payment account sent the sale.

4. Codes registered with a test key are ignored

A coupon created with a test mode API key, the lj_pk_test_ prefix, is tagged as test data and left out of every live lookup. The coupon list does not label these, so if a code was added by a script and never attributes, register it again with a live key.

Four things that are not faults

  • A tracking link beats a coupon. If the customer arrived through an affiliate link, that link is credited even when a code was applied at checkout.
  • Registering a code does not reattribute earlier orders. Register codes before they go out, and contact support if you need older sales looked at.
  • Coupon matching runs on Stripe Checkout, Paddle, Polar and Apple offer codes. Server side charges and sales through the WooCommerce plugin carry no discount data, so those need a tracking link.
  • The Uses column counts every sale for that affiliate on that campaign since the code was registered, not only coupon redemptions.

If link based sales are missing too, this is not a coupon problem. See "Why is an affiliate conversion not showing up?" and check your webhook first.

Start your affiliate program

Launch in minutes with 0% platform fees. 7-day free trial, cancel anytime.