Cart - Add a shipping rates calculator to your cart

Topic summary

Tutorial Overview:
This advanced tutorial explains how to add a shipping rates calculator to Shopify cart pages, allowing customers to estimate shipping costs before checkout. The implementation differs between sectioned (newer) and non-sectioned (pre-October 2016) themes.

Key Features & Limitations:

  • Works with carrier-calculated and manual rates
  • Uses customer’s default address if logged in
  • Only functions on cart page (not cart drawer/popup)
  • Does not calculate taxes
  • Currently incompatible with Shopify Plus multi-currency stores
  • Rates are approximations based on country/province/zip code only

Implementation Issues Reported:

  • Most common problem: Calculator displays but “Calculate Shipping” button doesn’t work—shows “Calculating…” then returns to default state without results
  • JavaScript conflicts: Many users report the code breaks other theme functionality (predictive search, quantity updates, menu navigation)
  • Theme compatibility: Particularly problematic with Simple, Debut, and Supply themes
  • Multi-currency: Calculator displays wrong currency symbol without conversions

Workarounds & Solutions:

  • Some users successfully placed JavaScript in theme.liquid before </body> tag instead of vendor.js/theme.js
  • Third-party apps like “Shipping Rates Calculator” by Code Black or “In-Cart Shipping Rates” offer paid alternatives ($6.99/month)
  • Community debate exists about whether showing shipping costs pre-checkout reduces abandoned carts or prevents email capture

Current Status:
Many users remain unable to implement the free solution successfully. The tutorial appears outdated for newer themes like Dawn 4.0, with ongoing requests for updated documentation or native Shopify integration.

Summarized with AI on November 6. AI used: claude-sonnet-4-5-20250929.

Non-sectioned themes### Shipping calculator information and features

The shipping rates calculator displays your shipping rates on the cart page of your store. If a customer is logged in, then the calculator uses the customer’s default shipping address to estimate shipping rates. The shipping rates calculator works with carrier-calculated rates, manual rates, or a combination of the two.

Keep the following in mind when setting up your shipping calculator:

  • In some situations, the rates are approximations because only the country, province/state, and postal/zip code are provided for the calculation, rather than the full address. The exact rates are given at checkout.
  • The displayed text can be translated.
  • Rates are formatted in your shop’s currency and include the currency descriptor, such as CAD or USD.
  • The HTML for the calculator is easy to edit if you know the basics.
  • The calculator uses an Underscore.js template and relies on a JSON API. It uses Ajax to fetch rates from Shopify.
  • There is no equivalent API to calculate applicable taxes on the cart page. Applicable taxes are added at checkout.

Note: The shipping calculator only works on the cart page at www.your-shop-url.com/cart. It will not work in a cart drawer or a cart popup. If you are not currently using a cart page, then you can change your cart settings by visiting the theme editor.

Installing the shipping rates calculator

There are five main steps to install the shipping rates calculator in your theme:

  1. Uploading the file jquery.cart.min.js to your theme assets
  2. Adding settings to the theme editor
  3. Creating a shipping-calculator snippet
  4. Including your snippet in cart.liquid
  5. Configuring your shipping rates calculator

Uploading jquery.cart.min.js to your theme assets1. From your Shopify admin, go to Online Store > Themes.

  1. Find the theme you want to edit, and then click Actions > Edit code.

  2. In the Assets directory, click Add a new asset.

  3. Click the Create a blank file tab, and enter jquery.cart.min as the name and select .js as the file extension. Click Add asset.

    Your new blank asset will open in the code editor.

  4. Into your new jquery.cart.min asset, paste this JavaScript code snippet.

  5. Click Save.

Adding settings to the theme editor1. In the Config directory, click settings_schema.json. The file will open in the code editor.

  1. Near the very bottom of the file, paste the following code before the last square bracket ] and after the last curly bracket } - make sure to include that first comma , since you’re modifying a JSON data structure:

    ,
      {
        "name": "Shipping Rates Calculator",
        "settings": [
          {
            "type": "select",
            "id": "shipping_calculator",
            "label": "Show the shipping calculator?",
            "options": [
              {
                "value": "Disabled",
                "label": "No"
              },
              {
                "value": "Enabled",
                "label": "Yes"
              }
            ],
            "default": "Enabled"
          },
          {
            "type": "text",
            "id": "shipping_calculator_heading",
            "label": "Heading text",
            "default": "Get shipping estimates"
          },
          {
            "type": "text",
            "id": "shipping_calculator_default_country",
            "label": "Default country selection",
            "default": "United States"
          },
          {
            "type": "paragraph",
            "content": "If your customer is logged-in, the country in his default shipping address will be selected. If you are not sure about the  spelling to use here, refer to the first checkout page."
          },
          {
            "type": "text",
            "id": "shipping_calculator_submit_button_label",
            "label": "Submit button label",
            "default": "Calculate shipping"
          },
          {
            "type": "text",
            "id": "shipping_calculator_submit_button_label_disabled",
            "label": "Submit button label when calculating",
            "default": "Calculating..."
          },
          {
            "type": "paragraph",
            "content": "Do not forget to include the snippet shipping-calculator in your cart.liquid template where you want the shipping calculator to appear. You can get the snippet here: [shipping-calculator.liquid](https:\/\/github.com\/carolineschnapp\/shipping-calculator\/blob\/master\/shipping-calculator.liquid) ." } ] }
    
  2. Click Save.

Creating a shipping-calculator snippet1. From your Shopify admin, go to Online Store > Themes.

  1. Find the theme you want to edit, and then click Actions > Edit code.

  2. In the Snippets directory, click Add a new snippet.

  3. Enter shipping-calculator as the name for your new snippet, then click Create snippet:

  4. Your new blank snippet will open in the code editor.

  5. Into your new shipping-calculator snippet, paste this Liquid code snippet.

  6. Click Save.

Including the snippet in cart.liquid

Include your snippet in your cart.liquid file in the place where you want to show your shipping rates calculator. In this example, the calculator is right below the cart form on the cart page.

  1. From your Shopify admin, go to Online Store > Themes.

  2. Find the theme you want to edit, and then click Actions > Edit code.

  3. In the Templates directory, click cart.liquid.

  4. Find the closing </form> tag. On a new line below the tag, paste the following code:

    {% render 'shipping-calculator' %}
    
  5. Click Save.

Configuring your shipping rates calculator

You can now edit the settings for your shipping rates calculator from the theme editor.

  1. Go to the theme editor.

  2. Under Theme settings, click Shipping Rates Calculator to view and edit the calculator settings.

  3. You can configure the following settings:

    • Show the shipping calculator? - set this to Yes to display the shipping rates calculator on your cart page, or No to hide it
    • Heading text - enter the text that will be displayed above your shipping rates calculator
    • Default country selection - choose which country will be selected by default
    • Submit button label - enter the text that will be shown on the submit button.

Editing the HTML or CSS of the calculator

Editing the shipping calculator HTML

You can edit the HTML code for your shipping rates calculator to make more advanced customizations.

  1. From your Shopify admin, go to Online Store > Themes.

  2. Find the theme you want to edit, and then click Actions > Edit code.

  3. In the Snippets directory, click shipping-calculator.liquid.

  4. Edit the code as needed. You can add new classes and move the existing HTML elements around in the file to suit your needs.

    Note: Do not edit the HTML ID attributes or the class name “get-rates” on the shipping calculator submit button, as this will interfere with functionality.

  5. Click Save.

Editing the shipping calculator CSS

If you want to change the appearance of your shipping rates calculator, then you can add some CSS to your theme stylesheet.

  1. From your Shopify admin, go to Online Store > Themes.
  2. Find the theme you want to edit, and then click Actions > Edit code.
  3. In the Assets directory, click theme.scss.liquid.
  4. At the very bottom of the file, add either the contents of this CSS file, or your own custom CSS code.
  5. Click Save.

Troubleshooting

Updating older themes to use a supported version of jQuery

If you are having trouble getting the shipping calculator to work, then check to confirm that your theme is using a jQuery version of 1.7 or newer. If your theme is running a version of jQuery that is older than 1.7, then you can edit your theme code to use a supported version instead.

  1. In the Layout directory, click theme.liquid.

  2. Within the <head> element, find a script tag that references your theme’s jQuery source. The src attribute for the script tag contains a URL that includes /jquery/, followed by the version number. The tag looks something like this:

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    

    In the script tag above, the jQuery version being used is 1.4.2. This is an older version of jQuery that will need to be updated for the customization to work. If your theme is using a version that is older than 1.7, replace the version number in the URL with 1.7. The result should look like this:

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
    
  3. Click Save.

Demo store

This demo shop has a shipping rates calculator on the cart page.

3 Likes