Анализ сайта recycline.com
Основное Готовность: 70%
Домен
recycline.com
Состояние доменного имени
?
Проверяем корректность доменного имени и наличие технических проблем на уровне домена.
Домен второго уровня идеален для продвижения.
Отличный запоминающийся домен.
Ответ сервера
200 Успешный ответ
HTTP-код ответа и цепочка редиректов
?
Код 200 — страница доступна. Коды 3xx — редиректы (цепочки замедляют загрузку и размывают ссылочный вес). Коды 4xx/5xx — ошибки, поисковик не сможет проиндексировать страницу.
Кол-во редиректов 3 слишком большое! Проверьте настройки сайта и веб-сервера!
Цепочка редиректов:
http://recycline.com
301 MovedPermanently
http://www.preserve.eco/
301 MovedPermanently
https://www.preserve.eco/
200 OK
Безопасность
Сайт безопасен
Использование HTTPS и SSL-сертификат
?
HTTPS — обязательный стандарт. Google и Яндекс отдают предпочтение защищённым сайтам. Отсутствие SSL или просроченный сертификат ведут к предупреждениям в браузере и снижению позиций.
На сайте работает защищенный протокол ssl и сайт открывается по https.
Ssl-сертификат действителен до 09.01.2027 2:59:59.
Сервер поддерживает HTTP/3 (QUIC) — новейший протокол.
Включён HSTS (Strict-Transport-Security) — защита от подмены на http.
HTTP автоматически перенаправляется на HTTPS.
Поздравляем! Сайт не содержится в реестре РКН.
Кодировка
utf-8
Кодировка символов страницы
?
Стандарт — UTF-8. Неправильная кодировка вызывает нечитаемые символы и мешает поисковику корректно распознать текст страницы.
Указана кодировка на странице utf-8.
Язык
en
Атрибут lang в HTML-теге
?
Атрибут lang (<html lang="ru">) сообщает поисковикам и браузерам, на каком языке написана страница. Помогает при ранжировании в региональном поиске.
Язык документа указан явно: en.
Скорость загрузки
~0,86сек
Время отклика сервера (TTFB)
?
Time To First Byte — время до получения первого байта от сервера. Норма до 200 мс. Медленный отклик ухудшает пользовательский опыт и ранжирование: Яндекс и Google учитывают скорость страниц.
Скорость загрузки сайта 0,86сек оптимальна.
Объем документа
157Кб
Размер HTML-кода страницы
?
Слишком большой HTML замедляет парсинг браузером и сканирование поисковым роботом. Рекомендуется не более 200 Кб.
Объем html-документа 157Кб оптимален.
Структура html-документа корректна.
Ресурсы
Ресурсы: 26
Внешние ресурсы страницы (CSS, JS, изображения)
?
Количество и тип подключённых ресурсов влияют на скорость загрузки. Большое число запросов увеличивает время рендеринга страницы.
Кол-во файлов ресурсов 26 много для одной страницы. Приемлемо до 10. Проведите оптимизацию файлов ресурсов!
Показать полный список ресурсов
| Тип | Название | Значение |
|---|---|---|
| stylesheet | text/css | //www.preserve.eco/cdn/shop/t/48/assets/style.scss.css?v=175913191841552861271778605363 |
| stylesheet | https://www.preserve.eco/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css | |
| stylesheet | text/css | //www.preserve.eco/cdn/shop/t/48/assets/bsub.css?v=26930441889740235661776101479 |
| stylesheet | text/css | //www.preserve.eco/cdn/shop/t/48/assets/panda-swatches.css?v=81262555653311696651776101479 |
| stylesheet | //www.preserve.eco/cdn/shop/t/48/assets/productwiz-rio.min.css?v=66988276261347786001776101479 | |
| stylesheet | text/css | //www.preserve.eco/cdn/shop/t/48/assets/ajaxify.scss.css?v=53758821911199603391776101494 |
| js | https://www.googletagmanager.com/gtag/js?id=UA-159296221-2 | |
| js | text/javascript | //www.preserve.eco/cdn/shop/t/48/assets/modernizr.min.js?v=137617515274177302221776101479 |
| js | text/javascript | //www.preserve.eco/cdn/shop/t/48/assets/jquery.min.js?v=58211863146907186831776101479 |
| js | text/javascript | //www.preserve.eco/cdn/shop/t/48/assets/webfont.js?v=30949158316048555571776101479 |
| js | /checkouts/internal/preloads.js?locale=en-US | |
| js | https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=23720029 | |
| js | module | //www.preserve.eco/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js |
| js | //www.preserve.eco/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js | |
| js | //www.preserve.eco/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-bf1cdb70.js?v=20250812 | |
| js | //cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-5059b83f.js | |
| js | text/javascript | https://www.preserve.eco/cdn/shopifycloud/privacy-banner/storefront-banner.js |
| js | text/javascript | //www.preserve.eco/cdn/shop/t/48/assets/bsub.js?v=158520562351594542841776101479 |
| js | https://www.googletagmanager.com/gtag/js?id=AW-802249547 | |
| js | //www.preserve.eco/cdn/shop/t/48/assets/productwiz-rio.min.js?v=159442086527382468281776101479 | |
| js | https://limits.minmaxify.com/preserve-eco.myshopify.com?v=123&r=20241030175346 | |
| js | https://www.preserve.eco/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.8.4.min.js | |
| js | text/javascript | //www.preserve.eco/cdn/shop/t/48/assets/shop.js?v=143007625215171982001785779135 |
| js | text/javascript | //www.preserve.eco/cdn/shop/t/48/assets/ajaxify.js?v=173191763857820876091776101493 |
| js | https://loox.io/widget/4JZEXBcfNh/loox.1651582506049.js?shop=preserve-eco.myshopify.com | |
| js | module | https://cdn.shopify.com/storefront/standard-actions.js |
Серверные заголовки
Кол-во: 25
HTTP-заголовки ответа сервера
?
Заголовки сервера передают браузеру и поисковику служебную информацию: кеширование, безопасность (CSP, HSTS), сжатие (gzip). Правильная настройка ускоряет загрузку и повышает защищённость.
Найдены серверные заголовки 25шт. Подробнее про серверные заголовки.
Показать полный список серверных заголовков
| Ключ | Значение |
|---|---|
| Date | Fri, 21 Aug 2026 23:28:21 GMT |
| x-download-options | noopen |
| Set-Cookie | localization=US; path=/; expires=Sat, 21 Aug 2027 23:28:21 GMT; SameSite=Lax |
| Link | <https://cdn.shopify.com>; rel="preconnect", <https://cdn.shopify.com>; rel="preconnect"; crossorigin, <//www.preserve.eco/cdn/shop/t/48/assets/style.scss.css?v=175913191841552861271778605363>; as="style"; rel="preload", <//www.preserve.eco/cdn/shop/t/48/assets/modernizr.min.js?v=137617515274177302221776101479>; as="script"; rel="preload", <//www.preserve.eco/cdn/shop/t/48/assets/jquery.min.js?v=58211863146907186831776101479>; as="script"; rel="preload", <//www.preserve.eco/cdn/shop/t/48/assets/webfont.js?v=30949158316048555571776101479>; as="script"; rel="preload", <//www.preserve.eco/cdn/shop/t/48/assets/bsub.js?v=158520562351594542841776101479>; as="script"; rel="preload", <//www.preserve.eco/cdn/shop/t/48/assets/bsub.css?v=26930441889740235661776101479>; as="style"; rel="preload", <//www.preserve.eco/cdn/shop/t/48/assets/panda-swatches.css?v=81262555653311696651776101479>; as="style"; rel="preload", <//www.preserve.eco/cdn/shop/t/48/assets/productwiz-rio.min.css?v=66988276261347786001776101479>; as="style"; rel="preload", <https://www.preserve.eco/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css>; as="style"; rel="preload"; crossorigin |
| speculation-rules | "/cdn/shopifycloud/storefront/assets/storefront/storefronts.moderate.specrules-eb468f32.json" |
| X-Request-ID | b1660508-f540-41c3-b2ed-43a92a99a0e5-1787354901 |
| x-permitted-cross-domain-policies | none |
| nel | {"report_to":"cf-nel","success_fraction":0.01,"max_age":604800} |
| shopify-complexity-score | 0 |
| shopify-complexity-score-v2 | 103 |
| X-Frame-Options | DENY |
| Content-Security-Policy | block-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests; |
| Strict-Transport-Security | max-age=7889238 |
| Vary | accept-encoding |
| Alt-Svc | h3=":443" |
| powered-by | Shopify |
| Server-Timing | processing;dur=108;desc="gc:6", db;dur=30, render;dur=22, asn;desc="200044", edge;desc="HEL", country;desc="RU", theme;desc="160958185715", pageType;desc="index", servedBy;desc="cwbf", requestID;desc="b1660508-f540-41c3-b2ed-43a92a99a0e5-1787354901", _y;desc="00000000-0000-0000-5000-000000000000", _s;desc="00000000-0000-0000-5000-000000000000", _cmp;desc="3.ampS_RU_t_f_6zkNPowLTC-4uIhzhbuPsg", compressionLevel;desc="5", compressionTime;dur=5.551 |
| x-dc | gcp-europe-west4,gcp-europe-west1,gcp-europe-west1 |
| X-XSS-Protection | 1; mode=block |
| cf-cache-status | DYNAMIC |
| Server | cloudflare |
| report-to | {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=kr7dQ4MJA2GzItDR0iUNYjIHSMvLy7QTMiurjx%2BztO95TgTQg4S%2BcBEX2PWWDqvlQnI3Hxs6JCxB8GHQ77%2B2Pukv%2F6zQDXoeJ0IsKkbZArgG8MulQfM9s6iW06zS2nIg%2FsM%3D"}]} |
| X-Content-Type-Options | nosniff |
| ETag | W/"page_cache:23720029:IndexController:916ca13ffed7d83d31c9f9456364a95b:03d523da4455284b4d98e90e680f5e27" |
| cf-ray | a2ed69e738da5325-HEL |
CMS
Система управления сайтом (движок)
?
CMS — это движок, на котором работает сайт (WordPress, 1C-Bitrix, Tilda и др.). Знание CMS помогает понять возможности SEO-оптимизации и подобрать подходящие инструменты. «Не определена» — вероятно, самописный сайт или нестандартная сборка.
Сайт работает на CMS Shopify.
Веб-сервер
Программное обеспечение сервера
?
Веб-сервер — это ПО, которое отдаёт страницы посетителям (nginx, Apache, IIS, LiteSpeed и др.). Определяется по серверным заголовкам ответа (Server, X-Powered-By и т.п.). «Не определён» — сервер намеренно скрывает эти заголовки, это нормальная практика безопасности.
Сайт работает на веб-сервере Cloudflare.
Мета-теги Готовность: 48%
Title
Shop Toothbrushes, Razors, and Houseware from 100% Recycled Plastic – Preserve
Заголовок страницы в браузере и поисковой выдаче
?
Title — главный SEO-заголовок страницы. Влияет на CTR в поиске и ранжирование. Оптимальная длина: 50–70 символов. Ключевые слова — ближе к началу.
Необходимо уменьшить число символов в title (текущее значение: 90, оптимально: от 40 до 45)
Дублей словоформ в title не найдено.
Description
Preserve, a certified B Corporation, makes stylish, eco-friendly products for the home including a full line of kitchen products, tableware, and personal care products, using 100% recycled plastic and plant-based compostable materials that are BPA free and Made in USA.
Описание страницы в поисковой выдаче (сниппет)
?
Meta Description — текст под заголовком в выдаче. Напрямую на позиции не влияет, но влияет на CTR. Оптимальная длина: 120–160 символов.
Необходимо уменьшить число символов в description (текущее значение: 269, оптимально: от 120 до 130)
Keywords
Список ключевых слов страницы (устаревший тег)
?
Meta Keywords не учитывается Яндексом и Google для ранжирования с 2009–2012 годов. Заполнение не обязательно, но не вредит. Конкурент может использовать содержимое для анализа.
Установите мета-тег keywords!
Канонический Url
https://www.preserve.eco/
Указывает поисковику основную версию страницы
?
Canonical (rel=canonical) предотвращает проблему дублей страниц. Должен точно совпадать с URL проверяемой страницы. Неправильный canonical может передать ссылочный вес на другую страницу.
Канонический Url прописан корректно.
Robots
Ошибок нет
Директивы для поисковых роботов на уровне страницы
?
Meta Robots управляет индексацией конкретной страницы: index/noindex — индексировать ли, follow/nofollow — следовать ли по ссылкам. Noindex полностью исключает страницу из поиска.
Meta-тег robots не указан. Страница свободна для индексации.
Адаптивность
width=device-width,initial-scale=1
Настройка масштабирования на мобильных устройствах
?
Тег viewport (<meta name="viewport">) сообщает браузеру, как масштабировать страницу на мобильных. Стандарт: width=device-width, initial-scale=1. Отсутствие — признак отсутствия мобильной версии.
Meta-тег viewport со значением-константой width=device-width задаёт ширину страницы в соответствии с размером экрана.
Meta-тег viewport со значением initial-scale=1.0 определяет масштаб 1:1, т.е. «не масштабировать».
Разметка OpenGraph
Кол-во: 10
Мета-теги для красивых превью в соцсетях
?
OpenGraph (og:title, og:description, og:image) управляет тем, как страница выглядит при репосте в социальных сетях и мессенджерах. Отсутствие OG-тегов — невзрачный превью при шеринге.
Разметка OpenGraph задана. Страница оптимизирована под социальные сети.
Показать полный список og мета-тегов
| Тип | Значение |
|---|---|
| og:type | website |
| og:title | Shop Toothbrushes, Razors, and Houseware from 100% Recycled Plastic |
| og:description | Preserve, a certified B Corporation, makes stylish, eco-friendly products for the home including a full line of kitchen products, tableware, and personal care products, using 100% recycled plastic and plant-based compostable materials that are BPA free and Made in USA. |
| og:description | Preserve, a certified B Corporation, makes stylish, eco-friendly products for the home including a full line of kitchen products, tableware, and personal care products, using 100% recycled plastic and plant-based compostable materials that are BPA free and Made in USA. |
| og:url | https://www.preserve.eco/ |
| og:site_name | Preserve |
| og:image | https://cdn.shopify.com/s/files/1/2372/0029/files/Preserve-FaceBook-cover.jpg?v=1747066445 |
| og:image:secure_url | https://cdn.shopify.com/s/files/1/2372/0029/files/Preserve-FaceBook-cover.jpg?v=1747066445 |
| og:image:width | 4801 |
| og:image:height | 2697 |
Все мета-теги
Кол-во: 23
Полный список мета-тегов страницы
?
Таблица всех meta-тегов, включая нестандартные. Позволяет найти опечатки, дубли и лишние теги.
Найдены мета-теги 23шт. Мета-теги не видимы для человека и предназначены для обмена информацией между веб-страницей и поисковыми системами, браузерами и другими веб-службами. С ними роботы 🤖 и устройства ведут себя более ожидаемо.
Показать полный список мета-тегов
| Тип | Название | Значение |
|---|---|---|
| name | google-site-verification | WRq42Q4dWeNQW3gTOka3fqVK_37xMTWC2Gncei_STNE |
| name | description | Preserve, a certified B Corporation, makes stylish, eco-friendly products for the home including a full line of kitchen products, tableware, and personal care products, using 100% recycled plastic and plant-based compostable materials that are BPA free and Made in USA. |
| name | twitter:site | @Preserve |
| name | viewport | width=device-width,initial-scale=1 |
| name | theme-color | #0075c9 |
| name | facebook-domain-verification | s3e9hpf7putzlkgfq0yh57ir4o1rp4 |
| name | facebook-domain-verification | 165hvidexilyaa3rbtobh24jhvwp99 |
| name | google-site-verification | ckQ0Z8ah9ADr7w7fYR5L2yoOWZr3g9dc-44hby079E4 |
| name | shopify-digital-wallet | /23720029/digital_wallets/dialog |
| name | shopify-checkout-api-token | 9d6c5260e6ade18c87bc938bb9d66727 |
| name | shopify-y | 00000000-0000-0000-5000-000000000000 |
| name | shopify-s | 00000000-0000-0000-5000-000000000000 |
| name | new-cookie-storage-activated | f |
| property | og:type | website |
| property | og:title | Shop Toothbrushes, Razors, and Houseware from 100% Recycled Plastic |
| property | og:description | Preserve, a certified B Corporation, makes stylish, eco-friendly products for the home including a full line of kitchen products, tableware, and personal care products, using 100% recycled plastic and plant-based compostable materials that are BPA free and Made in USA. |
| property | og:description | Preserve, a certified B Corporation, makes stylish, eco-friendly products for the home including a full line of kitchen products, tableware, and personal care products, using 100% recycled plastic and plant-based compostable materials that are BPA free and Made in USA. |
| property | og:url | https://www.preserve.eco/ |
| property | og:site_name | Preserve |
| property | og:image | https://cdn.shopify.com/s/files/1/2372/0029/files/Preserve-FaceBook-cover.jpg?v=1747066445 |
| property | og:image:secure_url | https://cdn.shopify.com/s/files/1/2372/0029/files/Preserve-FaceBook-cover.jpg?v=1747066445 |
| property | og:image:width | 4801 |
| property | og:image:height | 2697 |
Оптимизация Готовность: 85%
Структура
Ошибок нет
Семантические HTML-элементы страницы
?
Проверяет наличие основных структурных элементов: nav, header, footer, main. Корректная семантическая структура помогает поисковику понять архитектуру страницы.
Структура документа корректна (теги <html> и <body> присутствуют в единственном экземпляре).
Контент
Есть ошибки
Объём и качество текстового содержимого
?
Анализирует объём полезного текста на странице. Слишком мало — страница может считаться малополезной. Слишком много — ухудшается читаемость и восприятие.
Кол-во слов 297 слишком мало. Добавьте больше текста (минимум 400 слов)!
Слова из title 3 встречаются в тексте достаточно.
Абзацев с текстом 10 достаточно.
Среднее число слов в абзаце 20 достаточно.
Кол-во знаков контента 1993 на странице оптимально.
Заголовки
Ошибок нет
Иерархия заголовков H1–H6
?
H1 должен быть один и содержать ключевой запрос. H2–H6 описывают подразделы. Пропуск уровней (H1 → H3) и несколько H1 — типичные ошибки, снижающие понятность страницы для поисковика.
На странице присутствуют заголовки <h1> 2. Это прекрасно.
На странице присутствуют заголовки <h2> 2. Это хорошо.
Тошнота
3,46
Насколько одно слово доминирует в тексте
?
Классическая тошнота = √(частота самого повторяющегося слова). Норма до 7–8: текст воспринимается естественно. Выше — поисковик может счесть страницу переспамленной.
Тошнота превышает норму 3. Измените текст страницы!
Академич. тошнота
7,07%
Насколько текст перенасыщен ключевыми словами
?
Академическая тошнота = (частота слова / общее количество слов) × 100%. Показывает долю конкретного слова в тексте. Норма 5–15%.
Академическая тошнота страницы в пределах нормы.
Семантическое ядро
20
Наиболее часто встречающиеся слова на странице
?
Топ слов по частоте использования. Показывает, какие слова доминируют в тексте с точки зрения поисковика.
Контент страницы содержит осмысленный текст и слова.
Показать список слов
| Слово | Кол-во | Частота |
|---|---|---|
| preserve | 12 | 4,04% |
| subscriptions | 5 | 1,68% |
| plastic | 4 | 1,35% |
| initiative | 4 | 1,35% |
| compostables | 4 | 1,35% |
| overview | 4 | 1,35% |
| policy | 4 | 1,35% |
| contact | 4 | 1,35% |
| kitchen | 3 | 1,01% |
| accessibility | 3 | 1,01% |
| statement | 3 | 1,01% |
| return | 3 | 1,01% |
| service | 3 | 1,01% |
| manage | 3 | 1,01% |
| storage | 2 | 0,67% |
| tabletop | 2 | 0,67% |
| travel | 2 | 0,67% |
| dopper® | 2 | 0,67% |
| reusable | 2 | 0,67% |
| bottle | 2 | 0,67% |
Индексация Готовность: 0%
Индексирование
Ошибок нет
Разрешено ли индексирование страницы
?
Проверяет, не закрыта ли страница от индексации через robots.txt, meta robots или X-Robots-Tag. Страница, закрытая от индексации, не появится в поисковой выдаче.
Анкоров на странице 111 оптимально. Поисковые роботы обязательно проиндексируют сайт.
Robots.txt
Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Кол-во редиректов для файла robots.txt 3 слишком большое! Это может вызывать затруднение при индексации поисковыми роботами!
Проверяемая страница не запрещена в robots.txt.
Robots.txt доступен по постоянному адресу
Цепочка редиректов для файла robots.txt:
http://recycline.com/robots.txt
404 NotFound
http://www.preserve.eco/
301 MovedPermanently
https://www.preserve.eco/
200 OK
Показать содержимое robots.txt
<!doctype html>
<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]><html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if IE 9 ]><html class="ie9 no-js"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-159296221-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-159296221-2');
</script>
<meta name="google-site-verification" content="WRq42Q4dWeNQW3gTOka3fqVK_37xMTWC2Gncei_STNE" />
<!-- ======================= Pipeline Theme V3.0 ========================= -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="shortcut icon" href="//www.preserve.eco/cdn/shop/files/apple-icon-72x72_32x32.png?v=1613662118" type="image/png">
<!-- Title and description ================================================ -->
<title>
Shop Toothbrushes, Razors, and Houseware from 100% Recycled Plastic – Preserve
</title>
<meta name="description" content="Preserve, a certified B Corporation, makes stylish, eco-friendly products for the home including a full line of kitchen products, tableware, and personal care products, using 100% recycled plastic and plant-based compostable materials that are BPA free and Made in USA.">
<!-- Product meta ========================================================= -->
<!-- /snippets/social-meta-tags.liquid -->
<meta property="og:type" content="website">
<meta property="og:title" content="Shop Toothbrushes, Razors, and Houseware from 100% Recycled Plastic">
<meta property="og:description" content="Preserve, a certified B Corporation, makes stylish, eco-friendly products for the home including a full line of kitchen products, tableware, and personal care products, using 100% recycled plastic and plant-based compostable materials that are BPA free and Made in USA.">
<meta property="og:description" content="Preserve, a certified B Corporation, makes stylish, eco-friendly products for the home including a full line of kitchen products, tableware, and personal care products, using 100% recycled plastic and plant-based compostable materials that are BPA free and Made in USA.">
<meta property="og:url" content="https://www.preserve.eco/">
<meta property="og:site_name" content="Preserve">
<meta name="twitter:site" content="@Preserve">
<!-- Helpers ============================================================== -->
<link rel="canonical" href="https://www.preserve.eco/">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="theme-color" content="#0075c9">
<!-- CSS ================================================================== -->
<link href="//www.preserve.eco/cdn/shop/t/48/assets/style.scss.css?v=175913191841552861271778605363" rel="stylesheet" type="text/css" media="all" />
<!-- Modernizr ============================================================ -->
<script src="//www.preserve.eco/cdn/shop/t/48/assets/modernizr.min.js?v=137617515274177302221776101479" type="text/javascript"></script>
<!-- jQuery v2.2.3 ======================================================== -->
<script src="//www.preserve.eco/cdn/shop/t/48/assets/jquery.min.js?v=58211863146907186831776101479" type="text/javascript"></script>
<!-- /snippets/oldIE-js.liquid -->
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js" type="text/javascript"></script>
<script src="//www.preserve.eco/cdn/shop/t/48/assets/respond.min.js?v=52248677837542619231776101479" type="text/javascript"></script>
<script src="//www.preserve.eco/cdn/shop/t/48/assets/background_size_emu.js?v=20512233629963367491776101479" type="text/javascript"></script>
<link href="//www.preserve.eco/cdn/shop/t/48/assets/respond-proxy.html" id="respond-proxy" rel="respond-proxy" />
<link href="//www.preserve.eco/search?q=ea0f659563f6a85fda6dd0e5496bc552" id="respond-redirect" rel="respond-redirect" />
<script src="//www.preserve.eco/search?q=ea0f659563f6a85fda6dd0e5496bc552" type="text/javascript"></script>
<![endif]-->
<script>
var theme = {
strings: {
addToCart: "Add to Cart",
soldOut: "Out of Stock",
unavailable: "Unavailable"
},
moneyFormat: "${{amount}}"
}
</script>
<!-- /snippets/fonts.liquid -->
<script src="//www.preserve.eco/cdn/shop/t/48/assets/webfont.js?v=30949158316048555571776101479" type="text/javascript"></script>
<script type="text/javascript">
WebFont.load({
google: {
families:
["Open+Sans:400,400italic,700,700italic:latin","Oswald:400:latin"]
},
timeout: 5000
});
</script>
<!-- Header hook for plugins ============================================== -->
<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script><meta name="facebook-domain-verification" content="s3e9hpf7putzlkgfq0yh57ir4o1rp4">
<meta name="facebook-domain-verification" content="165hvidexilyaa3rbtobh24jhvwp99">
<meta name="google-site-verification" content="ckQ0Z8ah9ADr7w7fYR5L2yoOWZr3g9dc-44hby079E4">
<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/23720029/digital_wallets/dialog">
<meta name="shopify-checkout-api-token" content="9d6c5260e6ade18c87bc938bb9d66727">
<meta id="in-context-paypal-metadata" data-shop-id="23720029" data-venmo-supported="true" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD">
<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=23720029" crossorigin="anonymous"></script>
<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":23720029,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/23720029","merchantName":"Preserve","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Preserve","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
<script id="shopify-features" type="application/json">{"accessToken":"9d6c5260e6ade18c87bc938bb9d66727","betas":["rich-media-storefront-analytics"],"domain":"www.preserve.eco","predictiveSearch":true,"shopId":23720029,"locale":"en"}</script>
<script>var Shopify = Shopify || {};
Shopify.shop = "preserve-eco.myshopify.com";
Shopify.locale = "en";
Shopify.currency = {"active":"USD","rate":"1.0"};
Shopify.country = "US";
Shopify.theme = {"name":"preserve-a11y-theme-2-7","id":160958185715,"schema_name":"Preserve A11y","schema_version":"2.7","theme_store_id":null,"role":"main"};
Shopify.theme.handle = "null";
Shopify.theme.style = {"id":null,"handle":null};
Shopify.cdnHost = "www.preserve.eco/cdn";
Shopify.routes = Shopify.routes || {};
Shopify.routes.root = "/";
Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
Shopify.SignInWithShop = Shopify.SignInWithShop || {};
Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
Shopify.SignInWithShop.User.recognized = false;</script>
<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
<script>
window.ShopifyPay = window.ShopifyPay || {};
window.ShopifyPay.apiHost = "shop.app\/pay";
window.ShopifyPay.redirectState = null;
</script>
<script>
window.Shopify = window.Shopify || {};
window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
window.Shopify.SignInWithShop.eligible = true;
</script>
<script id="shop-js-analytics" type="application/json">{"pageType":"index"}</script>
<script defer="defer" async type="module" src="//www.preserve.eco/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
<script type="module">
await import("//www.preserve.eco/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
</script>
<script>
window.Shopify = window.Shopify || {};
if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
window.Shopify.featureAssets['shop-js'] = {"listener":["modules/v2/loader.listener.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"avatar":["modules/v2/loader.avatar.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"]};
</script>
<script>(function() {
var isLoaded = false;
function asyncLoad() {
if (isLoaded) return;
isLoaded = true;
var urls = ["https:\/\/chimpstatic.com\/mcjs-connected\/js\/users\/99e9dc4c6bc97e653b93e09d2\/2a8682b95d8a18541a799ce93.js?shop=preserve-eco.myshopify.com","https:\/\/formbuilder.hulkapps.com\/skeletopapp.js?shop=preserve-eco.myshopify.com","https:\/\/chimpstatic.com\/mcjs-connected\/js\/users\/99e9dc4c6bc97e653b93e09d2\/f6e3bd6b71a62105b7a446ead.js?shop=preserve-eco.myshopify.com","https:\/\/d23dclunsivw3h.cloudfront.net\/redirect-app.js?shop=preserve-eco.myshopify.com","https:\/\/str.rise-ai.com\/?shop=preserve-eco.myshopify.com","https:\/\/strn.rise-ai.com\/?shop=preserve-eco.myshopify.com","https:\/\/esc-nuwan-contactforms.s3-eu-west-1.amazonaws.com\/preserve-eco.myshopify.com-1607592786.js?shop=preserve-eco.myshopify.com","https:\/\/popup4.lifterpopup.com\/js\/modal.js?shop=preserve-eco.myshopify.com","https:\/\/loox.io\/widget\/4JZEXBcfNh\/loox.1651582506049.js?shop=preserve-eco.myshopify.com","\/\/cdn.shopify.com\/s\/files\/1\/0875\/2064\/files\/easyslide.js?shop=preserve-eco.myshopify.com","https:\/\/contact-forms-s.esc-apps-cdn.com\/production\/js\/client.js?shop=preserve-eco.myshopify.com","https:\/\/contact-forms-s.esc-apps-cdn.com\/production\/js\/client.js?shop=preserve-eco.myshopify.com","https:\/\/cdn.hextom.com\/js\/quickannouncementbar.js?shop=preserve-eco.myshopify.com","https:\/\/na.shgcdn3.com\/pixel-collector.js?shop=preserve-eco.myshopify.com"];
for (var i = 0; i < urls.length; i++) {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = urls[i];
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
}
};
if(window.attachEvent) {
window.attachEvent('onload', asyncLoad);
} else {
window.addEventListener('load', asyncLoad, false);
}
})();</script>
<script id="__st">var __st={"a":23720029,"offset":-14400,"reqid":"adb15a0d-2230-4a1e-98bb-56d78e5c64c5-1787354901","pageurl":"www.preserve.eco\/","u":"da1b510d60fb","p":"home"};</script>
<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.2.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//www.preserve.eco/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//www.preserve.eco/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script><script crossorigin="anonymous" defer="defer" src="//www.preserve.eco/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-bf1cdb70.js?v=20250812"></script>
<script id="shopify-origin-trials" async="async" integrity="sha256-mqQjA+yhr1DtPsW5MhDIq3zDu+LghfjNT49r/ttG3eY=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-5059b83f.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
<script>
window.Shopify = window.Shopify || {};
window.Shopify.MCP = window.Shopify.MCP || {};
window.Shopify.MCP.enabled = true;
window.Shopify.MCP.shop = "preserve-eco.myshopify.com";
window.Shopify.MCP.mcpEndpoint = "https:\/\/www.preserve.eco\/api\/mcp";
window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}];
</script>
<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("https:\/\/cdn.shopify.com\/storefront\/webmcp\/webmcp-0.1.1.js","");})();
</script>
<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://www.preserve.eco/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
</script>
<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent);
</script>
<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}}));
</script>
<script id='scb4127' type='text/javascript' async='' src='https://www.preserve.eco/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script><link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://www.preserve.eco/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
<style id="shopify-accelerated-checkout-cart">
#shopify-buyer-consent {
margin-top: 1em;
display: inline-block;
width: 100%;
}
#shopify-buyer-consent.hidden {
display: none;
}
#shopify-subscription-policy-button {
background: none;
border: none;
padding: 0;
text-decoration: underline;
font-size: inherit;
cursor: pointer;
}
#shopify-subscription-policy-button::before {
box-shadow: none;
}
</style>
<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
<script type="text/javascript">
window.__shgMoneyFormat = window.__shgMoneyFormat || {"AED":{"currency":"AED","currency_symbol":"د.إ","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"AFN":{"currency":"AFN","currency_symbol":"؋","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"ALL":{"currency":"ALL","currency_symbol":"L","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"AMD":{"currency":"AMD","currency_symbol":"դր.","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"ANG":{"currency":"ANG","currency_symbol":"ƒ","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"AUD":{"currency":"AUD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"AWG":{"currency":"AWG","currency_symbol":"ƒ","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"AZN":{"currency":"AZN","currency_symbol":"₼","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"BAM":{"currency":"BAM","currency_symbol":"КМ","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"BBD":{"currency":"BBD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"BDT":{"currency":"BDT","currency_symbol":"৳","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"BIF":{"currency":"BIF","currency_symbol":"Fr","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"BND":{"currency":"BND","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"BOB":{"currency":"BOB","currency_symbol":"Bs.","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"BSD":{"currency":"BSD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"BWP":{"currency":"BWP","currency_symbol":"P","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"BZD":{"currency":"BZD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"CAD":{"currency":"CAD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"CDF":{"currency":"CDF","currency_symbol":"Fr","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"CHF":{"currency":"CHF","currency_symbol":"CHF","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"CNY":{"currency":"CNY","currency_symbol":"¥","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"CRC":{"currency":"CRC","currency_symbol":"₡","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"CVE":{"currency":"CVE","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"CZK":{"currency":"CZK","currency_symbol":"Kč","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"DJF":{"currency":"DJF","currency_symbol":"Fdj","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"DKK":{"currency":"DKK","currency_symbol":"kr.","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"DOP":{"currency":"DOP","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"DZD":{"currency":"DZD","currency_symbol":"د.ج","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"EGP":{"currency":"EGP","currency_symbol":"ج.م","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"ETB":{"currency":"ETB","currency_symbol":"Br","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"EUR":{"currency":"EUR","currency_symbol":"€","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"FJD":{"currency":"FJD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"FKP":{"currency":"FKP","currency_symbol":"£","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"GBP":{"currency":"GBP","currency_symbol":"£","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"GMD":{"currency":"GMD","currency_symbol":"D","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"GNF":{"currency":"GNF","currency_symbol":"Fr","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"GTQ":{"currency":"GTQ","currency_symbol":"Q","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"GYD":{"currency":"GYD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"HKD":{"currency":"HKD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"HNL":{"currency":"HNL","currency_symbol":"L","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"HUF":{"currency":"HUF","currency_symbol":"Ft","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"IDR":{"currency":"IDR","currency_symbol":"Rp","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"ILS":{"currency":"ILS","currency_symbol":"₪","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"INR":{"currency":"INR","currency_symbol":"₹","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"ISK":{"currency":"ISK","currency_symbol":"kr.","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"JMD":{"currency":"JMD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"JPY":{"currency":"JPY","currency_symbol":"¥","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"KES":{"currency":"KES","currency_symbol":"KSh","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"KGS":{"currency":"KGS","currency_symbol":"som","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"KHR":{"currency":"KHR","currency_symbol":"៛","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"KMF":{"currency":"KMF","currency_symbol":"Fr","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"KRW":{"currency":"KRW","currency_symbol":"₩","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"KYD":{"currency":"KYD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"KZT":{"currency":"KZT","currency_symbol":"₸","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"LAK":{"currency":"LAK","currency_symbol":"₭","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"LBP":{"currency":"LBP","currency_symbol":"ل.ل","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"LKR":{"currency":"LKR","currency_symbol":"₨","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"MAD":{"currency":"MAD","currency_symbol":"د.م.","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"MDL":{"currency":"MDL","currency_symbol":"L","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"MKD":{"currency":"MKD","currency_symbol":"ден","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"MMK":{"currency":"MMK","currency_symbol":"K","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"MNT":{"currency":"MNT","currency_symbol":"₮","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"MOP":{"currency":"MOP","currency_symbol":"P","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"MUR":{"currency":"MUR","currency_symbol":"₨","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"MVR":{"currency":"MVR","currency_symbol":"MVR","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"MWK":{"currency":"MWK","currency_symbol":"MK","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"MYR":{"currency":"MYR","currency_symbol":"RM","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"NGN":{"currency":"NGN","currency_symbol":"₦","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"NIO":{"currency":"NIO","currency_symbol":"C$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"NPR":{"currency":"NPR","currency_symbol":"Rs.","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"NZD":{"currency":"NZD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"PEN":{"currency":"PEN","currency_symbol":"S/","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"PGK":{"currency":"PGK","currency_symbol":"K","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"PHP":{"currency":"PHP","currency_symbol":"₱","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"PKR":{"currency":"PKR","currency_symbol":"₨","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"PLN":{"currency":"PLN","currency_symbol":"zł","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"PYG":{"currency":"PYG","currency_symbol":"₲","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"QAR":{"currency":"QAR","currency_symbol":"ر.ق","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"RON":{"currency":"RON","currency_symbol":"Lei","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"RSD":{"currency":"RSD","currency_symbol":"РСД","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"RWF":{"currency":"RWF","currency_symbol":"FRw","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"SAR":{"currency":"SAR","currency_symbol":"ر.س","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"SBD":{"currency":"SBD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"SEK":{"currency":"SEK","currency_symbol":"kr","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"SGD":{"currency":"SGD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"SHP":{"currency":"SHP","currency_symbol":"£","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"SLL":{"currency":"SLL","currency_symbol":"Le","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"STD":{"currency":"STD","currency_symbol":"Db","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"THB":{"currency":"THB","currency_symbol":"฿","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"TJS":{"currency":"TJS","currency_symbol":"ЅМ","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"TOP":{"currency":"TOP","currency_symbol":"T$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"TTD":{"currency":"TTD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"TWD":{"currency":"TWD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"TZS":{"currency":"TZS","currency_symbol":"Sh","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"UAH":{"currency":"UAH","currency_symbol":"₴","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"UGX":{"currency":"UGX","currency_symbol":"USh","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"USD":{"currency":"USD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"UYU":{"currency":"UYU","currency_symbol":"$U","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"UZS":{"currency":"UZS","currency_symbol":"so'm","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"VND":{"currency":"VND","currency_symbol":"₫","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"VUV":{"currency":"VUV","currency_symbol":"Vt","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"WST":{"currency":"WST","currency_symbol":"T","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"XAF":{"currency":"XAF","currency_symbol":"CFA","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"XCD":{"currency":"XCD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"XOF":{"currency":"XOF","currency_symbol":"Fr","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"XPF":{"currency":"XPF","currency_symbol":"Fr","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","},"YER":{"currency":"YER","currency_symbol":"﷼","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","}};
window.__shgCurrentCurrencyCode = window.__shgCurrentCurrencyCode || {
currency: "USD",
currency_symbol: "$",
decimal_separator: ".",
thousands_separator: ",",
decimal_places: 2,
currency_symbol_location: "left"
};
</script>
<script src="//www.preserve.eco/cdn/shop/t/48/assets/bsub.js?v=158520562351594542841776101479" type="text/javascript"></script>
<link href="//www.preserve.eco/cdn/shop/t/48/assets/bsub.css?v=26930441889740235661776101479" rel="stylesheet" type="text/css" media="all" />
<link href="//www.preserve.eco/cdn/shop/t/48/assets/panda-swatches.css?v=81262555653311696651776101479" rel="stylesheet" type="text/css" media="all" />
<!-- Global site tag (gtag.js) - Google AdWords: 802249547 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-802249547"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-802249547');
</script>
<script type="text/javascript">
window.SHG_CUSTOMER = null;
</script>
<!-- __LXV: 1787325163283;__LXR: https://loox.io;__LXC: 4JZEXBcfNh; --><script>var loox_global_hash = '1787325163283';
var loox_bundle_reviews_enabled = false;</script><style>.loox-reviews-default { max-width: 1200px; margin: 0 auto; }.loox-rating .loox-icon { color:#000000; }
:root { --lxs-rating-icon-color: #000000; }</style>
<script>
if (typeof __productWizRioAssets === 'undefined') {
var __productWizRioAssets = [{"id":"50a9fbdc-cedf-4dd1-872c-b07f009785c8.jpeg","url":"https:\/\/cdn.shopify.com\/s\/files\/1\/2372\/0029\/t\/20\/assets\/50a9fbdc-cedf-4dd1-872c-b07f009785c8.jpeg?v=1678294008","themeId":"136906801395"},{"id":"cb50b272-6714-4660-a66c-887e88ba2a51.jpeg","url":"https:\/\/cdn.shopify.com\/s\/files\/1\/2372\/0029\/t\/20\/assets\/cb50b272-6714-4660-a66c-887e88ba2a51.jpeg?v=1678294323","themeId":"136906801395"},{"id":"59a13f1f-0f63-46fb-88b8-09d00736bc26.jpeg","url":"https:\/\/cdn.shopify.com\/s\/files\/1\/2372\/0029\/t\/20\/assets\/59a13f1f-0f63-46fb-88b8-09d00736bc26.jpeg?v=1678294375","themeId":"136906801395"},{"id":"6ca9c509-c69f-4e57-8b0a-470b815499d2.jpeg","url":"https:\/\/cdn.shopify.com\/s\/files\/1\/2372\/0029\/t\/20\/assets\/6ca9c509-c69f-4e57-8b0a-470b815499d2.jpeg?v=1678294627","themeId":"136906801395"},{"id":"f158b245-3ff4-4314-b90f-163b363a8e0d.jpeg","url":"https:\/\/cdn.shopify.com\/s\/files\/1\/2372\/0029\/t\/20\/assets\/f158b245-3ff4-4314-b90f-163b363a8e0d.jpeg?v=1678294826","themeId":"136906801395"}];
if (typeof __productWizRioAssets === 'string') {
__productWizRioAssets = JSON.parse(__productWizRioAssets);
}
}
if (typeof __productWizRioProductOptionsScpShop === 'undefined') {
var __productWizRioProductOptionsScpShop = {"disabled":false};
}
if (typeof __productWizRioProductOptionsSettings === 'undefined') {
var __productWizRioProductOptionsSettings = null;
}
if (__productWizRioProductOptionsScpShop && __productWizRioProductOptionsScpShop.disabled) {
throw Error('Swatches on collection pages have been disabled');
}
if (typeof __productWizRioOptionsScp === 'undefined') {
var __productWizRioOptionsScp = {};
__productWizRioOptionsScp.renderQueue = [];
__productWizRioOptionsScp.queueRender = (rioOptionsScp) => {
const parseSafe = (str) => {
if (typeof str !== 'string' || !str || str === 'null') {
return null;
}
try {
return JSON.parse(str);
} catch (err) {
}
return null;
};
const productOptions = parseSafe(rioOptionsScp.getAttribute('data-rio-product-options-config'));
if (!productOptions) {
return;
}
if (!productOptions.enabled) {
return;
}
const hasOnlyDefaultVariant = rioOptionsScp.getAttribute('data-rio-product-has-only-default-variant');
if (hasOnlyDefaultVariant === 'true') {
return;
}
const product = parseSafe(rioOptionsScp.getAttribute('data-rio-product'));
if (!product) {
return;
}
const optionsWithValues = parseSafe(rioOptionsScp.getAttribute('data-rio-product-options-with-values'));
if (!optionsWithValues) {
return;
}
product.options = optionsWithValues;
__productWizRioOptionsScp.renderQueue.push([
rioOptionsScp,
{
product,
options: productOptions.options,
settings: { spacing: 1 },
},
]);
};
(() => {
const preRenderAmount = 4;
const moneyFormat = "${{amount}}";
const moneyFormatWithCurrency = "${{amount}} USD";
let settings = [{"id":"all-products","selectedProductOptions":["Color","Colors","Prints","Flavors"],"productOptionSettings":[{"id":"Colors","swatchMaxSize":40,"carousel":false,"hideOptionTitle":true,"centerOptionValue":false,"hideOuterText":false,"hideTooltips":false,"hideIfOneOptionValue":false},{"id":"Color","swatchMaxSize":40,"carousel":false,"hideOptionTitle":true,"centerOptionValue":false,"hideOuterText":false,"hideTooltips":false,"hideIfOneOptionValue":false}],"variantImagePosition":"center"}];
if (typeof settings === 'string') {
settings = JSON.parse(settings);
}
if (!Array.isArray(settings)) {
settings = [];
}
const allProductsSet = settings.find((x) => x.id === 'all-products');
const customSets = settings.filter((x) => x.id !== 'all-products');
const getBestSet = (product) => {
const customSet = customSets.find((customSetParam) => {
const products = customSetParam.products || [];
const productParam = products.find((x) => x === `${product.id}`);
if (productParam) {
return true;
}
return false;
});
if (customSet) {
return customSet;
}
return allProductsSet;
};
const getBestSettings = (product) => {
const set = getBestSet(product);
const allProductOptions = product.options.map((x) => x.name);
const scaffold = {
selectedProductOptions: allProductOptions,
productOptionSettings: [],
variantImagePosition: 'center',
};
if (!set) {
return scaffold;
}
return {
...scaffold,
selectedProductOptions: set.selectedProductOptions || [],
productOptionSettings: set.productOptionSettings || [],
variantImagePosition: set.variantImagePosition || 'center',
};
};
const getSettingsForOption = (bestSettings, optionId) => {
if (!bestSettings.selectedProductOptions.find((x) => x === optionId)) {
return {
visible: false,
};
}
return {
visible: true,
settings: {
swatchMaxSize: 40,
carousel: false,
hideOptionTitle: false,
centerOptionValue: false,
hideOuterText: false,
hideTooltips: false,
hideIfOneOptionValue: false,
...(bestSettings.productOptionSettings.find((x) => x.id === optionId) || {}),
},
};
};
const isColorOption = (option) => {
if (!option || (typeof option !== 'object')) {
return false;
}
const rawName = option.name || option.id;
if (typeof rawName !== 'string') {
return false;
}
return /^(color|colors|colour|colours)$/i.test(rawName.trim());
};
const applySettings = (renderItem) => {
const [, configParam] = renderItem;
const { product, options } = configParam;
const bestSettings = getBestSettings(product);
for (const option of options) {
const settingsForOption = getSettingsForOption(bestSettings, option.id);
const hideIfOneOptionValue = () => {
if (settingsForOption.settings.hideIfOneOptionValue) {
if (option.values.length <= 1) {
return true;
}
}
return false;
};
if (!settingsForOption.visible || hideIfOneOptionValue()) {
option.config.hide = true;
} else {
if (option.config.type === 'swatch') {
if (option.config.size > settingsForOption.settings.swatchMaxSize) {
option.config.size = settingsForOption.settings.swatchMaxSize;
}
}
if (settingsForOption.settings.carousel) {
option.config.horizontalCarousel = settingsForOption.settings.carousel;
}
if (settingsForOption.settings.hideOptionTitle) {
if (option.config.title) {
option.config.title.enabled = false;
}
}
if (settingsForOption.settings.centerOptionValue) {
option.config.centered = true;
option.config.horizontalCarousel = false;
}
if (option.config.type === 'swatch' && isColorOption(option)) {
option.config.horizontalCarousel = false;
}
if (settingsForOption.settings.hideOuterText) {
const disable = (root) => {
if (root.config.subtitle) {
root.config.subtitle.enabled = false;
}
if (root.config.title) {
root.config.title.enabled = false;
}
if (root.config.alert) {
root.config.alert.enabled = false;
}
};
if (option.config.type === 'select') {
if (option.config.select && option.config.select.outerText) {
disable({ config: option.config.select.outerText });
}
} else {
option.values.forEach((value) => {
disable(value);
});
}
}
if (settingsForOption.settings.hideTooltips) {
const disable = (root) => {
if (root.config.tooltip) {
root.config.tooltip.enabled = false;
}
};
if (option.config.type !== 'select') {
option.values.forEach((value) => {
disable(value);
});
}
}
option.config.title.displaySelectedOptionValue = false;
}
}
const hasVisibleOptions = options.find((x) => !x.config.hide) || false;
return {
hasVisibleOptions,
variantImagePosition: bestSettings.variantImagePosition,
};
};
const style = document.createElement('style');
style.textContent = `
.rio-options-scp {
margin-top: -40px;
}
`;
document.head.appendChild(style);
function descendantQuerySelector(child, selector) {
if (!child || typeof selector !== 'string') {
return null;
}
let node = child.parentNode;
while (node) {
if (typeof node.matches === 'function' && node.matches(selector)) {
return node;
}
node = node.parentNode;
}
return null;
}
const hookCard = (renderItem) => {
const [rioOptionsScp, configParam] = renderItem;
const { product } = configParam;
if (rioOptionsScp.matches('.rio-options-loaded')) {
return null;
}
const {
hasVisibleOptions,
variantImagePosition,
} = applySettings(renderItem);
if (!hasVisibleOptions) {
return null;
}
if (__productWizRioProductOptionsSettings && !!__productWizRioProductOptionsSettings.translationAppIntegration) {
try {
const { options } = configParam;
options.forEach((option, index) => {
const optionProduct = product.options[index];
option.name = optionProduct.name;
option.id = optionProduct.name;
option.values.forEach((value, index2) => {
const valueProduct = optionProduct.values[index2];
value.id = valueProduct;
value.name = valueProduct;
if (
value.config.backgroundImage
&& typeof value.config.backgroundImage.id === 'string'
&& value.config.backgroundImage.id.startsWith('variant-image://')
) {
const image = value.config.backgroundImage;
const src = image.id.replace('variant-image://', '');
const srcJ = JSON.parse(src);
srcJ.id = option.id;
srcJ.value = value.id;
image.id = `variant-image://${JSON.stringify(srcJ)}`;
}
});
});
} catch (err) {
console.log('Failed to re-index for app translation integration:');
console.log(err);
}
}
const cardRoot = descendantQuerySelector(rioOptionsScp, '.grid__item');
function setImage(featuredMedia) {
if (!featuredMedia) {
return;
}
const cardImgs = cardRoot.querySelectorAll('.grid__image img');
for (const cardImg of cardImgs) {
const { preview_image: img, alt } = featuredMedia;
const src = __productWizRioOptionsScp.getSizedImageUrl(img.src, `${Math.ceil(cardImg.clientWidth * (window.devicePixelRatio || 1))}x`);
cardImg.removeAttribute('srcset');
cardImg.removeAttribute('sizes');
cardImg.src = src;
cardImg.width = img.width;
cardImg.height = img.height;
cardImg.style.objectFit = 'cover';
cardImg.style.objectPosition = variantImagePosition;
cardImg.alt = alt;
}
// const cardImgs2 = cardRoot.querySelectorAll('.collection__image__top');
// for (const cardImg of cardImgs2) {
// const { preview_image: img, alt } = featuredMedia;
// const src = __productWizRioOptionsScp.getSizedImageUrl(img.src, `${Math.ceil(cardImg.clientWidth * (window.devicePixelRatio || 1))}x`);
// cardImg.style.backgroundImage = `url(${src})`;
// cardImg.alt = alt;
// }
}
function setTitle(variant) {
const cardPrices = cardRoot.querySelectorAll('.money');
for (const cardPrice of cardPrices) {
cardPrice.innerHTML = __productWizRioOptionsScp.formatMoney(
variant.price,
moneyFormat,
);
}
}
function setUrl(variant) {
const cardLinks = cardRoot.querySelectorAll('.grid__image, .figcaption a');
for (const cardLink of cardLinks) {
const newUrl = new URL(cardLink.href);
newUrl.searchParams.set('variant', variant.id);
cardLink.href = newUrl.href;
}
}
const onChange = (_selection, variant) => {
const variantFull = product.variants.find((x) => x.id === variant.id);
setImage(variantFull.featured_media);
setTitle(variantFull);
setUrl(variantFull);
};
const onRendered = () => {
rioOptionsScp.classList.add('rio-options-loaded');
const id = `rio-${product.id}`;
cardRoot.classList.add(id);
};
const config = {
...configParam,
onChange,
};
return [rioOptionsScp, config, onRendered];
};
function deferRender(sync, renderItem) {
if (typeof window.requestIdleCallback === 'function') {
if (sync) {
__productWizRioOptionsScp.render(renderItem);
} else {
window.requestIdleCallback(() => {
__productWizRioOptionsScp.render(renderItem);
});
}
} else {
if (document.readyState !== 'complete') {
window.addEventListener('load', () => {
window.setTimeout(() => {
__productWizRioOptionsScp.render(renderItem);
}, 1);
});
} else {
window.setTimeout(() => {
__productWizRioOptionsScp.render(renderItem);
}, 1);
}
}
}
const render = (sync, amount) => {
const renderItems = __productWizRioOptionsScp.renderQueue.slice(0, amount);
for (const renderItemParam of renderItems) {
const renderItem = hookCard(renderItemParam);
if (!renderItem) {
continue;
}
deferRender(sync, renderItem);
}
__productWizRioOptionsScp.renderQueue = __productWizRioOptionsScp.renderQueue.filter((x) => !renderItems.includes(x));
return renderItems;
};
__productWizRioOptionsScp.onLoad = () => {
let preRenderedItems = 0;
const doRender = async (preRender) => {
if (preRender) {
const preRendered = render(true, preRenderAmount);
preRenderedItems = preRendered.length;
} else {
if (preRenderedItems < preRenderAmount) {
render(true, preRenderAmount - preRenderedItems);
}
render(false);
}
};
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', () => doRender(false));
} else {
doRender(false);
}
doRender(true);
};
document.addEventListener('DOMContentLoaded', () => {
function queryScps(addedNode) {
if (typeof addedNode.matches === 'function' && addedNode.matches('.rio-options-scp')) {
return [addedNode];
}
if (typeof addedNode.querySelectorAll === 'function') {
return addedNode.querySelectorAll('.rio-options-scp');
}
return [];
}
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
Array.from(mutation.addedNodes).forEach((addedNode) => {
const scps = queryScps(addedNode);
for (const scp of scps) {
__productWizRioOptionsScp.queueRender(scp);
}
if (scps.length > 0) {
render(false);
}
});
});
});
observer.observe(document, { childList: true, subtree: true });
});
})();
}
</script>
<link rel="stylesheet" href="//www.preserve.eco/cdn/shop/t/48/assets/productwiz-rio.min.css?v=66988276261347786001776101479">
<script async src="//www.preserve.eco/cdn/shop/t/48/assets/productwiz-rio.min.js?v=159442086527382468281776101479"></script>
<!-- BEGIN app block: shopify://apps/minmaxify-order-limits/blocks/app-embed-block/3acfba32-89f3-4377-ae20-cbb9abc48475 --><script src="https://limits.minmaxify.com/preserve-eco.myshopify.com?v=123&r=20241030175346" defer></script>
<!-- END app block --><!-- BEGIN app block: shopify://apps/variant-image-wizard-swatch/blocks/app-embed/66205c03-f474-4e2c-b275-0a2806eeac16 -->
<!-- END app block --><!-- BEGIN app block: shopify://apps/bold-subscriptions/blocks/bsub-embed/9ceb49f0-5fe5-4b5e-943d-f8af8985167d -->
<script id="bold-subscriptions-app-embed-script" type="text/javascript" defer>
if (window.location.href.includes('pages/manage-subscriptions')) {
const queryParams = new URLSearchParams(window.location.search);
if(queryParams.has('deep_link') && queryParams.get('deep_link') === 'upsell' &&
queryParams.has('type') && queryParams.get('type') === 'upcoming-order-email'
) {
window.location.href=`https://www.preserve.eco/customer_authentication/redirect?locale=en®ion_country=US?${queryParams.toString()}&from_msp=true`;
}
} else if (window.location.href.includes('https://www.preserve.eco/customer_authentication/redirect?locale=en®ion_country=US')) {
document.addEventListener('DOMContentLoaded', function() {
const queryParams = new URLSearchParams(window.location.search);
if(queryParams.has('from_msp')) {
queryParams.delete('from_msp');
let form = document.querySelector("#customer_login");
if(form) {
let input = document.createElement('input');
input.type = 'hidden';
input.name = 'return_to';
input.value = `https://www.preserve.eco/pages/manage-subscriptions?${queryParams.toString()}`;
form.appendChild(input);
}
}
});
}
window.BOLD = window.BOLD || {};
window.BOLD.subscriptions = window.BOLD.subscriptions || {};
window.BOLD.subscriptions.config = window.BOLD.subscriptions.config || {};
window.BOLD.subscriptions.config.isAppEmbedEnabled = true;
window.BOLD.subscriptions.classes = window.BOLD.subscriptions.classes || {};
window.BOLD.subscriptions.patches = window.BOLD.subscriptions.patches || {};
window.BOLD.subscriptions.patches.maxCheckoutRetries = window.BOLD.subscriptions.patches.maxCheckoutRetries || 200;
window.BOLD.subscriptions.patches.currentCheckoutRetries = window.BOLD.subscriptions.patches.currentCheckoutRetries || 0;
window.BOLD.subscriptions.patches.maxCashierPatchAttempts = window.BOLD.subscriptions.patches.maxCashierPatchAttempts || 200;
window.BOLD.subscriptions.patches.currentCashierPatchAttempts = window.BOLD.subscriptions.patches.currentCashierPatchAttempts || 0;
window.BOLD.subscriptions.config.platform = 'shopify';
window.BOLD.subscriptions.config.shopDomain = 'preserve-eco.myshopify.com';
window.BOLD.subscriptions.config.customDomain = 'www.preserve.eco';
window.BOLD.subscriptions.config.shopIdentifier = '23720029';
window.BOLD.subscriptions.config.cashierUrl = 'https://cashier.boldcommerce.com';
window.BOLD.subscriptions.config.boldAPIBase = 'https://app-api.boldapps.net/';
window.BOLD.subscriptions.config.cashierApplicationUUID = '2e6a2bbc-b12b-4255-abdf-a02af85c0d4e';
window.BOLD.subscriptions.config.appUrl = 'https://sub.boldapps.net';
window.BOLD.subscriptions.config.currencyCode = 'USD';
window.BOLD.subscriptions.config.checkoutType = 'shopify';
window.BOLD.subscriptions.config.currencyFormat = "$\u0026#123;\u0026#123;amount}}";
window.BOLD.subscriptions.config.shopCurrencies = [{"id":9704,"currency":"EUR","currency_format":"\u0026euro;\u0026#123;\u0026#123;amount}}","created_at":"2026-04-11 09:03:47","updated_at":"2026-04-11 09:03:47"},{"id":7436,"currency":"USD","currency_format":"$\u0026#123;\u0026#123;amount}}","created_at":"2024-09-26 04:14:41","updated_at":"2024-09-26 04:14:41"}];
window.BOLD.subscriptions.config.shopSettings = {"allow_msp_cancellation":true,"allow_msp_prepaid_renewal":true,"customer_can_pause_subscription":true,"customer_can_change_next_order_date":true,"customer_can_change_order_frequency":true,"customer_can_create_an_additional_order":false,"customer_can_use_passwordless_login":false,"customer_passwordless_login_redirect":false,"customer_can_add_products_to_existing_subscriptions":true,"show_currency_code":true,"stored_payment_method_policy":"required","customer_portal_path":"pages\/manage-subscriptions","display_only_subscription_products":false};
window.BOLD.subscriptions.config.customerLoginPath = null;
window.BOLD.subscriptions.config.isPrepaidEnabled = window.BOLD.subscriptions.config.isPrepaidEnabled || true;
window.BOLD.subscriptions.config.loadSubscriptionGroupFrom = 'default';
window.BOLD.subscriptions.config.loadSubscriptionGroupFromTypes = "default";
window.BOLD.subscriptions.config.cashierPluginOnlyMode = window.BOLD.subscriptions.config.cashierPluginOnlyMode || false;
if (window.BOLD.subscriptions.config.waitForCheckoutLoader === undefined) {
window.BOLD.subscriptions.config.waitForCheckoutLoader = true;
}
window.BOLD.subscriptions.config.addToCartFormSelectors = window.BOLD.subscriptions.config.addToCartFormSelectors || [];
window.BOLD.subscriptions.config.addToCartButtonSelectors = window.BOLD.subscriptions.config.addToCartButtonSelectors || [];
window.BOLD.subscriptions.config.widgetInsertBeforeSelectors = window.BOLD.subscriptions.config.widgetInsertBeforeSelectors || [];
window.BOLD.subscriptions.config.quickAddToCartButtonSelectors = window.BOLD.subscriptions.config.quickAddToCartButtonSelectors || [];
window.BOLD.subscriptions.config.cartElementSelectors = window.BOLD.subscriptions.config.cartElementSelectors || [];
window.BOLD.subscriptions.config.cartTotalElementSelectors = window.BOLD.subscriptions.config.cartTotalElementSelectors || [];
window.BOLD.subscriptions.config.lineItemSelectors = window.BOLD.subscriptions.config.lineItemSelectors || [];
window.BOLD.subscriptions.config.lineItemNameSelectors = window.BOLD.subscriptions.config.lineItemNameSelectors || [];
window.BOLD.subscriptions.config.checkoutButtonSelectors = window.BOLD.subscriptions.config.checkoutButtonSelectors || [];
window.BOLD.subscriptions.config.featureFlags = window.BOLD.subscriptions.config.featureFlagOverrides || ["BE-2298-Support-Variant-Selections-In-Sub-Groups","BE-6178-Control-Oversell-Rules-For-Recurrences","BE-6887_Reduce_CBP_Chunk_Size","BE-6741-RESTFUL-discount-codes","BE-6925-remove-bold-error-code-from-error-message","BE-8183-normalize-lineItemAttribute-comparison","BE-7940-continue-creation-when-group-missing","BE-8664-default-address-source-bold","BE-9259-csp-postmvp","BE-9502-add-logs-to-investigate-infinite-loop","BE-9515-fix-embedded-billing","BE-9485-variant-delimiter-conflict","BE-9536-selection-option-api-delete-type","BE-9606-Transaction-Sales-gRPC-Update","BE-9641-order-details-merge-field"];
window.BOLD.subscriptions.config.subscriptionProcessingFrequency = '60';
window.BOLD.subscriptions.config.requireMSPInitialLoadingMessage = true;
window.BOLD.subscriptions.data = window.BOLD.subscriptions.data || {};
// Interval text markup template
window.BOLD.subscriptions.config.lineItemPropertyListSelectors = window.BOLD.subscriptions.config.lineItemPropertyListSelectors || [];
window.BOLD.subscriptions.config.lineItemPropertyListSelectors.push('dl.definitionList');
window.BOLD.subscriptions.config.lineItemPropertyListTemplate = window.BOLD.subscriptions.config.lineItemPropertyListTemplate || '<dl class="definitionList"></dl>';
window.BOLD.subscriptions.config.lineItemPropertyTemplate = window.BOLD.subscriptions.config.lineItemPropertyTemplate || '<dt class="definitionList-key">{{key}}:</dt><dd class="definitionList-value">{{value}}</dd>';
// Discount text markup template
window.BOLD.subscriptions.config.discountItemTemplate = window.BOLD.subscriptions.config.discountItemTemplate || '<div class="bold-subscriptions-discount"><div class="bold-subscriptions-discount__details">{{details}}</div><div class="bold-subscriptions-discount__total">{{total}}</div></div>';
// Constants in XMLHttpRequest are not reliable, so we will create our own
// reference: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState
window.BOLD.subscriptions.config.XMLHttpRequest = {
UNSENT:0, // Client has been created. open() not called yet.
OPENED: 1, // open() has been called.
HEADERS_RECEIVED: 2, // send() has been called, and headers and status are available.
LOADING: 3, // Downloading; responseText holds partial data.
DONE: 4 // The operation is complete.
};
window.BOLD.subscriptions.config.assetBaseUrl = 'https://sub.boldapps.net';
if (window.localStorage && window.localStorage.getItem('boldSubscriptionsAssetBaseUrl')) {
window.BOLD.subscriptions.config.assetBaseUrl = window.localStorage.getItem('boldSubscriptionsAssetBaseUrl')
}
window.BOLD.subscriptions.data.subscriptionGroups = [];
if (localStorage && localStorage.getItem('boldSubscriptionsSubscriptionGroups')) {
window.BOLD.subscriptions.data.subscriptionGroups = JSON.parse(localStorage.getItem('boldSubscriptionsSubscriptionGroups'));
} else {
window.BOLD.subscriptions.data.subscriptionGroups = [{"id":43297,"billing_rules":[{"id":107215,"subscription_group_id":43297,"interval_name":"Monthly","billing_rule":"FREQ=MONTHLY","custom_billing_rule":""},{"id":107216,"subscription_group_id":43297,"interval_name":"Every 3 months","billing_rule":"FREQ=MONTHLY;INTERVAL=3","custom_billing_rule":""},{"id":107217,"subscription_group_id":43297,"interval_name":"Yearly","billing_rule":"FREQ=YEARLY","custom_billing_rule":""},{"id":107850,"subscription_group_id":43297,"interval_name":"Every 4 months","billing_rule":"FREQ=MONTHLY;INTERVAL=4","custom_billing_rule":""}],"is_subscription_only":false,"allow_prepaid":false,"allow_dynamic_discount":false,"is_prepaid_only":false,"should_continue_prepaid":true,"continue_prepaid_type":"as_prepaid","prepaid_durations":[],"dynamic_discounts":[{"id":395,"subscription_group_id":43297,"order_number":1,"discount_type":"percentage","discount_value":0}],"selection_options":[{"platform_entity_id":"12512361291"},{"platform_entity_id":"12512362379"},{"platform_entity_id":"12512364235"},{"platform_entity_id":"12512376395"},{"platform_entity_id":"1568781336628"},{"platform_entity_id":"3750152470580"},{"platform_entity_id":"3822692270132"},{"platform_entity_id":"7843342385395"},{"platform_entity_id":"7999845859571"},{"platform_entity_id":"8679764394227"}],"discount_type":"percentage","percent_discount":15,"fixed_discount":0,"can_add_to_cart":true},{"id":43575,"billing_rules":[{"id":107853,"subscription_group_id":43575,"interval_name":"Monthly","billing_rule":"FREQ=MONTHLY","custom_billing_rule":""},{"id":107854,"subscription_group_id":43575,"interval_name":"3 Months","billing_rule":"FREQ=MONTHLY;INTERVAL=3","custom_billing_rule":""},{"id":107855,"subscription_group_id":43575,"interval_name":"4 Months","billing_rule":"FREQ=MONTHLY;INTERVAL=4","custom_billing_rule":""},{"id":107856,"subscription_group_id":43575,"interval_name":"Yearly","billing_rule":"FREQ=YEARLY","custom_billing_rule":""}],"is_subscription_only":false,"allow_prepaid":false,"allow_dynamic_discount":false,"is_prepaid_only":false,"should_continue_prepaid":true,"continue_prepaid_type":"as_prepaid","prepaid_durations":[{"id":43100,"subscription_group_id":43575,"total_duration":1,"discount_type":"percentage","discount_value":0}],"dynamic_discounts":[{"id":396,"subscription_group_id":43575,"order_number":1,"discount_type":"percentage","discount_value":0}],"selection_options":[{"platform_entity_id":null},{"platform_entity_id":null},{"platform_entity_id":null},{"platform_entity_id":null},{"platform_entity_id":null},{"platform_entity_id":null}],"discount_type":"percentage","percent_discount":20,"fixed_discount":0,"can_add_to_cart":true}];
}
window.BOLD.subscriptions.isFeatureFlagEnabled = function (featureFlag) {
for (var i = 0; i < window.BOLD.subscriptions.config.featureFlags.length; i++) {
if (window.BOLD.subscriptions.config.featureFlags[i] === featureFlag){
return true;
}
}
return false;
}
window.BOLD.subscriptions.logger = {
tag: "bold_subscriptions",
// the bold subscriptions log level
// 0 - errors (default)
// 1 - warnings + errors
// 2 - info + warnings + errors
// use window.localStorage.setItem('boldSubscriptionsLogLevel', x) to set the log level
levels: {
ERROR: 0,
WARN: 1,
INFO: 2,
},
level: parseInt((window.localStorage && window.localStorage.getItem('boldSubscriptionsLogLevel')) || "0", 10),
_log: function(callArgs, level) {
if (!window.console) {
return null;
}
if (window.BOLD.subscriptions.logger.level < level) {
return;
}
var params = Array.prototype.slice.call(callArgs);
params.unshift(window.BOLD.subscriptions.logger.tag);
switch (level) {
case window.BOLD.subscriptions.logger.levels.INFO:
console.info.apply(null, params);
return;
case window.BOLD.subscriptions.logger.levels.WARN:
console.warn.apply(null, params);
return;
case window.BOLD.subscriptions.logger.levels.ERROR:
console.error.apply(null, params);
return;
default:
console.log.apply(null, params);
return;
}
},
info: function() {
window.BOLD.subscriptions.logger._log(arguments, window.BOLD.subscriptions.logger.levels.INFO);
},
warn: function() {
window.BOLD.subscriptions.logger._log(arguments, window.BOLD.subscriptions.logger.levels.WARN);
},
error: function() {
window.BOLD.subscriptions.logger._log(arguments, window.BOLD.subscriptions.logger.levels.ERROR);
}
}
window.BOLD.subscriptions.shouldLoadSubscriptionGroupFromAPI = function() {
return window.BOLD.subscriptions.config.loadSubscriptionGroupFrom === window.BOLD.subscriptions.config.loadSubscriptionGroupFromTypes['BSUB_API'];
}
window.BOLD.subscriptions.getSubscriptionGroupFromProductId = function (productId) {
var data = window.BOLD.subscriptions.data;
var foundGroup = null;
for (var i = 0; i < data.subscriptionGroups.length; i += 1) {
var subscriptionGroup = data.subscriptionGroups[i];
for (var j = 0; j < subscriptionGroup.selection_options.length; j += 1) {
var selectionOption = subscriptionGroup.selection_options[j];
if (selectionOption.platform_entity_id === productId.toString()) {
foundGroup = subscriptionGroup;
break;
}
}
if (foundGroup) {
break;
}
}
return foundGroup;
};
window.BOLD.subscriptions.getSubscriptionGroupById = function(subGroupId) {
var subscriptionGroups = window.BOLD.subscriptions.data.subscriptionGroups;
for (var i = 0; i < subscriptionGroups.length; i += 1) {
var subGroup = subscriptionGroups[i];
if (subGroup.id === subGroupId) {
return subGroup;
}
}
return null;
};
window.BOLD.subscriptions.addSubscriptionGroup = function (subscriptionGroup) {
if(!window.BOLD.subscriptions.getSubscriptionGroupById(subscriptionGroup.id))
{
window.BOLD.subscriptions.data.subscriptionGroups.push(subscriptionGroup);
}
}
window.BOLD.subscriptions.getSubscriptionGroupPrepaidDurationById = function(subscriptionGroupId, prepaidDurationId) {
var subscriptionGroup = window.BOLD.subscriptions.getSubscriptionGroupById(subscriptionGroupId);
if (
!subscriptionGroup
|| !subscriptionGroup.prepaid_durations
|| !subscriptionGroup.prepaid_durations.length
) {
return null;
}
for (var i = 0; i < subscriptionGroup.prepaid_durations.length; i++) {
var prepaidDuration = subscriptionGroup.prepaid_durations[i];
if (prepaidDuration.id === prepaidDurationId) {
return prepaidDuration;
}
}
return null;
}
window.BOLD.subscriptions.getSubscriptionGroupBillingRuleById = function(subGroup, billingRuleId) {
for (var i = 0; i < subGroup.billing_rules.length; i += 1) {
var billingRule = subGroup.billing_rules[i];
if (billingRule.id === billingRuleId) {
return billingRule;
}
}
return null;
};
window.BOLD.subscriptions.toggleDisabledAddToCartButtons = function(d) {
var addToCartForms = document.querySelectorAll(window.BOLD.subscriptions.config.addToCartFormSelectors.join(','));
var disable = !!d;
for (var i = 0; i < addToCartForms.length; i++) {
var addToCartForm = addToCartForms[i];
var productId = window.BOLD.subscriptions.getProductIdFromAddToCartForm(addToCartForm);
var subscriptionGroup = window.BOLD.subscriptions.getSubscriptionGroupFromProductId(productId);
if(window.BOLD.subscriptions.isFeatureFlagEnabled('BS2-4659_improve_large_group_selection') ) {
if (subscriptionGroup || window.BOLD.subscriptions.shouldLoadSubscriptionGroupFromAPI()) {
var addToCartButtons = addToCartForm.querySelectorAll(window.BOLD.subscriptions.config.addToCartButtonSelectors.join(','));
for (var j = 0; j < addToCartButtons.length; j++) {
var addToCartButton = addToCartButtons[j];
var toggleAction = disable ? addToCartButton.setAttribute : addToCartButton.removeAttribute;
addToCartButton.disabled = disable;
toggleAction.call(addToCartButton, 'data-disabled-by-subscriptions', disable);
}
}
} else {
if (subscriptionGroup) {
var addToCartButtons = addToCartForm.querySelectorAll(window.BOLD.subscriptions.config.addToCartButtonSelectors.join(','));
for (var j = 0; j < addToCartButtons.length; j++) {
var addToCartButton = addToCartButtons[j];
var toggleAction = disable ? addToCartButton.setAttribute : addToCartButton.removeAttribute;
addToCartButton.disabled = disable;
toggleAction.call(addToCartButton, 'data-disabled-by-subscriptions', disable);
}
}
}
}
};
window.BOLD.subscriptions.disableAddToCartButtons = function () {
// only disable the add to cart buttons if the app isn't loaded yet
if (!window.BOLD.subscriptions.app) {
window.BOLD.subscriptions.toggleDisabledAddToCartButtons(true);
} else {
window.BOLD.subscriptions.enableAddToCartButtons();
}
};
window.BOLD.subscriptions.enableAddToCartButtons = function () {
document.removeEventListener('click', window.BOLD.subscriptions.preventSubscriptionAddToCart);
window.BOLD.subscriptions.toggleDisabledAddToCartButtons(false);
};
window.BOLD.subscriptions.toggleDisabledCheckoutButtons = function(d) {
var checkoutButtons = document.querySelectorAll(window.BOLD.subscriptions.config.checkoutButtonSelectors.join(','));
var disable = !!d;
for (var i = 0; i < checkoutButtons.length; i++) {
var checkoutButton = checkoutButtons[i];
var toggleAction = disable ? checkoutButton.setAttribute : checkoutButton.removeAttribute;
checkoutButton.disabled = disable;
toggleAction.call(checkoutButton, 'data-disabled-by-subscriptions', disable);
}
}
window.BOLD.subscriptions.disableCheckoutButtons = function() {
// only disable the checkout buttons if the app isn't loaded yet
if (!window.BOLD.subscriptions.app) {
window.BOLD.subscriptions.toggleDisabledCheckoutButtons(true);
} else {
window.BOLD.subscriptions.enableCheckoutButtons();
}
}
window.BOLD.subscriptions.enableCheckoutButtons = function() {
document.removeEventListener('click', window.BOLD.subscriptions.preventCheckout);
window.BOLD.subscriptions.toggleDisabledCheckoutButtons(false);
}
window.BOLD.subscriptions.hasSuccessfulAddToCarts = function() {
if (typeof(Storage) !== "undefined") {
var successfulAddToCarts = JSON.parse(
window.localStorage.getItem('boldSubscriptionsSuccessfulAddToCarts') || '[]'
);
if (successfulAddToCarts.length > 0) {
return true;
}
}
return false;
}
window.BOLD.subscriptions.hasPendingAddToCarts = function() {
if (typeof(Storage) !== "undefined") {
var pendingAddToCarts = JSON.parse(
window.localStorage.getItem('boldSubscriptionsPendingAddToCarts') || '[]'
);
if (pendingAddToCarts.length > 0) {
return true;
}
}
return false;
}
window.BOLD.subscriptions.addJSAsset = function(src, deferred) {
var scriptTag = document.getElementById('bold-subscriptions-app-embed-script');
var jsElement = document.createElement('script');
jsElement.type = 'text/javascript';
jsElement.src = src;
if (deferred) {
jsElement.defer = true;
}
scriptTag.parentNode.insertBefore(jsElement, scriptTag);
};
window.BOLD.subscriptions.addCSSAsset = function(href) {
var scriptTag = document.getElementById('bold-subscriptions-app-embed-script');
var cssElement = document.createElement('link');
cssElement.href = href;
cssElement.rel = 'stylesheet';
scriptTag.parentNode.insertBefore(cssElement, scriptTag);
};
window.BOLD.subscriptions.loadStorefrontAssets = function loadStorefrontAssets() {
var assets = window.BOLD.subscriptions.config.assets;
window.BOLD.subscriptions.addCSSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['storefront.css']);
window.BOLD.subscriptions.addJSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['storefront.js'], false);
};
window.BOLD.subscriptions.loadCustomerPortalAssets = function loadCustomerPortalAssets() {
if (document.getElementById('customer-portal-root') || document.getElementsByClassName('bsub-express-add-ons-widget')) {
var assets = window.BOLD.subscriptions.config.assets;
window.BOLD.subscriptions.addCSSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['customer_portal.css']);
window.BOLD.subscriptions.addJSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['customer_portal.js'], true);
}
};
window.BOLD.subscriptions.processManifest = function() {
if (!window.BOLD.subscriptions.processedManifest) {
window.BOLD.subscriptions.processedManifest = true;
window.BOLD.subscriptions.config.assets = JSON.parse(this.responseText);
window.BOLD.subscriptions.loadCustomerPortalAssets();
}
};
window.BOLD.subscriptions.addInitialLoadingMessage = function() {
var customerPortalNode = document.getElementById('customer-portal-root');
if (customerPortalNode && window.BOLD.subscriptions.config.requireMSPInitialLoadingMessage) {
customerPortalNode.innerHTML = '<div class="bold-subscriptions-loader-container"><div class="bold-subscriptions-loader"></div></div>';
}
}
window.BOLD.subscriptions.contentLoaded = function() {
window.BOLD.subscriptions.data.contentLoadedEventTriggered = true;
window.BOLD.subscriptions.addInitialLoadingMessage();
};
window.BOLD.subscriptions.preventSubscriptionAddToCart = function(e) {
if (e.target.matches(window.BOLD.subscriptions.config.addToCartButtonSelectors.join(',')) && e.target.form) {
var productId = window.BOLD.subscriptions.getProductIdFromAddToCartForm(e.target.form);
var subscriptionGroup = window.BOLD.subscriptions.getSubscriptionGroupFromProductId(productId);
if(window.BOLD.subscriptions.isFeatureFlagEnabled('BS2-4659_improve_large_group_selection'))
{
if (subscriptionGroup || window.BOLD.subscriptions.shouldLoadSubscriptionGroupFromAPI()) {
// This code prevents products in subscription groups from being added to the cart before the
// Subscriptions app fully loads. Once the subscriptions app loads it will re-enable the
// buttons. Use window.BOLD.subscriptions.enableAddToCartButtons enable them manually.
e.preventDefault();
return false;
}
} else {
if (subscriptionGroup) {
// This code prevents products in subscription groups from being added to the cart before the
// Subscriptions app fully loads. Once the subscriptions app loads it will re-enable the
// buttons. Use window.BOLD.subscriptions.enableAddToCartButtons enable them manually.
e.preventDefault();
return false;
}
}
}
};
window.BOLD.subscriptions.preventCheckout = function(e) {
if (
e.target.matches(window.BOLD.subscriptions.config.checkoutButtonSelectors.join(','))
&& (window.BOLD.subscriptions.hasSuccessfulAddToCarts() || window.BOLD.subscriptions.hasPendingAddToCarts())
) {
// This code prevents checkouts on the shop until the Subscriptions app fully loads.
// When the Subscriptions app is ready it will enable the checkout buttons itself.
// Use window.BOLD.subscriptions.enableCheckoutButtons to enable them manually.
e.preventDefault();
return false;
}
}
if (!window.BOLD.subscriptions.config.legacyAssetsLoaded) {
document.addEventListener('DOMContentLoaded', window.BOLD.subscriptions.contentLoaded);
}
if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.oMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
function(s) {
var matches = (this.document || this.ownerDocument).querySelectorAll(s),
i = matches.length;
while (--i >= 0 && matches.item(i) !== this) {}
return i > -1;
};
}
if (!Element.prototype.closest) {
Element.prototype.closest = function(s) {
var el = this;
do {
if (Element.prototype.matches.call(el, s)) return el;
el = el.parentElement || el.parentNode;
} while (el !== null && el.nodeType === 1);
return null;
};
}
window.BOLD.subscriptions.setVisibilityOfAdditionalCheckoutButtons = function (isVisible) {
if (window.BOLD.subscriptions.config.additionalCheckoutSelectors === undefined) {
return;
}
var selectors = window.BOLD.subscriptions.config.additionalCheckoutSelectors;
for (var i = 0; i < selectors.length; i++) {
var elements = document.querySelectorAll(selectors[i]);
for (var j = 0; j < elements.length; j++) {
elements[j].style.display = isVisible ? 'block' : 'none';
}
}
}
window.BOLD.subscriptions.hideAdditionalCheckoutButtons = function() {
window.BOLD.subscriptions.setVisibilityOfAdditionalCheckoutButtons(false);
};
window.BOLD.subscriptions.showAdditionalCheckoutButtons = function() {
window.BOLD.subscriptions.setVisibilityOfAdditionalCheckoutButtons(true);
};
window.BOLD.subscriptions.enhanceMspUrls = function(data) {
var mspUrl = 'https://sub.boldapps.net/shop/19502/customer_portal';
var elements = document.querySelectorAll("a[href='"+mspUrl+"']");
if(!elements.length || !data.success) {
return;
}
for (var i = 0; i < elements.length; i++) {
elements[i].href = elements[i].href + "?jwt="+data.value.jwt+"&customerId="+data.value.customerId;
}
};
if (!window.BOLD.subscriptions.config.legacyAssetsLoaded) {
window.addEventListener('load', function () {
if (document.getElementById('customer-portal-root')) {
window.BOLD.subscriptions.getJWT(window.BOLD.subscriptions.enhanceMspUrls);
}
});
// This will be called immediately
// Use this anonymous function to avoid polluting the global namespace
(function() {
var xhr = new XMLHttpRequest();
xhr.addEventListener('load', window.BOLD.subscriptions.processManifest);
xhr.open('GET', window.BOLD.subscriptions.config.assetBaseUrl + '/static/manifest.json?t=' + (new Date()).getTime());
xhr.send();
})()
}
window.BOLD.subscriptions.patches.patchCashier = function() {
if (window.BOLD && window.BOLD.checkout) {
window.BOLD.checkout.disable();
window.BOLD.checkout.listenerFn = window.BOLD.subscriptions.patches.cashierListenerFn;
window.BOLD.checkout.enable();
} else if (window.BOLD.subscriptions.patches.currentCashierPatchAttempts < window.BOLD.subscriptions.patches.maxCashierPatchAttempts) {
window.BOLD.subscriptions.patches.currentCashierPatchAttempts++;
setTimeout(window.BOLD.subscriptions.patches.patchCashier, 100);
}
};
window.BOLD.subscriptions.patches.finishCheckout = function(event, form, cart) {
window.BOLD.subscriptions.patches.currentCheckoutRetries++;
if (!window.BOLD.subscriptions.app
&& window.BOLD.subscriptions.patches.currentCheckoutRetries < window.BOLD.subscriptions.patches.maxCheckoutRetries
) {
setTimeout(function () { window.BOLD.subscriptions.patches.finishCheckout(event, form, cart); }, 100);
return;
} else if (window.BOLD.subscriptions.app) {
window.BOLD.subscriptions.patches.currentCheckoutRetries = 0;
window.BOLD.subscriptions.app.addCartParams(form, cart);
}
var noSubscriptions = false;
if ((window.BOLD.subscriptions.app && window.BOLD.subscriptions.app.successfulAddToCarts.length === 0)
|| !window.BOLD.subscriptions.app
) {
noSubscriptions = true;
event.target.dataset.cashierConfirmedNoPlugins = true;
if (window.BOLD.subscriptions.setCashierFeatureToken) {
window.BOLD.subscriptions.setCashierFeatureToken(false);
}
}
if ((noSubscriptions && window.BOLD.subscriptions.config.cashierPluginOnlyMode)
|| (typeof BOLD.checkout.isFeatureRequired === 'function' && !BOLD.checkout.isFeatureRequired())
) {
// send them to the original checkout when in plugin only mode
// and either BSUB is there but there are no subscription products
// or BSUB isn't there at all
if (form.dataset.old_form_action) {
form.action = form.dataset.old_form_action;
}
event.target.click();
} else {
// sends them to Cashier since BSUB got a chance to add it's stuff
// and plugin only mode is not enabled
form.submit();
}
};
</script>
<script id="bold-subscriptions-app-embed-platform-script" type="text/javascript" defer>
window.BOLD.subscriptions.config.shopPlatformId = '23720029';
window.BOLD.subscriptions.config.appSlug = 'subscriptions';
window.BOLD = window.BOLD || {};
window.BOLD.subscriptions = window.BOLD.subscriptions || {};
window.BOLD.subscriptions.data = window.BOLD.subscriptions.data || {};
window.BOLD.subscriptions.data.platform = window.BOLD.subscriptions.data.platform || {};
window.BOLD.subscriptions.data.platform.customer = { id: '' };
window.BOLD.subscriptions.data.platform.product = null;
window.BOLD.subscriptions.data.platform.products = [];
window.BOLD.subscriptions.data.platform.variantProductMap = {};
window.BOLD.subscriptions.getProductByVariantId = function(variantId) {
if (window.BOLD.subscriptions.data.platform.product &&
window.BOLD.subscriptions.data.platform.product.variants) {
for (var i = 0; i < window.BOLD.subscriptions.data.platform.product.variants.length; i++) {
if (window.BOLD.subscriptions.data.platform.product.variants[i].id === variantId) {
return window.BOLD.subscriptions.data.platform.product;
}
}
}
if (window.BOLD.subscriptions.data.platform.variantProductMap[variantId]) {
return window.BOLD.subscriptions.data.platform.variantProductMap[variantId];
}
var productElements = document.querySelectorAll('[data-product-id]');
for (var i = 0; i < productElements.length; i++) {
var productJsonElement = productElements[i].querySelector('[data-product-json]');
if (productJsonElement) {
try {
var productData = JSON.parse(productJsonElement.textContent);
if (productData && productData.variants) {
for (var j = 0; j < productData.variants.length; j++) {
if (productData.variants[j].id === variantId) {
return productData;
}
}
}
} catch (e) {
// Continue if parsing fails
}
}
}
return null;
}
window.BOLD.subscriptions.config.addToCartFormSelectors.push(
'.product-form.product-form-product-template:not(.bold-subscriptions-no-widget)'
,'.product-form.product-form--payment-button:not(.bold-subscriptions-no-widget)'
);
window.BOLD.subscriptions.config.addToCartButtonSelectors.push('[type="submit"]');
window.BOLD.subscriptions.config.quickAddToCartButtonSelectors.push('a[data-event-type="product-click"]');
window.BOLD.subscriptions.config.widgetInsertBeforeSelectors.push('[type="submit"]');
window.BOLD.subscriptions.config.cartElementSelectors.push('form[action="/cart"]');
window.BOLD.subscriptions.config.cartTotalElementSelectors.push('[data-cart-subtotal]', '.text-right .ajaxcart__subtotal');
window.BOLD.subscriptions.config.checkoutButtonSelectors.push(
'[name="checkout"]',
'[href*="checkout"]:not([href*="tools/checkout"])',
'[onclick*="checkout"]:not([onclick*="tools/checkout"])',
);
// Discount text markup template
window.BOLD.subscriptions.config.discountItemTemplate = '<div class="bold-subscriptions-discount"><div class="bold-subscriptions-discount__details">{{details}}</div><div class="bold-subscriptions-discount__total">{{total}}</div></div>';
window.BOLD.subscriptions.getProductIdFromAddToCartForm = function(addToCartForm) {
var idInput = addToCartForm.querySelector('[name="id"]');
if (idInput === null) {
window.BOLD.subscriptions.logger.error('could not get variant id input from add to cart form — make sure your form has an input with [name="id"]')
return null;
}
var variantId = parseInt(idInput.value, 10);
if (isNaN(variantId)) {
window.BOLD.subscriptions.logger.error('could not parse variant id from [name="id"] input')
return null;
}
var product = window.BOLD.subscriptions.getProductByVariantId(variantId);
if (product === undefined || product === null) {
window.BOLD.subscriptions.logger.error('could not find product data for variant id ' + variantId + ' — product data may not be available on this page')
return null;
}
return product.id;
};
window.BOLD.subscriptions.getAddToCartForms = function() {
var forms = [];
var idInputs = document.querySelectorAll('[name="id"]');
for (var i = 0; i < idInputs.length; i++) {
var idInput = idInputs[i];
var form = idInput.closest('form:not(.bold-subscriptions-no-widget)');
if (form) {
forms.push(form);
}
}
return forms;
};
window.BOLD.subscriptions.getJWT = function (callback) {
if(window.BOLD.subscriptions.data.platform.customer.id !== '') {
var shopPlatformId = '23720029';
var appSlug = 'subscriptions';
var customerPlatformId = window.BOLD.subscriptions.data.platform.customer.id;
var proxyPath = '/apps/app-proxy/customers/v1/shops/'+shopPlatformId+'/apps/'+appSlug+'/customers/pid/'+customerPlatformId+'/jwt';
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === window.BOLD.subscriptions.config.XMLHttpRequest.DONE) {
if (xmlhttp.status === 200) {
var data = JSON.parse(xmlhttp.responseText);
callback({
success: true,
value: {
jwt: data.bold_platform_jwt,
customerId: window.BOLD.subscriptions.data.platform.customer.id,
},
});
} else if (xmlhttp.status === 404) {
callback({
success: false,
error: 'not_logged_in',
});
} else {
callback({
success: false,
error: 'unknown',
});
}
}
};
xmlhttp.open("GET", proxyPath, true);
xmlhttp.setRequestHeader('Accept', 'application/liquid');
xmlhttp.send();
} else {
callback({
success: false,
error: 'not_logged_in',
});
}
};
window.BOLD.subscriptions.setCashierFeatureToken = function(value) {
if (window.BOLD.checkout_features_defaults && window.BOLD.subscriptions.config.cashierApplicationUUID) {
window.BOLD.checkout_features_defaults.forEach(function(item) {
if (item.id === window.BOLD.subscriptions.config.cashierApplicationUUID) {
item.require = value;
}
});
}
};
// Cashier patches
window.BOLD.subscriptions.patches.cashierListenerFn = function(event) {
if (window.BOLD.checkout.isCheckoutButton(event.target) && window.BOLD.checkout.isEnabled()) {
window.BOLD.subscriptions.patches.pushToCashier(event);
} else if(window.BOLD.checkout.isCheckoutButton(event.target) && typeof window.cashier_installed_on_site === 'undefined') {
var request = new XMLHttpRequest();
request.open('HEAD', '/apps/checkout/isInstalled', false);
request.send(null);
if(request.status >= 200 && request.status < 400) {
window.BOLD.subscriptions.patches.pushToCashier(event);
} else {
window.cashier_installed_on_site = false;
}
}
};
window.BOLD.subscriptions.localTime = function() {
var localDate = new Date();
return localDate.getTime();
};
window.BOLD.subscriptions.patches.pushToCashier = function(event) {
event.preventDefault();
var form = window.BOLD.checkout.getForm(event.target);
var formData = new FormData(form);
var request = new XMLHttpRequest();
request.open('POST', '/cart/update.js?tmp=' + Date.now(), true);
request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
// Success!
var cart = JSON.parse(request.responseText);
// If items are empty redirect back to the cart
if (cart.items.length === 0) {
return window.location.href = '/cart';
}
cart.items.forEach(function(element) {
delete element.product_description;
});
if (document.getElementById('CartSpecialInstructions')) {
// If the cart note exists, grab its value
cart.note = document.getElementById('CartSpecialInstructions').value;
}
var cartObj = JSON.stringify(cart);
var form = window.BOLD.checkout.getForm(event.target);
form.dataset.old_form_action = form.action;
form.action = '/apps/checkout/begin-checkout' + googleAnalyticsGetParamString({});
var cartCookie = window.BOLD.checkout.getCookie('cart');
var element = document.createElement('INPUT');
element.type = 'HIDDEN';
element.name = 'cart_id';
element.value = cartCookie;
form.appendChild(element);
var dateElement = document.createElement('INPUT');
dateElement.type = 'HIDDEN';
dateElement.name = 'checkout_local_time';
dateElement.value = window.BOLD.subscriptions.localTime();
form.appendChild(dateElement);
var cartElement = document.createElement('INPUT');
cartElement.type = 'HIDDEN';
cartElement.name = 'cart';
cartElement.value = cartObj;
form.appendChild(cartElement);
form.method = 'POST';
if(window.BOLD && window.BOLD.checkout && typeof window.BOLD.checkout.languageIsoCode === 'string') {
var langInput = document.createElement('INPUT');
langInput.type = 'HIDDEN';
langInput.name = 'language_iso';
langInput.value = window.BOLD.checkout.languageIsoCode;
form.appendChild(langInput);
}
if (window.BOLD && window.BOLD.common && typeof window.BOLD.common.eventEmitter === 'object' && typeof window.BOLDCURRENCY !== 'undefined') {
window.BOLD.common.eventEmitter.emit('BOLD_CASHIER_checkout', {target: form});
}
window.BOLD.subscriptions.patches.finishCheckout(event, form, cart);
}
};
request.send(formData);
};
</script>
<!-- END app block --><meta property="og:image" content="https://cdn.shopify.com/s/files/1/2372/0029/files/Preserve-FaceBook-cover.jpg?v=1747066445" />
<meta property="og:image:secure_url" content="https://cdn.shopify.com/s/files/1/2372/0029/files/Preserve-FaceBook-cover.jpg?v=1747066445" />
<meta property="og:image:width" content="4801" />
<meta property="og:image:height" content="2697" />
<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 23720029,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "index"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
<script>
window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
</script>
<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,r=/bytedance/i;function o(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var r=0,o=e.split(";");r<o.length;r++){var d=o[r],t=d.indexOf("=");if(-1!==t){var n=d.slice(0,t).trim();if(n){var i=void 0;try{i=decodeURIComponent(n)}catch(e){i=n}if("_shopify_s"===i){var a=d.slice(t+1).trim();try{return decodeURIComponent(a)}catch(e){return a}}}}}return}catch(e){return}}function d(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}return function(t,n,i,a){var s,c,u,l,f=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},p=(c=(s={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,u=s.legacy,(l=navigator.userAgent).match(e)?"bot":l.match(c)?"modern":l.match(u)?"legacy":l.match(r)?"bot":"unknown"),h=function(e){var r=e.version,t=e.browserTarget,n=e.surface,i=e.shopId,a=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var c,u=e.status,l=e.errorMsg;if(!a)return d("[Web Pixels Manager] No Monorail endpoint provided, skipping logging."),!1;try{var f=(new Date).getTime();c=JSON.stringify({metadata:{event_sent_at_ms:f},events:[{schema_id:"web_pixels_manager_load/3.2",payload:{version:r,bundle_target:t,page_url:s,status:u,surface:n,error_msg:l,shop_id:i,visit_token:o()},metadata:{event_created_at_ms:f}}]})}catch(e){return!1}var p,h=!1;try{"function"==typeof window.navigator.sendBeacon&&-1===(p=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===p.indexOf("iPad; CPU OS 12_")&&-1===p.indexOf("iPod touch; CPU iPhone OS 12_")&&(h=window.navigator.sendBeacon.bind(window.navigator)(a,c))}catch(e){h=!1}if(h)return!0;try{var m=new XMLHttpRequest;return m.open("POST",a,!0),m.setRequestHeader("Content-Type","text/plain"),m.send(c),!0}catch(e){return d("[Web Pixels Manager] Got an unhandled error while logging to Monorail."),!1}}}}({version:i,browserTarget:p,surface:t.surface,shopId:t.shopId,monorailEndpoint:t.monorailEndpoint});if(Boolean(null==(y=null==(m=window.Shopify)?void 0:m.analytics)?void 0:y.replayQueue))h.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var m,y;h.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var g=window.Shopify;g.analytics=g.analytics||{};var v=g.analytics;v.replayQueue=[],v.publish=function(e,r,o){return v.replayQueue.push([e,r,o]),!0};try{self.performance.mark("wpm:start")}catch(e){}var w,b="modern"===p?"modern":"legacy",P=(null!=a?a:{modern:"",legacy:""})[b],S=[(w={baseUrl:n,hashVersion:i,buildTarget:b}).baseUrl,"/wpm","/b",w.hashVersion,"modern"===w.buildTarget?"m":"l",".js"].join("");try{f.browserTarget=p,O(function(){try{O(_)}catch(e){h.emit({status:"failed",errorMsg:U(e)})}}),h.emit({status:"loading"})}catch(e){h.emit({status:"failed",errorMsg:U(e)})}}function C(){if(!function(){var e,r;return Boolean(null==(r=null==(e=window.Shopify)?void 0:e.analytics)?void 0:r.initialized)}()){var e=window.webPixelsManager.init(t)||void 0;if(e){var r=window.Shopify.analytics;r.replayQueue.forEach(function(r){var o=r[0],d=r[1],t=r[2];e.publishCustomEvent(o,d,t)}),r.replayQueue=[],r.publish=e.publishCustomEvent,r.visitor=e.visitor,r.initialized=!0}}}function _(){return h.emit({status:"failed",errorMsg:"".concat(S," has failed to load")})}function O(e){var r;!function(e){var r=e.src,o=e.async,d=void 0===o||o,t=e.onload,n=e.onerror,i=e.sri,a=e.scriptDataAttributes,s=void 0===a?{}:a,c=document.createElement("script"),u=document.querySelector("head"),l=document.querySelector("body");if(c.async=d,c.src=r,i&&(c.integrity=i,c.crossOrigin="anonymous"),s)for(var f in s)if(Object.prototype.hasOwnProperty.call(s,f))try{c.dataset[f]=s[f]}catch(e){}if(t&&c.addEventListener("load",t),n&&c.addEventListener("error",n),u)u.appendChild(c);else{if(!l)throw new Error("Did not find a head or body element to append the script");l.appendChild(c)}}({src:S,async:!0,onload:C,onerror:e,sri:(r=P,"string"==typeof r&&/^sha384-[A-Za-z0-9+/=]+$/.test(r)?P:""),scriptDataAttributes:f})}function U(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 23720029,storefrontBaseUrl: "https://www.preserve.eco",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://www.preserve.eco/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["d5bdd5d0","656605ce"],webPixelsConfigList: [{"id":"2021196019","configuration":"{\"mailchimp_store_id\":\"store_ra3ndlr8i4jobc8aph16\", \"mailchimp_user_id\":\"655281\",\"mailchimp_list_id\":\"1567307e0f\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"e357a49eadeb6216a959d63fa3fb8f55","type":"APP","apiClientId":2585307,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"960987379","configuration":"{\"site_id\":\"145ffeef-6ba5-4c1e-9374-4531f22da1db\",\"analytics_endpoint\":\"https:\\\/\\\/na.shgcdn3.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"695709fc3f146fa50a25299517a954f2","type":"APP","apiClientId":1158168,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"463962355","configuration":"{\"config\":\"{\\\"pixel_id\\\":\\\"G-NHRYDE02S4\\\",\\\"target_country\\\":\\\"US\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":\\\"G-NHRYDE02S4\\\"},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":\\\"G-NHRYDE02S4\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-NHRYDE02S4\\\",\\\"MC-FHFP21T7G2\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-NHRYDE02S4\\\",\\\"MC-FHFP21T7G2\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-NHRYDE02S4\\\",\\\"MC-FHFP21T7G2\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":\\\"G-NHRYDE02S4\\\"},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":\\\"G-NHRYDE02S4\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"9120410995b7c9c6f4f039573265c0ea","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"217874675","configuration":"{\"pixel_id\":\"2076705365916703\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"abff2a8add143ccb04deb20f0ebd74a9","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0510","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0510","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Preserve","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"preserve-eco.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/www.preserve.eco"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://www.preserve.eco/cdn","2d9dfbe8w1156b718pbb247b16m64115e31",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"160958185715","themePublished":"true","eventMetadataId":"8cb3c6f1-38de-4739-887d-261054b97916","pageType":"home","shopId":"23720029","storefrontBaseUrl":"https:\/\/www.preserve.eco","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"d5bdd5d0\", \"656605ce\"]","isMerchantRequest":"false","hashVersion":"2d9dfbe8w1156b718pbb247b16m64115e31","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script><script>
window.ShopifyAnalytics = window.ShopifyAnalytics || {};
window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
window.ShopifyAnalytics.meta.currency = 'USD';
var meta = {"page":{"pageType":"home","requestId":"adb15a0d-2230-4a1e-98bb-56d78e5c64c5-1787354901"}};
for (var attr in meta) {
window.ShopifyAnalytics.meta[attr] = meta[attr];
}
</script>
<script class="analytics">
(function () {
var customDocumentWrite = function(content) {
var jquery = null;
if (window.jQuery) {
jquery = window.jQuery;
} else if (window.Checkout && window.Checkout.$) {
jquery = window.Checkout.$;
}
if (jquery) {
jquery('body').append(content);
}
};
var hasLoggedConversion = function(token) {
if (token) {
return document.cookie.indexOf('loggedConversion=' + token) !== -1;
}
return false;
}
var setCookieIfConversion = function(token) {
if (token) {
var twoMonthsFromNow = new Date(Date.now());
twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
}
}
var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
window.ShopifyAnalytics.lib.trekkie = window.trekkie;
if (trekkie.integrations) {
return;
}
trekkie.methods = [
'identify',
'page',
'ready',
'track',
'trackForm',
'trackLink'
];
trekkie.factory = function(method) {
return function() {
var args = Array.prototype.slice.call(arguments);
args.unshift(method);
trekkie.push(args);
if (window.__TREKKIE_SHIM_QUEUE && (method == 'track' || method == 'page')) {
try {
window.__TREKKIE_SHIM_QUEUE.push({
from: 'trekkie-stub',
method: method,
args: args.slice(1)
});
} catch (e) {
// no-op
}
}
return trekkie;
};
};
for (var i = 0; i < trekkie.methods.length; i++) {
var key = trekkie.methods[i];
trekkie[key] = trekkie.factory(key);
}
trekkie.load = function(config) {
trekkie.config = config || {};
trekkie.config.initialDocumentCookie = document.cookie;
var first = document.getElementsByTagName('script')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.onerror = function(e) {
var scriptFallback = document.createElement('script');
scriptFallback.type = 'text/javascript';
scriptFallback.onerror = function(error) {
var Monorail = {
produce: function produce(monorailDomain, schemaId, payload) {
var currentMs = new Date().getTime();
var event = {
schema_id: schemaId,
payload: payload,
metadata: {
event_created_at_ms: currentMs,
event_sent_at_ms: currentMs
}
};
return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
},
sendRequest: function sendRequest(endpointUrl, payload) {
// Try the sendBeacon API
if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
var blobData = new window.Blob([payload], {
type: 'text/plain'
});
if (window.navigator.sendBeacon(endpointUrl, blobData)) {
return true;
} // sendBeacon was not successful
} // XHR beacon
var xhr = new XMLHttpRequest();
try {
xhr.open('POST', endpointUrl);
xhr.setRequestHeader('Content-Type', 'text/plain');
xhr.send(payload);
} catch (e) {
console.log(e);
}
return false;
},
isIos12: function isIos12() {
return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
}
};
Monorail.produce('monorail-edge.shopifysvc.com',
'trekkie_storefront_load_errors/1.1',
{shop_id: 23720029,
theme_id: 160958185715,
app_name: "storefront",
context_url: window.location.href,
source_url: "//www.preserve.eco/cdn/s/trekkie.storefront.7bcd7bb8195e24c65a61d69d69eb32392ed0d53f.min.js"});
};
scriptFallback.async = true;
scriptFallback.src = '//www.preserve.eco/cdn/s/trekkie.storefront.7bcd7bb8195e24c65a61d69d69eb32392ed0d53f.min.js';
first.parentNode.insertBefore(scriptFallback, first);
};
script.async = true;
script.src = '//www.preserve.eco/cdn/s/trekkie.storefront.7bcd7bb8195e24c65a61d69d69eb32392ed0d53f.min.js';
first.parentNode.insertBefore(script, first);
};
trekkie.load(
{"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":23720029,"isMerchantRequest":null,"themeId":160958185715,"themeCityHash":"17117147362478299594","contentLanguage":"en","currency":"USD","eventMetadataId":"8cb3c6f1-38de-4739-887d-261054b97916"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["f43e7f5e","b5387b81","d5bdd5d0"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}}
);
var loaded = false;
trekkie.ready(function() {
if (loaded) return;
loaded = true;
window.ShopifyAnalytics.lib = window.trekkie;
var originalDocumentWrite = document.write;
document.write = customDocumentWrite;
try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
document.write = originalDocumentWrite;
var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
var token = match? match[1]: undefined;
if (!hasLoggedConversion(token)) {
setCookieIfConversion(token);
}
});
window.ShopifyAnalytics.lib.page(null,{"pageType":"home","requestId":"adb15a0d-2230-4a1e-98bb-56d78e5c64c5-1787354901","shopifyEmitted":true});
var eventsListenerScript = document.createElement('script');
eventsListenerScript.async = true;
eventsListenerScript.src = "//www.preserve.eco/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
})();</script>
<script>
if (!window.ga || (window.ga && typeof window.ga !== 'function')) {
window.ga = function ga() {
(window.ga.q = window.ga.q || []).push(arguments);
if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"});
}
console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information.");
};
if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"});
}
}
</script>
<script
defer
src="https://www.preserve.eco/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.8.4.min.js"
data-application="storefront-renderer"
data-shop-id="23720029"
data-render-region="gcp-europe-west1"
data-page-type="index"
data-theme-instance-id="160958185715"
data-theme-name="Preserve A11y"
data-theme-version="2.7"
data-monorail-region="shop_domain"
data-resource-timing-sampling-rate="10"
data-shs="true"
data-shs-beacon="true"
data-shs-export-with-fetch="true"
data-shs-logs-sample-rate="1"
data-shs-beacon-endpoint="https://www.preserve.eco/api/collect"
></script>
<meta name="shopify-y" content="00000000-0000-0000-5000-000000000000"><meta name="shopify-s" content="00000000-0000-0000-5000-000000000000"><meta name="new-cookie-storage-activated" content="f">
</head>
<body id="shop-toothbrushes-razors-and-houseware-from-100-recycled-plastic" class="template-index" >
<div id="shopify-section-header" class="shopify-section"><header class="header__wrapper" data-section-id="header" data-section-type="header">
<div class="info-bar showMobile">
<div class="wrapper text-center">
<div class="header-account-link">
<a href="/account"><img src="//www.preserve.eco/cdn/shop/t/48/assets/account.svg?v=152161910560963363051776101493" alt="Account Icon"></a>
</div>
<div class="header-message uppercase header-message--crowded">
</div>
<div class="header-search__wrapper">
<div class="header-search">
<form action="/search" method="get" class="input-group search" role="search">
<input class="search-bar" type="search" aria-label="Search Bar" name="q">
<button type="submit" class="btn search-btn" aria-label="Search"></button>
</form>
</div>
</div>
</div>
</div>
<nav class="site-header header--large" aria-label="Main Navigation">
<div class="wrapper">
<div class="nav--desktop">
<div class="mobile-wrapper">
<div class="header-cart__wrapper">
<a href="/cart" class="CartToggle header-cart" aria-label="Cart Toggle" role="button"></a>
<span class="header-cart__bubble cartCount hidden-count"></span>
</div>
<div class="logo-wrapper logo-wrapper--image">
<h1 class="h4 header-logo" itemscope itemtype="http://schema.org/Organization">
<a href="/" itemprop="url">
<img src="//www.preserve.eco/cdn/shop/files/preserve_logo_175x.PNG?v=1615921883"
srcset="//www.preserve.eco/cdn/shop/files/preserve_logo_175x.PNG?v=1615921883 1x, //www.preserve.eco/cdn/shop/files/preserve_logo_175x@2x.PNG?v=1615921883 2x"
alt="Image of the Preserve logo."
class="logo-image"
itemprop="logo">
</a>
</h1>
</div>
<a href="#" class="menuToggle header-hamburger" role="button" aria-label="Menu Toggle"> </a>
</div>
<div class="header-menu nav-wrapper">
<ul class="main-menu accessibleNav">
<li class="parent kids-10">
<a href="/collections" class="nav-link">Shop</a>
<a href="#" class="nav-carat"><span class="plus">+</span><span class="minus">-</span></a>
<div class="main-menu-dropdown">
<ul>
<li class="child kids-0">
<a href="/collections/popi" class="nav-link">Preserve Ocean Plastic Initiative (POPi)</a>
</li>
<li class="child kids-0">
<a href="/collections/oral-care" class="nav-link">Oral Care</a>
</li>
<li class="child kids-0">
<a href="/collections/subscriptions" class="nav-link">Subscriptions</a>
</li>
<li class="child kids-0">
<a href="/collections/razors" class="nav-link">Shave</a>
</li>
<li class="child kids-0">
<a href="/collections/food-storage" class="nav-link">Food Storage</a>
</li>
<li class="child kids-0">
<a href="/collections/tabletop" class="nav-link">Tabletop</a>
</li>
<li class="child kids-0">
<a href="/collections/preserve" class="nav-link">Compostables</a>
</li>
<li class="child kids-0">
<a href="/collections/kitchen" class="nav-link">Kitchen & Tools</a>
</li>
<li class="child kids-0">
<a href="/collections/travel" class="nav-link">Travel</a>
</li>
<li class="child kids-0">
<a href="/collections/dopper" class="nav-link">Dopper® Reusable Water Bottle</a>
</li>
<li class="child kids-0">
<a href="/collections/preserve-hoodie-preserve-pact" class="nav-link">Preserve Hoodie | Preserve + Pact</a>
</li>
<li class="child kids-0">
<a href="/collections/spring-blowout" class="nav-link">Clearance</a>
</li>
</ul>
</div>
</li>
<li class="parent kids-10">
<a href="/pages/overview" class="nav-link">Who We Are</a>
<a href="#" class="nav-carat"><span class="plus">+</span><span class="minus">-</span></a>
<div class="main-menu-dropdown">
<ul>
<li class="child kids-0">
<a href="/pages/popi-about" class="nav-link">Preserve Ocean Plastic Initiative (POPi)</a>
</li>
<li class="child kids-0">
<a href="/pages/overview" class="nav-link">Overview</a>
</li>
<li class="child kids-0">
<a href="/pages/founding-story" class="nav-link">Founding Story</a>
</li>
<li class="child kids-0">
<a href="/pages/purposeful-plastics" class="nav-link">Purposeful Plastics</a>
</li>
<li class="child kids-0">
<a href="/pages/compostables" class="nav-link">Plant-based Compostables</a>
</li>
<li class="child kids-0">
<a href="/pages/bcorp-certification" class="nav-link">B Corp Certification</a>
</li>
<li class="child kids-0">
<a href="/pages/climate" class="nav-link">Climate</a>
</li>
<li class="child kids-0">
<a href="/pages/work" class="nav-link">Working at Preserve</a>
</li>
<li class="child kids-0">
<a href="/pages/our-commitments" class="nav-link">Our Commitments</a>
</li>
<li class="child kids-0">
<a href="/blogs/stories" class="nav-link">Stories</a>
</li>
<li class="child kids-0">
<a href="https://www.preserve.eco/pages/accessibility-statement" class="nav-link">Accessibility Statement</a>
</li>
<li class="child kids-0">
<a href="https://www.preserve.eco/pages/return-policy" class="nav-link">Return Policy</a>
</li>
</ul>
</div>
</li>
<li class="parent kids-3">
<a href="/pages/corporate-sales" class="nav-link">Sales</a>
<a href="#" class="nav-carat"><span class="plus">+</span><span class="minus">-</span></a>
<div class="main-menu-dropdown">
<ul>
<li class="child kids-0">
<a href="https://www.preservefoodservice.com" class="nav-link">Food Service</a>
</li>
<li class="child kids-0">
<a href="https://www.preservewholesale.com" class="nav-link">Wholesale</a>
</li>
<li class="child kids-0">
<a href="https://preservefoodservice.com/pages/dispenser-support" class="nav-link">Cutlery Dispenser</a>
</li>
</ul>
</div>
</li>
<li class="parent kids-2">
<a href="/pages/gimme5-overview" class="nav-link">Gimme 5</a>
<a href="#" class="nav-carat"><span class="plus">+</span><span class="minus">-</span></a>
<div class="main-menu-dropdown">
<ul>
<li class="child kids-0">
<a href="/pages/gimme5-overview" class="nav-link">Program Overview</a>
</li>
<li class="child kids-0">
<a href="/pages/toothbrush-takeback" class="nav-link">Toothbrush takeback</a>
</li>
</ul>
</div>
</li>
<li class="child kids-0">
<a href="/pages/contact-us" class="nav-link">Contact Us</a>
</li>
<li class="child kids-0">
<a href="https://preserve-eco.myshopify.com/a/faq" class="nav-link">FAQs</a>
</li>
<li class="child kids-0">
<a href="/pages/manage-subscriptions" class="nav-link">Manage Subscriptions</a>
</li>
<li class="cart-text-link">
<a href="/cart" class="CartToggle" aria-label="Cart ($0.00)" role="button">
Cart
<span class="cartCost hidden-count ">(<span class="money">$0.00</span>)</span>
</a>
</li>
</ul>
</div>
</div>
<div class="nav--mobile">
<div class="mobile-wrapper">
<div class="header-cart__wrapper">
<a href="/cart" class="CartToggle header-cart" aria-label="Cart Toggle" role="button"></a>
<span class="header-cart__bubble cartCount hidden-count"></span>
</div>
<div class="logo-wrapper logo-wrapper--image">
<h1 class="h4 header-logo" itemscope itemtype="http://schema.org/Organization">
<a href="/" itemprop="url">
<img src="//www.preserve.eco/cdn/shop/files/preserve_logo_175x.PNG?v=1615921883"
srcset="//www.preserve.eco/cdn/shop/files/preserve_logo_175x.PNG?v=1615921883 1x, //www.preserve.eco/cdn/shop/files/preserve_logo_175x@2x.PNG?v=1615921883 2x"
alt="Image of the Preserve logo."
class="logo-image"
itemprop="logo">
</a>
</h1>
</div>
<a href="#" class="menuToggle header-hamburger" role="button" aria-label="Menu Toggle"> </a>
</div>
<div class="header-menu nav-wrapper">
<ul class="main-menu accessibleNav">
<li class="parent kids-10">
<a href="/collections" class="nav-link">Shop</a>
<a href="#" class="nav-carat"><span class="plus">+</span><span class="minus">-</span></a>
<div class="main-menu-dropdown">
<ul>
<li class="child kids-0">
<a href="/collections/popi" class="nav-link">Preserve Ocean Plastic Initiative (POPi)</a>
</li>
<li class="child kids-0">
<a href="/collections/oral-care" class="nav-link">Oral Care</a>
</li>
<li class="child kids-0">
<a href="/collections/subscriptions" class="nav-link">Subscriptions</a>
</li>
<li class="child kids-0">
<a href="/collections/razors" class="nav-link">Shave</a>
</li>
<li class="child kids-0">
<a href="/collections/food-storage" class="nav-link">Food Storage</a>
</li>
<li class="child kids-0">
<a href="/collections/tabletop" class="nav-link">Tabletop</a>
</li>
<li class="child kids-0">
<a href="/collections/preserve" class="nav-link">Compostables</a>
</li>
<li class="child kids-0">
<a href="/collections/kitchen" class="nav-link">Kitchen & Tools</a>
</li>
<li class="child kids-0">
<a href="/collections/travel" class="nav-link">Travel</a>
</li>
<li class="child kids-0">
<a href="/collections/dopper" class="nav-link">Dopper® Reusable Water Bottle</a>
</li>
<li class="child kids-0">
<a href="/collections/preserve-hoodie-preserve-pact" class="nav-link">Preserve Hoodie | Preserve + Pact</a>
</li>
<li class="child kids-0">
<a href="/collections/spring-blowout" class="nav-link">Clearance</a>
</li>
</ul>
</div>
</li>
<li class="parent kids-10">
<a href="/pages/overview" class="nav-link">Who We Are</a>
<a href="#" class="nav-carat"><span class="plus">+</span><span class="minus">-</span></a>
<div class="main-menu-dropdown">
<ul>
<li class="child kids-0">
<a href="/pages/popi-about" class="nav-link">Preserve Ocean Plastic Initiative (POPi)</a>
</li>
<li class="child kids-0">
<a href="/pages/overview" class="nav-link">Overview</a>
</li>
<li class="child kids-0">
<a href="/pages/founding-story" class="nav-link">Founding Story</a>
</li>
<li class="child kids-0">
<a href="/pages/purposeful-plastics" class="nav-link">Purposeful Plastics</a>
</li>
<li class="child kids-0">
<a href="/pages/compostables" class="nav-link">Plant-based Compostables</a>
</li>
<li class="child kids-0">
<a href="/pages/bcorp-certification" class="nav-link">B Corp Certification</a>
</li>
<li class="child kids-0">
<a href="/pages/climate" class="nav-link">Climate</a>
</li>
<li class="child kids-0">
<a href="/pages/work" class="nav-link">Working at Preserve</a>
</li>
<li class="child kids-0">
<a href="/pages/our-commitments" class="nav-link">Our Commitments</a>
</li>
<li class="child kids-0">
<a href="/blogs/stories" class="nav-link">Stories</a>
</li>
<li class="child kids-0">
<a href="https://www.preserve.eco/pages/accessibility-statement" class="nav-link">Accessibility Statement</a>
</li>
<li class="child kids-0">
<a href="https://www.preserve.eco/pages/return-policy" class="nav-link">Return Policy</a>
</li>
</ul>
</div>
</li>
<li class="parent kids-3">
<a href="/pages/corporate-sales" class="nav-link">Sales</a>
<a href="#" class="nav-carat"><span class="plus">+</span><span class="minus">-</span></a>
<div class="main-menu-dropdown">
<ul>
<li class="child kids-0">
<a href="https://www.preservefoodservice.com" class="nav-link">Food Service</a>
</li>
<li class="child kids-0">
<a href="https://www.preservewholesale.com" class="nav-link">Wholesale</a>
</li>
<li class="child kids-0">
<a href="https://preservefoodservice.com/pages/dispenser-support" class="nav-link">Cutlery Dispenser</a>
</li>
</ul>
</div>
</li>
<li class="parent kids-2">
<a href="/pages/gimme5-overview" class="nav-link">Gimme 5</a>
<a href="#" class="nav-carat"><span class="plus">+</span><span class="minus">-</span></a>
<div class="main-menu-dropdown">
<ul>
<li class="child kids-0">
<a href="/pages/gimme5-overview" class="nav-link">Program Overview</a>
</li>
<li class="child kids-0">
<a href="/pages/toothbrush-takeback" class="nav-link">Toothbrush takeback</a>
</li>
</ul>
</div>
</li>
<li class="child kids-0">
<a href="/pages/contact-us" class="nav-link">Contact Us</a>
</li>
<li class="child kids-0">
<a href="https://preserve-eco.myshopify.com/a/faq" class="nav-link">FAQs</a>
</li>
<li class="child kids-0">
<a href="/pages/manage-subscriptions" class="nav-link">Manage Subscriptions</a>
</li>
<li class="cart-text-link">
<a href="/cart" class="CartToggle" aria-label="Cart ($0.00)" role="button">
Cart
<span class="cartCost hidden-count ">(<span class="money">$0.00</span>)</span>
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</header>
</div>
<main class="main-content" role="main">
<div class="index-sections">
<!-- BEGIN content_for_index --><div id="shopify-section-8030c445-4c2a-4c87-9d4c-088d45ed32fd" class="shopify-section"><div class="homepage-image preventOverflow use_image homepage--light" data-section-id="8030c445-4c2a-4c87-9d4c-088d45ed32fd" data-section-type="banner" >
<a href="/collections/farewell-summer-sale">
<div class="content--centered">
<div class="text-center preventOverflowContent">
</div>
</div>
<div class="image-overlay image-overlay-0"></div>
<img src="//www.preserve.eco/cdn/shop/files/Asset_2social_1800x.jpg?v=1787244780" alt="Preserve" class="responsive-wide-image"/>
</a>
</div>
</div><div id="shopify-section-index-columns" class="shopify-section index-section"><div class="homepage-columns homepage--white">
<div class="wrapper">
<h2 class="home__subtitle">SHOP PRESERVE</h2>
<div class="grid grid-uniform">
<div class="grid__item large--one-quarter medium--one-half text-center" >
<p>
<img src="//www.preserve.eco/cdn/shop/files/Asset_41homepage_780x.png?v=1680572660" alt="" />
</p>
<a href="/collections/razors" class="btn btn--clear btn--square uppercase">
SHOP SHAVE
</a>
</div>
<div class="grid__item large--one-quarter medium--one-half text-center" >
<p>
<img src="//www.preserve.eco/cdn/shop/files/Asset_38homepage_780x.png?v=1680572660" alt="" />
</p>
<a href="/collections/oral-care" class="btn btn--clear btn--square uppercase">
Shop Oral Care
</a>
</div>
<div class="grid__item large--one-quarter medium--one-half text-center" >
<p>
<img src="//www.preserve.eco/cdn/shop/files/Asset_40homepage_780x.png?v=1680572660" alt="" />
</p>
<a href="/collections/tabletop" class="btn btn--clear btn--square uppercase">
Shop Tableware
</a>
</div>
<div class="grid__item large--one-quarter medium--one-half text-center" >
<p>
<img src="//www.preserve.eco/cdn/shop/files/Asset_1kitchen_780x.png?v=1680659922" alt="" />
</p>
<a href="/collections/kitchen" class="btn btn--clear btn--square uppercase">
Shop Kitchen
</a>
</div>
</div>
</div>
</div>
</div><div id="shopify-section-index-double-two" class="shopify-section">
<div class="grid--full homepage-double equalOverflowHeight use_screen_one_half grid--rev">
<div class="grid__item large--one-half medium--one-half double__block homepage-image homepage--white preventOverflow" >
<div class="content--centered">
<div class="text-center preventOverflowContent">
</div>
</div>
<div class="image-overlay image-overlay-0"></div>
<div class="background-size-cover" style="background-image: url('//www.preserve.eco/cdn/shop/files/b-corp_1800x.jpg?v=1613662118');"></div>
</div>
<div class="grid__item large--one-half medium--one-half double__block homepage--white preventOverflow" >
<div class="content--centered">
<div class="text-center preventOverflowContent">
<h2 class="home__subtitle">Purchase with a Purpose</h2>
<div class="rte rte--homepage">
<p>We scored in the top 5% out of all 3,500+ B Corporations for creating the most positive overall environmental impact. We are honored to help set the gold standard among the Best of the Best.</p>
</div>
<a class="btn btn--outline btn--square uppercase" href="https://www.preserveproducts.com/explore/b-corp-certification">
Learn more
</a>
</div>
</div>
</div>
</div>
</div><!-- END content_for_index -->
</div>
</main>
<div id="shopify-section-footer" class="shopify-section"><footer class="site-footer-wrapper" role="contentinfo" data-section-id="footer" data-section-type="footer" itemscope itemtype="http://schema.org/Organization">
<div class="wrapper site-footer">
<div class="grid-uniform">
<div class="grid__item large--one-third" >
<span class="uppercase">Main menu </span>
<hr class="hr--underline">
<ul class="footer-quicklinks">
<li><a href="/collections">Shop</a></li>
<li><a href="/pages/overview">Who We Are</a></li>
<li><a href="/pages/corporate-sales">Sales</a></li>
<li><a href="/pages/gimme5-overview">Gimme 5</a></li>
<li><a href="/pages/contact-us">Contact Us</a></li>
<li><a href="https://preserve-eco.myshopify.com/a/faq">FAQs</a></li>
<li><a href="/pages/manage-subscriptions">Manage Subscriptions</a></li>
</ul>
</div>
<div class="grid__item large--one-third" >
<span class="uppercase">CONTACT US</span>
<hr class="hr--underline">
<div class="rte"><p>We appreciate your questions. You may reach our customer service team at</p><p><strong>info@preserve.eco</strong></p><p>or at</p><p><strong>888-354-7296. </strong></p></div>
</div>
<div class="grid__item large--one-third" >
<span class="uppercase">Newsletter</span>
<hr class="hr--underline">
<p>Subscribe to get special offers, free giveaways, and once-in-a-lifetime deals.</p>
<!-- /snippets/newsletter-form.liquid -->
<form method="post" action="/contact#contact_form" id="contact_form" accept-charset="UTF-8" class="contact-form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="✓" />
<input type="hidden" name="contact[accepts_marketing]" value="true">
<div class="input-group newsletter-form">
<input type="email" placeholder="your-email@example.com" id="mail" class="input-group-field" aria-label="your-email@example.com" autocorrect="off" autocapitalize="off" name="contact[email]" />
<span class="input-group-btn">
<input type="submit" class="btn uppercase" name="subscribe" id="subscribe" value="Subscribe">
</span>
</div>
</form>
</div>
</div>
<div class="grid footer-secondary-wrapper">
<ul class="footer-secondary grid__item inline-list">
<li><a href="https://www.preserve.eco" itemprop="url">© Preserve 2026</a></li>
<li><a href="/search">Search</a></li>
<li><a href="/pages/terms-of-use">Terms of use</a></li>
<li><a href="https://www.preserve.eco/pages/accessibility-statement">Accessibility Statement</a></li>
<li><a href="/pages/privacy-policy">Privacy Policy</a></li>
<li><a href="https://www.preserve.eco/pages/return-policy">Return Policy</a></li>
</ul>
<ul class="footer-payment payment-icons grid__item inline-list">
<li>
<span class="icon-fallback-text">
<span class="icon icon-american_express" aria-hidden="true"></span>
<span class="fallback-text">american express</span>
</span>
</li>
<li>
<span class="icon-fallback-text">
<span class="icon icon-apple_pay" aria-hidden="true"></span>
<span class="fallback-text">apple pay</span>
</span>
</li>
<li>
<span class="icon-fallback-text">
<span class="icon icon-diners_club" aria-hidden="true"></span>
<span class="fallback-text">diners club</span>
</span>
</li>
<li>
<span class="icon-fallback-text">
<span class="icon icon-discover" aria-hidden="true"></span>
<span class="fallback-text">discover</span>
</span>
</li>
<li>
<span class="icon-fallback-text">
<span class="icon icon-jcb" aria-hidden="true"></span>
<span class="fallback-text">jcb</span>
</span>
</li>
<li>
<span class="icon-fallback-text">
<span class="icon icon-master" aria-hidden="true"></span>
<span class="fallback-text">master</span>
</span>
</li>
<li>
<span class="icon-fallback-text">
<span class="icon icon-paypal" aria-hidden="true"></span>
<span class="fallback-text">paypal</span>
</span>
</li>
<li>
<span class="icon-fallback-text">
<span class="icon icon-shopify_pay" aria-hidden="true"></span>
<span class="fallback-text">shopify pay</span>
</span>
</li>
<li>
<span class="icon-fallback-text">
<span class="icon icon-visa" aria-hidden="true"></span>
<span class="fallback-text">visa</span>
</span>
</li>
</ul>
<ul class="footer-social social-icons grid__item inline-list">
<li>
<a class="icon-fallback-text" href="https://twitter.com/Preserve" title="Preserve on Twitter" target="_blank" itemprop="sameAs">
<span class="icon icon-twitter" aria-hidden="true"></span>
<span class="fallback-text">Twitter</span>
</a>
</li>
<li>
<a class="icon-fallback-text" href="https://www.facebook.com/preserveproducts" title="Preserve on Facebook" target="_blank" itemprop="sameAs">
<span class="icon icon-facebook" aria-hidden="true"></span>
<span class="fallback-text">Facebook</span>
</a>
</li>
<li>
<a class="icon-fallback-text" href="https://www.instagram.com/preserveproducts/" title="Preserve on Instagram" target="_blank" itemprop="sameAs">
<span class="icon icon-instagram" aria-hidden="true"></span>
<span class="fallback-text">Instagram</span>
</a>
</li>
<li>
<a class="icon-fallback-text" href="https://www.pinterest.com/preserve/" title="Preserve on Pinterest" target="_blank" itemprop="sameAs">
<span class="icon icon-pinterest" aria-hidden="true"></span>
<span class="fallback-text">Pinterest</span>
</a>
</li>
<li>
<a class="icon-fallback-text" href="https://www.youtube.com/preserve" title="Preserve on Youtube" target="_blank" itemprop="sameAs">
<span class="icon icon-youtube" aria-hidden="true"></span>
<span class="fallback-text">Youtube</span>
</a>
</li>
</ul>
</div>
</div>
</footer>
</div>
<script id="JsQty" type="text/template">
<div class="js-qty">
<button type="button" class="js-qty__adjust js-qty__adjust--minus" data-id="{{id}}" data-qty="{{itemMinus}}">−</button>
<input type="text" class="js-qty__num QuantityInput" value="{{itemQty}}" min="1" data-id="{{id}}" aria-label="quantity" pattern="[0-9]*" name="{{inputName}}" id="{{inputId}}" data-submit="{{submit}}">
<button type="button" class="js-qty__adjust js-qty__adjust--plus" data-id="{{id}}" data-qty="{{itemAdd}}">+</button>
</div>
</script>
<script id="JsQty--cart" type="text/template">
<div class="js-qty">
<button type="button" class="js-qty__adjust js-qty__adjust--minus" data-id="{{id}}" data-qty="{{itemMinus}}">−</button>
<input type="text" value="{{itemQty}}" class="js-qty__num QuantityInput" min="1" data-id="{{id}}" aria-label="quantity" pattern="[0-9]*" name="updates[]" id="updates_{{id}}" data-submit="{{submit}}">
<button type="button" class="js-qty__adjust js-qty__adjust--plus" data-id="{{id}}" data-qty="{{itemAdd}}">+</button>
</div>
</script>
<!-- Shop.js ============================================================== -->
<script src="//www.preserve.eco/cdn/shop/t/48/assets/shop.js?v=143007625215171982001785779135" type="text/javascript"></script>
<!-- Ajaxify Cart Plugin ================================================== -->
<link href="//www.preserve.eco/cdn/shop/t/48/assets/ajaxify.scss.css?v=53758821911199603391776101494" rel="stylesheet" type="text/css" media="all" />
<!-- /snippets/ajax-cart-template.liquid -->
<script id="CartTemplate" type="text/template">
<form action="/cart" method="post" novalidate>
<div class="ajaxcart__inner">
{{#items}}
<div class="ajaxcart__product">
<div class="ajaxcart__row" data-line="{{@index}}" data-id="{{id}}">
<div class="grid">
<div class="grid__item large--two-thirds">
<div class="grid">
<div class="grid__item one-quarter">
<a href="{{url}}" class="ajaxcart__product-image"><img src="{{img}}" alt=""></a>
</div>
<div class="grid__item three-quarters">
<a href="{{url}}" class="h4">{{name}}</a>
{{#if variantion }}
<p>{{variation}}</p>
{{/if}}
{{{sellingPlan}}}
</div>
</div>
</div>
<div class="grid__item large--one-third">
<div class="grid">
<div class="grid__item one-third">
<div class="ajaxcart__qty">
<button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{id}}" data-qty="{{itemMinus}}">−</button>
<input type="text" class="ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{id}}" aria-label="quantity" pattern="[0-9]*">
<button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{id}}" data-qty="{{itemAdd}}">+</button>
</div>
</div>
<div class="grid__item one-third text-center">
<p>{{price}}</p>
</div>
<div class="grid__item one-third text-right">
<p>
<small><a href="/cart/change?id={{id}}&quantity=0" class="ajaxcart__remove" data-id="{{id}}">Remove</a></small>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
{{/items}}
</div>
<div class="ajaxcart__row text-right medium-down--text-center">
<span class="h3">Subtotal {{totalPrice}}</span>
<input type="submit" class="{{btnClass}}" name="checkout" value="Check Out">
</div>
</form>
</script>
<script id="DrawerTemplate" type="text/template">
<div id="AjaxifyDrawer" class="ajaxcart ajaxcart--drawer">
<div id="AjaxifyCart" class="ajaxcart__content {{wrapperClass}}" role="dialog" aria-label="Your Cart"></div>
</div>
</script>
<script id="ModalTemplate" type="text/template">
<div id="AjaxifyModal" class="ajaxcart ajaxcart--modal">
<div id="AjaxifyCart" class="ajaxcart__content" role="dialog" aria-modal="true" aria-label="Your Cart"></div>
</div>
</script>
<script id="AjaxifyQty" type="text/template">
<div class="ajaxcart__qty">
<button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{id}}" data-qty="{{itemMinus}}">−</button>
<input type="text" class="ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{id}}" aria-label="quantity" pattern="[0-9]*">
<button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{id}}" data-qty="{{itemAdd}}">+</button>
</div>
</script>
<script src="//www.preserve.eco/cdn/shop/t/48/assets/ajaxify.js?v=173191763857820876091776101493" type="text/javascript"></script>
<script>
jQuery(document).ready(function(){
ajaxifyShopify.init({
method: 'modal',
wrapperClass: 'wrapper',
formSelector: '.product-form',
addToCartSelector: '.addToCart',
cartCountSelector: '.cartCount',
cartCostSelector: '.cartCost',
toggleCartButton: '.CartToggle',
useCartTemplate: true,
btnClass: 'btn',
moneyFormat: "${{amount}}",
disableAjaxCart: false,
enableQtySelectors: true,
prependDrawerTo: 'body',
onToggleCallback: function(){
jQuery('body').trigger('ajaxCart.afterCartLoad')
}
});
});
</script>
<script>
</script>
<!-- @media only screen and (max-width: 980px) {
#shopify-section-slideshow .hero {
height:auto;
}
} -->
<!-- Paste mailchimp popup code between comments ===================================== -->
<!-- End mailchimp ================================================== -->
<!-- **BEGIN** Hextom QAB Integration // Main Include - DO NOT MODIFY -->
<!-- **BEGIN** Hextom QAB Integration // Main - DO NOT MODIFY -->
<script type="application/javascript">
window.hextom_qab_meta = {
p1: [
],
p2: {
}
};
</script>
<!-- **END** Hextom QAB Integration // Main - DO NOT MODIFY -->
<!-- **END** Hextom QAB Integration // Main Include - DO NOT MODIFY -->
<script async src="https://loox.io/widget/4JZEXBcfNh/loox.1651582506049.js?shop=preserve-eco.myshopify.com"></script>
<style> .faqPlusAppFaq {background-color: #257bb9;} .price.on-sale .money {color: #000;} .product__price.on-sale .money {color: #0075c9;} .on-sale span.compare-at .money {color: #0075c9;} .esc-google-privacy,.esc-google-privacy a {color: #767676;} button.btn.search-btn {min-width: 24px; min-height: 24px;} </style>
<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
</body>
</html>
Sitemap
Кол-во: 0
XML-карта сайта для поисковиков
?
Sitemap.xml помогает поисковику быстрее находить и индексировать страницы. Особенно важен для крупных сайтов и новых страниц, на которые ещё нет входящих ссылок.
Robots.txt не содержит ссылку на карту сайта. Рекомендуется добавить карту сайта и указать ссылку на нее в robots.txt.
Внутренние ссылки
Кол-во: 77
Ссылки на другие страницы своего сайта
?
Внутренние ссылки распределяют ссылочный вес между страницами и помогают поисковику обходить сайт. Пустые анкоры и ссылки на запрещённые robots.txt страницы — типичные ошибки.
На странице присутствуют внутренние ссылки с пустым анкором: 2!
Внутренних ссылок на странице 77 оптимально.
Внутренние ссылки не запрещены к индексации в robots.txt.
На странице присутствуют изображения 4.
Показать внутренние ссылки
| Url | Анкор | Состояние | Анализировать |
|---|---|---|---|
| /cart |
Пустой анкор
|
|
Анализировать url |
| /collections |
Shop
|
|
Анализировать url |
| /collections/popi |
Preserve Ocean Plastic Initiative (POPi)
|
|
Анализировать url |
| /collections/oral-care |
Oral Care
|
|
Анализировать url |
| /collections/subscriptions |
Subscriptions
|
|
Анализировать url |
| /collections/razors |
Shave
|
|
Анализировать url |
| /collections/food-storage |
Food Storage
|
|
Анализировать url |
| /collections/tabletop |
Tabletop
|
|
Анализировать url |
| /collections/preserve |
Compostables
|
|
Анализировать url |
| /collections/kitchen |
Kitchen & Tools
|
|
Анализировать url |
| /collections/travel |
Travel
|
|
Анализировать url |
| /collections/dopper |
Dopper® Reusable Water Bottle
|
|
Анализировать url |
| /collections/preserve-hoodie-preserve-pact |
Preserve Hoodie | Preserve + Pact
|
|
Анализировать url |
| /collections/spring-blowout |
Clearance
|
|
Анализировать url |
| /pages/overview |
Who We Are
|
|
Анализировать url |
| /pages/popi-about |
Preserve Ocean Plastic Initiative (POPi)
|
|
Анализировать url |
| /pages/overview |
Overview
|
|
Анализировать url |
| /pages/founding-story |
Founding Story
|
|
Анализировать url |
| /pages/purposeful-plastics |
Purposeful Plastics
|
|
Анализировать url |
| /pages/compostables |
Plant-based Compostables
|
|
Анализировать url |
| /pages/bcorp-certification |
B Corp Certification
|
|
Анализировать url |
| /pages/climate |
Climate
|
|
Анализировать url |
| /pages/work |
Working at Preserve
|
|
Анализировать url |
| /pages/our-commitments |
Our Commitments
|
|
Анализировать url |
| /blogs/stories |
Stories
|
|
Анализировать url |
| /pages/corporate-sales |
Sales
|
|
Анализировать url |
| /pages/gimme5-overview |
Gimme 5
|
|
Анализировать url |
| /pages/gimme5-overview |
Program Overview
|
|
Анализировать url |
| /pages/toothbrush-takeback |
Toothbrush takeback
|
|
Анализировать url |
| /pages/contact-us |
Contact Us
|
|
Анализировать url |
| /pages/manage-subscriptions |
Manage Subscriptions
|
|
Анализировать url |
| /cart |
Cart
<span class="cartCost hidden-count ">(<span class="money">$0.00</span>)</span>
|
|
Анализировать url |
| /cart |
Пустой анкор
|
|
Анализировать url |
| /collections |
Shop
|
|
Анализировать url |
| /collections/popi |
Preserve Ocean Plastic Initiative (POPi)
|
|
Анализировать url |
| /collections/oral-care |
Oral Care
|
|
Анализировать url |
| /collections/subscriptions |
Subscriptions
|
|
Анализировать url |
| /collections/razors |
Shave
|
|
Анализировать url |
| /collections/food-storage |
Food Storage
|
|
Анализировать url |
| /collections/tabletop |
Tabletop
|
|
Анализировать url |
| /collections/preserve |
Compostables
|
|
Анализировать url |
| /collections/kitchen |
Kitchen & Tools
|
|
Анализировать url |
| /collections/travel |
Travel
|
|
Анализировать url |
| /collections/dopper |
Dopper® Reusable Water Bottle
|
|
Анализировать url |
| /collections/preserve-hoodie-preserve-pact |
Preserve Hoodie | Preserve + Pact
|
|
Анализировать url |
| /collections/spring-blowout |
Clearance
|
|
Анализировать url |
| /pages/overview |
Who We Are
|
|
Анализировать url |
| /pages/popi-about |
Preserve Ocean Plastic Initiative (POPi)
|
|
Анализировать url |
| /pages/overview |
Overview
|
|
Анализировать url |
| /pages/founding-story |
Founding Story
|
|
Анализировать url |
| /pages/purposeful-plastics |
Purposeful Plastics
|
|
Анализировать url |
| /pages/compostables |
Plant-based Compostables
|
|
Анализировать url |
| /pages/bcorp-certification |
B Corp Certification
|
|
Анализировать url |
| /pages/climate |
Climate
|
|
Анализировать url |
| /pages/work |
Working at Preserve
|
|
Анализировать url |
| /pages/our-commitments |
Our Commitments
|
|
Анализировать url |
| /blogs/stories |
Stories
|
|
Анализировать url |
| /pages/corporate-sales |
Sales
|
|
Анализировать url |
| /pages/gimme5-overview |
Gimme 5
|
|
Анализировать url |
| /pages/gimme5-overview |
Program Overview
|
|
Анализировать url |
| /pages/toothbrush-takeback |
Toothbrush takeback
|
|
Анализировать url |
| /pages/contact-us |
Contact Us
|
|
Анализировать url |
| /pages/manage-subscriptions |
Manage Subscriptions
|
|
Анализировать url |
| /cart |
Cart
<span class="cartCost hidden-count ">(<span class="money">$0.00</span>)</span>
|
|
Анализировать url |
| /collections/razors |
SHOP SHAVE
|
|
Анализировать url |
| /collections/oral-care |
Shop Oral Care
|
|
Анализировать url |
| /collections/tabletop |
Shop Tableware
|
|
Анализировать url |
| /collections/kitchen |
Shop Kitchen
|
|
Анализировать url |
| /collections |
Shop
|
|
Анализировать url |
| /pages/overview |
Who We Are
|
|
Анализировать url |
| /pages/corporate-sales |
Sales
|
|
Анализировать url |
| /pages/gimme5-overview |
Gimme 5
|
|
Анализировать url |
| /pages/contact-us |
Contact Us
|
|
Анализировать url |
| /pages/manage-subscriptions |
Manage Subscriptions
|
|
Анализировать url |
| /search |
Search
|
|
Анализировать url |
| /pages/terms-of-use |
Terms of use
|
|
Анализировать url |
| /pages/privacy-policy |
Privacy Policy
|
|
Анализировать url |
Внешние ссылки
Кол-во: 22
Ссылки на сторонние сайты
?
Исходящие внешние ссылки передают часть ссылочного веса на чужие сайты. Ссылки на авторитетные ресурсы безопасны; ссылки на мусорные сайты могут навредить репутации страницы.
Внешних ссылок на странице 22 слишком много. Спрячьте лишние ссылки в тег noindex или атрибут rel='nofollow'!
Показать внешние ссылки
| Url | Анкор | Анализировать |
|---|---|---|
| preserve.eco |
Accessibility Statement
|
Анализировать url |
| preserve.eco |
Return Policy
|
Анализировать url |
| preservefoodservice.com |
Food Service
|
Анализировать url |
| preservewholesale.com |
Wholesale
|
Анализировать url |
| preservefoodservice.com |
Cutlery Dispenser
|
Анализировать url |
| preserve-eco.myshopify.com |
FAQs
|
Анализировать url |
| preserve.eco |
Accessibility Statement
|
Анализировать url |
| preserve.eco |
Return Policy
|
Анализировать url |
| preservefoodservice.com |
Food Service
|
Анализировать url |
| preservewholesale.com |
Wholesale
|
Анализировать url |
| preservefoodservice.com |
Cutlery Dispenser
|
Анализировать url |
| preserve-eco.myshopify.com |
FAQs
|
Анализировать url |
| preserveproducts.com |
Learn more
|
Анализировать url |
| preserve-eco.myshopify.com |
FAQs
|
Анализировать url |
| preserve.eco |
© Preserve 2026
|
Анализировать url |
| preserve.eco |
Accessibility Statement
|
Анализировать url |
| preserve.eco |
Return Policy
|
Анализировать url |
| twitter.com |
<span class="icon icon-twitter" aria-hidden="true"></span>
<span class="fallback-text">Twitter</span>
|
|
| facebook.com |
<span class="icon icon-facebook" aria-hidden="true"></span>
<span class="fallback-text">Facebook</span>
|
|
| instagram.com |
<span class="icon icon-instagram" aria-hidden="true"></span>
<span class="fallback-text">Instagram</span>
|
|
| pinterest.com |
<span class="icon icon-pinterest" aria-hidden="true"></span>
<span class="fallback-text">Pinterest</span>
|
Анализировать url |
| youtube.com |
<span class="icon icon-youtube" aria-hidden="true"></span>
<span class="fallback-text">Youtube</span>
|
Анализировать url |
Конкуренты Готовность: 0%
Конкуренты в Яндексе
Кол-во: 0
Топ сайтов-конкурентов в Яндексе
?
Сайты, чаще всего появляющиеся в ТОПе Яндекса по запросам из семантического ядра этой страницы.
Мы не нашли у вас конкурентов в Яндексе. Сайт или очень молодой или плохо продвигается.
Конкурентов в ТОП-10 Яндекса не нашлось.
Конкуренты в Google
Кол-во: 0
Топ сайтов-конкурентов в Google
?
Сайты, чаще всего появляющиеся в ТОПе Google по запросам из семантического ядра этой страницы.
Конкуренты в Google тоже не найдены. Займитесь продвижением сайта!
Конкурентов в ТОП-10 Google не нашлось.
ЗоЗПП: права потребителей Готовность: 100%
Нарушения
Не выявлены
Признаков дистанционной продажи товаров (интернет-магазина) не обнаружено — требования ЗоЗПП о раскрытии информации продавца к сайту не применяются. Нарушений нет.
ФЗ-149: рекомендательные технологии Готовность: 100%
Нарушения
Не выявлены
Рекомендательные блоки («с этим покупают», «похожие товары» и т.п.) на сайте не обнаружены — требования ст. 10.7 ФЗ-149 к сайту не применяются. Нарушений нет.
ФЗ-38: реклама Готовность: 100%
Нарушения
Не выявлены
Рекламных тематик с обязательными оговорками (медицина, БАД, кредиты и займы, новостройки) на сайте не обнаружено. Нарушений нет.
ФЗ-436: защита детей Готовность: 100%
Нарушения
Не выявлены
Признаков информационной продукции (новости, видео, книги, игры, курсы) не обнаружено — обязательная возрастная маркировка по ФЗ-436 сайту не требуется. Нарушений нет.
Вердикт
Сайт recycline.com не совсем готов к продвижению (процент готовности лишь 51%). Для попадания в ТОПы поисковых систем нужно:
Исправьте ошибки в мета-тегах.
Исправьте ошибки индексации.
Поделитесь с друзьями: