Why a campaign did not apply

A code that a customer swears is valid, refused at the till, is one of the more
awkward moments in a shop. There are a limited number of reasons, and most of them
are invisible from the checkout screen.

Work down this list. The first question is different depending on where the code was
refused, so start there.

1. Was it refused at the till?

At the till there is nowhere to type a code. DISCOUNT CODE opens a list, and the
cashier picks the campaign from it. So the question is not "why was it refused" but
"why is it not in the list". See What a cashier actually sees below.

Check the campaign's Visibility first. Only Cashier campaigns appear at the
till. A Public or Private campaign cannot be redeemed at the counter at all;
the customer redeems it themselves.

A code that works for a customer but not for your staff is almost always this, and no
amount of checking caps and dates will explain it.

Visibility is fixed when the campaign is created, so a public campaign cannot be
turned into a cashier one. It has to be replaced.

2. The campaign was never started

A new campaign is not live just because it has been created. In the campaigns
list it sits as Inactive until someone presses Start beside it.

If a code has never worked since it was made, check this first. In Grow →
Campaigns
the status says Inactive and the button says Start. Click
Start.

3. It has not started, or it has ended

Every campaign has a Start date and an End date. Before the start, or after the
end, the code does not work. A new campaign ends 30 days after it was created unless
you changed the End date, so a code that ran fine for a month and then stopped has
usually just expired. Click Edit on the campaign to check the dates.

4. A redemption cap has been reached

Two separate caps can stop a code:

  • Total redemptions: how many times the campaign can be used across every
    customer. Once reached, the code stops working for everybody. The campaigns list
    shows this as used against allowed, such as 1 / 99.
  • Per customer: how many times one person may use it. The code carries on
    working for everyone else, which is why this one looks so much like a bug.

A campaign that "worked this morning and not this afternoon" has almost always hit
its total cap.

5. The customer is not who it is for

Two ways this happens:

  • Private campaigns are restricted to one named customer. Anyone else is refused.
  • Targeted campaigns apply only to customers in the segment they are aimed at. A
    customer outside that segment is refused even though the code is live and the caps
    are fine. Only Public campaigns can be targeted, so this never affects the till.

6. Nothing in the basket qualifies

Two for One and Items Discount apply only to the Items chosen on the
campaign. A Freebie with Trigger items needs at least one of them in the
basket. If nothing in the basket qualifies, the code is fine but the basket is wrong.

7. It is a template, or it was deleted

Template campaigns exist to be copied and are not redeemable themselves. A deleted
campaign is refused outright.

What to check, in order

Symptom Most likely cause
Refused at the till, works for customers It is a public or private campaign — only cashier campaigns reach the till
Never worked since it was created Not started
Worked, then stopped for everybody Total redemption cap reached, or the end date has passed
Works for some customers, not others Per-customer cap, or segment targeting
Refused for one named person only Private campaign for someone else
Refused on some baskets only No qualifying product in the basket

What a cashier actually sees

A campaign appears in that list only when both of these are true:

Column Required value
Visibility Cashier
Status Active

The campaigns list, showing visibility and status

Everything else is left out of the list:

  • Public and Private campaigns: the customer redeems these, not the counter.
  • Inactive Cashier campaigns: created but never started, or stopped since.
  • Template campaigns: a pattern for making others, not a usable code.

If a customer hands over a code that is not in the list, it is a public campaign and
they redeem it themselves in the app. A cashier cannot apply it for them.