Skip to main content

Coupons

This article explains how discount codes work in Spoks, how they connect with Shopify.

Written by Rafał Płonka

Coupons in Spoks are Shopify discounts

Every coupon you create in Spoks is a real Shopify discount code under the hood. When you create, edit, or deactivate a coupon here, we call the Shopify Admin API and the matching discount changes in your store.

To manage coupons, select Content → Coupon tab. Once they're created, you can add them to your campaigns or flows using the Coupon block.


1. Static vs. Dynamic - your first choice

This choice is permanent. You can't convert one type into the other later - create a new coupon if you need to switch.

Static - one shared code (e.g. WELCOME15) that everyone uses. Good for public promos and social campaigns.

Dynamic - each customer gets a unique code (e.g. WELCOME-XY9Z4K) built from your prefix plus a random suffix. Each code is single-use in Shopify. Good for flows, abandoned cart, and VIP rewards.


2. Discount value

Pick one at creation:

  • Percentage off (e.g. 15%)

  • Fixed amount off (e.g. $10)

  • Free shipping (with an optional max-shipping cap)


3. Expiration

  • Campaign window (Starts at / Ends at) — when the coupon itself is valid. Leave Ends at empty for no expiration.

  • Personal expiry (dynamic only) — set a value like 10H or 2D, and each individual code expires that long after it is issued to the customer.

How personal expiry works behind the scenes

Spoks generates a fresh batch of Shopify discount codes for personal-expiry coupons once per day, regardless of the expiry value you set. To make sure no recipient gets a code that's already close to expiring, we always add 24 hours on top of your configured expiry when creating the batch.

Examples:

  • You set 4H → each batch's Shopify discount is created with a 28-hour lifetime.

  • You set 14D → each batch is created with a 15-day lifetime. As soon as the freshest batch has 14 days remaining, a new batch is generated.


4. Usage limits

  • Total usage limit - caps total redemptions across all customers.

  • Once per customer - each shopper can use it at most once.

Dynamic codes are already single-use, so "once per customer" mainly matters for static coupons.

5. Adding codes to dynamic coupons (no personal expiry)

For dynamic coupons without a personal expiry, Spoks manages the code pool for you in most cases - but there's one scenario where you'll want to top up manually.

Automatic top-up (flows) When a dynamic coupon is used in a flow, Spoks auto-tops-up the pool as codes are consumed. You don't need to do anything - the pre-generated pool of 500 codes refills behind the scenes.

Manual top-up (large campaigns) You only need to top up manually when you're using the coupon in a campaign with more recipients than the current pool size (default 500). In that case:

  • Open the coupon's menu and choose Add Codes.

  • Enter how many codes to generate.

Things to know about manual generation

  • There's no hard limit on the request size that we enforce, but larger batches take longer. As a reference, 100,000 codes takes roughly 45–60 minutes to create.

  • Shopify enforces a 20 million discount codes per shop limit across all your discounts combined - keep that in mind for very large or long-running stores.

  • The coupon card shows Available codes so you can check the current pool before sending a big campaign.

If your dynamic coupon has a personal expiry, this button is hidden - see section 3; we handle rotation for you.


5. What you can't change later

Be deliberate at creation - these are sticky:

  • Static vs. Dynamic - cannot be flipped.

  • The static code string - don't rename; customers already have it.

  • The dynamic prefix - editable, but only affects future codes, leaving a mixed pool.

  • Dynamic expiration on/off - don't toggle mid-campaign.

  • Products vs. Collections scope - pick one, not both.

For anything here, the safe path is: deactivate and create a new coupon.


6. Targeting & eligibility

  • Products or Collections (one, not both)

  • Countries - restrict to specific markets

  • Minimum purchase - minimum subtotal or minimum quantity

  • Combinations - stack with order / product / shipping discounts

Did this answer your question?