# 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 <support@shipscout.app> and we will help you out.

## 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.

## How can I show a top bar advertising the shipping promotion to a visitor?

In the ShipScout dashboard you can configure a shipping banner without writing any code. Each variant carries its own static banner text, and you can scope where the banner appears by visitor country directly from the banner editor.

You can also use the Javascript SDK to display the assigned variant's data on your storefront — useful when you need a custom widget instead of (or in addition to) the built-in banner.

## 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:

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

Change it to check for hidden properties:

```javascript
{%- 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.

## 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 the "response" callback documented in [Theme customizations using ShipScout data](/tasks/theme-customizations.md). 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.

```javascript
{
  experimentId: 0,
  variant: 'A',
  isAssignmentManagedExternally: false,
  threshold: true,
  thresholdValue: 0,
  thresholdValueUnit: 'cents',
  thresholdMetRateAmountCents: 500,
  shippingPriceCents: 500,
  dynamicShipping: false,
  isNewAssignment: true
}
```

## 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 }}`

```javascript
<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.

```javascript
<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 test my existing shipping rates (without a free shipping threshold) against the same rates with a free shipping threshold?

For example:

* **Control**: Current shipping rates, no free-shipping threshold
* **Variant 1**: Current shipping rates plus free shipping over $60

In ShipScout, leave the Control variant alone (Control visitors see your existing rates exactly as they are today) and add a **Free shipping** rate to Variant 1 with a "When cart subtotal is at least $60" condition:

![Variants section of the experiment editor showing the default Control variant and a Variant 1 carrying a "Free shipping" rate that applies when cart subtotal is at or above $60.](/files/8OsOI63L8GnfaAH3UmyT)

## 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.

```javascript
<!-- Start ShipScout Code -->
<script src="https://web.shipscout.app/app.min.js"></script>
<!-- End ShipScout Code -->

</head>
```

## 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: <https://support.rechargepayments.com/hc/en-us/articles/360008681834-Identifying-which-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:

```
jQuery.post('/cart/add.js', {
  items: [
    {
      quantity: 1,
      id: 35286064136352
    }
  ]
});
```

You will then want to introduce the ShipScout line item property like this:

```
jQuery.post('/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:

`https://myshopname.com?ss=B`

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

`https://myshopname.com?other_param=test&ss=B`

For variant A you'd simply use this URL:

`https://myshopname.com?ss=A`

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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.shipscout.app/frequently-asked-questions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
