link rel="stylesheet" media="all" onload="this.media='all'" id="ecom-vendors-slider_css" href="https://cdn.ecomposer.app/vendors/css/ecom-swiper@11.css" /> <link rel="stylesheet" media="all" onload="this.media='all'" id="ecom-vendors-modal_css" href="https://cdn.ecomposer.app/vendors/css/ecom_modal.css" /> <

Select from our Range of  Products Isle of Arran Claret Round Cheddar Truckle

Filter
Product type
[] 0 selected
  • Cracked Black Peppercorn Cheddar Speciality Cheese from The Isle of Arran
< link rel="stylesheet" media="all" id="ecom-vendors-css_ecomposer_base" href="https://cdn.ecomposer.app/vendors/css/ecom-base.css?v=2.1" />
window.EComposer = window.EComposer || {}; window.EComposer.TEMPLATE_ID="64d4cd6c58f2bda826061ec2"; window.EComposer.FOOTER = {"template_id":"64d4cd6c58f2bda826061ec2","title":"Footer","type":"footer","slug":"ecom-footer","plan_id":2};
0 selected ResetContact us
Best Sellers
Accompaniments
About Us & Enquiries
Delivery
A Delightful Twin Pack of Scottish Honey
Privacy Notice

A Delightful Twin Pack of Scottish Honey Terms & Conditions

£22.00
Copyright 2026. All Rights Reserved by The John Muir Country Store. Site by
Fifth House
Choosing a selection results in a full page refresh.
Opens in a new window.
//SendWILL APPS COMMON JS CODE window.EcomSendApps = window.EcomSendApps || {} window.EcomSendApps.design_mode = false window.EcomSendApps.common = window.EcomSendApps.common || {} window.EcomSendApps.common.shop = { permanent_domain: 'john-muir-country.myshopify.com', currency: "GBP", money_format: "£{{amount}}", id: 80637690163, } window.EcomSendApps.common.customer = { id: null, tags: null, email: null, accepts_marketing: null, first_name: null, } window.EcomSendApps.common.template = 'product'
Apple Jelly from The John Muir Country Store
window.EcomSendApps = window.EcomSendApps || {} /** @description shared localStorage key used by web-pixel sandbox to read storefront GDPR mode */ const ECOMSEND_GDPR_ENABLED_STORAGE_KEY = "ECOMSEND:GDPR_ENABLED" /** @description storefront main bundle asset url */ const ECOMSEND_MAIN_SCRIPT_URL = 'https://cdn.shopify.com/extensions/019fb7ac-42ed-7f9c-861f-a823e7924934/ecomsend-174/assets/ecomsend.js' /** @description storefront style asset url */ const ECOMSEND_MAIN_STYLE_URL = 'https://cdn.shopify.com/extensions/019fb7ac-42ed-7f9c-861f-a823e7924934/ecomsend-174/assets/style.css' /** @description storefront wasm asset url for runtime signature module */ const ECOMSEND_WASM_ASSET_URL = 'https://cdn.shopify.com/extensions/019fb7ac-42ed-7f9c-861f-a823e7924934/ecomsend-174/assets/client_safe.wasm' /** @description fallback delay when requestIdleCallback is unavailable */ const ECOMSEND_IDLE_TIMEOUT_MS = 800 /** @description user interaction events used to trigger lazy init earlier */ const ECOMSEND_INTERACTION_EVENTS = ["pointerdown", "keydown", "touchstart"] /** @description global flag key for emergency immediate loading */ const ECOMSEND_FORCE_IMMEDIATE_FLAG = window.EcomSendApps?.forceImmediateLoad === true /** @description default GDPR mode comes from block setting and can be overridden on window.EcomSendApps.GDPR */ const ECOMSEND_DEFAULT_GDPR_FLAG = false /** @description default CWTracks mode comes from block setting and can be overridden on window.EcomSendApps.CWTracksEnabled */ const ECOMSEND_DEFAULT_CWTRACKS_ENABLED = false /** @description normalize merchant-provided GDPR switch into a strict boolean value */ function normalizeEcomsendBooleanFlag(rawValue) { if (typeof rawValue === "boolean") { return rawValue } if (typeof rawValue === "number") { return rawValue === 1 } if (typeof rawValue === "string") { const normalizedValue = rawValue.trim().toLowerCase() return normalizedValue === "true" || normalizedValue === "1" || normalizedValue === "yes" } return false } /** @description lock runtime switch value on EcomSendApps to reduce accidental console overwrite. */ function lockEcomsendReadonlyFlag(flagName, flagValue) { try { Object.defineProperty(window.EcomSendApps, flagName, { value: flagValue, writable: false, configurable: false, enumerable: true, }) return } catch (error) {} window.EcomSendApps[flagName] = flagValue } /** @description resolve storefront GDPR mode from merchant theme override */ function resolveEcomsendGdprMode() { if (typeof window.EcomSendApps.GDPR === "undefined") { window.EcomSendApps.GDPR = ECOMSEND_DEFAULT_GDPR_FLAG } const gdprEnabled = normalizeEcomsendBooleanFlag(window.EcomSendApps.GDPR) window.EcomSendApps.GDPR = gdprEnabled return gdprEnabled } /** @description resolve storefront CWTracks mode from merchant theme block setting and runtime override */ function resolveEcomsendCwTracksMode() { if (typeof window.EcomSendApps.CWTracksEnabled === "undefined") { window.EcomSendApps.CWTracksEnabled = ECOMSEND_DEFAULT_CWTRACKS_ENABLED } const cwTracksEnabled = normalizeEcomsendBooleanFlag(window.EcomSendApps.CWTracksEnabled) window.EcomSendApps.CWTracksEnabled = cwTracksEnabled return cwTracksEnabled } /** @description persist storefront GDPR mode so web-pixel sandbox can consume the same switch */ function syncEcomsendGdprModeToStorage(gdprEnabled) { if (!window.localStorage) { return } if (gdprEnabled) { window.localStorage.setItem(ECOMSEND_GDPR_ENABLED_STORAGE_KEY, "true") return } window.localStorage.removeItem(ECOMSEND_GDPR_ENABLED_STORAGE_KEY) } /** @description enable GDPR gating only when merchant explicitly turns on storefront GDPR mode */ const ECOMSEND_GDPR_ENABLED = resolveEcomsendGdprMode() /** @description enable CWTracks callback/event emit only when merchant turns on CWTracks mode. */ const ECOMSEND_CWTRACKS_ENABLED = resolveEcomsendCwTracksMode() lockEcomsendReadonlyFlag("GDPR", ECOMSEND_GDPR_ENABLED) lockEcomsendReadonlyFlag("CWTracksEnabled", ECOMSEND_CWTRACKS_ENABLED) try { syncEcomsendGdprModeToStorage(ECOMSEND_GDPR_ENABLED) } catch (error) {} /** @description create main stylesheet node for storefront runtime */ function createEcomSendMainStyleEle() { const ecomsendMainStyleEle = document.createElement("link") ecomsendMainStyleEle.rel = "stylesheet" ecomsendMainStyleEle.href = ECOMSEND_MAIN_STYLE_URL ecomsendMainStyleEle.dataset.ecomsendTag = "main-style" return ecomsendMainStyleEle } /** @description append runtime stylesheet exactly once */ function ensureEcomSendMainStyleLoaded() { if (document.querySelector('link[data-ecomsend-tag="main-style"]')) { return } const ecomsendMainStyleEle = createEcomSendMainStyleEle() document.head.appendChild(ecomsendMainStyleEle) } /** @description remove interaction listeners after first lazy-init trigger */ function clearInteractionListeners() { ECOMSEND_INTERACTION_EVENTS.forEach((eventName) => { window.removeEventListener(eventName, scheduleMainBundleLoad) }) } /** @description run low-priority task via idle callback with timeout fallback */ function scheduleLowPriorityTask(taskRunner, timeoutMs) { if (window.requestIdleCallback) { window.requestIdleCallback(() => { taskRunner() }, { timeout: timeoutMs }) return } window.setTimeout(() => { taskRunner() }, timeoutMs) } /** @description load main storefront bundle once and keep rollback override */ function loadEcomsendMainBundle() { if (window.__ecomsendMainBundleLoaded) { return } window.__ecomsendMainBundleLoaded = true clearInteractionListeners() /** @description ensure storefront runtime css is loaded together with main bundle */ ensureEcomSendMainStyleLoaded() const ecomsendMainScriptEle = document.createElement("script") ecomsendMainScriptEle.src = ECOMSEND_MAIN_SCRIPT_URL ecomsendMainScriptEle.async = true ecomsendMainScriptEle.dataset.ecomsendTag = "main-script" document.body.appendChild(ecomsendMainScriptEle) } /** @description schedule heavy bundle with idle-first strategy to reduce main-thread contention */ function scheduleMainBundleLoad() { if (window.__ecomsendMainBundleLoadScheduled) { return } /** @description dedupe idle scheduling from DOMContentLoaded and first interactions */ window.__ecomsendMainBundleLoadScheduled = true if (ECOMSEND_FORCE_IMMEDIATE_FLAG) { loadEcomsendMainBundle() return } scheduleLowPriorityTask(loadEcomsendMainBundle, ECOMSEND_IDLE_TIMEOUT_MS) } /** @description cache marketing params for pixel/report flows before heavy bundle starts */ function cacheMarketingParams() { const urlParams = new URLSearchParams(window.location.search) const marketingId = urlParams.get("ec_marketing_id") const ecEmailId = urlParams.get("ec_email_id") const ecMarketingSign = urlParams.get("ec_marketing_sign") if (marketingId && window.localStorage) { window.localStorage.setItem("ec_marketing_id", marketingId) } if (ecEmailId && window.localStorage) { window.localStorage.setItem("ec_email_id", ecEmailId) } if (ecMarketingSign && window.localStorage) { window.localStorage.setItem("ec_marketing_sign", ecMarketingSign) } } /** @description check whether marketing storage is allowed under Shopify customer privacy state */ function isMarketingStorageAllowedByCustomerPrivacy() { const customerPrivacy = window?.Shopify?.customerPrivacy if (!customerPrivacy) { return false } const marketingAllowed = typeof customerPrivacy.marketingAllowed === "function" && customerPrivacy.marketingAllowed() if (marketingAllowed) { return true } if (typeof customerPrivacy.currentVisitorConsent === "function") { const consent = customerPrivacy.currentVisitorConsent() return consent?.marketing === "yes" } return false } /** @description check whether analytics storage is allowed under Shopify customer privacy state */ function isAnalyticsStorageAllowedByCustomerPrivacy() { const customerPrivacy = window?.Shopify?.customerPrivacy if (!customerPrivacy) { return false } const analyticsAllowed = typeof customerPrivacy.analyticsProcessingAllowed === "function" && customerPrivacy.analyticsProcessingAllowed() if (analyticsAllowed) { return true } if (typeof customerPrivacy.currentVisitorConsent === "function") { const consent = customerPrivacy.currentVisitorConsent() return consent?.analytics === "yes" } return false } /** @description execute marketing param caching with GDPR guard: functional off when GDPR disabled */ function cacheMarketingParamsWithGdprGuard() { if (!ECOMSEND_GDPR_ENABLED) { cacheMarketingParams() return } if (isMarketingStorageAllowedByCustomerPrivacy()) { cacheMarketingParams() } } /** @description cache shop id used by pixel report branches */ function cacheShopIdForPixel() { if (!window.EcomSendApps?.common?.shop?.id || !window.localStorage) { return } window.localStorage.setItem("ECOMSEND:ES_SHOP_ID", window.EcomSendApps.common.shop.id) } /** @description execute shop id caching with GDPR guard and shared consent policy */ function cacheShopIdWithGdprGuard() { if (!ECOMSEND_GDPR_ENABLED) { cacheShopIdForPixel() return } if (isAnalyticsStorageAllowedByCustomerPrivacy()) { cacheShopIdForPixel() } } /** @description load Shopify consent-tracking API before GDPR-gated cache writes */ function withCustomerPrivacyApiReady(onReady) { if (!ECOMSEND_GDPR_ENABLED) { onReady() return } if (window?.Shopify?.customerPrivacy) { onReady() return } if (typeof window?.Shopify?.loadFeatures !== "function") { return } window.Shopify.loadFeatures( [{ name: "consent-tracking-api", version: "0.1" }], (error) => { if (error) { return } onReady() } ) } try { withCustomerPrivacyApiReady(() => { cacheMarketingParamsWithGdprGuard() cacheShopIdWithGdprGuard() }) if (ECOMSEND_GDPR_ENABLED) { document.addEventListener("visitorConsentCollected", () => { cacheMarketingParamsWithGdprGuard() cacheShopIdWithGdprGuard() }) } } catch (e) {} /** @description inject wasm asset url into shared namespace before main bundle executes */ window.EcomSendApps.wasmURL = ECOMSEND_WASM_ASSET_URL ECOMSEND_INTERACTION_EVENTS.forEach((eventName) => { window.addEventListener(eventName, scheduleMainBundleLoad, { once: true, passive: true }) }) if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", scheduleMainBundleLoad, { once: true }) } else { scheduleMainBundleLoad() }
window.shopLocale = 'en'
/** @description timeout used for deferred discount request scheduling */ const ECOMSEND_DISCOUNT_IDLE_TIMEOUT_MS = 1500 /** @description apply discount code from url query only when parameter exists */ function applyWillDiscountCode() { const urlParams = new URLSearchParams(window.location.search) const willDiscountCode = urlParams.get("willDiscountCode") if (!willDiscountCode) { return } fetch("/cart/update.js", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ discount: willDiscountCode, }), }) } try { if (!window.__ecomsendDeferredTasksScheduled) { /** @description global guard to avoid duplicate deferred task scheduling */ window.__ecomsendDeferredTasksScheduled = true if (window.requestIdleCallback) { window.requestIdleCallback(() => { applyWillDiscountCode() }, { timeout: ECOMSEND_DISCOUNT_IDLE_TIMEOUT_MS }) } else { window.setTimeout(() => { applyWillDiscountCode() }, ECOMSEND_DISCOUNT_IDLE_TIMEOUT_MS) } } } catch (error) {}
window.hextom_fsb_meta = { p1: [ "narra" , "elkcurt dnuor" ], p2: { }, p3: [ { "v1": "true" } ], p4:8530855526707, p5:[461509787955,455940079923,723845513589], p6:null, }; window.hextom_fsb_config = {"shop_active":"yes","record":false,"bars":[],"theme":{"theme_id":"156626583859","is_xhr":true}};

Apple Jelly from The John Muir Country Store

£4.50