Accessing Discount Codes/Price rules from Liquid using Javascript

Accessing Discount Codes/Price rules from Liquid using Javascript

15 0 3

Is there any way using javascript on a liquid page that I can access the discount codes for my store?


Something like this:

/* Discount data */
var discounts = {{ discounts | json }}


Or something using Jquery?


Essentially I need to be able to grab the discount details from a discount code on a page in my shopify store.

Replies 4 (4)

Shopify Partner
489 85 164



Discount object is only accessable in notifications  or in Order Print app

>>The discount object contains information about a discount, including its id, code, amount, savings, and type. Note that this object will display a value only if it's accessed in notifications or in the Order Printer app.

So, you can't access it within theme.

Author: Hovhannes Sargsyan (aka sarhov)
Try Shopify free for 14 days,

3 0 3

You can get it from your cookies:

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-html -->

<div id="discount-message"></div>
<script type="text/javascript">
var codeCookieValue;
var getCookie = function(name) {
var value = "; " + document.cookie;
var parts = value.split('; '+name+'=');
if (parts.length == 2) return parts.pop().split(";").shift();
codeCookieValue = getCookie('discount_code');

<!-- end snippet -->


Shopify Partner
2 0 2

Old question, but I don't believe it was ever properly answered. I whipped up this function to be able to query the Shopify API to pull the entire discounts list, iterate through them to search for a specific discount (by discount code) and output the information accordingly. Hope this helps future devs!


async function queryDiscount(title) {
    const response = await fetch(window.Shopify.routes.root + 'admin/price_rules.json');
    const rules = await response.json();
    $(rules.price_rules).each(function(n) {
      if (this['title'] == title) {
          console.log("Found Discount:\nID: " + this['id'] + "\nValue Type: " + this['value_type'] + "\nStart Date: " + this['starts_at'] + "\nEnd Date: " + this['ends_at'] + "\nEntitled Collection IDs: " + this['entitled_collection_ids']);
3 0 1

Thank you, that works, but if you have automatic discount/price rules they won't be listed. do you know a way to get the automatic discounts, or is it only possible with the GraphQL api?