{"status":200,"features":{"lulu-dashboard:temporary-localization-disable:LU-10335":{"defaultValue":true},"project-wizard:pricing-update-messaging:LU-10551":{"defaultValue":true},"recipient-tax-id:tax-id-names-by-country:LU-10434":{"defaultValue":{"BR":{"name":"CPF/CNPJ","country":"Brazil"},"MX":{"name":"Registro Federal de Contribuyentes (RFC)","country":"Mexico"},"CL":{"name":"Rol Único Tributario (RUT)","country":"Chile"},"PE":{"name":"Documento Nacional de Identidad (DNI), Registro Único del Contribuyente (RUC), or Carné de Extranjería (CE)","country":"Peru"},"AR":{"name":"Clave Única de Identificación Tributaria (CUIT)","country":"Argentina"}}},"project-service:enabled-KDP-payload:LU-11170":{"defaultValue":true},"customer-labels:LU-11919":{"defaultValue":true},"adyen-checkout-api:LU-12208":{"defaultValue":true},"scheduled-batch-payment-direct:LU-12303":{"defaultValue":true},"scheduled-batch-payment-printapi:LU-12303":{"defaultValue":true},"updated-order-cancellation:LU-12313":{"defaultValue":true},"enable-payment-blocks":{"defaultValue":true},"enable-isbn-barcode-check:LU-13157":{"defaultValue":true},"buy-button:eligible-express-checkout-projects:LU-13756":{"defaultValue":[]},"buy-button-pricing-calculator:LU-13230":{"defaultValue":true},"copyright-page-ISBN-barcode:LU-12744":{"defaultValue":true},"project-wizard:payee-email-repair:LU-13877":{"defaultValue":true},"project-wizard:payee-ux-updates:LU-13986":{"defaultValue":true},"project-wizard:pdf-file-size-limit:LU-12060":{"defaultValue":true},"lulu-admin:reorder-all-line-items:LU-3901":{"defaultValue":true}},"experiments":[{"key":"josh-test-coupon","changeId":"5ad3145bebe0ca5b1136727ee102203c01fb1d7d4042cf0a744b713e92232a0d","status":"draft","variations":[{"css":"","js":"","domMutations":[]},{"css":"","js":"(function ensureCouponTextAppears() {\n  const COUPON_TEXT =\n    'Save 20% on your print book order! <br>Apply code <strong>HOLIDAY20</strong>.';\n  const SELECTOR_CART_ITEM = '[class^=\"CartItem-module_wrapper__\"]';\n  const COUPON_CLASS = 'CartItem-module_couponTextContainer';\n\n  // More robust icon detection\n  function iconsPresent() {\n    // Look inside cart items only\n    const cartItems = document.querySelectorAll(SELECTOR_CART_ITEM);\n    if (!cartItems.length) return false;\n\n    for (const item of cartItems) {\n      // Match ANY class containing \"icon-formats-book\" or \"icon-formats-calendar\"\n      const hasBook = item.querySelector('[class*=\"icon-formats-book\"]');\n      const hasCalendar = item.querySelector('[class*=\"icon-formats-calendar\"]');\n\n      if (hasBook || hasCalendar) {\n        return true; // show coupon if ANY item qualifies\n      }\n    }\n\n    return false; // no valid icons found\n  }\n\n  function insertCoupon() {\n    const cartItems = document.querySelectorAll(SELECTOR_CART_ITEM);\n    const existing = document.querySelector(`.${COUPON_CLASS}`);\n\n    const shouldShow = iconsPresent();\n\n    // If coupon exists but shouldn't show → remove it\n    if (!shouldShow) {\n      if (existing) existing.remove();\n      return;\n    }\n\n    // If icons exist but cart is empty → do nothing (drawer still loading)\n    if (cartItems.length === 0) return;\n\n    const lastItem = cartItems[cartItems.length - 1];\n\n    // Create coupon container if missing\n    let couponBox = existing;\n    if (!couponBox) {\n      couponBox = document.createElement('div');\n      couponBox.className = COUPON_CLASS;\n\n      Object.assign(couponBox.style, {\n        backgroundColor: '#F0EFF6',\n        borderRadius: '24px',\n        padding: '16px',\n        fontSize: '14px',\n        color: '#303A4D',\n        textAlign: 'center',\n        marginTop: '16px',\n        marginBottom: '16px',\n        lineHeight: '1.4',\n        fontFamily: 'inherit'\n      });\n\n      couponBox.innerHTML = COUPON_TEXT;\n    }\n\n    // Insert after last cart item if not already placed there\n    if (lastItem.nextSibling !== couponBox) {\n      lastItem.insertAdjacentElement('afterend', couponBox);\n    }\n  }\n\n  // Watch for updates\n  const observer = new MutationObserver(insertCoupon);\n  observer.observe(document.body, { childList: true, subtree: true });\n\n  insertCoupon();\n})();","domMutations":[{"selector":".CartDrawer-module_cartDrawer__mVc78 .CartDrawer-module_header__6Z1AQ","action":"set","attribute":"html","value":"<div class=\"CartDrawer-module_headerText__MysvX\">Your Cart</div><button class=\"Button-module_button__rRap7 Button-module_secondary__t6FEg Button-module_medium__kQNzs icon-naked CartDrawer-module_closeButton__kfjM-\" data-testid=\"cart-drawer-close-icon\"><i class=\"icon-display-close-small\" role=\"img\" aria-label=\"display-close-small\"></i></button>"},{"selector":".CartDrawer-module_cartDrawer__mVc78 .CartDrawer-module_header__6Z1AQ","action":"set","attribute":"html","value":"<div class=\"CartDrawer-module_headerText__MysvX\">Your Cart</div><button class=\"Button-module_button__rRap7 Button-module_secondary__t6FEg Button-module_medium__kQNzs icon-naked CartDrawer-module_closeButton__kfjM-\" data-testid=\"cart-drawer-close-icon\"><i class=\"icon-display-close-small\" role=\"img\" aria-label=\"display-close-small\"></i></button>"},{"selector":".CartDrawer-module_cartDrawer__mVc78 .CartDrawer-module_header__6Z1AQ","action":"set","attribute":"html","value":"<div class=\"CartDrawer-module_headerText__MysvX\">Your Cart</div><button class=\"Button-module_button__rRap7 Button-module_secondary__t6FEg Button-module_medium__kQNzs icon-naked CartDrawer-module_closeButton__kfjM-\" data-testid=\"cart-drawer-close-icon\"><i class=\"icon-display-close-small\" role=\"img\" aria-label=\"display-close-small\"></i></button>"}]}],"hashVersion":2,"hashAttribute":"lulu_visitor_id","fallbackAttribute":"","disableStickyBucketing":false,"bucketVersion":1,"minBucketVersion":0,"urlPatterns":[{"include":true,"type":"simple","pattern":"https://lulu.com/search"}],"weights":[0,1],"meta":[{"key":"0","name":"Control"},{"key":"1","name":"Variation 1"}],"seed":"e998bacd-507b-4c2f-8afc-d5017e363585","name":"Josh Test (Coupon)","phase":"0","coverage":1},{"key":"josh-test-coupon","changeId":"df024dd18347b70e6cb00ee4e7cfc6e2d5fc735aa07a06cd7a865aed7366785a","status":"draft","variations":[{"css":"","js":"","domMutations":[]},{"css":"","js":"(function ensureCouponTextOnCartPage() {\n  const COUPON_TEXT = 'Save 20% on your print book order! <br>Apply code <strong>HOLIDAY20</strong>.';\n  const COUPON_CLASS = 'CartPage_couponTextContainer';\n  const CONTINUE_BTN_SELECTOR = '[data-testid=\"continue-shopping-btn\"]';\n\n  function iconsPresent() {\n    return (\n      document.querySelector('.icon-formats-book') ||\n      document.querySelector('.icon-formats-calendar')\n    );\n  }\n\n  function insertCoupon() {\n    const continueBtn = document.querySelector(CONTINUE_BTN_SELECTOR);\n    if (!continueBtn) return;\n\n    // If no icons → remove coupon if present\n    if (!iconsPresent()) {\n      const existing = document.querySelector(`.${COUPON_CLASS}`);\n      if (existing) existing.remove();\n      return;\n    }\n\n    let existingCoupon = document.querySelector(`.${COUPON_CLASS}`);\n\n    if (!existingCoupon) {\n      existingCoupon = document.createElement('div');\n      existingCoupon.className = COUPON_CLASS;\n\n      Object.assign(existingCoupon.style, {\n        backgroundColor: '#F0EFF6',\n        borderRadius: '24px',\n        padding: '16px',\n        fontSize: '14px',\n        color: '#303A4D',\n        textAlign: 'center',\n        marginTop: '10px',\n        lineHeight: '1.4',\n        fontFamily: 'inherit'\n      });\n\n      existingCoupon.innerHTML = COUPON_TEXT;\n    }\n\n    // Insert AFTER the Continue Shopping button\n    if (continueBtn.nextSibling !== existingCoupon) {\n      continueBtn.insertAdjacentElement('afterend', existingCoupon);\n    }\n  }\n\n  const observer = new MutationObserver(() => insertCoupon());\n  observer.observe(document.body, { childList: true, subtree: true });\n\n  insertCoupon();\n})();","domMutations":[]}],"hashVersion":2,"hashAttribute":"lulu_visitor_id","fallbackAttribute":"","disableStickyBucketing":false,"bucketVersion":1,"minBucketVersion":0,"urlPatterns":[{"include":true,"type":"simple","pattern":"https://www.lulu.com/cart"}],"weights":[0,1],"meta":[{"key":"0","name":"Control"},{"key":"1","name":"Variation 1"}],"seed":"e998bacd-507b-4c2f-8afc-d5017e363585","name":"Josh Test (Coupon)","phase":"0","coverage":1},{"key":"josh-test-coupon","changeId":"607576401f4de6512b6da52cc1cebb95f247ec97c98e06d96c05efe018e0523a","status":"draft","variations":[{"css":"","js":"","domMutations":[]},{"css":"","js":"(function ensureCouponTextOnCheckout() {\n  const COUPON_TEXT = 'Save 20% on your print book order! <br>Apply code <strong>HOLIDAY20</strong>.';\n  const COUPON_CLASS = 'Checkout_couponTextContainer';\n\n  function iconsPresent() {\n    return (\n      document.querySelector('.icon-formats-book') ||\n      document.querySelector('.icon-formats-calendar')\n    );\n  }\n\n  function insertCoupon() {\n    const totalLabel = Array.from(document.querySelectorAll('span'))\n      .find(span => span.textContent.trim() === 'Total');\n\n    if (!totalLabel) return;\n\n    // Remove coupon when icons missing\n    if (!iconsPresent()) {\n      const existing = document.querySelector(`.${COUPON_CLASS}`);\n      if (existing) existing.remove();\n      return;\n    }\n\n    let existingCoupon = document.querySelector(`.${COUPON_CLASS}`);\n\n    if (!existingCoupon) {\n      existingCoupon = document.createElement('div');\n      existingCoupon.className = COUPON_CLASS;\n\n      Object.assign(existingCoupon.style, {\n        backgroundColor: '#F0EFF6',\n        borderRadius: '24px',\n        padding: '16px',\n        fontSize: '14px',\n        color: '#303A4D',\n        textAlign: 'center',\n        marginTop: '16px',\n        marginBottom: '16px',\n        lineHeight: '1.4',\n        fontFamily: 'inherit'\n      });\n\n      existingCoupon.innerHTML = COUPON_TEXT;\n    }\n\n    // Insert AFTER the Total line container\n    const totalContainer = totalLabel.parentNode;\n    if (totalContainer.nextSibling !== existingCoupon) {\n      totalContainer.insertAdjacentElement('afterend', existingCoupon);\n    }\n  }\n\n  const observer = new MutationObserver(() => insertCoupon());\n  observer.observe(document.body, { childList: true, subtree: true });\n\n  insertCoupon();\n})();","domMutations":[]}],"hashVersion":2,"hashAttribute":"lulu_visitor_id","fallbackAttribute":"","disableStickyBucketing":false,"bucketVersion":1,"minBucketVersion":0,"urlPatterns":[{"include":true,"type":"simple","pattern":"https://www.lulu.com/checkout/d66e3fa3-4a0b-47d0-b9ad-ec55ce8f116b"}],"weights":[0,1],"meta":[{"key":"0","name":"Control"},{"key":"1","name":"Variation 1"}],"seed":"e998bacd-507b-4c2f-8afc-d5017e363585","name":"Josh Test (Coupon)","phase":"0","coverage":1},{"key":"continuous-aa","changeId":"a00537f14d1e8b7e3895fee485727335b01917150f10322277b445fe12d217b0","status":"running","variations":[{"css":"","js":"","domMutations":[]},{"css":"","js":"","domMutations":[]}],"hashVersion":2,"hashAttribute":"lulu_visitor_id","fallbackAttribute":"","disableStickyBucketing":false,"urlPatterns":[{"include":true,"type":"simple","pattern":"https://www.lulu.com/terms-and-conditions"}],"weights":[0.5,0.5],"meta":[{"key":"0","name":"Control"},{"key":"1","name":"Variation 1"}],"seed":"1c85b927-36f3-4351-8dc1-fc9acb315080","name":"Continuous A/A","phase":"0","coverage":1,"namespace":["ns-19g61umhx15x2w",0,1]}],"dateUpdated":"2026-10-22T12:10:05.688Z"}