View as Markdown

Promo Codes

A promo code is a code your visitors type at checkout — such as SAVE20 — to get a percentage or fixed-amount discount. You create and manage promo codes in the Ezoic dashboard; the onsite checkout picks them up automatically, so there is no code to write on your site.

Create a Promo Code

Open the Subscriptions → Products page in your Ezoic dashboard and create a promo code. Each code has:

  • Code — what the visitor types at checkout (letters, numbers, and hyphens, up to 64 characters, matched case-insensitively). You can enter your own or generate one. A code must be unique among your site's active promo codes.
  • Name — an optional internal label shown on receipts, such as Spring sale. Maximum 40 characters (Stripe's coupon name limit).
  • Discount — either a percentage off (works in every currency you sell in) or a fixed amount off. Fixed amounts are set per currency: the form opens an amount row for each currency your prices sell in, prefilled from your own price points, and the code won't apply in a currency without an amount.
  • Duration — how long the discount lasts on a subscription:
    • Once — the first payment only.
    • Repeating — a set number of months, then billing returns to full price.
    • Forever — every payment for as long as the subscription stays active.
  • Products — restrict the code to specific products, or leave it empty to discount every product on the domain.
  • First-time customers only — restrict the code to visitors who have never bought from you.

Limits

Each of these is optional:

  • Max redemptions — a cap on how many times the code can be used in total. Unlimited by default.
  • Expires — a date after which the code stops working. Never expires by default.
  • Minimum order amount — a minimum subtotal required to redeem the code.

At Checkout

When your domain has at least one active promo code, the checkout shows a Have a promo code? link that opens a code entry field. The visitor enters a code and the discounted total appears in the order summary before they pay — validated by Stripe for a paid checkout, and by Ezoic Subscriptions for a trial start. There is nothing to add to your onsite integration — the field appears and disappears based on whether active codes exist.

A checkout accepts one promo code at a time. An applied code can be removed or replaced any time before paying, including on the "already redeemed a free trial" screen, where the code discounts the immediate paid subscription.

A campaign link pre-fills a promo code from the URL, so visitors arriving from an email or social post see the discount without typing anything. Share any page on your site with the promo parameter:

https://example.com/?promo=SAVE20

Visitors from that link see the discounted prices right on the paywall's plan picker, and the code applies itself when they reach the payment screen. The code stays with them as they browse between pages during the visit. An expired or exhausted code shows its reason at checkout; an unrecognized code is ignored. A bad code never blocks checkout, and the visitor can remove or replace the code before paying.

On the promo code list, an active code's actions menu has a Copy link item that copies the campaign URL for your homepage. To run the campaign from a different page, paste the ?promo=SAVE20 part onto that page's URL.

To pre-fill a code from your own page instead of a shared link — for example, a landing page that opens its own campaign checkout — pass promoCode to showPaywall or openCheckout.

Trials and One-Time Purchases

  • Free trials — every duration works with a free trial. The discount window starts when the trial ends, not at signup: a Repeating code for 3 months discounts the first 3 paid invoices after the trial, and a Once code discounts the first payment after the trial.
  • One-time purchases — a code discounts the single payment.
  • Donations — promo codes do not apply to donations.

Managing Promo Codes

From the promo code list on the Products page you can:

  • Enable or disable a code without deleting it — a disabled code stops working immediately and can be turned back on later.
  • Delete a code permanently. Deletion prevents future redemptions but does not remove a discount already applied to an existing subscription. A visitor who started a free trial with the code is the exception: deleting or disabling the code before their trial ends drops the promised discount, and their first payment bills at full price.
  • Edit a code — codes cannot be edited in place, so editing saves a replacement with the new settings.
  • Copy link — copy the code's campaign link (active codes only).

Product restrictions are fixed once a code is created. To change which products a code applies to, create a new code.