We can use customer tags to handle this without relying on a paid app. We can identify eligible customers using a specific tag and apply the special pricing/discount only to those customers. After the customer completes the purchase, we can update their tag so the offer cannot be used again.
For the different discounts based on the selected option (A = $300, B = $500, C = $800, D = $1,000), we can also handle this with custom logic.
The main limitation is guest customers, because Shopify cannot reliably identify the same guest customer across multiple orders. If the “one-time purchase” rule needs to work reliably, I would recommend requiring customers to log in or otherwise use a customer account.
Turn the options into variants and price them so one percentage gives your amounts
A discount code only carries one value, so it cannot hand out 300 / 500 / 800 / 1000 by option on its own.
So, set the variant prices so a single percentage lands on those numbers. Price A 3,000, B 5,000, C 8,000, D 10,000. Then a 10% code takes off exactly 300 / 500 / 800 / 1000.
This counts logged in customers only. A guest can reuse it. If “once” must be strict, require login under Settings, then Customer accounts.
If your four amounts are not proportional, so no single percentage can hit them, the only no app ways to vary a fixed amount by option are a custom Shopify Function (free, but it needs code) or splitting the options into separate products with one code each.
Block the product from being bought more than once ever:
There is no built in “buy only once” setting.
Require customer accounts.
Shopify Flow: Order created, then if the product is this one, add a customer tag like bought-x.
In your Rise theme, add a little Liquid to the product template that hides the buy button when customer.tags contains ‘bought-x’.
Guests still cannot be blocked.
Some apps: Order Limits, MinMaxify or tiered discount apps
Hi @sed0481 Welcome To Shopify Community So The Both feasible natively without an app. For one-purchase-per-customer, use a discount code (not automatic discount) with “Limit to one use per customer” checked, works via email matching, not airtight but covers most customers. For the variable discount by option, native codes only apply one flat amount each, so you’d create four separate codes (one per variant A/B/C/D), each with its own amount and “one use per customer” checked, more codes to manage but fully native. Hope this helps, and if it does, don’t forget to like and mark it as the solution. Thank you!