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 [email protected] 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".

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
break
end
end
# hide ShipScout shipping rates
if shipscout_rates_enabled === false
Input.shipping_rates.delete_if do |shipping_rate|
shipping_rate.source === 'ShipScout'
end
end
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 top bar 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: https://docs.shipscout.app/shopify-scripts/discount-codes

Does ShipScout use discount codes to provide different shipping rates?

No.

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: https://docs.shipscout.app/javascript-api. 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,
freeShippingThresholdCents: 0,
testId: 'preview',
variant: 'A',
shippingPriceCents: 500

How can I run ShipScout on a subdomain?

If you have Shopify primary store at https://shop.mystore.com and a marketing site at https://mystore.com 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 }}

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

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

<script>
//Include in theme.liquid before {{ content_for_header }}
window._shipScout = window._shipScout || [];
window.Shopify = window.Shopify || {};
Shopify.shop = 'mystore.myshopify.com';
/*
Replace mystore.mystore.com with the Shopify domain (should always include
".myshopify.com") excluding https://
*/
_shipScout.cookieDomain = 'mystore.com';
/*
Replace mystore.com with your domain but do not include
a leading dot or the subdomain
*/
</script>
<script async src="https://web.shipscout.app/app.min.js"></script>

How can I run ShipScout on a headless store?

You will need to include the ShipScout JS file on your website (we recommend before the closing </head> tag).

<script>
window._shipScout = window._shipScout || [];
window.Shopify = window.Shopify || {};
/*
Replace mystore.mystore.com with the Shopify domain (should always include
".myshopify.com") excluding https://
*/
Shopify.shop = 'mystore.myshopify.com';
/*
Replace mystore.com with your domain but do not include
a leading dot or the subdomain
*/
window.shipScoutCookieDomain = 'mystore.com';
</script>
<script async src="https://web.shipscout.app/app.min.js"></script>

Then, when adding an item to the cart you will need to make sure it passes the ShipScout custom attribute (line item property) on every item.

You can determine the current user ID, test number and the variant the user is in by checking the cookies:

//these values can be fetched from cookies that are set by ShipScout after the app.min.js file is included
//note that there may be a race condition where these cookies are not set yet by the time a user adds to cart
//it's recommended you wait and check for these cookie values when the visitors adds an item to the cart and not on first page load
const userId = Cookies.get('_sc_uuid');
const testNumber = Cookies.get('_sc_test');
const testVariant = Cookies.get('_sc_' + testNumber)

When you will need to pass all 3 of these values as a customAttribute when adding any item to the cart:

//this is an illustration of the customAttributes section of the graphQl query
//if the above cookies exist then pass in those values as a customAttribute
customAttributes: [
//any existing custom attributes go here
//and add the new ShipScout custom attribute like this:
{
key: '_sc',
value: userId + '_' + testNumber + '_' + testVariant
}
]

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 Threshold test in ShipScout. Set the threshold for variant A to $10,000 and set the threshold for variant B to $60.

The threshold in variant A is so high that no customer will reach it and therefore will never see the free shipping rate.

When the visitor is in a variant with a free shipping threshold $10,000 or higher the ShipScout top banner & widget will have a special CSS class of "shipscout-extra-high-threshold" placed on it. You can hide the top banner for variant A visitors in this example by adding this code to your theme's CSS:

.shipscout-extra-high-threshold {
display: none;
}

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 top bar to appear:

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

That example will show an empty red top bar 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="https://web.shipscout.app/app.min.js"></script>
<!-- End ShipScout Code -->
</head>