Showing applicable discount codes on product page

Manjiri
Shopify Partner
6 0 4

Hello

 

I am working on building a theme for my client. The store has lots of discount codes across different products which are applicable to all the customers unconditionally. The requirement here is to show the discount codes applicable for a specific product on the product page, or atleast in a seperate offers page. 

Is there any way to get the applicable discount codes for a products within the theme?

 

Thanks

Replies 42 (42)
joshrau
New Member
2 0 0
It looks like this only works with discount codes that are percentage based
and apply to all products. I'm installing it, because it could still be
useful, but it would be great if in the future it is able to
accommodate discount codes for specific single or groups of products rather
than the entire store. Also nice would be if it could accommodate set
dollar discounts, although being able to single out specific products would
be more important.
khanhlumpy
Shopify Partner
1 0 0

May I ask name of this app, please?

Tenler
Shopify Partner
6 0 0

@khanhlumpy it's Automatic Discount Code Links

  • product page coupon widget;
  • storefront applied discounts before checkout;
  • discount code infobar.

It's free. Hope it helps.

Tenler
Shopify Partner
6 0 0

@joshrau thank you for the feedback! We'll add these features in future releases.

sanfour
New Member
5 0 0

good day, can we apply different discount codes for different products separately? 

Tenler
Shopify Partner
6 0 0

Hey, right now you can apply discount codes to all products. Different discount codes can be created - but one and the same customer cannot apply two discount codes at once. 

Stephhrev
Tourist
18 0 3

hi! 

 

Did you ever get a solution for this? I am looking for the same thing.

 

thanks!

sanfour
New Member
5 0 0

no solutions whatsoever, still looking

ehorvat
Tourist
3 0 1

Obviously it would be super great to have a built-in checkbox in the product page admin to hide / show the discount code on product pages.

The below solution is some-what involved, but once everything is set up, you'll be smooth sailing with dynamic discount codes on product pages and no app required.

Here's what I did:

Step 1: Create Discount Code
Take note of the name, you will use it in step 2.  For this example, we will call the discount code COOL5 and it will offer 5% off a collection. Pause.. Open a new tab and lets create a collection

Step 2: Create a Collection
The title of your collection is going to be very very important. The title of my collection for the discount I just created will be: DISCOUNT-COOL5-5%.

The structure of this title is: DISCOUNT-{discount_name}-{discount_amount} where discount_name and discount_amount should match the discount you're creating.

Save this collection as a manual collection, and then add any products you want (our Discount Code in step 1 will apply to these). Also, this tripped me up for a hot second, but make sure this collection is available in  at least the Store Sales Channel. I know, it sucks - this solution isn't perfect. If you don't do this the code we add in step 3 won't work since I guess collections have to be on a sales channel to appear in the collections liquid object.

Anyway, Go back to the Discount Code you were just creating in step 1 and select "Specific collections" in the "Applies To" section and select this collection you just created.

Step 3: Edit the code
This is something you only do once and it is well worth it.

Navigate to product-template.liquid by going to Online Store > Actions > Edit Code. On the left hand side search for "product-template".

Paste the below code where ever you'd like your discount code to appear on your product page and save:

 

 

 

 

        {% for collection in product.collections %}
            {% if collection.title contains "DISCOUNT" %}
                 {% assign parts = collection.title | split: "-" %}
                 {% capture discount_name %}{{ parts[1] }}{% endcapture %}
                 {% capture discount_amount %}{{ parts[2] }}{% endcapture %}
            {% endif %}
        {% endfor %}
        
        {% if discount_name != blank and discount_amount != blank %}
        	<p>Use code {{ discount_name }} for an instant {{ discount_amount }} off!</p>
        {% endif %}

 

 

 

 

For those interested, all this code does is loop over the product's associated collections, finds the collection where DISCOUNT is in the title and then stashes the name / amount in a variable, which you can do whatever you want with. And now you can tell why the naming is incredibly important.

Once this code is added, now your job is to just create Discount Codes and Collections as you normally would, with just a bit more attention to how things are named.

Here's a visual of the end result. I chose to place mine right under the price. The discount values you see here can all be changed by simply editing collection / discount titles. 

Screen Shot 2021-04-26 at 10.58.09 PM.png

Again, would way rather have a checkbox on the product page admin that toggled all this stuff - it'd be way cleaner, but this will do for me just fine. hit me up if you got questions.

Nick
Community Moderator
4242 421 883

Hi everyone, 

Thanks for being informative and adding constructive feedback in this thread.  While this is currently not something that can be done in the theme directly, it might be possible with the Storefront API (which is what Apps use). But it means you would have to build an app. 

Another possible workaround is when you click on the code and it adds you. Which technically is possible in code, you can create a cart URL with the discount code. But you’d have to manually do that for each product, which is the pain point. 

In saying all this, there is a feature request for this, where I have added all the feedback from this thread to it but currently there is no update and I am unable to give any timelines for it. 

Nick | Community Moderator @Shopify 

 - Was my reply helpful? Click Like to let me know! 
 
- Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog