São Tomé & Príncipe (STDDb)
- Uganda (UGXUSh)
- Ukraine (UAH₴) United Kingdom (GBP£)
- United States (GBP£)
- Vatican City (EUR€)
- Western Sahara (MADد.م.)
- Zambia (GBP£) Zimbabwe (USD$)
- Shop All
Netherlands (EUR€)
Belgium (EUR€)
| North Macedonia (MKDден) Botswana (BWPP) | |
| Poland (PLNzł) | Bulgaria (EUR€)|
| Portugal (EUR€) | Burkina Faso (XOFFr)|
| Romania (RONLei) | Cameroon (XAFCFA)|
| Rwanda (RWFFRw) | Cape Verde (CVE$)|
| São Tomé & Príncipe (STDDb) | Chad (XAFCFA)|
| Senegal (XOFFr) | Comoros (KMFFr)|
| Seychelles (GBP£) | Congo - Kinshasa (CDFFr)|
| Sierra Leone (SLLLe) | Côte d’Ivoire (XOFFr)|
| Slovenia (EUR€) | Cyprus (EUR€)|
| Somalia (GBP£) | Czechia (CZKKč)
| South Africa (GBP£)
| South Sudan (GBP£) | Djibouti (DJFFdj) |
| Egypt (EGPج.م) | St. Helena (SHP£) |
| Sudan (GBP£) | Eritrea (GBP£) |
| Estonia (EUR€) | Sweden (SEKkr) |
| Switzerland (CHFCHF) | Ethiopia (ETBBr) |
| Faroe Islands (DKKkr.) | Togo (XOFFr) |
| Tristan da Cunha (GBP£) | France (EUR€) |
| French Southern Territories (EUR€) | Türkiye (GBP£) |
| Uganda (UGXUSh) | Gambia (GMDD) |
| Georgia (GBP£) | United Kingdom (GBP£) |
| United States (GBP£) | Ghana (GBP£) |
| Gibraltar (GBP£) | Western Sahara (MADد.م.) |
| Zambia (GBP£) | Greenland (DKKkr.) |
| Guadeloupe (EUR€) | |
| Guinea (GNFFr) | |
| Guinea-Bissau (XOFFr) | |
| Iceland (ISKkr) | |
| Ireland (EUR€) | |
| Italy (EUR€) | |
| Jersey (GBP£) | BUY |
| RIDE CONFIDENT | Kosovo (EUR€) |
| Latvia (EUR€) | #productTemplate--template--26482385912191__main { --PT: 60px; --PB: 60px; }|
| Liberia (GBP£) | |
| Open image lightboxLibya (GBP£) | |
| Lithuania (EUR€) |
- <
&
!Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) {
console.debug('STOQ - locale not explicitly translated, will use default language from cache');
}
}
const updatedAt = new Date(settings.updated_at);
if (isNaN(updatedAt.getTime())) {
console.debug('STOQ - Invalid updated_at date format in settings');
return null;
}
const age = Date.now() - updatedAt.getTime();
if (age
SETTINGS_CACHE_DURATION) { console.debug('STOQ - settings changed recently, skipping cache'); return null; } return settings; } catch (error) { console.debug('STOQ - Error checking settings cache:', error); return null; } } function createRestockRocketContainer() { const restockRocketContainer = document.createElement('div'); restockRocketContainer.id = 'restock-rocket'; document.body.appendChild(restockRocketContainer); } function createRestockRocketScript(scriptUrl) { const restockRocketScriptElement = document.createElement('script'); restockRocketScriptElement.setAttribute('defer', 'defer'); restockRocketScriptElement.crossOrigin = 'anonymous'; restockRocketScriptElement.onerror = function () { restockRocketScriptElement.onerror = null; const plainScriptElement = document.createElement('script'); plainScriptElement.setAttribute('defer', 'defer'); plainScriptElement.src = scriptUrl; documentbug('STOQ - using expired cached settings as fallback'); initializeScripts(cachedSettings); } else { console.error('STOQ - failed to load settings:', error); } }) .catch(function(e) { console.error(e) }) } function fetchEmbedConfig(endpoint, apply) { return fetch( `${window._RestockRocketConfig.host}/api/v1/embed/${endpoint}.json`, { headers: { 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 'ngrok-skip-browser-warning': 'skip' } } ) .then(function(response) { if (!response.ok) throw new Error(`Failed to fetch ${endpoint}`); return response.json(); }) .then(function(data) { try { apply(data); } catch (applyError) { console.error('STOQ - apply failed for ' + endpoint + ':', applyError); throw applyError; } }) .catch(function(error) { console.debug(`STOQ - using cached ${endpoint}:`, erro.shop.translations.value); } if (settings.multi_language_enabled && !settings.translations) { throw new Error('settings metafield carries no translations'); } return settings; }); } const cachedSettings = window._RestockRocketConfig.cachedSettings; const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : null; if (validCachedSettings) { console.debug('STOQ - using cached settings'); initializeScripts(validCachedSettings); } else { console.debug('STOQ - fetching fresh settings'); const headers = { 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 'ngrok-skip-browser-warning': 'skip' }; if (window.Shopify?.theme?.role === 'main') { headers['X-Shopify-Theme-Schema-Name'] = window.Shopify.theme.schema_name; headers['X-Shopify-Theme-Schema-Version'] = window.Shopify.theme.schema_version; headers['X-Shopify-Theme-Store-Id'] = window.Shopify.theme.theme_store_id; }
shop_domain: _stoqInitConfig.shop || '', market_id: _stoqInitConfig.marketId || '', country_code: _stoqInitConfig.countryIsoCode || '', detected_variant_ids: _stoqDetectedVariantIds, selected_variant_id: _stoqSelectedVariantId || '', page_load_seq: _stoqPageSeq, liquid_rendered_at: _stoqInitConfig.liquidRenderedAt || 0, app_version: _stoqInitConfig.appVersion || '', liquid_cache_age: _stoqInitConfig.liquidCacheAge, inventory_policy: (_stoqInitConfig.variantsInventoryPolicy || {})[_stoqSelectedVariantId] || '', inventory_quantity: (_stoqInitConfig.variantsInventoryQuantity || {})[_stoqSelectedVariantId], }); } catch (e) { console.debug('STOQ - stoq_initialized publish failed:', e); } try { var _sqTrack = window._RestockRocketConfig; if (_sqTrack.preordersConfigured) { document.addEventListener('click', function (e) { try { var t = e.target; if (!t || !t.closest) return; var host = t { var ids = [pl.shopify_selling_plan_id, pl.default_shopify_selling_plan_id]; (Array.isArray(pl.payment_options) ? pl.payment_options : []).forEach(function (o) { ids.push(o && o.shopify_selling_plan_id); }); return ids.filter(function (id) { return id != null; }).map(Number); }; var _sqForVariant = function (pl) { if (!pl || !pl.enabled) return false; if (Array.isArray(_sqAlloc)) { var ids = _sqPlanIds(pl); return _sqAlloc.some(function (id) { return ids.indexOf(Number(id)) !== -1; }); } return Array.isArray(pl.variant_ids) && pl.variant_ids.indexOf(_sqVidNum) !== -1; }; _sqPlans.forEach(function (pl) { if (!_sqPlan && _sqForVariant(pl) && pl.markets_enabled && Array.isArray(pl.shopify_market_ids) && pl.shopify_market_ids.indexOf(_sqMktId) !== -1) { _sqPlan = pl; } }); if (!_sqPlan) { _sqTrack.cachedPreorderVariantIds.preorder_variant_ids) || (_sqTrack.inlinePreorderIdsDropped === true && (_sqTrack.variantsInventoryPolicy || {})[vid] === 'continue' && (_sqTrack.variantsInventoryQuantity || {})[vid] = 0); })(), in_enabled_plan: !!_sqPlan, is_instock_variant: (function () { var has = function (a) { return Array.isArray(a) && a.indexOf(_sqVidNum) !== -1; }; return has(_sqTrack.inStockVariantIds) || has(_sqTrack.cachedInStockVariantIds && _sqTrack.cachedInStockVariantIds.in_stock_variant_ids); })(), enrolled_plan_id: (_sqPlan && (_sqPlan.shopify_selling_plan_id || _sqPlan.shopify_selling_plan_group_id)) || '', enrolled_plan_provider: (_sqPlan && _sqPlan.inventory_provider) || '', block_enabled: !(_sqTrack.cachedSettings && _sqTrack.cachedSettings.block_accelerated_checkout === false) && !(_sqTrack.readFlags && _sqTrack.readFlags.accelerated_block_off === true), gate_armed: !!_sqTrack.acceleratedGateArmed, gate_active_at_click: !!(document.documentElement && document.documentElement.c delete settings.translations; return settings; } console.debug(`STOQ - Applying translations for normalized locale: ${normalizedLocale} (original: ${window._RestockRocketConfig.locale})`); const translatedFields = translations[normalizedLocale]; if (translatedFields && typeof translatedFields === 'object') { Object.keys(translatedFields).forEach(function(key) { const value = translatedFields[key]; if (value !== null && value !== undefined && value !== '') { settings[key] = value; } }); } else { console.debug('STOQ - No translated fields found for locale:', normalizedLocale); } delete settings.translations; return settings; } catch (e) { console.debug('STOQ - error applying translations:', e); return settings; } } function setupCartSellingPlanUpdater(settings) { window.addEventListener('stoq:inventory-data-loaded', function(event) { console.debug(
nt API unavailable')); } return fetch( `https://${cfg.shop}/api/${cfg.storefrontApiVersion}/graphql.json`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Shopify-Storefront-Access-Token': token, }, body: JSON.stringify({ query: query, variables: variables }), } ) .then(function(response) { if (!response.ok) { throw new Error('Storefront API HTTP ' + response.status); } return response.json(); }) .then(function(body) { if (body && body.errors && body.errors.length) { throw new Error('Storefront API errors: ' + body.errors.map(function(e) { return e && e.message; }).join(', ')); } return body && body.data; }); } function fetchStorefrontShopMetafield(key) { const cfg = window._RestockRocketConfig; const query = 'query StoqShopMetafield($namespace: String!, $key: String!) { shop { metafield(namespace: $namespace, key: $key) { value } } }'; ret
- tegrations',
flag: 'enable_storefront_integrations_read',
isValid: function(value) { return Array.isArray(value); },
apply: function(data) {
cfg.integrations = data;
}
});
}
function refreshSellingPlans() {
const cfg = window._RestockRocketConfig;
return refreshShopConfig({
endpoint: 'selling_plans',
metafieldKey: 'cachedSellingPlans',
flag: 'enable_storefront_selling_plans_read',
isValid: function(value) { return !!value && Array.isArray(value.plans); },
apply: function(data) {
cfg.sellingPlans = data.plans;
cfg.disabledSellingPlanIds = data.disabled_plan_ids || [];
if (data && data.read_flags && typeof data.read_flags === 'object' && !Array.isArray(data.read_flags)) {
cfg.readFlags = data.read_flags;
}
}
});
}
function initializeScripts(settings) {
settings = applyTranslations(settings);
window._RestockRocketConfig.settings = settings;
console.debug(`STOQ - settiectionScriptUrl);
} else {
console.debug(`STOQ - no scripts enabled for ${pageType}`);
}
const wishlistIntegration = window._RestockRocketConfig.integrations.find(function(integration) { return integration.type === 'wishlist' && integration.enabled; });
if (wishlistIntegration) {
createRestockRocketScript(window._RestockRocketConfig.scriptHost + 'restockrocket-wishlist.js');
if ((wishlistIntegration.page_types || []).indexOf(pageType) !== -1) {
let wishlistHeartsRequested = false;
const wishlistHeartTarget = pageType === 'product' ? '[data-stoq-wishlist-heart]' : '[data-stoq-wishlist-heart], a[href*="/products/"]';
// A product page's heart places itself on the product image unless the merchant turned that off.
const wishlistImageHeart = pageType === 'product' && (wishlistIntegration.configuration || {}).product_heart_auto !== false;
const loadWishlistHearts = function() {
if (wishlistHeartsRequested createRestockRocketScript(window._RestockRocketConfig.scriptHost + 'restockrocket-wishlist-prompt.js'); } } catch (e) {} } const appLoadedEvent = new CustomEvent('stoq:loaded', { detail: { pageType: window._RestockRocketConfig.pageType, enabled: settings.enable_app, settings: settings, preorderEnabled: settings.preorder_enabled } }); console.debug('STOQ - dispatching app loaded event'); window.dispatchEvent(appLoadedEvent); } }

Djibouti (DJFFdj)
Open search bar




Search
Åland Islands (EUR€)
Algeria (DZDد.ج)
Angola (GBP£)
Ascension Island (SHP£)
Malta (EUR€)
Mayotte (EUR€)
Montenegro (EUR€)
Namibia (GBP£)
Nigeria (NGN₦)
Poland (PLNzł)
Romania (RONLei)