Kupon, który przeżył własny limit
Data minęła albo limit użyć się wyczerpał, a kupon dalej jest opublikowany. Klient znajduje kod, próbuje i porzuca koszyk na ostatnim kroku.
Objaw
Kod z zeszłorocznej kampanii wciąż figuruje w Marketing → Kupony, wciąż jest opublikowany i wciąż da się go znaleźć — w starym newsletterze, na portalu z kodami rabatowymi, we wpisie afilianta, którego nikt nie zdjął. Klient wpisuje go przy zamówieniu i dostaje „Ten kupon wygasł”.
Lustrzane odbicie tego jest gorsze i w panelu wygląda identycznie: kupon, który miał działać dwa tygodnie, nie ma daty końca w ogóle i rabatuje każde uprawnione zamówienie od tamtej pory.
Ile to kosztuje
Obie połowy psują się w przeciwne strony i właśnie dlatego są jedną kontrolą.
Wygasły kupon, który wciąż jest widoczny, kosztuje konwersję w najdroższym możliwym momencie. Klient wybrał, dodał do koszyka, wpisał adres i doszedł do płatności. Odrzucony kod nie odsyła go z powrotem na zakupy — odsyła go do szukania działającego kodu, na cudzej stronie.
Kupon bez daty końca kosztuje marżę po cichu i bez końca. Nikt tego nie zauważa, bo zamówienia kończą się poprawnie, a rabat wygląda na zamierzony. To ta sama usterka co promocja z datą końca w przeszłości, tylko w miejscu, do którego mało kto zagląda.
Jak to sprawdzić samodzielnie
Kupony są typem wpisu, a ich reguły zwykłym meta:
wp db query "SELECT p.post_title AS kod, \
MAX(CASE WHEN m.meta_key = 'date_expires' THEN m.meta_value END) AS wygasa, \
MAX(CASE WHEN m.meta_key = 'usage_count' THEN m.meta_value END) AS uzyc, \
MAX(CASE WHEN m.meta_key = 'usage_limit' THEN m.meta_value END) AS limit_uzyc \
FROM wp_posts p JOIN wp_postmeta m ON m.post_id = p.ID \
WHERE p.post_type = 'shop_coupon' AND p.post_status = 'publish' GROUP BY p.ID"
Podmień wp_ na własny prefiks tabel. Wynik przeczytaj dwa razy: raz szukając wierszy, gdzie
wygasa jest w przeszłości albo uzyc dobiło do limit_uzyc, i drugi raz szukając wierszy, gdzie
wygasa jest puste przy kuponie, który ewidentnie był kampanią.
Jak naprawić
- Zakończone kupony przenoś do kosza, zamiast zostawiać opublikowane. Kupon w koszu nadal widnieje w historii zamówień, więc nic w raportach się nie psuje.
- Każdemu nowemu kuponowi nadawaj datę końca w chwili tworzenia, choćby odległą. Data, którą można przedłużyć, jest bezpieczniejsza niż data, o której trzeba pamiętać, żeby ją dodać.
- Przy kodach, które wyciekły w miejsca poza Twoją kontrolą, zdecyduj świadomie: albo je honorujesz i ustawiasz prawdziwy koniec, albo usuwasz i godzisz się na błąd przy zamówieniu. To brak decyzji kosztuje.
- Zanim skasujesz kod, przeszukaj newslettery i materiały afiliacyjne, żeby wiedzieć, co klient zdążył zobaczyć.
Kiedy to fałszywy alarm
- Kody bezterminowe z założenia — stały rabat powitalny albo umówiona stawka partnerska nie mają daty końca celowo.
- Kupony trzymane opublikowane na potrzeby raportowania, gdy jakiś proces zależy od tego, że nie trafiły do kosza.
- Limity na klienta.
usage_limit_per_userdobite przez jednego klienta to nie to samo, co wyczerpany globalnyusage_limit— znaleziskiem jest tylko to drugie. - Kody wracające co sezon, wygaszone teraz i włączane z powrotem za trzy miesiące.
Jak znajduje to Merchlint
Merchlint odczytuje każdy opublikowany shop_coupon i porównuje date_expires z dniem dzisiejszym
oraz usage_count z usage_limit. Zgłasza trzy osobne przypadki: wygasły a opublikowany,
wyczerpany a opublikowany, oraz kupon o kształcie kampanii bez żadnej daty końca. Przy każdym
znalezisku widać kod, regułę, która zadziałała, i wysokość rabatu — dzięki temu odróżniasz stałe
pięć procent od pięćdziesięciu procent z wyprzedaży, nie otwierając żadnego z nich.
Pewność: F — fakt z bazy. Data jest przed dzisiaj albo nie jest; licznik dobił do limitu albo nie dobił.
Ta kontrola jest w dodatku Pro.
Coś się nie zgadza z tym, co widzisz w sklepie? Napisz — czytamy każdą wiadomość. contact@merchlint.com
Masz wynik z wtyczki i nie wiesz, od czego zacząć? Do 15 listopada 2026 przeglądamy eksporty z dziesięciu sklepów — darmowy audyt katalogu.