JavaScript SDK

The JavaScript SDK lets you get information about the test or settings that a current user is active in.

Include the following JavaScript wherever you'd like (we recommend somewhere before the closing </head> tag). It will execute as soon as ShipScout has loaded and will inform you on which test the current user is in.

<script>
window._shipScout = window._shipScout || [];
_shipScout.push(function (response) {
/*
example response object
{
testId: 1,
testType: 'threshold',
variant: 'B',
threshold: true,
freeShippingThresholdCents: 5000,
shippingPriceCents: 1000,
lineItemProperty: 0467e6f7-8d66-4610-a939-da76dd9f7a68_1_B
}
*/
//apply any exchange rates to currency if necessary
var thresholdCents = (window.Shopify && Shopify.currency && Shopify.currency.rate) ? response.freeShippingThresholdCents * Shopify.currency.rate : response.freeShippingThresholdCents;
var flatrateCents = (window.Shopify && Shopify.currency && Shopify.currency.rate) ? response.shippingPriceCents * Shopify.currency.rate : response.shippingPriceCents;
//format currency
var currencyFormat = ShipScoutGetCurrency();
//get threshold amount with currency symbol
var thresholdAmount = ShipScoutFormatMoney(thresholdCents, currencyFormat);
//get flat rate amount with currency symbol
var flatrateAmount = ShipScoutFormatMoney(flatrateCents, currencyFormat);
//==== insert your code below to dynamically update elements ====//
//example updating an element on the page dynamically with the threshold amount
var el = document.getElementById("foo-bar");
if(response.freeShippingThresholdCents === 0) {
el.innerHTML = "FREE!";
} else {
el.innerHTML = thresholdAmount;
}
});
</script>

Here's a description of the properties and values to expect in the response object.

Property

Value Type

Example

Description

testId

integer | null

1

The test number.

variant

string | null

A

The variant this user is in.

freeShippingThresholdCents

integer

5000

*Only present if threshold is true

The amount, in cents, required to get free shipping.

shippingPriceCents

integer

1000

The price, in cents, of shipping.

threshold

boolean

true

If there's a free shipping threshold for this user.

testType

string | null

threshold

The value can either be "threshold", "flat-rate" or "new-vs-returning".

If there's no test live but you do have a Default Shipping Rate set in ShipScout the rate settings will still be returned by the JS SDK. The following 3 properties will be null however: testId, testType, and variant.

Testing the SDK without a live test
Testing the SDK without a live test

You can append ?shipscout_preview=yes to any URL on your website to test your SDK integration without a live test. Appending this URL will simulate these hard-coded values for the SDK:

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

If you need to overwrite these hard-coded preview values to simulate a different setup or variant you can do that like this:

window._shipScout = window._shipScout || [];
_shipScout.push(function (response) {
//Temporarily overwrite the response for testing
response = {
...response,
freeShippingThresholdCents: 5000,
variant: 'B',
}
})