Frequently asked questions

Is ShipScout compatible with my Shopify theme?

ShipScout should work with every Shopify theme. If you are seeing an issue with your theme please contact us at and we will help you out.

Is ShipScout compatible with Shopify Scripts?

Yes. You can do some pretty cool stuff with Shopify Scripts and ShipScout rates are visible to a Script just like any other shipping rate. You can identify a ShipScout shipping rate in a Shopify Script by checking the "source" property which will be "ShipScout". See Shopify Scripts.

Can I restrict which destinations I offer ShipScout shipping rates in?

Yes, when you set up the test in ShipScout select the appropriate zones and that test's rates will only be offered to shipping destinations in those countries/provinces. If you modify a Shipping Zone in Shopify it will not change the destinations of any already-created ShipScout tests.

Can I restrict which products get offered ShipScout rates?

No, not currently.

But if you are on Shopify Plus and would like to exclude some products from ShipScout shipping rates you could achieve this with some product tags and a Shipping Shopify Script like the one below. But, make sure you have rates for these items provided by Shopify or another shipping app.

# default enable ShipScout rates
shipscout_rates_enabled = true

# check for any products tagged with "heavy"
Input.cart.line_items.each do |line_item|
  if line_item.variant.product.tags.include?('heavy')
    shipscout_rates_enabled = false

# hide ShipScout shipping rates
if shipscout_rates_enabled === false
  Input.shipping_rates.delete_if do |shipping_rate|
    shipping_rate.source === 'ShipScout'

Output.shipping_rates = Input.shipping_rates

How can I show a top bar advertising the free shipping rate or threshold to a visitor?

In the ShipScout dashboard you can configure a shipping banner without needing to write any code.

You can also use the Javascript SDK to display the current threshold and/or shipping rate for the test the user is in.

Note that this will be displayed to all users, even ones outside the zones of the test. This is because we don't know a visitor's shipping destination until they enter it during checkout.

Can I continue to offer some other shipping rates (e.g. Expedited Shipping) along with the ShipScout rates?

Yes. Just leave those other rates enabled and they will appear alongside the ShipScout rate.

Is ShipScout compatible with Shopify checkout apps?

It should be, yes. ShipScout uses Shopify's CarrierService API to provide shipping rates

I am seeing some strange "_sc" text on my cart page and other places on my website

Most themes should hide hidden line item properties that start with an underscore. But if you see it you will need to modify your cart.liquid or cart-template.liquid (or any other file) to include a check for hidden line item properties.

Example liquid:

{%- for p in properties -%}
  {%- unless p.last == blank or p.last-%}
    {{ p.first }}:{{ p.last }}
  {%- endunless -%}
{%- endfor -%}

Change it to check for hidden properties:

{%- for p in properties -%}
  {%- unless p.last == blank or p.first == "_sc" -%}
    {{ p.first }}:{{ p.last }}
  {%- endunless -%}
{%- endfor -%}

Is ShipScout compatible with other Shopify shipping apps?

ShipScout will not modify shipping rates provided by other Shopify shipping apps. This means if you have another app providing shipping rates they will appear alongside the ShipScout shipping rates. This will likely confuse customers so we recommend disabling other shipping rates while running a ShipScout test. However, there are cases where you might want to keep these other rates active, like if one of them is an "Expedited Shipping" rate or you are also offering UPS rate-shopped rates and you'd like all of these paid options to appear alongside the ShipScout rates.

If I don't have any tests live will ShipScout still show customers a shipping rate?

Yes, it can if you enable the Default Shipping Rate in ShipScout.

Will the same customer see a different ShipScout shipping rate when they re-visit the website?

Every visitor's browser is tracking their variant using Cookies and as long as they are on the same device & browser they will see the same shipping rate for the entire lifetime of a ShipScout test. If somebody visits on their phone and then on their laptop they can be placed in different variants. However, if a visitor returns to the website via and abandoned cart email link on a different device or browser, they will see the same shipping rate they originally saw since the variant has been stored in the cart attributes.

Why are customers getting free shipping even though they aren't spending enough to meet the free shipping threshold?

This is most likely because of discount codes. By way of example: You set free shipping for orders $50 and above. A customer completes checkout on a $44 order and gets free shipping. The threshold is calculated *before* discounts are applied so if the customer had a $55 order they qualified for free shipping even if though they applied a 20% discount code at checkout bringing their total down to $44.

This is not always ideal even though it averages out and still creates accurate test results. The reason for this behavior is that Shopify does not pass shipping apps like ShipScout any details on the discounts applied.

If you are on Shopify Plus you can change this behavior to base the threshold off the subtotal after the discount code has been applied:

Does ShipScout use discount codes to provide different shipping rates?


This is important because Shopify only allows the use of 1 discount code at a time so if we used discount codes then your visitors would not be able to use any other discount code.

How can I preview my top banner integration?

If you'd like to test the top banner & Javascript API implementation you can append this URL parameter to any URL on your website: ?shipscout_preview=yes

Then, as long as ShipScout is installed, it will display a preview banner. You do not need to have a test live for this to work.

It will also return the following preview parameters in "response" callback documented here: This makes it possible to do a full test of the banner and also test any custom theme integration with the JS API before you go live.

testType: 'threshold',
threshold: true,
thresholdCents: 0,
thresholdMetRateInCents: 0,
testId: 'preview',
variant: 'A',
shippingPriceCents: 500

How can I run ShipScout on a subdomain?

If you have Shopify primary store at and a marketing site at and you'd like to have ShipScout run on both you need to include some additional code.

Include the following code snippet in your Shopify store's theme.liquid just before {{ content_for_header }}

window._shipScout = window._shipScout || [];
_shipScout.cookieDomain = '';
Replace with the top level domain of your shopify store 
but do not include any subdomain or leading dot

Add the following snippet on your marketing site. We recommend placing it just before the closing </head> tag.

//Include in theme.liquid before {{ content_for_header }}

window._shipScout = window._shipScout || [];
window.Shopify = window.Shopify || {}; = '';
Replace with the Shopify domain (should always include
"") excluding https:// 

_shipScout.cookieDomain = '';
Replace with your domain but do not include
a leading dot or the subdomain
<script async src=""></script>

How can I test my existing shipping rates (without a free shipping threshold) against the same rates with a free shipping threshold?

For example:

  • Variant A: Current shipping rates without a free shipping threshold

  • Variant B: Current shipping rates but free shipping over $60

To set this up you can create a Custom test in ShipScout configured like this:

How can I avoid the brief layout flicker as the top banner appears?

It takes a second for the ShipScout script to load (since we don't want it to block the loading of anything else on your page) and you will notice that the appearance of top banner is slightly delayed. You can fix this by adding this element to the area you'd like the shipping banner to appear:

<div class="shipscout-placeholder" style="min-height: 36px; background: red;"></div>

That example will show an empty red shipping banner with a height of 36px until the ShipScout banner gets placed inside that element.

How can I load ShipScout faster?

ShipScout will load asynchronously on your store so that it doesn't block any other assets. This is the recommended practice from Shopify. If you'd like to have ShipScout load synchronously and sooner then you can add this code just before the closing </head> tag. It's important that it comes after the {{ content_for_header }} liquid code.

<!-- Start ShipScout Code -->
<script src=""></script>
<!-- End ShipScout Code -->


Is ShipScout compatible with Recharge?

Recharge with Shopify Checkout

If you are on the newer Shopify Checkout version of Recharge everything will work as expected.

Recharge with legacy Recharge Checkout

If you are on the legacy Recharge though your customers will be excluded from the Orders and Checkout data in ShipScout test results.

First, determine which version Recharge checkout is in use:

Here's what you can expect depending on your version of Recharge:

  • Shopify Checkout Integration

    Your customers will pass through the Shopify checkout. First time subscription orders will be placed in a ShipScout variant and will receive the relevant shipping rate. Subscription renewal orders will not be included in your test results.

  • Recharge Checkout on Shopify (legacy Recharge, before Nov 2nd, 2020)

    These customer will have their Visit and Add to Cart events tracked in your test results.

    In the Recharge dashboard if you have the Shipping Setup set to "Get all rates from Shopify" then the customer will see the Variant A shipping rate of the current test as a fallback rate. They won't be included in the test results though.

    In the Recharge dashboard if you have the Shipping Setup set to "Use Recharge zones, rates and integrations" then the customer will not see any ShipScout shipping rates and will also not be included in the test results.

    All Recharge customers will be excluded from Checkout and Order events.

My Shopify theme does not add line item properties when adding items to the cart, what can I do?

In order to have the proper rates appear at checkout your cart's line items need a special ShipScout line item property.

We try to insert an input field on the product page to make sure that the necessary hidden line item property is set when adding to cart. Even if it's not we check for a subsequent /cart.js call and analyze that to see if the properties are still missing.

Some themes, however, don't have a product page form and also won't call /cart.js after adding an item to the cart. In this case you will need to explicitly set the line item property when calling the /add.js endpoint.

Locate the code in your theme that's adding to cart. It may look something like this:'/cart/add.js', {
  items: [
      quantity: 1,
      id: 35286064136352

You will then want to introduce the ShipScout line item property like this:'/cart/add.js', {
  items: [
      quantity: 1,
      id: 35286064136352,
      properties: (typeof window.ShipScoutLineItemProperty !== 'undefined' ? { "_sc": window.ShipScoutLineItemProperty } : null)

How can I force a visitor into a specific variant?

You can force visitors to receive the shipping rates of a specific variant by including an ss URL parameter. For example, any visitors arriving to your website with the following URL will be receive the shipping rates as if they were in variant B:

If you have other URL parameters already you can include it like this:

For variant A you'd simply use this URL:

It's important to note that, even though this visitor will see the shipping rates from a particular variant they will *not* be included in any of the ShipScout data for that test (visitor, add to cart, checkout, order counts). This is because, for a test to be valid, each visitor must be randomly placed in a variant, not forced into one.

Last updated