# Get Automatic Recommendations Source: https://docs.glood.ai/api-reference/endpoint/automatic-recommendations POST /api/storefront/v3/headless/recommendations/automatic Get automatic recommendations powered using LLMs # Get Headless Recommendations using Query Source: https://docs.glood.ai/api-reference/endpoint/headless-recommendations POST /api/storefront/v3/headless/recommendations Get AI recommendations including Manual, Rules, LLM & AI using Query # Introduction Source: https://docs.glood.ai/api-reference/introduction API Reference for Glood.AI Recommendations ## Welcome Welcome to the Glood.AI API documentation. Our API allows you to integrate personalized product recommendations and bundles directly into your Shopify store. Get started with our Recommendations API ## Authentication All API endpoints require authentication using your Shopify store URL passed in the `x-shop` header: # Personalized Recommendations Source: https://docs.glood.ai/features/ai-personalized-recommendations Drive more sales with intelligent product recommendations tailored to each shopper Transform your Shopify store into a personalized shopping experience with Glood.AI's intelligent recommendation engine. Our AI technology analyzes customer behavior in real-time to deliver highly relevant product suggestions that boost engagement and sales. ## Key Benefits ### Increased Conversion Rates * Convert up to 3x more browsers into buyers with personalized recommendations * Show the right products to the right customers at the right time * Reduce bounce rates by keeping shoppers engaged with relevant suggestions ### Higher Average Order Value * Boost AOV by 20-30% through intelligent cross-selling * Surface complementary products that make sense for each customer * Encourage larger cart sizes with "Complete the Look" recommendations ### Enhanced Customer Experience * Create a personalized shopping journey for every visitor * Help customers discover products they'll love * Build loyalty through relevant product discovery ## Powerful Features ### Smart Product Discovery * Real-time behavioral analysis * Purchase history-based recommendations * Similar product suggestions * "Frequently Bought Together" bundles * Category affinity detection ### Flexible Placement Options * Homepage personalized sections * Product detail page recommendations * Cart page suggestions * Collection page recommendations * Custom placement anywhere in your store ### Advanced Customization * Fully customizable widget design * Mobile-optimized layouts * A/B testing capabilities * Product filtering rules * Custom recommendation algorithms ## Easy Setup & Management Getting started with Glood.AI recommendations takes minutes: 1. Install the Glood.AI app from the Shopify App Store 2. Enable the app embed in your theme settings 3. Create your first recommendation section using our visual editor 4. Watch your conversion rates improve No coding required - our visual editor makes it easy to add and customize recommendation sections throughout your store. ## Proven ROI Glood.AI customers typically see: * 15-30% increase in revenue * 2-3x higher conversion rates * 20-30% larger average order values * ROI of 10-20x on app investment Our AI engine continuously learns and optimizes recommendations based on your store's unique data, delivering better results over time. ## Start Personalizing Today Join thousands of successful Shopify merchants using Glood.AI to deliver personalized shopping experiences. Our free plan lets you try all features risk-free. Ready to boost your sales with AI-powered recommendations? [Install Glood.AI](https://apps.shopify.com/recommendation-kit) today and see the difference personalization can make for your store. # AI Search & Merchandising Source: https://docs.glood.ai/features/ai-search-merchandising Optimize your store search and product placement with AI-powered merchandising Transform your store's search experience with Glood.AI's intelligent search and merchandising capabilities. Our AI technology helps shoppers find exactly what they're looking for while strategically promoting your most profitable products. ## Key Benefits ### Improved Search Relevance * Deliver more accurate search results using AI-powered semantic understanding * Handle misspellings and variations automatically * Support natural language queries for better results * Boost conversion rates with relevant product suggestions ### Smart Merchandising * Automatically promote high-margin products * Surface trending and popular items * Customize product rankings based on your business goals * Balance inventory levels through strategic placement ### Enhanced Shopping Experience * Reduce search abandonment with instant results * Help customers discover relevant products faster * Provide personalized search suggestions * Support faceted navigation and filtering ## Powerful Features ### Intelligent Search * Natural language processing * Typo tolerance * Synonym matching * Search analytics and insights * Multi-language support ### Advanced Merchandising Rules * Custom ranking strategies * Automated product boosting * Category-specific rules * Seasonal promotions * Inventory-aware placement ### Visual Search * Image-based product search * Similar product recommendations * Style matching * Visual filters ## Easy Setup Getting started with Glood.AI search takes minutes: 1. Install the Glood.AI app from the Shopify App Store 2. Enable search functionality in your settings 3. Configure your merchandising rules 4. Watch your search conversion rates improve No coding required - our visual interface makes it easy to optimize your store's search and merchandising. For advanced customization options and API access, check out our [Developer Guide](/for-developers/introduction). # AI Upsell Bundles Source: https://docs.glood.ai/features/ai-upsell-bundles Boost sales with intelligent product bundles and upsell recommendations Transform your Shopify store's upselling strategy with Glood.AI's intelligent bundle recommendations. Our AI technology analyzes purchase patterns and product relationships to create compelling bundle offers that increase average order value and conversion rates. ## Key Benefits ### Increased Average Order Value * Boost AOV by 25-35% through strategic bundle offers * Create compelling multi-product discounts * Encourage larger purchases with personalized bundle suggestions * Optimize pricing strategies for maximum revenue ### Higher Conversion Rates * Convert more browsers into buyers with targeted bundle offers * Show the most relevant product combinations * Reduce decision fatigue with curated bundles * Build trust through intelligent recommendations ### Automated Bundle Creation * Let AI identify the best product combinations * Save time with automated bundle suggestions * Update bundles based on real-time data * Maintain optimal inventory balance ## Powerful Features ### Smart Bundle Generation * AI-powered product matching * Purchase pattern analysis * Complementary product detection * Price optimization algorithms * Inventory-aware recommendations ### Flexible Display Options * Product page bundle offers * Cart page upsells * Collection page bundles * Custom placement anywhere * Mobile-optimized layouts ### Advanced Customization * Fully customizable bundle displays * Dynamic pricing rules * Bundle exclusion controls * A/B testing capabilities * Seasonal promotion support ## Easy Setup & Management Getting started with Glood.AI bundles is simple: 1. Install the Glood.AI app from the Shopify App Store 2. Enable bundle recommendations in your settings 3. Configure your bundle rules and displays 4. Watch your average order value grow No coding required - our visual interface makes it easy to create and manage product bundles throughout your store. For advanced customization options and API access, check out our [Developer Guide](/for-developers/introduction). # Images and Embeds Source: https://docs.glood.ai/features/checkout-upsell Add image, video, and other HTML elements ## Image ### Using Markdown The [markdown syntax](https://www.markdownguide.org/basic-syntax/#images) lets you add images using the following code ```md ![title](/path/image.jpg) ``` Note that the image file size must be less than 5MB. Otherwise, we recommend hosting on a service like [Cloudinary](https://cloudinary.com/) or [S3](https://aws.amazon.com/s3/). You can then use that URL and embed. ### Using Embeds To get more customizability with images, you can also use [embeds](/writing-content/embed) to add images ```html ``` ## Embeds and HTML elements ``` # Navigation Source: https://docs.glood.ai/features/discounts The navigation field in mint.json defines the pages that go in the navigation menu The navigation menu is the list of links on every website. You will likely update `mint.json` every time you add a new page. Pages do not show up automatically. ## Navigation syntax Our navigation syntax is recursive which means you can make nested navigation groups. You don't need to include `.mdx` in page names. ```json Regular Navigation "navigation": [ { "group": "Getting Started", "pages": ["quickstart"] } ] ``` ```json Nested Navigation "navigation": [ { "group": "Getting Started", "pages": [ "quickstart", { "group": "Nested Reference Pages", "pages": ["nested-reference-page"] } ] } ] ``` ## Folders Simply put your MDX files in folders and update the paths in `mint.json`. For example, to have a page at `https://yoursite.com/your-folder/your-page` you would make a folder called `your-folder` containing an MDX file called `your-page.mdx`. You cannot use `api` for the name of a folder unless you nest it inside another folder. Mintlify uses Next.js which reserves the top-level `api` folder for internal server calls. A folder name such as `api-reference` would be accepted. ```json Navigation With Folder "navigation": [ { "group": "Group Name", "pages": ["your-folder/your-page"] } ] ``` ## Hidden Pages MDX files not included in `mint.json` will not show up in the sidebar but are accessible through the search bar and by linking directly to them. # Default Template CSS Source: https://docs.glood.ai/for-developers/default-code/css-liquid Default Template CSS code reference The main Template CSS file for styling recommendation sections. ```liquid {% comment %} for grid layout {% endcomment %} {% assign section_id = section.id %} {% assign settings = template.settings %} {% assign layout_settings = settings[section.layout] %} {% assign product_card_settings = settings.product_card %} [data-gai-section-id="{{ section_id }}"] ._gai-grid { grid-template-columns: repeat({{- settings.breakpoints.small.cards_per_view -}},1fr); gap: {{ settings.breakpoints.small.gutter | default: 10 }}px; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-prc { color: {{ product_card_settings.price_color }}; font-size: {{ settings.breakpoints.small.price_font_size }}px; } [data-gai-section-id="{{ section_id }}"] ._gai-sec-tit { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; -webkit-line-clamp: {{ settings.breakpoints.small.max_section_title_rows }}; font-size: {{ settings.breakpoints.small.widget_title_font_size }}px; text-align: {{ settings.breakpoints.small.widget_title_alignment }}; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-vndr { font-size: {{ settings.breakpoints.small.product_vendor_font_size }}px; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-tit { color: {{ product_card_settings.title_color }}; display: -webkit-box; -webkit-box-orient: vertical; font-weight: bold; overflow: hidden; font-family: {{ product_card_settings.product_title_font_family }}; -webkit-line-clamp: {{ settings.breakpoints.small.max_product_title_rows }}; text-align: {{ settings.breakpoints.small.product_title_alignment }}; font-size: {{ settings.breakpoints.small.product_title_font_size }}px; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-prc--compare-at { color: {{ product_card_settings.price_color_compare }}; {% if settings.breakpoints.small.compare_price_visible or section.layout == "amazon_bought_together" %} display: block; {% else %} display: none; {% endif %} } [data-gai-section-id="{{ section_id }}"] ._gai-dis-txt { color: {{ product_card_settings.discount_color }}; font-size: {{ settings.breakpoints.small.section_subtitle_font_size }}px; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-vndr--above-title { {% if product_card_settings.vendor_position == 'above' %} display: block; {% else %} display: none; {% endif %} } [data-gai-section-id="{{ section_id }}"] ._gai-prod-vndr--below-title { {% if product_card_settings.vendor_position == 'below' %} display: block; {% else %} display: none; {% endif %} } {% assign aspect_ratio_parts = product_card_settings.image_aspect_ratio | split: ':' %} [data-gai-section-id="{{ section_id }}"] ._gai-prod-img { aspect-ratio: {{ aspect_ratio_parts[0] }}/{{ aspect_ratio_parts[1] }}; object-fit: {{ product_card_settings.image_object_fit }}; } [data-gai-section-id="{{ section_id }}"] _gai-prod-img-wrap { aspect-ratio: {{ aspect_ratio_parts[0] }}/{{ aspect_ratio_parts[1] }}; } [data-gai-section-id="{{ section_id }}"] ._gai-dis-cnt { {% if section.layout == 'amazon_bought_together' %} justify-content: start; {% else %} justify-content: {{ settings.breakpoints.small.justify_widget_subtitle }}; {% endif %} background-color: {{ product_card_settings.discount_background }}; {% if product_card_settings.discount_visible == true %} display: flex; {% else %} display: none; {% endif %} } [data-gai-section-id="{{ section_id }}"] ._gai-atc-btn { background-color: {{ product_card_settings.add_to_cart_background | default: '#797068' }}; color: {{ product_card_settings.add_to_cart_color | default: '#ffffff' }}; border: none; border-radius:{{ product_card_settings.add_to_cart_border_radius | default: 0 }}px; } [data-gai-section-id="{{ section_id }}"] ._gai-atc-btn:disabled { background-color: {{ product_card_settings.disabled_add_to_cart_background | default: '#ada7a1' }}; } [data-gai-section-id="{{ section_id }}"]{ font-family: {{ settings.font_family }}; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-card { background-color: {{ product_card_settings.background_color | default: 'transparent' }}; {% if product_card_settings.font_family != blank %} font-family: {{ product_card_settings.font_family }}; {% endif %} } ._gai-container[data-gai-section-id="{{ section_id }}"] { {% if settings.section.background_color %} background-color: {{ settings.section.background_color }}; {% endif %} } [data-gai-section-id="{{ section_id }}"] { ._gai-oos { background-color: {{ template.settings.out_of_stock.background_color | default: '#000' }}; color: {{ template.settings.out_of_stock.text_color | default: '#fff' }}; } ._gai-bestseller { background-color: {{ template.settings.labels.bestseller.background_color | default: '#222222' }}; color: {{ template.settings.labels.bestseller.text_color | default: '#fff' }}; } ._gai-new { background-color: {{ template.settings.labels.new.background_color | default: '#333' }}; color: {{ template.settings.labels.new.text_color | default: '#fff' }}; } ._gai-trending{ background-color: {{ template.settings.labels.trending.background_color | default: '#444' }}; color: {{ template.settings.labels.trending.text_color | default: '#fff' }}; } ._gai-bndl-sec { justify-content: {{ template.settings.amazon_bought_together.justify | default: 'start' }}; } } [data-gai-section-id="{{ section_id }}"] ._gai-dis{ background-color: {{ product_card_settings.discount_label_background }}; opacity: 0.85; color: {{ product_card_settings.discount_label_color }}; } @media (min-width: {{ settings.breakpoints.medium.screen_size | default: 768 }}px) { [data-gai-section-id="{{ section_id }}"] ._gai-grid { grid-template-columns: repeat({{- settings.breakpoints.medium.cards_per_view | default: 3 -}},1fr); gap: {{ settings.breakpoints.medium.gutter | default: 20 }}px; } {% assign n = products.length %} [data-gai-section-id="{{ section_id }}"] ._gai-bundle-products { grid-template-columns: repeat({{ n }}, minmax(0, 1fr) 20px); } [data-gai-section-id="{{ section_id }}"] ._gai-dis-cnt { {% if section.layout == 'amazon_bought_together' %} justify-content: center; {% else %} justify-content: {{ settings.breakpoints.medium.justify_widget_subtitle }}; {% endif %} } [data-gai-section-id="{{ section_id }}"] ._gai-prod-prc { font-size: {{ settings.breakpoints.medium.price_font_size }}px; } [data-gai-section-id="{{ section_id }}"] ._gai-sec-tit { -webkit-line-clamp: {{ settings.breakpoints.medium.max_section_title_rows }}; font-size: {{ settings.breakpoints.medium.widget_title_font_size }}px; text-align: {{ settings.breakpoints.medium.widget_title_alignment }}; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-vndr { font-size: {{ settings.breakpoints.medium.product_vendor_font_size }}px; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-tit { -webkit-line-clamp: {{ settings.breakpoints.medium.max_product_title_rows }}; text-align: {{ settings.breakpoints.medium.product_title_alignment }}; font-size: {{ settings.breakpoints.medium.product_title_font_size }}px; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-prc--compare-at { {% if section.layout == "amazon_bought_together" or settings.breakpoints.medium.compare_price_visible == true %} display: block {% else %} display: block; {% endif %} } [data-gai-section-id="{{ section_id }}"] ._gai-dis-txt { color: {{ product_card_settings.discount_color }}; font-size: {{ settings.breakpoints.medium.section_subtitle_font_size }}px; } } @media (min-width: {{ settings.breakpoints.large.screen_size | default: 1024 }}px) { [data-gai-section-id="{{ section_id }}"] ._gai-grid { grid-template-columns: repeat({{- settings.breakpoints.large.cards_per_view -}},1fr); gap: {{ settings.breakpoints.large.gutter | default: 20 }}px; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-prc { font-size: {{ settings.breakpoints.large.price_font_size }}px; } [data-gai-section-id="{{ section_id }}"] ._gai-sec-tit { -webkit-line-clamp: {{ settings.breakpoints.large.max_section_title_rows }}; font-size: {{ settings.breakpoints.large.widget_title_font_size }}px; text-align: {{ settings.breakpoints.large.widget_title_alignment }}; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-vndr { font-size: {{ settings.breakpoints.large.product_vendor_font_size }}px; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-tit { -webkit-line-clamp: {{ settings.breakpoints.large.max_product_title_rows }}; text-align: {{ settings.breakpoints.large.product_title_alignment }}; font-size: {{ settings.breakpoints.large.product_title_font_size }}px; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-prc--compare-at { {% if settings.breakpoints.large.compare_price_visible or section.layout == "amazon_bought_together" %} display: block; {% else %} display: none; {% endif %} } [data-gai-section-id="{{ section_id }}"] ._gai-dis-txt { color: {{ product_card_settings.discount_color }}; font-size: {{ settings.breakpoints.large.section_subtitle_font_size }}px; } [data-gai-section-id="{{ section_id }}"] .gai-dis-cnt { {% if section.layout == 'amazon_bought_together' %} justify-content: center; {% else %} justify-content: {{ settings.breakpoints.small.justify_widget_subtitle }}; {% endif %} } } ._gai-amz-tit { text-align: center; } [data-gai-section-id="{{ section_id }}"] ._gai-prod-price-wrp{ {% if template.settings.product_card.price_compare_at_mode == 'after'%} flex-direction: row-reverse; justify-content: start; {% endif %} } {% assign should_disable = product_card_settings.variant_selector_type == "swatch_with_atc" or product_card_settings.disable_add_to_cart_button %} {% if section.layout != 'amazon_bought_together' and should_disable %} [data-gai-section-id="{{ section_id }}"] { ._gai-atc-btn { display: none !important; } ._gai-skl-atc { display: none !important; } } {% endif %} ``` # Default Template Javascript Source: https://docs.glood.ai/for-developers/default-code/section-js Default Template Javascript code reference This Template Javascript contains the essential JavaScript hooks required for the proper functioning of the V3 storefront. Each hook serves a specific purpose in the recommendation engine's lifecycle. ```js // @ts-ignore return { initSwiper: ( Swiper, templateSettings, container, params, defaultSettings, utils ) => { const carouselContainer = container.querySelector('._gai-crz-cnt') if (!carouselContainer) { console.error( 'GLOOD.AI:ERROR: Carousel container not found for section', params.recommendation.section.id ) return } const settings = templateSettings?.carousel?.swiperConfig || {} const swiperConfig = utils.merge(defaultSettings, settings) const breakpoints = Object.values(templateSettings.breakpoints).reduce( (acc, curr) => ({ ...acc, [curr.screenSize]: { slidesPerView: curr.cardsPerView, spaceBetween: curr.gutter, }, }), {} ) const swiper = new Swiper( carouselContainer, utils.merge(swiperConfig, { breakpoints, }) ) return swiper }, onSectionInit: (args, cb, gloodUtils) => { const { recommendation, engine, initEnginePayload } = args cb({ recommendation, engine, initEnginePayload, }) }, onSectionRenderComplete: (args, utils) => {}, onVariantChange: (args, utils) => {}, onSwatchChange: (args, utils) => {}, validateCartOperation: async (payload, recommendation, utils, gloodUtils) => { return { payload, error: null, href: false, } }, onCartOperationComplete: (args, utils, gloodUtils) => {}, onProductDataReceived: (args, utils) => {}, getProductDetailsQuery: (recommendation, glood) => { // use graphql variables to pass the country and language return ` featuredImage{ url } handle id title availableForSale priceRange { minVariantPrice { amount currencyCode } } compareAtPriceRange { minVariantPrice { amount currencyCode } } options(first: 10){ name optionValues{ name swatch{ color image{ previewImage{ url } } } } } variants(first:250){ nodes{ compareAtPrice{ amount currencyCode } id image{ url } price{ amount currencyCode } currentlyNotInStock title quantityAvailable availableForSale selectedOptions{ name value } } pageInfo{ endCursor } } images(first: 2){ nodes{ url } } vendor variantsCount{ count } tags availableForSale ` }, transformProductData: (product) => { return { featuredImage: product.featuredImage.url ? { src: product.featuredImage.url, } : null, handle: product.handle, id: parseInt(product.id.replace('gid://shopify/Product/', '')), title: product.title, vendor: product.vendor, images: product.images.nodes.map((image) => ({ src: image.url, })), variants: product.variants.nodes.map((variant) => ({ id: parseInt(variant.id.replace('gid://shopify/ProductVariant/', '')), compareAtPrice: variant.compareAtPrice?.amount || null, price: variant.price.amount, image: variant.image?.url ? { src: variant.image.url, } : null, currentlyNotInStock: variant.currentlyNotInStock, title: variant.title, quantityAvailable: variant.quantityAvailable, availableForSale: variant.availableForSale, selectedOptions: variant.selectedOptions, })), available: product.availableForSale, compareAtPrice: product.compareAtPriceRange.minVariantPrice.amount, price: product.priceRange.minVariantPrice.amount, variantsCount: product.variantsCount.count, tags: product.tags, availableForSale: product.availableForSale, options: product.options.map((option) => ({ name: option.name, optionValues: option.optionValues.map( (optionValue) => optionValue.name ), swatches: option.optionValues.map( (optionValue) => optionValue.swatch ) })), } }, onAmazonProductSelect: (args)=>{ } } ``` # Default Template liquid Source: https://docs.glood.ai/for-developers/default-code/section-liquid Default Template liquid code reference The main Template file for rendering recommendation sections. ```liquid {%- assign translations = template.translations %} {%- assign translations_discount_label_text = 'discount_label_text' | t: translations, '' -%} {% assign root_url = glood.shopify.root_url %} {% assign section_discount_str = section.discount_config.value | section_discount: section.discount_config.type, section.discount_config.widget_message, glood.localization.language.locale, glood.shop.money_format %} {% assign section_title = section.translations[glood.localization.language.locale].title | default: section.title %} {% capture quantity_selector %} {% if template.settings.product_card.show_quantity_selector %}
{% endif %} {% endcapture %} {% capture spinner_loader %} {% endcapture %}
{% if section.layout != 'amazon_bought_together' %}

{{ section_title }}

{% if section_discount_str.length > 0 %}
{{ section_discount_str }}
{% endif %}
{% endif %} {% if section.layout != 'amazon_bought_together' %}
{% for product in products %} {% assign product_url = root_url | product_url: product.handle, glood.product.id, section.layout %} {% assign first_available_variant = -1 %} {% assign available_variants_count = 0 %} {% for variant in product.variants %} {% if variant.available_for_sale %} {% if available_variants_count == 0 %} {% assign first_available_variant = variant %} {% endif %} {% assign available_variants_count = available_variants_count | plus: 1 %} {% endif %} {% endfor %} {% if first_available_variant == -1 %} {% assign first_available_variant = product.variants[0] %} {% endif %} {% assign multiple_variants = available_variants_count > 1 %} {% capture swatch_component %} {% assign should_enable_swatch = template.settings.product_card.variant_selector_type == 'swatch' or template.settings.product_card.variant_selector_type == 'swatch_with_atc' %} {% if should_enable_swatch and product.variants.size > 1 %} {% assign options = product.options %}
{% for swatch in template.settings.swatches %} {% assign allowed_names = swatch.option_names %} {% assign found_option = false %} {% for option in options %} {% assign found = false %} {% for name in allowed_names %} {% if name == option.name %} {% assign found_option = option %} {% assign found = true %} {% break %} {% endif %} {% endfor %} {% if found %} {% break %} {% endif %} {% endfor %} {% if found_option != false %} {% assign translation_key = "swatch_label_" | append: found_option.name %}
{% assign selected_option = first_available_variant.selected_options | find: 'name', found_option.name %}
{% for value in found_option.option_values %} {% assign swatch_img_url = found_option.swatches[forloop.index0].image.preview_image.url %} {% assign swatch_color = found_option.swatches[forloop.index0].color %} {% if swatch_color == blank %} {% assign swatch_color = value | color_value: template.settings.color_mapping %} {% endif %} {% if swatch.type == "size" %}{{ value }}{% endif %} {% endfor %}
{% endif %} {% endfor %}
{% endif %} {% endcapture %} {% capture variant_selector %} {% assign size = available_variants_count %} {% if size > 1 %} {% endif %} {% endcapture %}
{% if available_variants_count == 0 %} {{ translations.oos_text | default: 'Out Of Stock' }} {% endif %} {% assign labels_cnt = 0 %} {% for label in template.settings.labels %} {% if labels_cnt < template.settings.max_labels_count and product.tags contains label.name %} {{- translations[label.name] | default: label.name -}} {% assign labels_cnt = labels_cnt | plus: 1 %} {% endif %} {% endfor %} {% assign product_discount = product | product_discount: section.discount_config, translations.discount_label_text, glood.shop.money_format %} {% if product_discount.length > 0 and template.settings.product_card.show_discount_pill %} {{ product_discount }} {% endif %}
{{ product.title }} {% if product.images[1].src %} {{ product.title }} {% endif %}
{{ translations.added_to_cart_text | default: 'Added to cart' }}
{{ translations.atc_error_text | default: 'Error while add to cart' }}
{% if template.settings.product_card.add_to_cart_mode == 'image_hover' %}
{% if template.settings.product_card.variant_selector_type == 'integrated' %} {{ variant_selector }} {% endif %}
{% endif %}
{% if template.settings.product_card.vendor_position == 'above' %}
{{ product.vendor }}
{% endif %} {{ product.title }}
{% if template.settings.product_card.vendor_position == 'below' %}
{{ product.vendor }}
{% endif %}
{% assign compare_at_price = first_available_variant.compare_at_price | times: 1.0 %} {% if template.settings.product_card.price_compare_at_mode != 'none' and compare_at_price > 0 %} {{ first_available_variant.compare_at_price | format_money: glood.shop.money_format }} {% endif %} {{ first_available_variant.price | format_money: glood.shop.money_format }}
{% assign save_text = product | save_amount: section.discount_config, translations.discount_save_text, glood.shop.money_format %} {% if save_text.length > 0 %}
{{ save_text }}
{% endif %}
{{ swatch_component }} {{ quantity_selector }} {% if template.settings.product_card.variant_selector_type == 'selector' %} {{ variant_selector }} {% endif %} {% if template.settings.product_card.add_to_cart_mode != 'image_hover' %}
{% if template.settings.product_card.variant_selector_type == 'integrated' %} {{ variant_selector }} {% endif %}
{% endif %}
{% endfor %}
{% if section.layout == 'carousel'%}
_
{% if template.settings.carousel.show_pagination %}
{% endif %} {% endif %}
{% else %}

{{ section.title }}

{% if section_discount_str.length > 0 %}
{{ section_discount_str }}
{% endif %}
{% for product in products %} {% assign first_available_variant = -1 %} {% assign available_variants_count = 0 %} {% for variant in product.variants %} {% if variant.available_for_sale %} {% if available_variants_count == 0 %} {% assign first_available_variant = variant %} {% endif %} {% assign available_variants_count = available_variants_count | plus: 1 %} {% endif %} {% endfor %} {% if first_available_variant == -1 %} {% assign first_available_variant = product.variants[0] %} {% endif %} {% assign multiple_variants = available_variants_count > 1 %} {% assign product_url = root_url | product_url: product.handle, glood.product.id, section.layout %}
{% if available_variants_count == 0 %} {{ translations.oos_text | default: 'Out Of Stock' }} {% endif %} {% assign labels_cnt = 0 %} {% for label in template.settings.labels %} {% if labels_cnt < template.settings.max_labels_count and product.tags contains label.name %} {{- translations[label.name] | default: label.name -}} {% assign labels_cnt = labels_cnt | plus: 1 %} {% endif %} {% endfor %} {% assign product_discount = product | product_discount: section.discount_config, translations.discount_label_text, glood.shop.money_format %}
✔️ {% if product.images[1].src %} {{ product.title }} {% endif %}
{% if template.settings.product_card.vendor_position == 'above' %}
{{ product.vendor }}
{% endif %} {{ product.title }}
{% if template.settings.product_card.vendor_position == 'below' %}
{{ product.vendor }}
{% endif %} {% assign save_text = product | save_amount: section.discount_config, translations.fbt_save_text, glood.shop.money_format %} {% if save_text.length > 0 %}
{{ save_text }}
{% endif %}
{% assign compare_at_price = first_available_variant.compare_at_price | times: 1.0 %} {% if template.settings.product_card.price_compare_at_mode != 'none' and compare_at_price > 0 %} {{ first_available_variant.compare_at_price | format_money: glood.shop.money_format }} {% endif %} {{ first_available_variant.price | format_money: glood.shop.money_format }}
{% assign options = product.options %} {% assign should_enable_swatch = template.settings.product_card.variant_selector_type == 'swatch' or template.settings.product_card.variant_selector_type == 'swatch_with_atc' %} {% if should_enable_swatch and product.variants.size > 1 %} {% assign options = product.options %}
{% for swatch in template.settings.swatches %} {% assign allowed_names = swatch.option_names %} {% assign found_option = false %} {% for option in options %} {% assign found = false %} {% for name in allowed_names %} {% if name == option.name %} {% assign found_option = option %} {% assign found = true %} {% break %} {% endif %} {% endfor %} {% if found %} {% break %} {% endif %} {% endfor %} {% if found_option != false %} {% assign translation_key = 'swatch_label_' | append: found_option.name %}
{% assign selected_option = first_available_variant.selected_options | find: 'name', found_option.name %}
{% for value in found_option.option_values %} {% assign swatch_img_url = found_option.swatches[forloop.index0].image.preview_image.url %} {% assign swatch_color = found_option.swatches[forloop.index0].color %} {% if swatch_color == blank %} {% assign swatch_color = value | color_value: template.settings.color_mapping %} {% endif %} {% if swatch.type == "size" %}{{ value }}{% endif %} {% endfor %}
{% endif %} {% endfor %}
{% elsif available_variants_count > 1 %} {% endif %}
{% if forloop.index != products.length %} {% endif %} {% endfor %}

{{ section.title }}

{% if section_discount_str.length > 0 %}
{{ section_discount_str }}
{% endif %}
{% if translations.total_price_text.length > 0 %}
{{ translations.total_price_text }}
{% endif %}
{% endif %}
``` # Default Template Settings Source: https://docs.glood.ai/for-developers/default-code/settings-json Default Template Settings configuration reference The main Settings configuration file for recommendation sections. ```json { "breakpoints": { "small": { "gutter": 10, "cardsPerView": 2, "widgetTitleAlignment": "left", "productTitleAlignment": "left", "comparePriceVisible": false, "imageWidth": 600, "imageHeight": 600, "justifyWidgetSubtitle": "left" }, "medium": { "gutter": 20, "cardsPerView": 3, "widgetTitleAlignment": "center", "productTitleAlign": "center", "comparePriceVisible": true, "imageWidth": 600, "imageHeight": 600, "justifyWidgetSubtitle": "center" }, "large": { "gutter": 20, "cardsPerView": 4, "widgetTitleAlignment": "center", "productTitleAlign": "center", "comparePriceVisible": true, "imageWidth": 600, "imageHeight": 600, "justifyWidgetSubtitle": "center" } }, "labels": [ { "name": "new", "textColor": "#ffffff", "backgroundColor": "#333333" }, { "name": "trending", "textColor": "#ffffff", "backgroundColor": "#444444" }, { "name": "bestseller", "textColor": "#ffffff", "backgroundColor": "#222222" } ], "maxLabelsCount": 2, "outOfStock": { "textColor": "#ffffff", "backgroundColor": "#000" }, "carousel": { "library": "swiper", "showPagination": true }, "productCard": { "color": "#222", "priceColor": "#222", "titleColor": "#222", "discountColor": "#000", "vendorPosition": "hidden", "addToCartMode": "card_hover", "backgroundColor": "transparent", "discountVisible": true, "imageHoverMode": "secondary", "imageObjectFit": "contain", "addToCartColor": "#fff", "imageAspectRatio": "1:1", "showDiscountPill": true, "discountBackground": "transparent", "priceColorCompare": "#aaa", "discountLabelColor": "#ffffff", "priceColorOriginal": "#5C5C5C", "priceCompareAtMode": "before", "addToCartBackground": "#000", "showQuantitySelector": false, "discountLabelVisible": true, "discountLabelPosition": "center", "discountLabelBackground": "#ff0000", "redirectAfterAddToCart": true, "variantSelectorType": "integrated", "comparePriceVisibilityMobile": "before", "disabledAddToCartBackground": "#00000070", "disableAddToCartButton": false }, "colorMapping": {}, "horizontalGrid": {}, "amazonBoughtTogether": { "priceCompareAtMode": "before", "buttonBackgroundColor": "#000" }, "swatches": [ { "type": "color", "key": "color", "optionNames": [ "Color", "Colour", "color", "colour" ] }, { "type": "size", "key": "size", "optionNames": [ "Size", "sizes" ] } ] } ``` # Default Translations Source: https://docs.glood.ai/for-developers/default-code/translations Default translations object reference # Default Translations The main translations object for recommendation sections. ```json { "primary_locale": { "oos_text": "Out of stock", "bestseller_text": "Bestseller", "new_text": "New", "trending_text": "Trending", "discount_text": "Get Flat Discount of {percentage}", "discount_label_text": "Save {amount}", "added_to_cart_text": "Added to cart", "atc_text": "Add to cart", "atc_error_text": "Error adding to cart", "discount_save_text": "Save {amount}", "fbt_add_to_cart_text": "Add to cart", "fbt_added_to_cart_text": "Added to cart", "fbt_save_text": "Save {percent}", "total_price_text": "Total Price" } } ``` This translations object contains all the default text strings used throughout the recommendation sections. The strings can include placeholders (like `{amount}` or `{percentage}`) which will be replaced with actual values when rendered. # How to access additional metafields in V3 Template Source: https://docs.glood.ai/for-developers/how-to-guides/access-additional-metafields Learn how to access and use additional metafields in your V3 Template implementation ## Overview In V3 Template, products are fetched using GraphQL. While default product data is automatically included, accessing additional metafields requires three steps: 1. Adding metafields to the `getProductDetailsQuery` function 2. Including metafields in the `transformProductData` function 3. Accessing the metafields in your template's theme.liquid ## Basic Implementation ### Step 1: Modify getProductDetailsQuery Add your metafields to the GraphQL query in the `getProductDetailsQuery` function: ```javascript getProductDetailsQuery: (recommendation, glood) => { return ` featuredImage { url } handle id title # Add your metafields here metafield(namespace: "custom", key: "product_info") { value } # Rest of your existing query variants(first: 250) { nodes { id # ... other variant fields } } ` } ``` ### Step 2: Update transformProductData Modify the `transformProductData` function to include your metafields: ```javascript transformProductData: (product) => { return { featuredImage: product.featuredImage.url ? { src: product.featuredImage.url, } : null, handle: product.handle, id: parseInt(product.id.replace('gid://shopify/Product/', '')), title: product.title, // Add your metafield transformation metafield_value: product.metafield ? product.metafield.value : "N/A", // Rest of your existing transformations variants: product.variants.nodes.map((variant) => ({ // ... variant transformations })) } } ``` ### Step 3: Access in Theme Use the transformed metafield in your theme.liquid: ```liquid {% raw %}
{{ product.title }} {% if product.metafield and product.metafield.value %}

Extra Info: {{ product.metafield.value }}

{% else %}

Information unavailable.

{% endif %}
{% endraw %} ``` ## Practical Example: Product Ratings with Judge.me ### Prerequisites 1. Install Judge.me app on your Shopify store: * Go to Shopify App Store and install Judge.me * Enable the app integration in your store settings 2. Enable Judge.me in Glood: * Navigate to Glood Product Recommendations * Go to Settings >> Integrations >> Product Review Apps * Enable the Judge.me app integration After completing the setup, the rating metafields will be available in your GraphQL queries. You can query these metafields using the reviews namespace wherever needed. To display product ratings in your template, simply use the Judge.me liquid tag: ```liquid {% raw %} {% product_ratings product_id: product.id %} {% endraw %} ``` ## Related Resources * [Section Template Introduction](/for-developers/section-template/introduction) * [Template Tags](/for-developers/section-template/tags) * [Template Hooks](/for-developers/section-template/hooks) # Add Checkout Upsell on Checkout Screen Source: https://docs.glood.ai/for-developers/how-to-guides/add-checkout-upsell Checkout upsells display personalized product recommendations at strategic points in the checkout flow. These recommendations can significantly increase average order value by suggesting products that complement items already in the customer's cart. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "Checkout Upsell" section from the app menu. → This will open the "Checkout & Post Purchase Upsell" dashboard screen (as shown in the image), where you can manage and create upsell campaigns. Checkout & Post Purchase Upsell dashboard #### 3. Click on the "New Campaign" button at the top right corner to start creating a new upsell campaign. → Once you click, the Create Campaign screen will open, where you can enter your campaign details and configure the upsell settings. Create Campaign screen #### 4. After clicking on "New Campaign", the Create Campaign screen will open (as shown in the image). → On this screen, you'll need to fill in the following details to set up your Checkout Upsell campaign: * **Name**: Add a name for your campaign to easily identify it. * **Time Duration**: Set the start and end date for when the campaign should be active. * **Status**: Keep this set to Active if you want the upsell campaign to show on the checkout screen. * **Trigger**: Choose whether this campaign should be shown to all customers or conditionally based on certain rules. * **Checkout Upsell Products**: Click on the + Add button to select the product(s) that will be promoted as upsell items during checkout. * **Save**: Click on Save button Configure Campaign settings #### 5. Once these steps are completed, the Checkout Upsell will automatically appear on your checkout screen for customers. Checkout Upsell on checkout screen ## Troubleshooting ### Unable to See the Checkout Upsell? If you've set up your campaign but don't see the upsell appearing on your checkout screen, you'll need to add the Checkout app section in your Shopify store. Follow these steps to configure the Checkout Upsell on desktop devices: 1. From your Shopify admin, navigate to **Settings > Checkout** 2. In the Configurations section, find and click **Customize** next to your desired configuration 3. In the checkout editor, select the page where you want the upsell to appear 4. Click **Sections** to open the sidebar 5. Click **⊕ Add app block** in your chosen section 6. Select the Glood.AI upsell app block 7. Customize the app block settings: * Drag and drop to reposition * Click the block to adjust available settings 8. Click **Save** to apply your changes ### Additional Resources For more detailed information about configuring app blocks across devices, refer to [Add app blocks from installed apps](https://help.shopify.com/en/manual/checkout-settings/customize-checkout-configurations/checkout-apps#add-app). ## Additional Configuration Settings ### Checkout Upsell Configuration #### Upsell Products The Upsell Products section provides two main functionalities: 1. **Checkout Editor Integration** * Access the Shopify Checkout Visual Editor to position the upsell block * Drag and drop the "Glood: Checkout Upsell" section to your desired location * Customize the block's appearance and layout within the checkout flow * Preview how the upsell will appear to customers 2. **Product Selection and Management** * Add products to be shown as recommendations on the checkout screen * Add products manually or use AI generated product #### Manual 1:1 Recommendations Configure specific product pairs to be shown together during checkout: * Enable "Override Recommendations with Manual Recommendations when available" * Select a trigger product that when added to cart will show specific recommendations * Choose the recommended product(s) to be displayed when that trigger product is in the chekout-screen #### Excluded Products Configure which products should not appear in checkout upsell recommendations: * Exclude individual products by selecting them from your product catalog * Exclude groups of products by specifying product tags (e.g. exclude all products tagged as "subscription") * Set up exclusion rules using product attributes like price range, vendor, or collection * Excluded products will never appear as recommendations, even if they match other recommendation criteria #### Placement and Layout Click the "Open Checkout Editor" button to configure the placement and layout of the checkout upsell section: * Access Shopify's checkout editor to position the upsell block * Drag and drop the "Glood: Checkout Upsell" section to your desired location * Customize appearance settings like fonts, colors and spacing * Preview how the upsell will appear across different devices ## Support If you need help with setting up or customizing checkout upsells, contact our support team at [support@glood.ai](mailto:support@glood.ai) # Add Checkout Upsell on Post Checkout Screen Source: https://docs.glood.ai/for-developers/how-to-guides/add-checkout-upsell-post-checkout Post checkout upsells display personalized product recommendations immediately after purchase completion. These recommendations can significantly increase average order value by suggesting products that complement items the customer has just purchased. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "Checkout Upsell" section from the app menu. → This will open the "Checkout & Post Purchase Upsell" dashboard screen (as shown in the image), where you can manage and create upsell campaigns. Checkout & Post Purchase Upsell dashboard #### 3. Click on the "New Campaign" button at the top right corner to start creating a new upsell campaign. → Once you click, the Create Campaign screen will open, where you can enter your campaign details and configure the upsell settings. Create Campaign screen #### 4. After clicking on "New Campaign", the Create Campaign screen will open (as shown in the image). → On this screen, you'll need to fill in the following details to set up your Post Checkout Upsell campaign: * **Name**: Add a name for your campaign to easily identify it. * **Time Duration**: Set the start and end date for when the campaign should be active. * **Status**: Keep this set to Active if you want the upsell campaign to show on the post checkout screen. * **Trigger**: Choose whether this campaign should be shown to all customers or conditionally based on certain rules. * **Post Checkout Upsell Products**: Click on the + Add button to select the product(s) that will be promoted as upsell items after checkout. * **Save**: Click on Save button Configure Campaign settings #### 5. Ensure Post Checkout Upsell is Enabled Enable Post Purchase Upsell * After filling in all the campaign details, make sure the Post Purchase Upsell section is enabled. * Enable the toggle inside the Post Purchase Upsell section (as shown in the image). Post Checkout Upsell on post-checkout screen * Once enabled, click the Save button. #### 6. This will ensure that the selected upsell product(s) are shown on the post-checkout screen, right after the customer completes their order. Post Checkout Upsell on post-checkout screen ## Troubleshooting ### Unable to See the Checkout Upsell? If your checkout upsell still isn't showing, verify that your post-purchase configuration is set correctly: * From your Shopify admin, go to **Settings > Checkout** * Scroll down to the **Post-purchase page** section * Under Add tracking scripts and other customizations, ensure **Glood Product Recommendations** app is selected/configured to run post-purchase experiences * If nothing is selected, choose the **Glood Product Recommendations** app to handle Post Checkout Upsell * Once configured, this will ensure that your upsell campaigns display on the post-checkout screen. ## Additional Configuration Settings #### Post Purchase Upsell Configuration Control whether post-purchase upsells appear after checkout completion: * Enable or disable post-purchase upsells using the "Control Post Purchase Upsell" toggle * When enabled, recommended products will be shown to customers on the order confirmation page * When disabled, no additional product recommendations will appear after purchase completion #### Excluded Products Configure which products should not appear in checkout upsell recommendations: * Exclude individual products by selecting them from your product catalog * Exclude groups of products by specifying product tags (e.g. exclude all products tagged as "subscription") * Set up exclusion rules using product attributes like price range, vendor, or collection * Excluded products will never appear as recommendations, even if they match other recommendation criteria ## Support If you need help with setting up or customizing post checkout upsells, contact our support team at [support@glood.ai](mailto:support@glood.ai) # Add Sections to Mini Cart Source: https://docs.glood.ai/for-developers/how-to-guides/add-sections-to-mini-cart This guide walks you through the process of adding Glood.AI product recommendations to your store's mini cart (also known as AJAX cart). ## Overview AJAX cart recommendations appear when customers view their cart in a slide-out drawer or popup. These recommendations update dynamically as customers add or remove items from their cart. ## Implementation Steps ### 1. Create AJAX Section First, create a new section in your Glood.AI dashboard: 1. Go to **Sections** in your Glood.AI admin 2. Click **Create New Section** 3. Select **AJAX Cart** as the page type 4. Configure your desired recommendation strategy 5. Save the section ### 2. Place Section in Mini Cart Add the section html (from section details page) to your theme's mini cart template: ### 3. Configure Load/Unload Hooks To control when the AJAX cart recommendations load and unload, implement these hooks in your section template: ```js // Load recommendations when mini cart opens loadAjaxCart: (bodyElem) => { const ajaxCart = bodyElem.querySelector('cart-drawer'); return ajaxCart.classList.contains("active"); }, // Unload recommendations when mini cart closes unloadAjaxCart: (bodyElem) => { const ajaxCart = bodyElem.querySelector('cart-drawer'); return !ajaxCart.classList.contains("active"); } ``` ## Testing To verify your implementation: 1. Add an item to your cart 2. Open the mini cart 3. Verify that recommendations appear 4. Close the mini cart 5. Verify that recommendations are removed 6. Test with different cart contents to ensure recommendations update ## Troubleshooting Common issues and solutions: * **Recommendations don't load**: Verify your section ID and ensure the mini cart element selector matches your theme * **Recommendations don't update**: Check that loadAjaxCart and unloadAjaxCart hooks are properly configured * **Performance issues**: Consider adjusting the number of recommended products shown ## Next Steps * Customize the recommendation layout to match your theme * Add tracking to measure recommendation performance * Configure product filtering rules For more details on hooks and configuration options, see the [Template Hooks](/for-developers/section-template/hooks) documentation. # Enable Custom Events in V3 Template Source: https://docs.glood.ai/for-developers/how-to-guides/enable-custom-events Learn how to enable and configure custom events to control section visibility on your store ## Overview Custom events provide a flexible way to control section behavior in your store. This guide demonstrates how to set up and use custom events to manage section rendering based on various scenarios and conditions. Custom events enable you to: * Control section visibility based on specific triggers * Manage section rendering timing * Implement custom loading behaviors * Create dynamic user experiences ## Configuration ### Set Up Init Event Name In your app-embed settings, locate the "Init Event Name" section inside the app-embed and in the input field write your desired event name (e.g., initialize\_app). ![Init Event Name Setting in App Embed](https://mintlify.s3.us-west-1.amazonaws.com/gloodai/images/init-event-name-setting.png) This setting tells Glood AI which event to listen for before initializing the sections. ## Usage ### Basic Implementation 1. Set your desired event name in the "Init Event Name" field 2. By default, no sections will be visible on the store 3. Trigger the event to show sections ### Example Here's a simple example of how to trigger the custom event. When this event is dispatched, Glood AI will initialize all sections that are configured to listen for this event: ```javascript // This will trigger the sections to become visible dispatchEvent(new CustomEvent("initialize_app")); ``` ### Common Use Cases 1. **Scroll-Based Loading** ```javascript window.addEventListener('scroll', () => { if (isScrolledToBottom()) { dispatchEvent(new CustomEvent("initialize_app")); } }); ``` 2. **User Interaction Based** ```javascript document.querySelector('.load-recommendations').addEventListener('click', () => { dispatchEvent(new CustomEvent("initialize_app")); }); ``` 3. **Time-Based Loading** ```javascript setTimeout(() => { dispatchEvent(new CustomEvent("initialize_app")); }, 3000); // Show sections after 3 seconds ``` ## Best Practices 1. **Event Naming** * Use clear, descriptive event names * Follow a consistent naming convention * Avoid generic names that might conflict with other events 2. **Performance** * Trigger events at appropriate times to optimize page load * Consider user experience when deciding when to show sections * Avoid triggering events too early or too late 3. **Error Handling** * Always check if the event was successfully dispatched * Provide fallback behavior if needed * Log events for debugging purposes ## Troubleshooting If sections aren't appearing as expected: 1. Verify that V3 sections are enabled 2. Check that the event name matches exactly in both settings and code 3. Ensure the event is being dispatched correctly 4. Check browser console for any errors 5. Verify that the sections are properly configured ## Support If you need help with setting up or customizing events, contact our support team at [support@glood.ai](mailto:support@glood.ai) # Enable Labels on Store Source: https://docs.glood.ai/for-developers/how-to-guides/enable-labels Learn how to configure and enable product labels in your store ## Configuration ### Settings Configuration Configure your labels in `settings.json`. Each label has a name, text color, and background color: ```json "labels": [ { "name": "new", "textColor": "#ffffff", "backgroundColor": "#333333" }, { "name": "trending", "textColor": "#ffffff", "backgroundColor": "#444444" }, { "name": "bestseller", "textColor": "#ffffff", "backgroundColor": "#222222" } ], "maxLabelsCount": 2 ``` ### Template Implementation Add this code to your `theme.liquid` to display labels on products. The code checks for matching tags and applies the configured styling: ```liquid {% assign labels_cnt = 0 %} {% for label in template.settings.labels %} {% if labels_cnt < template.settings.max_labels_count and product.tags contains label.name %} {{- translations[label.name] | default: label.name -}} {% assign labels_cnt = labels_cnt | plus: 1 %} {% endif %} {% endfor %} ``` ## How It Works 1. Add tags to your products (e.g., "new", "trending", "bestseller") - These tags should match the label names in your settings 2. Labels will automatically appear on products with matching tags - The system checks product tags against configured label names 3. Each product shows max 2 labels (configurable via `maxLabelsCount`) - Adjust this number in settings to show more or fewer labels 4. Labels use the colors defined in settings - Each label type has its own text and background colors 5. Supports translations through the `translations` object - Use translations to display labels in different languages ## Support Need help with labels? Contact [support@glood.ai](mailto:support@glood.ai) # Enable Swatch in V3 Template Source: https://docs.glood.ai/for-developers/how-to-guides/enable-swatch-v3-template Learn how to enable and configure swatch functionality in your v3 template Swatches provide a visual way for customers to select product variants, especially useful for color and material options. This guide will show you how to enable and configure swatches in your v3 template. ## 1. Basic Configuration To enable swatches in your template, you need to modify the `variantSelectorType` setting to "swatch". This will automatically convert your variant selectors to swatch format. ```json { "variantSelectorType": "swatch" } ``` ## Color Mapping When using swatches for colors, Glood first checks if the product color is a valid CSS color. If it's not valid, it looks up the color in the color mapping configuration. ### Why Use Color Mapping? Color mapping is essential when your store uses custom color names that aren't valid CSS colors. For example, if your store uses color names like "limestone green" or "cityscape", you'll need to map these to valid CSS colors. ### Example Configuration Here's how to set up color mapping: ```json { "colorMapping": { "limestoneGreen": "#348221" } } ``` ### How Color Mapping Works 1. When a product variant has a color option, Glood first checks if it's a valid CSS color 2. If the color is valid (e.g., "red", "#FF0000", "rgb(255, 0, 0)"), it's used directly 3. If the color is not valid (e.g., "limestone green"), Glood looks up the corresponding value in the colorMapping 4. The mapped color is then used for the swatch display ## Troubleshooting If swatches aren't displaying correctly: 1. Verify that `variantSelectorType` is set to "swatch" 2. Check that all custom color names are properly mapped 3. Ensure the color values in the mapping are valid CSS colors 4. Clear your store's cache to ensure changes take effect ## 2. Quick Add-to-Cart Swatches For a more streamlined shopping experience, you can enable swatches that automatically add products to cart when clicked. This is particularly useful in recommendation sections or quick-shop scenarios. ### Configuration To enable quick add-to-cart swatches, set the `variantSelectorType` to "swatch\_with\_atc": ```json { "variantSelectorType": "swatch_with_atc" } ``` ### How It Works 1. When a customer clicks on a swatch, the system automatically: * Selects the corresponding variant * Adds the product to cart immediately ### Troubleshooting Quick Add-to-Cart Swatches If the automatic add-to-cart isn't working: 1. Verify that `variantSelectorType` is set to "swatch\_with\_atc" 2. Ensure the variant is in stock 3. Check that the cart is properly initialized 4. Clear the store's cache after making configuration changes ## Support If you need help with enabling or customizing swatches in your v3 template, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to create Bestsellers section Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-create-bestsellers-section The Bestsellers section displays your store's most popular products based on sales data. This feature helps showcase your top-performing items and can increase conversion rates by highlighting products that other customers frequently purchase. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "AI Recommendations" section from the app menu → This will open the AI Recommendations Setup screen, where you can create and manage personalized product recommendation sections powered by AI. AI Recommendations Setup screen #### 3. Click on the "Create Section" button on the top-right corner * This will open the Create AI Recommendation Section screen * Select the page where you want to display the section * Choose the experience type and give the section a title (e.g., Best Selling Products) * Under **Select Recommendation Type**, choose **Bestsellers** to display your top-selling products Create AI Recommendation Section screen #### 4. Click on the Save button to create the section * After selecting Bestsellers as your recommendation type and filling out the necessary details, click on the Save button * This will create the section and open the section detail page * **Note:** The section is disabled by default until you enable it Save Recommendation Section screen #### 5. Configure Your Section (Section Detail Page) → Once saved, you'll be redirected to the Section Detail Page: Section Detail Page → Enable your section by clicking on the enable section button. Here are the key configuration options available: **→ Basic Info** * **Section Name:** Customize the name of your section * **Set Translations:** Add translations for different languages **→ Recommendation Configuration** * **Show Sold Out Items as Recommendations:** If enabled, even out-of-stock items may appear in the suggestion list. **→ Location & Position** * Choose where to show the section on your Shopify store: * Enter a div ID, class selector or xPath to specify the location (default: #shopify-section-product-template) * Set the position number to control where the section appears within that location (1 = first section) * Use breakpoint-based configuration for granular control across different screen sizes * For direct theme code placement, copy the provided widget code snippet * Optional: Enable "Require app block placement" to control section display in storefront **→ Advanced Configuration Settings** Configure additional settings: **1. Product Ranking Criteria** * Choose how recommended products should be ranked and ordered * Options include: * No criteria (default) * Price (high to low) * Price (low to high) * New products first * Personalized for viewer * Random **2. Fallback Criteria** * Define what happens when primary recommendations aren't available * Options include: * Random (default) * Trending * No criteria **3. Price Range Limits** * **Minimum Price:** Set a floor price for displayed products * **Maximum Price:** Set a ceiling price for displayed products **→ Status Section** * Control whether this recommendation section is active or inactive on your store * Simple toggle switch to enable/disable the section **→ Visual Editor** * Choose between Visual Editor or Visual Editor V3 for customizing your section's appearance * Select a template: * For stores with v2 templates, only Visual Editor will be visible * For stores with v3 templates, both Visual Editor and Visual Editor V3 will be visible * Make changes to your section's appearance by clicking the Visual Editor or Visual Editor V3 button based on your assigned template * Customize layout, styling and content through the editor interface * Configure template-specific settings by clicking the "Click Here" link * Select a default layout style: * Carousel * Horizontal Grid * Choose layout style for different screen sizes: * Small screens (mobile): Select Carousel or Horizontal Grid * Medium screens (tablet): Select Carousel or Horizontal Grid * Large screens (desktop): Select Carousel or Horizontal Grid **→ Segmentation** * Control which visitors see this recommendation section * Available targeting options: * All visitors (default) * First-time visitors * Returning visitors * Buyers * Is customer * Is not customer * Helps create personalized experiences for different user segments #### 6. Preview and Test Your Section → After configuration, preview and test the section to ensure it works as expected: section preview ## Support If you need help with setting up or customizing Bestsellers sections, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to Create Bundles Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-create-bundle This guide explains how to create bundles in your store using Glood.AI. Bundles allow you to group related items together and offer them at a special price, helping increase average order value and provide more value to your customers. # Creating a Bundle Learn how to create and configure bundles that will automatically be recommended to your customers based on their shopping behavior. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "Bundles" section from the app menu → This will open the Bundles screen (as shown in the image), where you can create and manage bundles for your store. Bundling helps increase the average order value and boost product sales by offering multiple items together. Bundles screen #### 3. Create and Configure a Bundle 1. Click the “+ Create Bundle” button on the Bundles page. 2. Fill in the following details on the Bundle Details page: → **Bundle Title:** Enter the name of the bundle. → **Products:** Click “+ Add Products” to include items in the bundle. → **Discounts:** (Optional) Select a discount and set a percentage. → **Images:** Add images to represent the bundle. → **Status:** Set as Draft or Active. → **Product Tags / Type / Collection:** Organize the bundle by adding relevant metadata. 3. Save your progress once all fields are filled. Bundle Details page #### 4. Final Step After completing all the steps above, your bundle will be successfully created. It will now appear on the Bundles screen, where you can manage it, make edits, track its performance, and monitor how it contributes to your store’s conversions. ## Support If you need help with creating or managing bundles, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to create Collections Widget section Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-create-collection-widget-section The Collection Widget section allows you to showcase products from specific collections on your store. This feature helps highlight curated product groups and makes it easier for customers to discover items from particular collections, improving navigation and potentially increasing sales. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "AI Recommendations" section from the app menu → This will open the AI Recommendations Setup screen, where you can create and manage personalized product recommendation sections powered by AI. AI Recommendations Setup screen #### 3. Click on the "Create Section" button on the top-right corner * This will open the Create AI Recommendation Section screen * Select the page where you want to display the section * Choose the experience type and give the section a title (e.g., Featured Collection) * Under **Select Recommendation Type**, choose **Collection Widget** to display products from specific collections Create AI Recommendation Section screen #### 4. Click on the Save button to create the section * After selecting Collection Widget as your recommendation type and filling out the necessary details, click on the Save button * This will create the section and open the section detail page * **Note:** The section is disabled by default until you enable it Section Detail Page - Save button #### 5. Configure Your Section (Section Detail Page) → Once saved, you'll be redirected to the Section Detail Page: Section Detail Page → Enable your section by clicking on the enable section button. Here are the key configuration options available: **→ Basic Info** * **Section Name:** Customize the name of your section * **Set Translations:** Add translations for different languages **→ Collection Selection** * Choose which collections to display in the widget * Select multiple collections if desired * Set display order for collections **→ Location & Position** * Choose where to show the section on your Shopify store: * Enter a div ID, class selector or xPath to specify the location (default: #shopify-section-product-template) * Set the position number to control where the section appears within that location (1 = first section) * Use breakpoint-based configuration for granular control across different screen sizes * For direct theme code placement, copy the provided widget code snippet * Optional: Enable "Require app block placement" to control section display in storefront **→ Advanced Configuration Settings** Configure additional settings: **1. Product Ranking Criteria** * Choose how products should be ranked and ordered * Options include: * No criteria (default) * Bestsellers first * Price (high to low) * Price (low to high) * New products first * Random **2. Fallback Criteria** * Define what happens when primary recommendations aren't available * Options include: * Random (default) * Best sellers * Trending * No criteria **3. Price Range Limits** * **Minimum Price:** Set a floor price for displayed products * **Maximum Price:** Set a ceiling price for displayed products **→ Status Section** * Control whether this recommendation section is active or inactive on your store * Simple toggle switch to enable/disable the section **→ Visual Editor** * Choose between Visual Editor or Visual Editor V3 for customizing your section's appearance * Select a template: * For stores with v2 templates, only Visual Editor will be visible * For stores with v3 templates, both Visual Editor and Visual Editor V3 will be visible * Make changes to your section's appearance by clicking the Visual Editor or Visual Editor V3 button * Customize layout, styling and content through the editor interface * Select a default layout style: * Carousel * Horizontal Grid * Choose layout style for different screen sizes: * Small screens (mobile): Select Carousel or Horizontal Grid * Medium screens (tablet): Select Carousel or Horizontal Grid * Large screens (desktop): Select Carousel or Horizontal Grid **→ Segmentation** * Control which visitors see this recommendation section * Available targeting options: * All visitors (default) * First-time visitors * Returning visitors * Buyers * Is customer * Is not customer * Helps create personalized experiences for different user segments #### 6. Preview and Test Your Section → After configuration, preview and test the section to ensure it works as expected and your selected collections are displaying correctly. ## Support If you need help with setting up or customizing Collection Widget sections, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to create Cross Sell section Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-create-cross-sell-section The Cross Sell section helps drive additional sales by recommending complementary or related products that enhance the value of the customer's current selection. This AI-powered recommendation section analyzes purchase patterns and product relationships to suggest items that work well together, encouraging customers to discover relevant products they may need or want. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "AI Recommendations" section from the app menu → This will open the AI Recommendations Setup screen (as shown in the image), where you can create and manage personalized product recommendation sections powered by AI. These sections can be added to any page of your store to display relevant product suggestions based on user behavior. AI Recommendations Setup screen #### 3. Click on the "Create Section" button on the top-right corner of the AI Recommendations Setup screen * This will open the Create AI Recommendation Section screen (as shown in the image), where you can configure and customize your recommendation section. * Select the page where you want to display the section, choose the experience type, and give the section a title (e.g., Cross Sell). * Under **Select Recommendation Type**, choose **Cross Sell** to display complementary products that enhance the currently viewed item. Create AI Recommendation Section screen #### 4. Click on the Save button to create the section * After selecting Cross Sell as your recommendation type and filling out the necessary details, click on the Save button at the top right corner. * This will create the AI-powered recommendation section and the section detail page will open. * **Note:** The section is disabled by default—it won't be visible to visitors until you enable it. Save Recommendation Section screen #### 5. Configure Your Section (Section Detail Page) → Once you've saved your section, you'll be redirected to the Section Detail Page, which looks like this: Section Detail Page → Firstly Enable your section on your store by clicking on the enable section button. Here, you can fine-tune how your Cross Sell recommendations behave on your store. Here's a quick rundown of the editable options: **→ Basic Info** * **Section Name:** You can rename your section here if needed. * **Set Translations:** Customize how the title appears in different languages. **→ Recommendation Configuration** This section allows you to customize how product recommendations are generated for your Cross Sell section. You can combine multiple methods to ensure accurate and dynamic suggestions. **1. Rule-Based Recommendation** * Click Configure to recommend products based on specific collections, tags, product types, or vendors. * Useful for creating category-based cross-selling rules. **2. 1-1 Manual Recommendation** * Click Configure to manually select cross-sell products for individual items. * Highest priority – these recommendations override others if set. **3. Advanced Configuration** → Includes extra options: * **Automatic Recommendation:** Enable this to let the system automatically suggest products based on your store's real-time sales data using proprietary algorithms. * **Enable Random Recommendations:** Use fallback random suggestions when no data is available. * **Show Sold Out Items as Recommendations:** If enabled, even out-of-stock items may appear in the suggestion list. **→ Excluded Products and Tags** * Excluded Products and Tags are used to remove specific products or tags from being recommended only within this particular section. * For detailed instructions on excluding products and tags, see our [How to Exclude Products and Tags guide](/for-developers/how-to-guides/how-to-exclude-products-and-tags). * **Note:** Excluded items won't appear in recommendations for this section only. To exclude items globally, configure them in your store settings. **→ Disabled Products and Tags** * Disabled Products and Tags are used to prevent the recommendation section from appearing on specific product pages or pages with specific tags. * For detailed instructions on disabling products and tags, see our [How to Disable Products and Tags guide](/for-developers/how-to-guides/how-to-disable-products-and-tags). * **Note:** When a product or tag is disabled, the entire recommendation section will not be shown on those product pages. **→ Whitelist Products and Tags** * Whitelist Products and Tags are used to restrict recommendations to only show specific products or products with specific tags within this section. * **Note:** When using whitelists, only the specified products or products with the specified tags will be eligible to appear as recommendations in this section. **→ Location & Position** * Choose where to show the section on your Shopify store: * Enter a div ID, class selector or xPath to specify the location (default: #shopify-section-product-template) * Set the position number to control where the section appears within that location (1 = first section) * Use breakpoint-based configuration for granular control across different screen sizes * For direct theme code placement, copy the provided widget code snippet * Optional: Enable "Require app block placement" to control section display in storefront **→ Advanced Configuration Settings** Configure additional settings to fine-tune how recommendations are generated and displayed: **1. Product Ranking Criteria** * Choose how recommended products should be ranked and ordered * Options include: * No criteria (default) * Bestsellers first * Price (high to low) * Price (low to high) * New products first * Personalized for viewer * Random **2. Fallback Criteria** * Define what happens when primary recommendations aren't available * Options include: * Random (default) * Best sellers * No criteria * Trending **3. Price Range Limits** * **Minimum Price:** Set a floor price for recommended products * **Maximum Price:** Set a ceiling price for recommended products * Helps ensure recommendations stay within desired price ranges **→ Status Section** * Control whether this recommendation section is active or inactive on your store * Simple toggle switch to enable/disable the section **→ Visual Editor** * Choose between Visual Editor or Visual Editor V3 for customizing your section's appearance * Select a template: * For stores with v2 templates, only Visual Editor will be visible * For stores with v3 templates, both Visual Editor and Visual Editor V3 will be visible * Make changes to your section's appearance by clicking the Visual Editor or Visual Editor V3 button based on your assigned template * Customize layout, styling and content through the editor interface * Configure template-specific settings by clicking the "Click Here" link * Select a default layout style: * Carousel * Horizontal Grid * Choose layout style for different screen sizes: * Small screens (mobile): Select Carousel or Horizontal Grid * Medium screens (tablet): Select Carousel or Horizontal Grid * Large screens (desktop): Select Carousel or Horizontal Grid **→ Segmentation** * Control which visitors see this recommendation section * Available targeting options: * All visitors (default) * First-time visitors * Returning visitors * Buyers * Is customer * Is not customer * Helps create personalized experiences for different user segments #### 6. Preview and Test Your Section → After configuring your section, you can preview and test it to ensure it works as expected: section preview ## Support If you need help with setting up or customizing Cross Sell sections, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to Create Frequently Bought Together Section Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-create-fbt-section The Frequently Bought Together section helps boost sales by recommending complementary products that are often purchased alongside the one currently being viewed. These smart, data-driven suggestions appear on the product page or during checkout, encouraging customers to add more items to their cart in a single click — increasing average order value and enhancing the overall shopping experience. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "AI Recommendations" section from the app menu → This will open the AI Recommendations Setup screen (as shown in the image), where you can create and manage personalized product recommendation sections powered by AI. These sections can be added to any page of your store to display relevant product suggestions based on user behavior. AI Recommendations Setup screen #### 3. Click on the "Create Section" button on the top-right corner of the AI Recommendations Setup screen * This will open the Create AI Recommendation Section screen (as shown in the image), where you can configure and customize your recommendation section. * Select the page where you want to display the section, choose the experience type, and give the section a title (e.g., Frequently Bought Together). * Under **Select Recommendation Type**, choose **Frequently Bought Together** to display complementary products that customers often purchase together. Create AI Recommendation Section screen #### 4. Click on the Save button to create the section * After selecting Frequently Bought Together as your recommendation type and filling out the necessary details, click on the Save button at the top right corner. * This will create the AI-powered recommendation section and the section detail page will open. * **Note:** The section is disabled by default—it won’t be visible to visitors until you enable it. Save Recommendation Section screen #### 5. Configure Your Section (Section Detail Page) → Once you've saved your section, you’ll be redirected to the Section Detail Page, which looks like this: Section Detail Page → Firstly Enable your section on your store by clicking on the enable section button. Here, you can fine-tune how your Frequently Bought Together recommendations behave on your store. Here’s a quick rundown of the editable options: **→ Basic Info** * **Section Name:** You can rename your section here if needed. * **Set Translations:** Customize how the title appears in different languages. **→ Recommendation Configuration** This section allows you to customize how product recommendations are generated for your Frequently Bought Together section. You can combine multiple methods to ensure accurate and dynamic suggestions. **1. Rule-Based Recommendation** * Click Configure to recommend products based on specific collection types, tags, product types, or vendors. * Ideal for category- or tag-specific bundling logic. **2. 1-1 Manual Recommendation** * Click Configure to manually select product recommendations for individual products. * Highest priority – these recommendations override others if set. **3. Advanced Configuration** → Includes extra options: * **Automatic Recommendation:** Enable this to let the system automatically suggest products based on your store's real-time sales data using proprietary algorithms. * **Enable Random Recommendations:** Use fallback random suggestions when no data is available. * **Show Sold Out Items as Recommendations:** If enabled, even out-of-stock items may appear in the suggestion list. **→ Excluded Products and Tags** * Excluded Products and Tags are used to remove specific products or tags from being recommended only within this particular section. * For detailed instructions on excluding products and tags, see our [How to Exclude Products and Tags guide](/for-developers/how-to-guides/how-to-exclude-products-and-tags). * **Note:** Excluded items won't appear in recommendations for this section only. To exclude items globally, configure them in your store settings. **→ Disabled Products and Tags** * Disabled Products and Tags are used to prevent the recommendation section from appearing on specific product pages or pages with specific tags. * For detailed instructions on disabling products and tags, see our [How to Disable Products and Tags guide](/for-developers/how-to-guides/how-to-disable-products-and-tags). * **Note:** When a product or tag is disabled, the entire recommendation section will not be shown on those product pages. To disable items globally, configure them in your store settings. **→ Whitelist Products and Tags** * Whitelist Products and Tags are used to restrict recommendations to only show specific products or products with specific tags within this section. * **Note:** When using whitelists, only the specified products or products with the specified tags will be eligible to appear as recommendations in this section. This provides precise control over what can be recommended. **→ Discount Configuration (Optional)** The Discount Configuration allows you to set up automatic discounts for products purchased together through this section. You can configure discounts in two ways: **1. Percentage Discount** * Set a percentage discount that will be applied to the section * Example: 10% off when buying recommended items together **2. Fixed Amount Discount** * Set a specific amount to be deducted from the total price * Example: \$20 off when purchasing recommended products together **→ Location & Position** * Choose where to show the section on your Shopify store: * Enter a div ID, class selector or xPath to specify the location (default: #shopify-section-product-template) * Set the position number to control where the section appears within that location (1 = first section) * Use breakpoint-based configuration for granular control across different screen sizes * For direct theme code placement, copy the provided widget code snippet * Optional: Enable "Require app block placement" to control section display in storefront **→ Advanced Configuration Settings** Configure additional settings to fine-tune how recommendations are generated and displayed: **1. Price Percentage Threshold** * Set a threshold percentage to control which products appear as recommendations * Example: Setting 200% means only products costing up to twice the main product's price will be shown * Helps maintain relevant price ranges in recommendations **2. Product Ranking Criteria** * Choose how recommended products should be ranked and ordered * Options include: * No criteria (default) * Bestsellers first * Price (high to low) * Price (low to high) * New products first * Personalized for viewer * Random **3. Fallback Criteria** * Define what happens when primary recommendations aren't available * Options include: * Random (default) * Best sellers * No criteria * Trending **4. Price Range Limits** * **Minimum Price:** Set a floor price for recommended products * **Maximum Price:** Set a ceiling price for recommended products * Helps ensure recommendations stay within desired price ranges **Note:** These advanced settings are optional. The recommendation system will work with default values if not configured. **→ Status Section** * Control whether this recommendation section is active or inactive on your store * Simple toggle switch to enable/disable the section from the section details page **→ Visual Editor** * Choose between Visual Editor or Visual Editor V3 for customizing your section's appearance * Select a template: * For stores with v2 templates, only Visual Editor will be visible * For stores with v3 templates, both Visual Editor and Visual Editor V3 will be visible * Make changes to your section's appearance by clicking the Visual Editor or Visual Editor V3 button based on your assigned template * Customize layout, styling and content through the editor interface * Configure template-specific settings by clicking the "Click Here" link * Select a default layout style: * Carousel * Horizontal Grid * Amazon like Bought Together * Choose layout style for different screen sizes: * Small screens (mobile): Select Carousel, Horizontal Grid, or Amazon like Bought Together layout * Medium screens (tablet): Select Carousel, Horizontal Grid, or Amazon like Bought Together layout * Large screens (desktop): Select Carousel, Horizontal Grid, or Amazon like Bought Together layout **→ Segmentation** * Control which visitors see this recommendation section * Available targeting options: * All visitors (default) * First-time visitors * Returning visitors * Buyers * Is customer * Is not customer * Helps create personalized experiences for different user segments #### 6. Preview and Test Your Section → After configuring your section, you can preview and test it to ensure it works as expected: section preview ## Support If you need help with setting up or customizing FBT sections, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to create Personalized for You section Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-create-pfy-section The Personalized for You section provides tailored product recommendations based on each visitor's browsing history, preferences, and behavior. This AI-powered feature helps create a personalized shopping experience that can significantly increase engagement and conversion rates. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "AI Recommendations" section from the app menu → This will open the AI Recommendations Setup screen, where you can create and manage personalized product recommendation sections powered by AI. AI Recommendations Setup screen #### 3. Click on the "Create Section" button on the top-right corner * This will open the Create AI Recommendation Section screen * Select the page where you want to display the section * Choose the experience type and give the section a title (e.g., Personalized for You) * Under **Select Recommendation Type**, choose **Personalized for You** to display AI-tailored recommendations Create AI Recommendation Section screen #### 4. Click on the Save button to create the section * After selecting Personalized for You as your recommendation type and filling out the necessary details, click on the Save button * This will create the section and open the section detail page * **Note:** The section is disabled by default until you enable it Save Recommendation Section screen #### 5. Configure Your Section (Section Detail Page) → Once saved, you'll be redirected to the Section Detail Page: Section Detail Page → Enable your section by clicking on the enable section button. Here are the key configuration options available: **→ Basic Info** * **Section Name:** Customize the name of your section * **Set Translations:** Add translations for different languages **→ Excluded Products and Tags** * Excluded Products and Tags are used to remove specific products or tags from being recommended only within this particular section. * For detailed instructions on excluding products and tags, see our [How to Exclude Products and Tags guide](/for-developers/how-to-guides/how-to-exclude-products-and-tags). * **Note:** Excluded items won't appear in recommendations for this section only. To exclude items globally, configure them in your store settings. **→ Disabled Products and Tags** * Disabled Products and Tags are used to prevent the recommendation section from appearing on specific product pages or pages with specific tags. * For detailed instructions on disabling products and tags, see our [How to Disable Products and Tags guide](/for-developers/how-to-guides/how-to-disable-products-and-tags). * **Note:** When a product or tag is disabled, the entire recommendation section will not be shown on those product pages. To disable items globally, configure them in your store settings. **→ Whitelist Products and Tags** * Whitelist Products and Tags are used to restrict recommendations to only show specific products or products with specific tags within this section. * **Note:** When using whitelists, only the specified products or products with the specified tags will be eligible to appear as recommendations in this section. This provides precise control over what can be recommended. **→ Location & Position** * Choose where to show the section on your Shopify store: * Enter a div ID, class selector or xPath to specify the location (default: #shopify-section-product-template) * Set the position number to control where the section appears within that location (1 = first section) * Use breakpoint-based configuration for granular control across different screen sizes * For direct theme code placement, copy the provided widget code snippet * Optional: Enable "Require app block placement" to control section display in storefront **→ Advanced Configuration Settings** Configure additional settings: **1. Product Ranking Criteria** * Choose how recommended products should be ranked and ordered * Options include: * No criteria (default) * Bestsellers first * Price (high to low) * Price (low to high) * New products first * Random **2. Fallback Criteria** * Define what happens when personalized recommendations aren't available * Options include: * Random (default) * Best sellers * Trending * No criteria **3. Price Range Limits** * **Minimum Price:** Set a floor price for displayed products * **Maximum Price:** Set a ceiling price for displayed products **→ Status Section** * Control whether this recommendation section is active or inactive on your store * Simple toggle switch to enable/disable the section **→ Visual Editor** * Choose between Visual Editor or Visual Editor V3 for customizing your section's appearance * Select a template: * For stores with v2 templates, only Visual Editor will be visible * For stores with v3 templates, both Visual Editor and Visual Editor V3 will be visible * Make changes to your section's appearance by clicking the Visual Editor or Visual Editor V3 button based on your assigned template * Customize layout, styling and content through the editor interface * Configure template-specific settings by clicking the "Click Here" link * Select a default layout style: * Carousel * Horizontal Grid * Choose layout style for different screen sizes: * Small screens (mobile): Select Carousel or Horizontal Grid * Medium screens (tablet): Select Carousel or Horizontal Grid * Large screens (desktop): Select Carousel or Horizontal Grid **→ Segmentation** * Control which visitors see this recommendation section * Available targeting options: * All visitors (default) * First-time visitors * Returning visitors * Buyers * Is customer * Is not customer * Helps create personalized experiences for different user segments #### 6. Preview and Test Your Section → After configuration, preview and test the section to ensure it works as expected: section preview ## Support If you need help with setting up or customizing Personalized for You sections, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to create Promoted Products section Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-create-promoted-products-section The Promoted Products section allows you to manually curate and display specific products that you want to highlight to your customers. This feature gives you complete control over which products appear in the recommendation section, making it perfect for showcasing new launches, seasonal items, or special promotions. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "AI Recommendations" section from the app menu → This will open the AI Recommendations Setup screen, where you can create and manage product recommendation sections. AI Recommendations Setup screen #### 3. Click on the "Create Section" button on the top-right corner * This will open the Create AI Recommendation Section screen * Select the page where you want to display the section * Choose the experience type and give the section a title (e.g., Special Collection, Promoted Collections etc...) * Under **Select Recommendation Type**, choose **Promoted Products** to manually select products Create AI Recommendation Section screen #### 4. Click on the Save button to create the section * After selecting Promoted Products as your recommendation type and filling out the necessary details, click on the Save button * This will create the section and open the section detail page * **Note:** The section is disabled by default until you enable it Section Detail Page #### 5. Configure Your Section (Section Detail Page) → Once saved, you'll be redirected to the Section Detail Page: Section Detail Page Configuration → Enable your section by clicking on the enable section button. Here are the key configuration options available: **→ Basic Info** * **Section Name:** Customize the name of your section * **Set Translations:** Add translations for different languages **→ Object Recommendation** * Click "Add Recommendation" button to define recommendation strategies * Enter page URL in the input field that appears * Once URL is entered, "Add Products" button will be enabled * Click "Add Products" to select products for the recommendation * Products will be displayed based on the defined recommendation strategies **→ Location & Position** * Choose where to show the section on your Shopify store: * Enter a div ID, class selector or xPath to specify the location (default: #shopify-section-product-template) * Set the position number to control where the section appears within that location (1 = first section) * Use breakpoint-based configuration for granular control across different screen sizes * For direct theme code placement, copy the provided widget code snippet * Optional: Enable "Require app block placement" to control section display in storefront **→ Advanced Configuration Settings** Configure additional settings: **1. Product Ranking Criteria** * Choose how recommended products should be ranked and ordered * Options include: * No criteria (default) * Bestsellers first * Price (high to low) * Price (low to high) * New products first * Personalized for viewer * Random **2. Fallback Criteria** * Define what happens when primary recommendations aren't available * Options include: * Random (default) * Best sellers * Trending * No criteria **3. Price Range Limits** * **Minimum Price:** Set a floor price for displayed products * **Maximum Price:** Set a ceiling price for displayed products **→ Status Section** * Control whether this recommendation section is active or inactive on your store * Simple toggle switch to enable/disable the section **→ Visual Editor** * Choose between Visual Editor or Visual Editor V3 for customizing your section's appearance * Select a template: * For stores with v2 templates, only Visual Editor will be visible * For stores with v3 templates, both Visual Editor and Visual Editor V3 will be visible * Make changes to your section's appearance by clicking the Visual Editor or Visual Editor V3 button * Customize layout, styling and content through the editor interface * Select a default layout style: * Carousel * Horizontal Grid * Choose layout style for different screen sizes: * Small screens (mobile): Select Carousel or Horizontal Grid * Medium screens (tablet): Select Carousel or Horizontal Grid * Large screens (desktop): Select Carousel or Horizontal Grid **→ Segmentation** * Control which visitors see this recommendation section * Available targeting options: * All visitors (default) * First-time visitors * Returning visitors * Buyers * Is customer * Is not customer * Helps create personalized experiences for different user segments #### 6. Preview and Test Your Section → After configuration, preview the section to ensure products are displaying correctly and the layout meets your requirements. ## Support If you need assistance setting up or customizing Promoted Products sections, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to create Recent Launch section Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-create-recent-launch-section The Recent Launch section showcases your store's newest products, helping customers discover fresh additions to your catalog. This feature is particularly effective for stores that regularly update their inventory and want to highlight their latest offerings to customers. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "AI Recommendations" section from the app menu → This will open the AI Recommendations Setup screen, where you can create and manage personalized product recommendation sections powered by AI. AI Recommendations Setup screen #### 3. Click on the "Create Section" button on the top-right corner * This will open the Create AI Recommendation Section screen * Select the page where you want to display the section * Choose the experience type and give the section a title (e.g., Recently Launched products / New Arrivals) * Under **Select Recommendation Type**, choose **Recent Launch** to display your newest products Create AI Recommendation Section screen #### 4. Click on the Save button to create the section * After selecting Recent Launch as your recommendation type and filling out the necessary details, click on the Save button * This will create the section and open the section detail page * **Note:** The section is disabled by default until you enable it Save Recommendation Section screen #### 5. Configure Your Section (Section Detail Page) → Once saved, you'll be redirected to the Section Detail Page: Section Detail Page → Enable your section by clicking on the enable section button. Here are the key configuration options available: **→ Basic Info** * **Section Name:** Customize the name of your section * **Set Translations:** Add translations for different languages **→ Recommendation Configuration** * **Show Sold Out Items as Recommendations:** If enabled, even out-of-stock items may appear in the suggestion list. **→ Location & Position** * Choose where to show the section on your Shopify store: * Enter a div ID, class selector or xPath to specify the location (default: #shopify-section-product-template) * Set the position number to control where the section appears within that location (1 = first section) * Use breakpoint-based configuration for granular control across different screen sizes * For direct theme code placement, copy the provided widget code snippet * Optional: Enable "Require app block placement" to control section display in storefront **→ Advanced Configuration Settings** Configure additional settings: **1. Product Ranking Criteria** * Choose how recommended products should be ranked and ordered * Options include: * No criteria (default) * Bestsellers first * Price (high to low) * Price (low to high) * Personalized for viewer * Random **2. Fallback Criteria** * Define what happens when primary recommendations aren't available * Options include: * Random (default) * Best sellers * Trending * No criteria **3. Price Range Limits** * **Minimum Price:** Set a floor price for displayed products * **Maximum Price:** Set a ceiling price for displayed products **→ Status Section** * Control whether this recommendation section is active or inactive on your store * Simple toggle switch to enable/disable the section **→ Visual Editor** * Choose between Visual Editor or Visual Editor V3 for customizing your section's appearance * Select a template: * For stores with v2 templates, only Visual Editor will be visible * For stores with v3 templates, both Visual Editor and Visual Editor V3 will be visible * Make changes to your section's appearance by clicking the Visual Editor or Visual Editor V3 button based on your assigned template * Customize layout, styling and content through the editor interface * Configure template-specific settings by clicking the "Click Here" link * Select a default layout style: * Carousel * Horizontal Grid * Choose layout style for different screen sizes: * Small screens (mobile): Select Carousel or Horizontal Grid * Medium screens (tablet): Select Carousel or Horizontal Grid * Large screens (desktop): Select Carousel or Horizontal Grid **→ Segmentation** * Control which visitors see this recommendation section * Available targeting options: * All visitors (default) * First-time visitors * Returning visitors * Buyers * Is customer * Is not customer * Helps create personalized experiences for different user segments #### 6. Preview and Test Your Section → After configuration, preview and test the section to ensure it works as expected. section preview ## Support If you need help with setting up or customizing Recent Launch sections, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to create Recently Viewed section Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-create-recently-viewed-section The Recently Viewed section helps enhance the shopping experience by displaying products that customers have previously viewed during their browsing session. This feature makes it easy for customers to return to items they were interested in, potentially increasing engagement and conversion rates. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "AI Recommendations" section from the app menu → This will open the AI Recommendations Setup screen, where you can create and manage personalized product recommendation sections powered by AI. AI Recommendations Setup screen #### 3. Click on the "Create Section" button on the top-right corner * This will open the Create AI Recommendation Section screen * Select the page where you want to display the section * Choose the experience type and give the section a title (e.g., Recently Viewed) * Under **Select Recommendation Type**, choose **Recently Viewed** to display products that visitors have previously viewed Create AI Recommendation Section screen #### 4. Click on the Save button to create the section * After selecting Recently Viewed as your recommendation type and filling out the necessary details, click on the Save button * This will create the section and open the section detail page * **Note:** The section is disabled by default until you enable it Save Recommendation Section screen #### 5. Configure Your Section (Section Detail Page) → Once saved, you'll be redirected to the Section Detail Page: Section Detail Page → Enable your section by clicking on the enable section button. Here are the key configuration options available: **→ Basic Info** * **Section Name:** Customize the name of your section * **Set Translations:** Add translations for different languages **→ Location & Position** * Choose where to show the section on your Shopify store: * Enter a div ID, class selector or xPath to specify the location (default: #shopify-section-product-template) * Set the position number to control where the section appears within that location (1 = first section) * Use breakpoint-based configuration for granular control across different screen sizes * For direct theme code placement, copy the provided widget code snippet * Optional: Enable "Require app block placement" to control section display in storefront **→ Advanced Configuration Settings** Configure additional settings: **1. Product Ranking Criteria** * Choose how recommended products should be ranked and ordered * Options include: * No criteria (default) * Bestsellers first * Price (high to low) * Price (low to high) * New products first * Personalized for viewer * Random **2. Fallback Criteria** * Define what happens when primary recommendations aren't available * Options include: * Random (default) * Best sellers * No criteria * Trending **3. Price Range Limits** * **Minimum Price:** Set a floor price for displayed products * **Maximum Price:** Set a ceiling price for displayed products **→ Status Section** * Control whether this recommendation section is active or inactive on your store * Simple toggle switch to enable/disable the section **→ Visual Editor** * Choose between Visual Editor or Visual Editor V3 for customizing your section's appearance * Select a template: * For stores with v2 templates, only Visual Editor will be visible * For stores with v3 templates, both Visual Editor and Visual Editor V3 will be visible * Make changes to your section's appearance by clicking the Visual Editor or Visual Editor V3 button based on your assigned template * Customize layout, styling and content through the editor interface * Configure template-specific settings by clicking the "Click Here" link * Select a default layout style: * Carousel * Horizontal Grid * Choose layout style for different screen sizes: * Small screens (mobile): Select Carousel or Horizontal Grid * Medium screens (tablet): Select Carousel or Horizontal Grid * Large screens (desktop): Select Carousel or Horizontal Grid **→ Segmentation** * Control which visitors see this recommendation section * Available targeting options: * All visitors (default) * First-time visitors * Returning visitors * Buyers * Is customer * Is not customer * Helps create personalized experiences for different user segments #### 6. Preview and Test Your Section → After configuration, preview and test the section to ensure it works as expected: section preview ## Support If you need help with setting up or customizing Recently Viewed sections, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to create Similar Products Section Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-create-similar-products-section The Similar Products section helps enhance product discovery by showcasing items that share characteristics with the product currently being viewed. This AI-powered recommendation section analyzes product attributes, categories, and user behavior patterns to suggest relevant alternatives, helping customers find exactly what they're looking for while increasing engagement and potential sales. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "AI Recommendations" section from the app menu → This will open the AI Recommendations Setup screen (as shown in the image), where you can create and manage personalized product recommendation sections powered by AI. These sections can be added to any page of your store to display relevant product suggestions based on user behavior. AI Recommendations Setup screen #### 3. Click on the "Create Section" button on the top-right corner of the AI Recommendations Setup screen * This will open the Create AI Recommendation Section screen (as shown in the image), where you can configure and customize your recommendation section. * Select the page where you want to display the section, choose the experience type, and give the section a title (e.g., Similar Products). * Under **Select Recommendation Type**, choose **Similar Products** to display products that share characteristics with the currently viewed item. Create AI Recommendation Section screen #### 4. Click on the Save button to create the section * After selecting Similar Products as your recommendation type and filling out the necessary details, click on the Save button at the top right corner. * This will create the AI-powered recommendation section and the section detail page will open. * **Note:** The section is disabled by default—it won't be visible to visitors until you enable it. Save Recommendation Section screen #### 5. Configure Your Section (Section Detail Page) → Once you've saved your section, you'll be redirected to the Section Detail Page, which looks like this: Section Detail Page → Firstly Enable your section on your store by clicking on the enable section button. Here, you can fine-tune how your Similar Products recommendations behave on your store. Here's a quick rundown of the editable options: **→ Basic Info** * **Section Name:** You can rename your section here if needed. * **Set Translations:** Customize how the title appears in different languages. **→ Recommendation Configuration** This section allows you to customize how product recommendations are generated for your Similar Products section. You can combine multiple methods to ensure accurate and dynamic suggestions. **1. 1-1 Manual Recommendation** * Click Configure to manually select similar products for individual items. * Highest priority – these recommendations override others if set. **2. Advanced Configuration (Expandable)** → Includes extra options: * **Automatic Recommendation:** Enable this to let the system automatically suggest products based on your store's real-time sales data using proprietary algorithms. * **Enable Random Recommendations:** Use fallback random suggestions when no similar products are found. * **Show Sold Out Items as Recommendations:** If enabled, even out-of-stock items may appear in the suggestion list. **→ Excluded Products and Tags** * Excluded Products and Tags are used to remove specific products or tags from being recommended only within this particular section. * For detailed instructions on excluding products and tags, see our [How to Exclude Products and Tags guide](/for-developers/how-to-guides/how-to-exclude-products-and-tags). * **Note:** Excluded items won't appear in recommendations for this section only. To exclude items globally, configure them in your store settings. **→ Disabled Products and Tags** * Disabled Products and Tags are used to prevent the recommendation section from appearing on specific product pages or pages with specific tags. * For detailed instructions on disabling products and tags, see our [How to Disable Products and Tags guide](/for-developers/how-to-guides/how-to-disable-products-and-tags). * **Note:** When a product or tag is disabled, the entire recommendation section will not be shown on those product pages. **→ Whitelist Products and Tags** * Whitelist Products and Tags are used to restrict recommendations to only show specific products or products with specific tags within this section. * **Note:** When using whitelists, only the specified products or products with the specified tags will be eligible to appear as recommendations in this section. **→ Location & Position** * Choose where to show the section on your Shopify store: * Enter a div ID, class selector or xPath to specify the location (default: #shopify-section-product-template) * Set the position number to control where the section appears within that location (1 = first section) * Use breakpoint-based configuration for granular control across different screen sizes * For direct theme code placement, copy the provided widget code snippet * Optional: Enable "Require app block placement" to control section display in storefront **→ Advanced Configuration Settings** Configure additional settings to fine-tune how recommendations are generated and displayed: **1. Product Ranking Criteria** * Choose how recommended products should be ranked and ordered * Options include: * Similarity score (default) * Price (high to low) * Price (low to high) * New products first * Bestsellers first * Random **2. Product Filter Criteria** * Filter which products can be recommended based on specific attributes * Options include: * Collection: Only recommend products from the same collection * Products: Only recommend specific products * Product Type: Only recommend products with matching product type * Vendor: Only recommend products from the same vendor * No criteria (default): No filtering applied **3. Fallback Criteria** * Define what happens when primary recommendations aren't available * Options include: * Random (default) * Best sellers * No criteria * Trending **4. Price Range Limits** * **Minimum Price:** Set a floor price for recommended products * **Maximum Price:** Set a ceiling price for recommended products * Helps ensure recommendations stay within desired price ranges **→ Status Section** * Control whether this recommendation section is active or inactive on your store * Simple toggle switch to enable/disable the section **→ Visual Editor** * Choose between Visual Editor or Visual Editor V3 for customizing your section's appearance * Select a template: * For stores with v2 templates, only Visual Editor will be visible * For stores with v3 templates, both Visual Editor and Visual Editor V3 will be visible * Make changes to your section's appearance by clicking the Visual Editor or Visual Editor V3 button based on your assigned template * Customize layout, styling and content through the editor interface * Configure template-specific settings by clicking the "Click Here" link * Select a default layout style: * Carousel * Horizontal Grid * Choose layout style for different screen sizes: * Small screens (mobile): Select Carousel or Horizontal Grid * Medium screens (tablet): Select Carousel or Horizontal Grid * Large screens (desktop): Select Carousel or Horizontal Grid **→ Segmentation** * Control which visitors see this recommendation section * Available targeting options: * All visitors (default) * First-time visitors * Returning visitors * Buyers * Is customer * Is not customer * Helps create personalized experiences for different user segments #### 6. Preview and Test Your Section → After configuring your section, you can preview and test it to ensure it works as expected: section preview ## Support If you need help with setting up or customizing Similar Products sections, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to create Slot Based Recommendation section Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-create-slot-based-recommendation-section The Slot Based Recommendation section allows you to create customized recommendation slots with different recommendation types. This feature gives you the flexibility to combine multiple recommendation strategies in a single section, helping you create more dynamic and targeted product displays. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "AI Recommendations" section from the app menu → This will open the AI Recommendations Setup screen, where you can create and manage personalized product recommendation sections powered by AI. AI Recommendations Setup screen #### 3. Click on the "Create Section" button on the top-right corner * This will open the Create AI Recommendation Section screen * Select the page where you want to display the section * Choose the experience type and give the section a title (e.g., You May Also Like, Featured Products, etc...) * Under **Select Recommendation Type**, choose **Slot Based Recommendation** to create customized recommendation slots Create AI Recommendation Section screen #### 4. Click on the Save button to create the section * After selecting Slot Based Recommendation as your recommendation type and filling out the necessary details, click on the Save button * This will create the section and open the section detail page * **Note:** The section is disabled by default until you enable it Section Detail Page #### 5. Configure Your Section (Section Detail Page) → Once saved, you'll be redirected to the Section Detail Page: Section Detail Page Configuration → Enable your section by clicking on the enable section button. Here are the key configuration options available: **→ Basic Info** * **Section Name:** Customize the name of your section * **Set Translations:** Add translations for different languages **→ Slot Configuration** * Create multiple slots with different recommendation types * For each slot, you can: * Set the recommendation type (Similar Products, Cross-sell, Trending, etc.) **→ Location & Position** * Choose where to show the section on your Shopify store: * Enter a div ID, class selector or xPath to specify the location (default: #shopify-section-product-template) * Set the position number to control where the section appears within that location (1 = first section) * Use breakpoint-based configuration for granular control across different screen sizes * For direct theme code placement, copy the provided widget code snippet * Optional: Enable "Require app block placement" to control section display in storefront **→ Advanced Configuration Settings** Configure additional settings: **1. Product Ranking Criteria** * Choose how recommended products should be ranked and ordered * Options include: * No criteria (default) * Bestsellers first * Price (high to low) * Price (low to high) * New products first * Personalized for viewer * Random **2. Fallback Criteria** * Define what happens when primary recommendations aren't available * Options include: * Random (default) * Best sellers * Trending * No criteria **3. Price Range Limits** * **Minimum Price:** Set a floor price for displayed products * **Maximum Price:** Set a ceiling price for displayed products **→ Status Section** * Control whether this recommendation section is active or inactive on your store * Simple toggle switch to enable/disable the section **→ Visual Editor** * Choose between Visual Editor or Visual Editor V3 for customizing your section's appearance * Select a template: * For stores with v2 templates, only Visual Editor will be visible * For stores with v3 templates, both Visual Editor and Visual Editor V3 will be visible * Make changes to your section's appearance by clicking the Visual Editor or Visual Editor V3 button * Customize layout, styling and content through the editor interface * Select a default layout style: * Carousel * Horizontal Grid * Choose layout style for different screen sizes: * Small screens (mobile): Select Carousel or Horizontal Grid * Medium screens (tablet): Select Carousel or Horizontal Grid * Large screens (desktop): Select Carousel or Horizontal Grid **→ Segmentation** * Control which visitors see this recommendation section * Available targeting options: * All visitors (default) * First-time visitors * Returning visitors * Buyers * Is customer * Is not customer * Helps create personalized experiences for different user segments #### 6. Preview and Test Your Section → After configuration, preview and test the section to ensure it works as expected and all slots are displaying correctly. ## Support If you need help with setting up or customizing Slot Based Recommendation sections, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to create Trending section Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-create-trending-section The Trending section showcases products that are currently popular among shoppers. This feature helps highlight in-demand items and can drive sales by leveraging social proof and creating urgency. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "AI Recommendations" section from the app menu → This will open the AI Recommendations Setup screen, where you can create and manage personalized product recommendation sections powered by AI. AI Recommendations Setup screen #### 3. Click on the "Create Section" button on the top-right corner * This will open the Create AI Recommendation Section screen * Select the page where you want to display the section * Choose the experience type and give the section a title (e.g., Trending Products) * Under **Select Recommendation Type**, choose **Trending** to display products that are currently popular Create AI Recommendation Section screen #### 4. Click on the Save button to create the section * After selecting Trending as your recommendation type and filling out the necessary details, click on the Save button * This will create the section and open the section detail page * **Note:** The section is disabled by default until you enable it Save Recommendation Section screen #### 5. Configure Your Section (Section Detail Page) → Once saved, you'll be redirected to the Section Detail Page: Section Detail Page → Enable your section by clicking on the enable section button. Here are the key configuration options available: **→ Basic Info** * **Section Name:** Customize the name of your section * **Set Translations:** Add translations for different languages **→ Recommendation Configuration** * **Show Sold Out Items as Recommendations:** If enabled, even out-of-stock items may appear in the suggestion list. **→ Location & Position** * Choose where to show the section on your Shopify store: * Enter a div ID, class selector or xPath to specify the location (default: #shopify-section-product-template) * Set the position number to control where the section appears within that location (1 = first section) * Use breakpoint-based configuration for granular control across different screen sizes * For direct theme code placement, copy the provided widget code snippet * Optional: Enable "Require app block placement" to control section display in storefront **→ Advanced Configuration Settings** Configure additional settings: **1. Product Ranking Criteria** * Choose how recommended products should be ranked and ordered * Options include: * No criteria (default) * Bestsellers first * Price (high to low) * Price (low to high) * New products first * Personalized for viewer * Random **2. Fallback Criteria** * Define what happens when primary recommendations aren't available * Options include: * Random (default) * Best sellers * No criteria * Trending **3. Price Range Limits** * **Minimum Price:** Set a floor price for displayed products * **Maximum Price:** Set a ceiling price for displayed products **→ Status Section** * Control whether this recommendation section is active or inactive on your store * Simple toggle switch to enable/disable the section **→ Visual Editor** * Choose between Visual Editor or Visual Editor V3 for customizing your section's appearance * Select a template: * For stores with v2 templates, only Visual Editor will be visible * For stores with v3 templates, both Visual Editor and Visual Editor V3 will be visible * Make changes to your section's appearance by clicking the Visual Editor or Visual Editor V3 button based on your assigned template * Customize layout, styling and content through the editor interface * Configure template-specific settings by clicking the "Click Here" link * Select a default layout style: * Carousel * Horizontal Grid * Choose layout style for different screen sizes: * Small screens (mobile): Select Carousel or Horizontal Grid * Medium screens (tablet): Select Carousel or Horizontal Grid * Large screens (desktop): Select Carousel or Horizontal Grid **→ Segmentation** * Control which visitors see this recommendation section * Available targeting options: * All visitors (default) * First-time visitors * Returning visitors * Buyers * Is customer * Is not customer * Helps create personalized experiences for different user segments #### 6. Preview and Test Your Section → After configuration, preview and test the section to ensure it works as expected: ## Support If you need help with setting up or customizing Trending sections, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to Disable Products and Tags from Recommendations Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-disable-products-and-tags This guide explains how to disable specific products and tags from appearing in your store's recommendations. You can disable items either within individual recommendation sections or globally across your entire store. # 1. Section-Level Disabling Learn how to disable products and tags from specific recommendation sections while keeping them available in other areas of your store. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "AI Recommendations" section from the app menu → This will open the AI Recommendations Setup screen (as shown in the image), where you can manage personalized recommendation sections for your store pages. AI Recommendation setup #### 3. Click on the section in which you want to disable products or tags → This will open the Section Detail page (as shown in the first image), where you can configure various settings for the selected section. → Scroll down to find the following options: **Disabled Products** – Add specific products you want to hide from this section only. **Disabled Tags** – Add tags to exclude all products associated with those tags from being recommended in this section. Section Detail page #### 4. Now you can add products and tags which you want to disable from the section recommendation → **Disabling Products** : Click on the "Add Product" button. It will open a screen (as shown in the figure below), where you can search for and add the products you want to disable from the section recommendation. Add disabled products → **Disabling Tags**: In the Disable Tags section, use the search bar to find the tags you want to disable from the section recommendation and select them. → Once done, click on the SAVE button to apply the changes. Add disabled tags # 2. Global Disabling Learn how to disable products and tags across your entire store. Products and tags disabled globally will not appear in any recommendation sections, checkout upsells, or other recommendation features. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "Settings" section from the app menu → This will open the Settings screen where various settings are available. Scroll down to find the "Recommendations" section, which contains the disabled products settings. Settings screen #### 3. Now you can add products and tags which you want to disable globally → **Disabling Products**: Click on the "Add Product" button. It will open a screen (as shown in the figure below), where you can search for and add the products you want to disable from all recommendations across your store. Add disabled products → **Disabling Tags**: In the Disable Tags section, use the search bar to find the tags you want to disable globally and select them. → Once done, click on the SAVE button to apply the changes. Products and tags disabled here will not appear in any recommendation sections throughout your store. Add disabled tags ## Support If you need help with configuring product or tag exclusions, contact our support team at [support@glood.ai](mailto:support@glood.ai) # How to Exclude Products and Tags from Recommendations Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-exclude-products-and-tags This guide explains how to exclude specific products and tags from appearing in your store's recommendations. You can exclude items either within individual recommendation sections or globally across your entire store. # 1. Section-Level Exclusions Learn how to exclude products and tags from specific recommendation sections while keeping them available in other areas of your store. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "AI Recommendations" section from the app menu → This will open the AI Recommendations Setup screen (as shown in the image), where you can manage personalized recommendation sections for your store pages. AI Recommendation setup #### 3. Click on the section in which you want to exclude products or tags → This will open the Section Detail page (as shown in the first image), where you can configure various settings for the selected section. → Scroll down to find the following options: **Excluded Products** – Add specific products you want to hide from this section only. **Excluded Tags** – Add tags to exclude all products associated with those tags from being recommended in this section. Section Detail page #### 4. Now you can add products and tags which you want to exclude from the section recommendation → **Excluding Products** : Click on the "Add Product" button. It will open a screen (as shown in the figure below), where you can search for and add the products you want to exclude from the section recommendation. Add excluded products → **Excluding Tags**: In the Exclude Tags section, use the search bar to find the tags you want to exclude from the section recommendation and select them. → Once done, click on the SAVE button to apply the changes. Add excluded tags # 2. Global Exclusions Learn how to exclude products and tags across your entire store. Products and tags excluded globally will not appear in any recommendation sections, checkout upsells, or other recommendation features. ## Implementation Steps #### 1. Open the "Glood Product Recommendations" app in your Glood.AI admin Open Glood Product Recommendations app #### 2. Click on the "Settings" section from the app menu → This will open the Settings screen where various settings are available. Scroll down to find the "Recommendations" section, which contains the excluded products settings. Settings screen #### 3. Now you can add products and tags which you want to exclude globally → **Excluding Products**: Click on the "Add Product" button. It will open a screen (as shown in the figure below), where you can search for and add the products you want to exclude from all recommendations across your store. Add excluded products → **Excluding Tags**: In the Exclude Tags section, use the search bar to find the tags you want to exclude globally and select them. → Once done, click on the SAVE button to apply the changes. Products and tags excluded here will not appear in any recommendation sections throughout your store. Add excluded tags ## Support If you need help with configuring product or tag exclusions, contact our support team at [support@glood.ai](mailto:support@glood.ai) # Set Default Variant in Variant Selector Source: https://docs.glood.ai/for-developers/how-to-guides/how-to-set-default-variant Learn how to configure the default variant selection in your product templates ## Setting Default Product Variant You can control which variant is selected by default in your product templates by implementing the `getDefaultProductVariant` hook in your JavaScript template object. ### Implementation Add the following hook to your JavaScript template object: ```javascript const templateObject = { // ... existing template configuration getDefaultProductVariant: (product) => { // Returns the first variant's ID by default return product.variants[0].id; } // ... rest of template configuration }; ``` ### Customization Examples You can customize the logic inside `getDefaultProductVariant` to select different variants based on your requirements. Here are some practical examples: ```javascript // Example 1: Return first in-stock variant ID getDefaultProductVariant: (product) => { const inStockVariant = product.variants.find( variant => variant.availableForSale && variant.quantityAvailable > 0 ); return (inStockVariant || product.variants[0]).id; } // Example 2: Return lowest priced variant ID getDefaultProductVariant: (product) => { const lowestPriceVariant = product.variants.reduce((lowest, variant) => { return (!lowest || variant.price < lowest.price) ? variant : lowest; }, null); return lowestPriceVariant.id; } // Example 3: Return variant ID with specific option getDefaultProductVariant: (product) => { const variantWithSize = product.variants.find(variant => variant.selectedOptions.some(option => option.name === 'Size' && option.value === 'Medium' ) ); return (variantWithSize || product.variants[0]).id; } ``` ### Parameters The hook receives the following parameter: * `product` (Object): The full product object containing all product data including variants ### Return Value The hook should return the variant ID (number) of the variant that you want to be selected by default when the product page loads. If the `getDefaultProductVariant` function returns `null`, it will have no effect on the variant selection in the store. The default variant selection behavior will remain unchanged. ## Complete Example Here's a complete example showing how to implement the default variant selection: ```javascript const productTemplate = { name: 'Product Template', getDefaultProductVariant: (product) => { // Find first available variant with quantity in stock const defaultVariant = product.variants.find(variant => variant.availableForSale && variant.quantityAvailable > 0 && !variant.currentlyNotInStock ); // Return the variant ID, falling back to first variant's ID if no available variants found return (defaultVariant || product.variants[0]).id; }, // ... other template configuration }; ``` This implementation will return the ID of the first available variant with stock as the default variant when customers view your product pages. # Introduction Source: https://docs.glood.ai/for-developers/how-to-guides/introduction Step-by-step guides for common Glood.AI implementation scenarios # How-to Guides Welcome to the Glood.AI how-to guides. These guides provide step-by-step instructions for implementing common use cases and features in your Glood.AI integration. Each guide focuses on a specific implementation scenario and provides detailed, practical steps to achieve your desired outcome. Whether you're adding AJAX cart recommendations or handling special product displays, you'll find clear instructions here. ## Available Guides * [AJAX Cart Implementation](/for-developers/how-to-guides/add-sections-to-mini-cart) - Learn how to add dynamic product recommendations to your store's mini cart Choose a guide from the sidebar to get started with your implementation. # Open Mini Cart on Add to Cart Source: https://docs.glood.ai/for-developers/how-to-guides/open-mini-cart-on-add-to-cart Learn how to enable the mini cart to automatically open when clicking the add to cart button ## Overview This guide will show you how to configure your sections to automatically open the mini cart when a customer clicks the add to cart button. This feature provides immediate feedback to customers and makes it easier for them to review their cart contents. ## Implementation ### Add Functions to Hook Add these functions to your template's JavaScript hooks: ```javascript loadAjaxCart: (bodyElem) => { const ajaxCart = bodyElem.querySelector('#drawer-cart'); return ajaxCart.classList.contains("drawer--visible"); }, // Unload recommendations when mini cart closes unloadAjaxCart: (bodyElem) => { const ajaxCart = bodyElem.querySelector('#drawer-cart'); return !ajaxCart.classList.contains("drawer--visible"); }, onCartOperationComplete: (args, utils, gloodUtils) => { setTimeout(() => { document.dispatchEvent(new CustomEvent('theme:cart:init', { bubbles: true })); document.dispatchEvent(new CustomEvent('theme:cart:reload', { bubbles: true })); window.dispatchDrawerEvent('drawer-cart', 'open'); }, 1000); } ``` ### Theme-Specific Implementation For this to work, you need to find and use the correct selectors and events from your theme's code: 1. Find the mini cart drawer element in your theme (usually has a class like `drawer-cart` or `mini-cart`) 2. Identify the correct class that indicates the cart is visible (often `drawer--visible` or similar) 3. Locate the theme's cart initialization and reload events 4. Find the correct drawer event dispatch method ## How It Works 1. The `loadAjaxCart` function checks if the mini cart is currently visible by looking for the `drawer--visible` class 2. The `unloadAjaxCart` function handles the opposite case, checking when the mini cart should be closed 3. When a cart operation completes, `onCartOperationComplete` is triggered: * It dispatches `theme:cart:init` event to initialize the cart * It dispatches `theme:cart:reload` event to refresh cart contents * It opens the mini cart drawer using `dispatchDrawerEvent` * A 1-second delay ensures smooth operation ## Support If you need help with implementing this feature, contact our support team at [support@glood.ai](mailto:support@glood.ai) # Integrations Source: https://docs.glood.ai/for-developers/integrations/introduction Learn about available integrations for Glood.AI recommendations # Integrations Glood.AI provides several integrations to enhance your product recommendations with additional functionality. ## Available Integrations ### Product Ratings Add product ratings and reviews from Judge.me to your recommendation sections. This helps build trust and provides social proof for recommended products. [Learn more about Product Ratings integration →](/for-developers/integrations/product-ratings) ### Quick View Enable quick product previews directly from recommendation sections. This allows customers to view product details without leaving the current page. [Learn more about Quick View integration →](/for-developers/integrations/quick-view) ### Wishlist Add wishlist functionality to products in recommendation sections. This lets customers save products for later directly from recommendations. [Learn more about Wishlist integration →](/for-developers/integrations/wishlist) ## Implementation Overview Each integration can be enabled and configured through: 1. Dashboard settings in your Glood.AI admin 2. Template customization using provided tags and filters 3. Optional custom styling to match your theme ## Getting Started Choose an integration from the sidebar to learn more about its specific implementation details and requirements. For general template customization, see the [Section Template](/for-developers/section-template/introduction) documentation. # Product Ratings Integration Source: https://docs.glood.ai/for-developers/integrations/product-ratings Learn how to integrate product ratings and reviews with Glood.AI recommendations # Product Ratings Integration This guide explains how to integrate Judge.me product ratings and reviews with Glood.AI recommendations. ## Overview Product ratings integration allows you to display review stars and ratings from Judge.me within your Glood.AI recommendation sections. ## Supported Review Apps Currently, we support: * Judge.me ## Implementation Steps ### 1. Enable Product Reviews Integration First, enable the product reviews integration in your Glood.AI dashboard: 1. Go to **Settings** in your Glood.AI admin 2. Navigate to the **Integrations** tab 3. Find **Judge.me** in the Product Reviews section 4. Click **Enable** ### 2. Add Review Tag to Template Add the `product_ratings` tag to your section template where you want the reviews to appear: ```liquid
{{ product.title }}

{{ product.title }}

{{ product.price | money_formatter: glood }}
{% product_ratings product_id: product.id %}
``` The `product_ratings` tag will automatically: * Generate the appropriate Judge.me widget markup * Handle the review data fetching * Display review stars and rating count ### Example Output When properly configured, the tag will generate HTML like this: ```html
``` ## Troubleshooting Common issues and solutions: * **Reviews not showing**: Verify that Judge.me is properly installed and configured in your store * **Missing ratings**: Ensure the product has reviews in Judge.me * **Widget not loading**: Check that Judge.me scripts are properly loaded in your theme ## Best Practices 1. Always test the integration with products that have reviews 2. Consider loading performance when adding reviews to many products 3. Provide fallback content when reviews are not available 4. Test the integration across different devices and screen sizes For more details on available tags and configuration options, see the [Template Tags](/for-developers/section-template/tags) documentation. # Quick View Integration Source: https://docs.glood.ai/for-developers/integrations/quick-view Learn how to integrate quick view functionality with Glood.AI recommendations # Quick View Integration This guide explains how to integrate quick view functionality with Glood.AI recommendations. ## Overview Quick view integration allows customers to quickly preview products from recommendation sections without leaving the current page. ## Implementation Steps Coming soon... # Wishlist Integration Source: https://docs.glood.ai/for-developers/integrations/wishlist Learn how to integrate wishlist functionality with Glood.AI recommendations # Wishlist Integration This guide explains how to integrate wishlist functionality with Glood.AI recommendations. ## Overview Wishlist integration allows you to add wishlist functionality to products displayed in your Glood.AI recommendation sections. ## Implementation Steps Coming soon... # Developer Guide Source: https://docs.glood.ai/for-developers/introduction Advanced integration guide for developers implementing Glood.AI # Developer Guide Welcome to the Glood.AI developer documentation. This guide covers advanced integration topics and requires familiarity with: * Shopify Liquid * HTML/CSS * JavaScript * REST APIs ## Topics Covered ### Template Customization Learn how to customize the appearance and behavior of Glood.AI recommendation sections using our template specification system. ### Programmatic Section Placement Understand how to dynamically insert and position Glood.AI sections in your store using code rather than the visual editor. ### Headless Integration Integrate Glood.AI recommendations into headless storefronts using our REST APIs. ### Hydrogen Support Step-by-step guide for implementing Glood.AI in Shopify Hydrogen stores. ### Custom Events Learn how to send custom tracking events to enhance Glood.AI's recommendation engine. ## Prerequisites Before diving into the developer documentation, you should: * Have Glood.AI installed on your Shopify store * Be familiar with Shopify theme development * Understand basic web development concepts * Have access to your store's theme code ## Getting Help If you run into any technical issues: * Check our API Reference documentation * Contact our developer support at [support@glood.ai](mailto:support@glood.ai) * Join our developer community Let's get started with implementing advanced Glood.AI features in your store! # Code Source: https://docs.glood.ai/for-developers/section-template/code Learn about the core components of a section template # Template Code Every section template in Glood.AI consists of several core files that work together to create a complete recommendation section. We use the [liquidJS](https://liquidjs.com/api/classes/Liquid.html) library to render Liquid code at the client side. For any queries regarding Liquid-specific data structures, filters, or tags, please refer to the [Shopify Liquid documentation](https://shopify.dev/docs/api/liquid/objects). ## Core Parts ### 1. Section Template The main template that defines the HTML structure and dynamic content rendering. It uses data structures defined in the [Object Definitions](/for-developers/section-template/schemas#object-definitions). #### Dynamic Implementation * Uses [translations object](/for-developers/section-template/schemas#translations-object) for text content * Accesses [glood object](/for-developers/section-template/schemas#glood-object) for store configuration * Renders [product data](/for-developers/section-template/schemas#product-array) in templates * Applies [template settings](/for-developers/section-template/schemas#template-object) for styling #### Liquid Filters Our filters used in the template: | Filter | Purpose | Parameters | Output | Example | | ------------------ | ------------------ | -------------------------------------------------------------------------------------- | --------------- | -------------------------------------------------------------- | | `money` | Price formatting | Number/String, `money_format`: Override default format | Formatted price | `19.99 \| money` → `"$19.99"` | | `optimize_image` | Image optimization | URL, `width`: Desired width, `height`: Desired height, `crop`: Crop mode | Optimized URL | `product.image \| optimize_image: width: 300, height: 300` | | `tracking_url` | Add tracking | Product, `section` (required): Section context, `ref_product_id`: Reference product ID | URL with params | `product \| tracking_url: section` | | `section_discount` | Format discount | Section, `money_format`: Price format, `locale`: Language code | Discount string | `section \| section_discount: money_format: shop.money_format` | ### 2. JS Hooks The JavaScript hooks system provides a powerful way to customize and extend section behavior. These hooks are called at specific points in the section's lifecycle, allowing you to implement custom functionality and handle various events. #### Core callBacks available | Method Name | Parameters | Description | Return | | ------------------------- | ----------------------------------------------------------------------- | ------------------------------------ | ------------------ | | `initSwiper` | `(Swiper, templateSettings, container, params, defaultSettings, utils)` | Initializes carousel functionality | `Swiper instance` | | `onSectionInit` | `(args, cb, gloodUtils)` | Called when section initializes | `void` | | `onSectionRenderComplete` | `(args, utils)` | Called after section rendering | `void` | | `onVariantChange` | `(args, utils)` | Handles variant selection | `void` | | `onSwatchChange` | `(args, utils)` | Handles swatch selection | `void` | | `validateCartOperation` | `(payload, recommendation, utils)` | Validates cart operations | `{payload, error}` | | `onCartOperationComplete` | `(args, utils)` | Called after cart operation | `void` | | `onProductDataReceived` | `(args, utils)` | Handles product data | `void` | | `getProductDetailsQuery` | `(recommendation, glood)` | Returns GraphQL query | `string` | | `transformProductData` | `(product, recommendation)` | Transforms product data | `object` | | `onSectionRendered` | `(section, products)` | Fired when section is fully rendered | `void` | | `onProductClick` | `(section, products, productId)` | Fired when product is clicked | `void` | | `onAddToCart` | `(section, products, items, response)` | Fired on successful cart addition | `void` | | `onVariantSelected` | `(section, products, productId, variantId)` | Fired when variant is selected | `void` | #### Example Implementation ```javascript // Example: Carousel Initialization Hook initSwiper: (Swiper, templateSettings, container, params) => { const carouselContainer = container.querySelector('._gai-crz-cnt'); if (!carouselContainer) return; return new Swiper(carouselContainer, { slidesPerView: templateSettings.breakpoints.small.cardsPerView, spaceBetween: templateSettings.breakpoints.small.gutter }); } // Example: Variant Change Hook onVariantChange: (args, utils) => { const { variant, product, container } = args; const priceElement = container.querySelector('._gai-prod-prc'); if (priceElement && variant.price) { priceElement.textContent = utils.formatMoney(variant.price); } } ``` ### 3. CSS Template The CSS template system provides a flexible way to style your recommendation sections. It uses Liquid templating for dynamic styling based on section settings and configuration. Both section template and CSS template have access to the same template object. For a complete reference of available objects and their structure, see [Template Objects](/for-developers/section-template/schemas#object-definitions). #### Structure and Organization The CSS is organized by components and breakpoints: * Base styles for mobile-first approach * Tablet styles (default: 768px) * Desktop styles (default: 1024px) **NOTE:** 1. The CSS follows a mobile-first approach, where base styles are written for mobile devices and then progressively enhanced for larger screens through media queries. This ensures optimal performance and maintainability while providing a solid foundation for responsive design. 2. These breakpoint values are customizable through the template settings. For detailed configuration options, see [`settings.breakpoints[].screenSize`](/for-developers/section-template/schemas#template-object) in the Template Object documentation. #### CSS Class Reference | Class Name | Purpose | Properties Controlled | Example Usage | | ------------------------------ | --------------------------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------ | | `._gai-grid` | Main product grid container | - Grid layout (`grid-template-columns`)
- Gap between items
- Responsive columns | Controls overall product grid layout | | `._gai-sec-tit` | Section title styling | - Font size
- Text alignment
- Line clamping
- Display properties
- Webkit box orientation | Main section heading appearance | | `._gai-prod-card` | Individual product card | - Background color
- Font family
- Max width (for bundle layout) | Container for each product | | `._gai-prod-img` | Product image container | - Aspect ratio
- Object-fit | Product image display | | `._gai-prod-img-wrap` | Image wrapper | - Aspect ratio | Controls image container proportions | | `._gai-prod-tit` | Product title | - Color
- Font weight
- Line clamping
- Text alignment
- Font size
- Font family | Product name styling | | `._gai-prod-vndr` | Vendor name | - Font size
- Display properties | Brand/vendor name display | | `._gai-prod-vndr--above-title` | Vendor name above title | - Display (block/none) | Vendor positioning above title | | `._gai-prod-vndr--below-title` | Vendor name below title | - Display (block/none) | Vendor positioning below title | | `._gai-prod-prc` | Product price | - Color
- Font family
- Font size | Main price display | | `._gai-prod-prc--compare-at` | Compare-at price | - Color
- Display
- Visibility conditions | Original/compare price styling | | `._gai-atc-btn` | Add to cart button | - Background color
- Text color
- Border
- Border radius
- Disabled state | Add to cart button styling | | `._gai-dis-cnt` | Discount container | - Justification
- Background color
- Display (flex/none) | Discount information wrapper | | `._gai-dis-txt` | Discount text | - Color
- Font size | Discount amount/percentage text | | `._gai-dis` | Discount badge | - Background color
- Text color
- Opacity | Discount label styling | | `._gai-container` | Main section container | - Background color | Section wrapper styling | | `._gai-bundle-products` | Bundle products grid | - Grid template columns | Layout for bundled products | | `._gai-skl-atc` | Skeleton add to cart | - Display visibility | Loading state for add to cart | | `._gai-bndl-sec` | Bundle section | - Justify content | Bundle section layout | | `._gai-amz-tit` | Amazon bundle title | - Text alignment | Title for Amazon-style bundles | #### Label Classes Special classes for product status and badges: | Class Name | Purpose | Customizable Properties | | ------------------ | ------------------- | ------------------------------------ | | `._gai-oos` | Out of stock badge | - Background color
- Text color | | `._gai-bestseller` | Bestseller badge | - Background color
- Text color | | `._gai-new` | New product badge | - Background color
- Text color | | `._gai-trending` | Trending item badge | - Background color
- Text color | #### Responsive Behavior The code includes media queries for different screen sizes: ```scss /* Mobile (default) */ [data-gai-section-id="{{ section_id }}"] ._gai-grid { grid-template-columns: repeat({{- settings.breakpoints.small.cards_per_view -}}, 1fr); gap: {{ settings.breakpoints.small.gutter }}px; } /* Tablet */ @media (min-width: {{ settings.breakpoints.medium.screen_size }}px) { /* Tablet-specific styles */ } /* Desktop */ @media (min-width: {{ settings.breakpoints.large.screen_size }}px) { /* Desktop-specific styles */ } ``` ## Support For help with template customization or troubleshooting, contact our support team at [support@glood.ai](mailto:support@glood.ai) # Filters Source: https://docs.glood.ai/for-developers/section-template/filters Reference for custom Liquid filters available in section templates ## format\_money **Description:**\ Formats numeric values into the store's currency format based on the money\_format setting from the glood object. **Parameters:** * `value` (Number/String): The numeric price value to be formatted * `money_format` (String): Override default money format * `intl_options` (Object, optional): Currency formatting configuration ```js { "en": { style: 'currency', currency: 'USD', minimumFractionDigits: 2, maximumFractionDigits: 2 } } ``` **Returns:**\ String - Formatted price string with currency symbol **Example:** ```liquid {{ product.price | format_money: glood.shop.money_format, template.settings.intl_options }} ``` **Use Cases:** * Formatting product prices * Displaying compare at prices * Showing discount amounts * Bundle total prices ## optimize\_image **Description:**\ Optimizes and resizes images for better performance using CDN parameters. **Parameters:** * `url` (String): The original image URL to be optimized * `width` (Number, optional): Desired image width * `height` (Number, optional): Desired image height * `crop` (String, optional): Crop mode for the image **Returns:**\ String - Optimized image URL with CDN parameters **Example:** ```liquid {{ product.featured_image.src | optimize_image: width: 300, height: 300 }} {{ product.image | optimize_image: width: 600, height: 600, crop: 'center' }} ``` **Use Cases:** * Product card images * Responsive image loading * Thumbnail generation * Banner image optimization ## product\_url **Description:**\ Generates a complete product URL with tracking parameters and localization. **Parameters:** * `handle` (String, required): Product handle/slug * `ref_product_id` (String, optional): Reference product ID * `layout` (String, optional): Section layout type **Returns:**\ String - Complete product URL with parameters **Example:** ```liquid {% assign url = root_url | product_url: product.handle, glood.product.id, section.layout %} {{ product.title }} ``` **Use Cases:** * Product link generation * Navigation building * Tracking implementation * Multi-language support ## product\_discount **Description:**\ Calculates and formats product discount information based on configuration. **Parameters:** * `discount_config` (Object, required): Discount configuration settings * `label_text` (String, required): Template for discount label * `money_format` (String, required): Store's money format * `intl_options` (Object, optional): Currency formatting configuration **Returns:**\ String - Formatted discount text **Example:** ```liquid {% assign discount = product | product_discount: section.discount_config, translations.discount_label_text, glood.shop.money_format, template.settings.intl_options %} {{ discount }} ``` **Use Cases:** * Sale badges * Discount displays * Price comparison * Promotional messaging ## save\_amount **Description:**\ Calculates and formats savings information based on discount configuration. **Parameters:** * `discount_config` (Object, required): Discount configuration settings * `save_text` (String, required): Template for savings text * `money_format` (String, required): Store's money format * `intl_options` (Object, optional): Currency formatting configuration **Returns:**\ String - Formatted savings text **Example:** ```liquid {{ product | save_amount: section.discount_config, translations.discount_save_text, glood.shop.money_format, template.settings.intl_options }} ``` **Use Cases:** * Savings displays * Discount comparison * Promotional messaging ## color\_value **Description:**\ Retrieves color code from a color map object. **Parameters:** * `color_mapping` (Object, required): Color map object **Returns:**\ String - Color code **Example:** ```liquid {{ value | color_value: template.settings.color_mapping }} ``` **Use Cases:** * Theme customization * Product attribute mapping * UI element styling ## to\_boolean **Description:**\ Converts any value to a boolean. **Parameters:** * None **Returns:**\ Boolean - True or False **Example:** ```liquid ``` **Use Cases:** * Conditional rendering * Boolean logic * UI state management ## image\_dimensions **Description:**\ Calculates responsive image dimensions based on template breakpoint settings. **Parameters:** * `breakpoints` (Object, required): Template breakpoint settings **Returns:**\ Object - Object containing calculated dimensions **Example:** ```liquid {{ client_info.client_width | image_dimensions: template.settings.breakpoints }} ``` **Use Cases:** * Responsive image loading * UI element sizing * Image optimization ## default **Description:**\ Provides a default value if the input is null, undefined or empty. **Parameters:** * `default_value` (Any, required): Value to use if input is empty **Returns:**\ Any - Original value or default value **Example:** ```liquid {{ template.settings.product_card.min_quantity | default: 1 }} {{ translations.oos_text | default: 'Out of stock' }} ``` **Use Cases:** * Setting default quantities * Fallback text * Configuration defaults * Error prevention ## Error Handling | Error | Description | Solution | | ------------------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | | Invalid Price Format | Price value is null or not a number | 1. Use the default filter to set a fallback value (0)
2. Apply money filter to format the price | | Missing Image Dimensions | Width/height not specified for image optimization | 1. Always specify width and height parameters
2. Use default dimensions (300x300) if not provided | | Invalid Tracking Parameters | Missing required section context | 1. Check if section ID exists
2. Verify product handle is present
3. Fall back to standard product URL if missing | | Invalid Discount Configuration | Missing money format or invalid discount structure | 1. Ensure shop money format is provided
2. Validate discount configuration before applying | These errors require proper handling to: * Prevent template rendering failures * Maintain consistent price display * Ensure proper image loading * Keep tracking functionality intact ## Notes * All filters are available in both section templates and CSS templates * Some filters require specific objects from the template context * Filter parameters marked as required must be provided for the filter to work correctly * See [Object Definitions](/for-developers/section-template/schemas#object-definitions) for details about input objects ## Support For help with template customization or troubleshooting, contact our support team at [support@glood.ai](mailto:support@glood.ai) # Hooks Source: https://docs.glood.ai/for-developers/section-template/hooks Complete guide to hooks in Glood.AI section templates # Template Hooks ## Hook Lifecycle Flow ### 1. Section Initialization Phase * `onSectionInit` is called when section is first created * Sets up initial state and variables * Configures section parameters * Registers event listeners ### 2. Data Fetching Phase * `getProductDetailsQuery` is called to prepare GraphQL query * Defines required product fields * Sets up query variables * Configures custom data requirements * Sets up filtering parameters ### 3. Data Processing Phase * `postProductFetch` processes raw product data * Filters products if needed * Adds computed properties * Transforms data structure * `transformProductData` transforms individual product data * Normalizes data format * Adds custom fields * Prepares for rendering ### 4. Rendering Phase * `afterSectionRendered` is called once section is rendered on the page and ready to be used. **Note:** This is an optional hook, if you want to perform certain task, you can add your logic in this hook. * `initSwiper` (if carousel is enabled) * Configures carousel settings * Sets up navigation * Initializes responsive behavior * Sets up pagination ### 5. Interaction Phase * `onVariantChange` handles variant selection **Note:** This is an optional hook, if you want to perform certain task, you can add your logic in this hook. * `onSwatchChange` handles swatch interactions **Note:** This is an optional hook, if you want to perform certain task, you can add your logic in this hook. ### 6. Cart Operation Phase * `beforeAddToCart` validates cart operations * Validates product selection * Modifies cart payload * Handles quantity validation * `afterAddToCart` handles post-cart updates **Note:** This is an optional hook, if you want to perform custom logic, you can setup your logic in this hook. {/* ### 7. Cleanup Phase - Cleanup operations when section is removed/updated - Remove event listeners - Clear custom elements - Reset state if needed - Clear timers/intervals - Free up resources */} ## Available Hooks ### 1. onSectionInit **Purpose:**\ Primary initialization hook called when a section is first created. **Parameters:** 1. `args` contains: * `recommendation` object which includes: * [`section`](/for-developers/section-template/schemas#section-object) containing section ID, layout type, title, and discount configuration * Array of [`products`](/for-developers/section-template/schemas#product-array) with product data * `engine` object containing: * Engine name and version * Engine-specific configuration * `initEnginePayload` containing engine initialization data 2. `cb` (Callback Function): * Receives the processed recommendation object * Used to handle initialization completion * No return value expected 3. `gloodUtils` provides: | Function | Description | | ----------------------- | ---------------------------------------------------------------- | | `formatMoney` | Formats price values according to store's money format | | `optimizeImage` | Optimizes image URLs with specified dimensions and crop settings | | `getVariantFromOptions` | Finds a variant based on selected options | | `findVariantById` | Retrieves a variant using its ID | | `getSelectedVariant` | Gets currently selected variant for a product | | `getDefaultVariant` | Returns the default/first available variant | | `addToCart` | Handles adding items to cart with proper validation | | `updateCart` | Updates existing cart items (quantity, properties) | | `getProductUrl` | Generates product URL with tracking parameters | | `getDiscountedPrice` | Calculates discounted price based on rules | | `formatDiscount` | Formats discount text with proper currency/percentage | | `getTranslation` | Retrieves translated text with fallback support | | `trackEvent` | Sends tracking events to analytics | | `refreshSection` | Re-renders section with updated data | | `showNotification` | Displays toast/notification messages | **Example:** ```javascript onSectionInit: (args, cb, gloodUtils) => { const { recommendation, engine, initEnginePayload } = args; cb({ recommendation, engine, initEnginePayload, }); } ``` **Use Cases:** * Section configuration * State initialization * Event listener setup * Feature initialization * Engine configuration ### 2. getProductDetailsQuery **Purpose:**\ Builds the GraphQL query for fetching product data. **Parameters:** 1. `recommendation` contains: * [`section`](/for-developers/section-template/schemas#section-object) object with: * `id` (number): Unique section identifier * `layout` (String): Section layout type * `discount_config` (Object): Discount settings * `widget_message` (String): Custom message template * `products` (Array): Currently loaded products * `template` (Object): Template-specific settings 2. `glood` provides: * `shop` object containing: * `money_format` (String): Store currency format * `locale` (String): Store language code * `product` object with: * `id` (String): Current product context (format: "gid://shopify/Product/{id}") * `handle` (String): Product URL handle * `localization` settings for: * Currency formatting * Language preferences * Regional settings **Returns:**\ GraphQL query string containing required product fields **Example:** ```javascript getProductDetailsQuery: (recommendation, glood) => { return ` featuredImage { url } handle id title availableForSale priceRange { minVariantPrice { amount currencyCode } } compareAtPriceRange { minVariantPrice { amount currencyCode } } variants(first: 250) { nodes { id price { amount currencyCode } availableForSale // ... other variant fields } } `; } ``` **Use Cases:** * Product data fetching * Field selection * Query customization * Data filtering * Performance optimization ### 3. postProductFetch **Description:**\ Processes raw product data after fetching. Allows for data transformation and enrichment before rendering. **Parameters:** * `args` (Object): * `products` (Array): Raw product data array * `recommendation` (Object): Section configuration * `template` (Object): Template settings * `utils` (Object): Helper functions **Returns:**\ Array - Processed product data **Example:** ```javascript postProductFetch: (args, utils) => { const { products, recommendation, template } = args; return products.map(product => ({ ...product, formattedPrice: utils.formatMoney(product.price), hasDiscount: product.compare_at_price > product.price, isAvailable: product.variants.nodes[0].availableForSale, imageUrl: utils.optimizeImage(product.featured_image, template.settings) })); } ``` **Use Cases:** * Price formatting * Discount calculations * Image optimization * Availability checks * Data enrichment ### 4. transformProductData **Purpose:**\ Transforms raw GraphQL product data into template-friendly format. **Parameters:** 1. `product` (Raw GraphQL data) contains: * Basic information: * `id` (String): GraphQL product ID (format: "gid://shopify/Product/{id}") * `handle` (String): Product URL handle * `title` (String): Product title * `vendor` (String): Product vendor * Images: * `featuredImage` (Object): Main product image * `images` (Object): Additional product images * Pricing: * `priceRange` (Object): Min/max prices * `compareAtPriceRange` (Object): Original prices * Variants: * `variants` (Object): Product variants data * `variantsCount` (Object): Total variants count * Options: * `options` (Array): Product options * `selectedOptions` (Array): Default selections * Status: * `availableForSale` (Boolean): Stock status * `tags` (Array): Product tags 2. `recommendation` provides: * [`section`](/for-developers/section-template/schemas#section-object) settings: * Display configuration * Pricing rules * Layout settings * Tracking configuration **Returns:**\ [`Product`](/for-developers/section-template/schemas#product-object) object containing: * Normalized product data * Formatted prices * Processed images * Structured variants * Computed fields **Example:** ```javascript transformProductData: (product, recommendation, utils) => { return { ...product, trackingData: utils.generateTrackingData(product, recommendation), variants: product.variants.map(variant => ({ ...variant, formattedPrice: utils.formatMoney(variant.price), isAvailable: variant.inventory_quantity > 0 })), labels: utils.generateProductLabels(product, recommendation.settings) }; } ``` **Use Cases:** * Tracking setup * Variant processing * Label generation * Price formatting * Custom field addition ### 5. initSwiper **Purpose:**\ Initializes and configures the carousel/slider functionality for sections using Swiper.js. **Parameters:** 1. `Swiper` (Constructor Class): * Swiper.js constructor * Used to create carousel instances * Handles slide functionality * Manages touch events * Controls navigation 2. `templateSettings` contains: * [`template.settings`](/for-developers/section-template/schemas#template-object) with: * `carousel` (Object): Carousel-specific settings * `breakpoints` (Object): Responsive configuration: * `small` (Object): Mobile settings * `medium` (Object): Tablet settings * `large` (Object): Desktop settings * Each breakpoint contains: * `screenSize` (Number): Width breakpoint * `cardsPerView` (Number): Visible slides * `gutter` (Number): Space between slides 3. `container` (HTMLElement): * Root section element * Contains carousel structure: * Wrapper element * Slide elements * Navigation buttons * Pagination dots 4. `params` contains: * [`recommendation`](/for-developers/section-template/schemas#recommendation-object): * `section` (Object): Section configuration * `products` (Array): Product data * Layout settings * Template-specific parameters 5. `defaultSettings` contains: * Default Swiper configuration: * Navigation options * Pagination settings * Autoplay configuration * Effect settings * Loop behavior 6. `utils` provides: * `merge`: Deep object merging * DOM manipulation helpers * Event handling utilities * Error handling functions **Returns:** * `Swiper` instance if initialization succeeds * `undefined` if initialization fails **Example:** ```javascript initSwiper: (Swiper, templateSettings, container, params, defaultSettings, utils) => { const carouselContainer = container.querySelector('._gai-crz-cnt'); if (!carouselContainer) { console.error('GLOOD.AI:ERROR: Carousel container not found for section', params.recommendation.section.id); return; } const settings = templateSettings?.carousel?.swiperConfig || {}; const swiperConfig = utils.merge(defaultSettings, settings); const breakpoints = Object.values(templateSettings.breakpoints).reduce( (acc, curr) => ({ ...acc, [curr.screenSize]: { slidesPerView: curr.cardsPerView, spaceBetween: curr.gutter, }, }), {} ); return new Swiper(carouselContainer, utils.merge(swiperConfig, { breakpoints })); } ``` ### 6. onVariantChange **Purpose:**\ Handles product variant selection changes and updates the UI. **Parameters:** 1. `args` contains: * `variant` information: * Basic details: ID, price, compare price * Image information with source and alt text * Availability status and quantity * Selected options (color, size, etc.) * Complete [`product`](/for-developers/section-template/schemas#product-object) data * DOM container element for the product card 2. `utils` provides: * Price formatting functions * Image update utilities * Price display update functions * Other UI manipulation helpers ### 7. onSwatchChange **Purpose:**\ Handles swatch selection events and updates product display accordingly. **Parameters:** 1. `args` contains: * `option` object with: * `name` (String): Option name (e.g., "Color", "Size") * `value` (String): Selected option value * `type` (String): Swatch type (color/size/material) * `swatchImage` (String, optional): Custom swatch image URL * [`product`](/for-developers/section-template/schemas#product-object) object containing: * `variants` (Array): All product variants * `options` (Array): Available option types * `selectedVariant` (Object): Currently selected variant * `images` (Array): Product images * `container` (HTMLElement): Product card DOM element 2. `utils` provides: * `updateSwatchUI`: Updates swatch selection state * `findMatchingVariant`: Finds variant by options * `updateProductImage`: Updates product image * `updatePriceDisplay`: Updates price display * Event tracking utilities **Returns:**\ void ### 8. onCartOperationComplete **Purpose:**\ Handles post-cart operation tasks and updates UI accordingly. **Parameters:** 1. `args` contains: * `operation` (String): Type of operation ('add'|'update'|'remove') * `response` object with: * `cart` (Object): Updated cart state * `items` (Array): Modified cart items * `total` (Number): New cart total * `count` (Number): Updated item count * [`section`](/for-developers/section-template/schemas#section-object) containing: * Section configuration * Template settings * Tracking data * `container` (HTMLElement): Section container 2. `utils` provides: * `updateCartUI`: Updates cart display * `showNotification`: Displays notifications * `updateInventory`: Updates stock status * Animation utilities 3. `gloodUtils` provides: * `trackCartEvent`: Analytics tracking * `formatCartData`: Data formatting * `updateShopifyCart`: Cart sync utilities * Store-specific helpers **Returns:**\ void ### 9. validateCartOperation **Purpose:**\ Validates and potentially modifies cart operations before execution. **Parameters:** 1. `payload` contains: * Array of items being added/modified: * Product identifier * Variant identifier * Quantity * Additional cart-specific data 2. `recommendation` provides: * [`section`](/for-developers/section-template/schemas#section-object) configuration * Product data * Template settings 3. `utils` and `gloodUtils`: * Validation helpers * Cart operation utilities * Format and transformation functions **Returns:** * Modified payload if valid * Error message if validation fails * Optional redirect URL ### 10. onProductDataReceived **Purpose:**\ Processes raw product data before transformation and rendering. **Parameters:** 1. `args` contains: * `products` array with raw product data: * `id` (number): Product identifier * `title` (String): Product title * `handle` (String): Product URL handle * `featuredImage` (Object): Main product image * `variants` (Array): Raw variant data * `options` (Array): Product options * `tags` (Array): Product tags * [`section`](/for-developers/section-template/schemas#section-object) object with: * Layout configuration * Discount settings * Template rules * Display settings * [`template`](/for-developers/section-template/schemas#template-object) containing: * Breakpoint settings * Card configuration * Image dimensions * Price display rules 2. `utils` provides: * `processImages`: Image optimization utilities * `formatProductData`: Data formatting helpers * `validateProducts`: Data validation functions * `enrichProductData`: Data enrichment utilities * `handleErrors`: Error handling functions **Returns:**\ void ### 11. loadAjaxCart **Purpose:**\ Determines when to load the AJAX cart section by checking if the AJAX cart is active. **Parameters:** 1. `bodyElem` (HTMLElement): * The document body element * Provides access to AJAX cart state **Returns:**\ `Boolean` - True if AJAX cart is active and should be loaded **Example:** ```javascript loadAjaxCart: (bodyElem) => { const ajaxCart = bodyElem.querySelector('cart-drawer'); return ajaxCart.classList.contains("active"); } ``` **Use Cases:** * Update recommendations dynamically when products are added to cart ### 12. unloadAjaxCart **Purpose:**\ Determines when to unload the AJAX cart section by checking if the AJAX cart is inactive. **Parameters:** 1. `bodyElem` (HTMLElement): * The document body element * Provides access to AJAX cart state **Returns:**\ `Boolean` - True if AJAX cart is inactive and should be unloaded **Example:** ```javascript unloadAjaxCart: (bodyElem) => { const ajaxCart = bodyElem.querySelector('cart-drawer'); return !ajaxCart.classList.contains("active"); } ``` **Use Cases:** * Control AJAX cart unloading timing * Clean up cart resources * Manage AJAX cart states * Handle cart closure events ## Hook Dependencies ### Required Utils * `formatMoney`: Price formatting * `getVariantById`: Variant lookup * `updateUrl`: URL manipulation * `merge`: Object merging * `imageOptimizer`: Image optimization ### Global Context * `glood`: Store configuration * `translations`: Text strings * `template`: Template settings * `section`: Section configuration * `utils`: Common utilities ### Hook Flow Dependencies * `transformProductData` needs data from `getProductDetailsQuery` * `afterSectionRendered` needs data from `transformProductData` * Cart operations need data from `onVariantChange` * Swiper needs container from `afterSectionRendered` ## Error Handling Each hook should handle these critical errors: 1. Carousel Initialization Errors ```javascript // Critical: Section won't render if carousel container is missing if (!carouselContainer) { console.error('GLOOD.AI:ERROR: Carousel container not found for section', params.recommendation.section.id); return; } ``` 2. Product Data Transformation Errors ```javascript // Critical: Invalid product data will break the section if (!product.variants?.nodes) { console.error('GLOOD.AI:ERROR: Invalid variant data structure for product', product.id); return { ...product, variants: [], available: false }; } ``` 3. GraphQL Query Response Errors ```javascript // Critical: Missing required fields will cause rendering issues if (!product.priceRange?.minVariantPrice?.amount) { console.error('GLOOD.AI:ERROR: Missing price data for product', product.id); return null; } ``` These errors require immediate attention as they: * Prevent sections from rendering correctly * Break core product functionality * Impact the shopping experience * Can cause JavaScript runtime errors ## Support If you need help with creating or customizing section templates, contact our support team at [support@glood.ai](mailto:support@glood.ai) # Introduction Source: https://docs.glood.ai/for-developers/section-template/introduction Learn about section templates in Glood.AI # Section Templates Section templates in Glood.AI are the building blocks for displaying product recommendations in your Shopify store. They function similarly to Shopify themes, allowing you to create custom layouts and designs for your product recommendations. ## What are Section Templates? Section templates are modular components that determine how your product recommendations are displayed. They are: 1. **Similar to Shopify Themes**: They follow the same principles as Shopify themes, using Liquid templating for dynamic content rendering. 2. **JavaScript-Powered**: Templates are loaded dynamically using JavaScript through the Glood.AI app embed, which handles recommendation fetching and rendering. 3. **Headless Compatible**: While templates are primarily for traditional Shopify stores, headless stores and Hydrogen apps can use our headless APIs instead. 4. **Multi-Component Structure**: Each template consists of: * Liquid templates for markup * JavaScript for interactivity * CSS for styling * Settings schema for customization * Translation strings for internationalization 5. **Flexible Rendering**: Templates can be rendered either on the frontend or backend, depending on your needs and configuration. 6. **Extensible**: We provide built-in Tags, Filters, and JavaScript Hooks for easy customization and third-party app integration. ## Template Components A basic section template includes these core components: ```liquid
{%- comment -%} Template markup {%- endcomment -%}
{% stylesheet %} /* Template styles */ {% endstylesheet %} {% javascript %} // Template JavaScript {% javascript %} ``` ## Template Features ### 1. Settings Schema * Configurable options for layout, styling, and behavior * Support for various input types (text, select, color, etc.) * Section-specific configurations ### 2. Translations * Multi-language support * Customizable text strings * Fallback handling for missing translations ### 3. Liquid Markup * Dynamic content rendering * Built-in filters for data manipulation * Conditional rendering and loops ### 4. JavaScript * Event handling * DOM manipulation * API integrations * Cart operations ### 5. CSS * Responsive layouts * Custom styling * Animation support * Theme compatibility ## Extension Points We provide several ways to extend and customize templates: 1. **Tags**: Custom Liquid tags for template functionality ```liquid {% product_ratings product_id: product.id %} ``` 2. **Filters**: Data manipulation filters ```liquid {{ product.price | format_money: glood.shop.money_format }} ``` 3. **Hooks**: JavaScript hooks for lifecycle events ```javascript initSection: (args, cb, utils) => { // Initialization logic } ``` ## Best Practices 1. **Performance** * Optimize images and assets * Minimize JavaScript execution time * Use efficient selectors * Implement lazy loading 2. **Compatibility** * Test across different themes * Ensure mobile responsiveness * Handle edge cases gracefully * Support various browser versions 3. **Maintainability** * Follow naming conventions * Document custom functionality * Use modular code structure * Implement error handling 4. **Accessibility** * Use semantic HTML * Add ARIA attributes * Ensure keyboard navigation * Provide alt text for images ## Libraries The section template system uses the following core libraries that you'll interact with when customizing templates: ### Core Libraries ```json "preact": "^10.22.1" ``` Our UI library for building interactive components. **Key Features**: * React-compatible API * Lightweight (3kB) * Virtual DOM * Component-based architecture [View Preact Documentation →](https://preactjs.com/) ```json "swiper": "^11.1.15" ``` Powers carousel functionality in templates. **Common Uses**: * Product carousels * Image galleries * Touch-enabled sliders * Responsive layouts [View Swiper Documentation →](https://swiperjs.com/) ```json "liquidjs": "^10.19.0" ``` Template engine for rendering Shopify-compatible templates. **Features**: * Shopify Liquid syntax * Custom tags and filters * Theme compatibility [View Liquid.js Documentation →](https://liquidjs.com/) ## Next Steps * Learn about [Filters](filters) for data manipulation * Explore [Tags](tags) for template functionality * Understand [Hooks](hooks) for JavaScript integration * Check out [Template Structure](template-structure) for detailed component information ## Support If you need help with creating or customizing section templates, contact our support team at [support@glood.ai](mailto:support@glood.ai) # null Source: https://docs.glood.ai/for-developers/section-template/schemas ## Understanding Core Components The template system uses seven essential building blocks that work together: 1. `glood` - Global store configuration 2. `products` - Product data management 3. `translations` - Multi-language support 4. `section` - Layout and behavior control 5. `template` - Appearance and styling settings 6. `clientInfo` - Device and viewport information 7. `config` - Integration and feature management ## `glood` Object The global object contains the store information required by the glood application to work properly on your store. ### Purpose and Usage The glood object provides essential store information and configuration settings that are used throughout the template. It's particularly important for: * Building correct store URLs * Formatting prices according to store settings * Handling localization ### Properties Reference ### Core Properties | Key | Type | Description | Default Value | | ----------------- | ------ | ----------------------------- | ------------- | | `shopify.rootUrl` | string | Base URL of the Shopify store | "/" | ### Localization Properties | Key | Type | Description | Default Value | | ------------------------------- | ------- | -------------------------------- | ------------- | | `localization.language.locale` | string | Language code | "en" | | `localization.language.primary` | boolean | Whether this is primary language | true | | `localization.language.rootUrl` | string | Base URL for language | "/" | | `localization.country` | string | Country code | "IN" | | `localization.currency` | string | Currency code | "INR" | ### Market Properties | Key | Type | Description | Default Value | | --------------- | ------ | ------------------------ | ------------- | | `market.id` | string | Unique market identifier | "27455750381" | | `market.handle` | string | Market handle | "in" | ### Shop Properties | Key | Type | Description | Default Value | | -------------------- | ------ | ------------------------ | ---------------------------------- | | `shop.domain` | string | Store's domain | "adarsh-test2-store.myshopify.com" | | `shop.id` | string | Shop identifier | "73540239597" | | `shop.productsCount` | number | Total number of products | 15 | | `shop.currencyRate` | string | Currency conversion rate | "1.0" | | `shop.moneyFormat` | string | Store's currency format | `"Rs. \{\{amount\}\}"` | | `shop.currencyCode` | string | Store's currency code | "INR" | ### Product Properties | Key | Type | Description | Default Value | | ------------------- | ------- | --------------------------- | --------------------------- | | `product.id` | number | Current product identifier | 8925145628909 | | `product.title` | string | Product title | "(Sample) Coconut Bar Soap" | | `product.handle` | string | Product handle | "soap" | | `product.available` | boolean | Product availability status | true | | `product.price` | number | Product price | 2000 | | `product.vendor` | string | Product vendor | "adarsh-test2-store" | | `product.type` | string | Product type | "" | ### Cart Properties | Key | Type | Description | Default Value | | ----------------------- | ------- | ------------------------------ | ------------- | | `cart.currency` | string | Cart currency | "INR" | | `cart.itemCount` | number | Number of items in cart | 16 | | `cart.totalPrice` | number | Total cart price | 752945 | | `cart.requiresShipping` | boolean | Whether cart requires shipping | true | | `cart.totalWeight` | number | Total cart weight | 250 | ### Config Properties | Key | Type | Description | Default Value | | ----------------- | ------ | -------------------- | ------------------------------------------------- | | `config.pageType` | string | Type of current page | "product" | | `config.pageUrl` | string | Current page URL | "adarsh-test2-store.myshopify.com/products/soap" | | `config.uid` | string | Unique identifier | "1737978965-cd63b5e8-9f99-4519-a4bc-b0dac71ccead" | **NOTE:** 1. All property keys are automatically converted to snake\_case when used in Liquid templates. For example: * `rootUrl` → `root_url` * `devicePixelRatio` → `device_pixel_ratio` * `moneyFormat` → `money_format` 2. If you want to get the content of glood object, you can access it through `window.glood` inside your store. Example usage in Liquid: ```liquid {{ glood.shop.moneyFormat }} {{ glood.localization.language.rootUrl }} ``` ## `products` Array The products array is a fundamental component that manages product data in the template system. ### Purpose and Usage The products array is responsible for: * Managing the collection of products to be displayed * Handling product data organization * Controls variant and option configurations * Managing pricing and inventory information * Providing media assets for product display ### Properties Reference | Key | Type | Description | Example | | ------------------------------------ | ------- | ------------------------ | ---------------------------------------------------------------------------------------------------- | | `id` | number | Product identifier | 8925145628909 | | `title` | string | Product name | "Coconut Bar Soap" | | `handle` | string | Product URL handle | "coconut-bar-soap" | | `vendor` | string | Product vendor name | "Natural Essentials" | | `tags` | array | Product tags | \["new", "organic", "bestseller"] | | `featuredImage.src` | string | Main product image URL | "[https://cdn.shopify.com/s/files/1/soap.jpg](https://cdn.shopify.com/s/files/1/soap.jpg)" | | `images[].src` | string | Additional image URLs | \["[https://cdn.shopify.com/s/files/1/soap-1.jpg](https://cdn.shopify.com/s/files/1/soap-1.jpg)"] | | `variants` | array | Product variants | \[See variant example below] | | `variants[].id` | string | Variant identifier | "40468007231725" | | `variants[].title` | string | Variant title | "Small / Blue" | | `variants[].availableForSale` | boolean | Stock availability | true | | `variants[].price` | string | Variant price | "19.99" | | `variants[].compareAtPrice` | string | Original price | "24.99" | | `variants[].image.src` | string | Variant image URL | "[https://cdn.shopify.com/s/files/1/blue-soap.jpg](https://cdn.shopify.com/s/files/1/blue-soap.jpg)" | | `variants[].selectedOptions` | array | Selected variant options | \[See options example below] | | `variants[].selectedOptions[].name` | string | Option name | "Size" | | `variants[].selectedOptions[].value` | string | Option value | "Small" | | `options` | array | Product options | \[See options example below] | | `options[].name` | string | Option name | "Size" | | `options[].optionValues` | array | Available option values | \["Small", "Medium", "Large"] | | `showComparePrice` | boolean | Show compare at price | true | | `firstVariant` | object | First available variant | \[See variant example above] | **NOTE:** Product array structure is not fixed and it can be changed. If you want to change product array, you can visit the [transformProductData hook](/for-developers/section-template/hooks#4-transformproductdata) in the hooks section. ## `translations` Object The translations object manages multi-language support and customizable text throughout the template. ### Purpose and Usage The translations object serves multiple purposes: * Provides language-specific text content * Enables customizable UI messages * Supports fallback text handling ### Properties Reference | Key | Type | Description | Default Value | | -------------------- | ------ | --------------------------------- | -------------------------------- | | `oosText` | string | Out of stock message | "Out of stock" | | `addedToCartText` | string | Success message for cart addition | "Added to cart" | | `atcErrorText` | string | Error message for cart addition | "Error adding to cart" | | `atcText` | string | Add to cart button text | "Add to cart" | | `totalPriceText` | string | Total price label | "Total price" | | `fbtAddToCartText` | string | Bundle add to cart text | "Add bundle to cart" | | `fbtAddedToCartText` | string | Bundle success message | "Bundle added to cart" | | `discountLabelText` | string | Discount label text | "Save {discount}" | | `discountSaveText` | string | Savings amount text | "Save {amount}" | | `fbtSaveText` | string | Bundle savings text | "Save {amount} with this bundle" | | `new` | string | New product badge text | "New" | | `trending` | string | Trending product badge text | "Trending" | | `bestseller` | string | Bestseller badge text | "Bestseller" | **NOTE:** The `new`, `trending`, and `bestseller` translations are used to display text inside badge on product cards. These badges help highlight product status or popularity to customers. The badges will automatically appear on products based on their tags or other criteria set in the template settings. ## `section` Object The section object controls how your recommendation section is structured and behaves. ### Purpose and Usage The section object is crucial for: * Defining the section's basic structure * Managing product display layouts * Controlling interactive features * Setting up titles and descriptions * Handling responsive behaviors ### Properties Reference | Key | Type | Description | Example | | ------------------- | ------- | -------------------------------- | ---------------------------------- | | `id` | number | Unique section identifier | 12345 | | `layout` | string | Section layout type | "horizontal\_grid" | | `location` | string | Section placement location | "product\_page" | | `position` | number | Section position order | 1 | | `title` | string | Section heading text | "You May Also Like" | | `template` | string | Template identifier | "default" | | `extra` | object | Additional section configuration | `{"maxProducts":4}` | | `discountConfig` | object | Discount settings | `{"type":"percentage","value":20}` | | `showDiscountLabel` | boolean | Display discount labels | true | | `translations` | object | Section-specific translations | `{"discountText":"Save"}` | | `templateV3` | boolean | Using template version 3 | true | | `sectionServeId` | string | Unique serve identifier | "s-12345-abcd-9876" | | `pageType` | string | Page section appears on | "product" | ## `template` Object The template object is your control center for visual styling and responsive behavior. ### Purpose and Usage The template object is responsible for: * Managing responsive breakpoints * Controlling visual styling * Handling product card appearance * Managing interactive behaviors * Implementing custom themes ### Properties Reference | Key | Type | Description | Example | Default Value | | ----------------------------------------------------- | ------- | ---------------------------------------- | ----------------------------------------- | ------------- | | `settings.breakpoints.small` | object | Mobile device settings | See breakpoint example | {} | | `settings.breakpoints.medium` | object | Tablet device settings | See breakpoint example | {} | | `settings.breakpoints.large` | object | Desktop device settings | See breakpoint example | {} | | `settings.breakpoints[].cardsPerView` | number | Number of cards per row | `2` (mobile), `3` (tablet), `4` (desktop) | 4 | | `settings.breakpoints[].gutter` | number | Space between cards in pixels | `10` (mobile), `20` (desktop) | 20 | | `settings.breakpoints[].justifyWidgetTitle` | enum | Title alignment | `"left"`, `"center"`, `"right"` | "left" | | `settings.breakpoints[].widgetTitleAlignment` | string | Widget title positioning | `"left"`, `"center"`, `"right"` | "left" | | `settings.breakpoints[].productTitleAlignment` | string | Product title alignment | `"left"`, `"center"`, `"right"` | "left" | | `settings.breakpoints[].comparePriceVisible` | boolean | Show/hide compare price | `true`, `false` | false | | `settings.breakpoints[].imageWidth` | number | Product image width | `300` | 300 | | `settings.breakpoints[].imageHeight` | number | Product image height | `300` | 300 | | `settings.breakpoints[].screenSize` | number | Breakpoint width threshold | `768` | 768 | | `settings.breakpoints[].maxSectionTitleRows` | number | Maximum section title rows | `2` | 2 | | `settings.breakpoints[].maxProductTitleRows` | number | Maximum product title rows | `2` | 2 | | `settings.breakpoints[].widgetTitleFontSize` | number | Section title font size | `24` | 24 | | `settings.breakpoints[].productTitleFontSize` | number | Product title font size | `16` | 16 | | `settings.breakpoints[].productVendorFontSize` | number | Vendor name font size | `14` | 14 | | `settings.productCard.vendorPosition` | enum | Vendor position | `"above"`, `"below"`, `"hidden"` | hidden | | `settings.productCard.addToCartMode` | enum | Add to cart behavior | `"card_hover"`, `"image_hover"`, `"fix"` | card\_hover | | `settings.productCard.imageHoverMode` | enum | Image hover effect | `"secondary"`, `"zoom"`, `"none"` | secondary | | `settings.productCard.imageObjectFit` | enum | Image fitting mode | `"contain"`, `"cover"` | contain | | `settings.productCard.priceCompareMode` | enum | Compare price position | `"before"`, `"after"`, `"hidden"` | before | | `settings.productCard.discountLabelPosition` | enum | Discount badge position | `"left"`, `"right"`, `"center"` | center | | `settings.productCard.variantSelectorType` | enum | Variant selection UI | `"integrated"`, `"selector"`, `"swatch"` | integrated | | `settings.productCard.showQuantitySelector` | boolean | Show quantity selector | `true`, `false` | false | | `settings.productCard.minQuantity` | number | Minimum order quantity | `1` | | | `settings.productCard.maxQuantity` | number | Maximum order quantity | `10` | | | `settings.productCard.imageAspectRatio` | string | Image aspect ratio | `"1:1"` | | | `settings.productCard.showVendor` | boolean | Show/hide vendor name | `true` | | | `settings.productCard.maxTitleLines` | number | Maximum product title lines | `2` | | | `settings.productCard.showDiscountPill` | boolean | Show/hide discount badge | `true` | | | `settings.labels` | array | Product label configurations | See labels example | | | `settings.labels[].name` | string | Label name | `"new"`, `"sale"` | | | `settings.labels[].textColor` | string | Label text color | `"#ffffff"` | | | `settings.labels[].backgroundColor` | string | Label background color | `"#ff0000"` | | | `settings.maxLabelsCount` | number | Maximum labels to show | `2` | | | `settings.swatches` | array | Swatch configurations | See swatches example | | | `settings.swatches[].type` | enum | Swatch type | `"color"`, `"size"` | | | `settings.swatches[].key` | string | Option key to match | `"color"`, `"size"` | | | `settings.swatches[].optionNames` | array | Valid option names | `["Color", "Colour"]` | | | `settings.carousel.library` | string | Carousel library to use | `"swiper"` | | | `settings.carousel.showPagination` | boolean | Show carousel pagination | `true`, `false` | false | | `settings.amazonBoughtTogether.priceCompareAtMode` | enum | Bundle price compare mode | `"before"`, `"after"` | before | | `settings.amazonBoughtTogether.buttonBackgroundColor` | string | Bundle button background | `"#000000"` | | | `translations` | object | Section-specific translations | See translations object | | | `settings.intlOptions` | object | Locale based currency formatting options | Intl DOM API options | {} | **NOTE:** 1. `addToCartMode` behavior options: * `card_hover`: Add to cart button slides up from the bottom of the card when hovering over the product card * `image_hover`: Add to cart button appears over the product image on hover * `fix`: Add to cart button is always visible below the product details 2. The `translations` key in this table refers to the same structure as the [translations object](/for-developers/section-template/schemas#translations-object). 3. Example intlOptions: ```json { "en": { "style": "currency", "currency": "USD", "minimumFractionDigits": 2, "maximumFractionDigits": 2, "currencyDisplay": "symbol" } } ``` This configuration allows for customization of: * Currency display format * Decimal place handling * Currency symbol presentation * Localized number formatting ## `clientInfo` Object The clientInfo object provides information about the client's device and viewport settings. ### Purpose and Usage The clientInfo object is essential for: * Responsive design decisions * Image optimization ### Properties Reference | Key | Type | Description | Example | | ------------------ | ------ | ----------------------------------------- | ---------------------------------------------------------------------- | | `clientWidth` | number | Current viewport width in pixels | 1440 | | `clientHeight` | number | Current viewport height in pixels | 900 | | `devicePixelRatio` | number | Device pixel ratio for image optimization | 2 | | `userAgent` | string | Browser's user agent string | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10\_15\_7) AppleWebKit/537.36" | ## `config` Object The config object manages global configuration settings for the recommendation section. ### Purpose and Usage The config object controls: * Integration enablement and management * Third-party app configurations * Feature availability * App-specific settings ### Properties Reference | Key | Type | Description | Possible Values | | ---------------------------- | ------ | --------------------------------- | ----------------------------------------------------------------------------------------------------------------- | | `config.integrationsEnabled` | array | List of enabled integration slugs | `["judge_me", "loox", "stamped", "rivyo", "okendo", "ali", "ssw", "ryviu", "spr", "lai", "junip"]` | | `config.productReviewApp` | string | Selected product review app name | `"judge_me", "loox", "stamped", "rivyo", "okendo", "ali", "ryviu", "lai", "junip" (or none if not using reviews)` | | `config.swatchApp` | string | Selected swatch app name | `"variant_options_swatch_king", "csp" (or none if not using swatches)` | ## Support For help with template customization or troubleshooting, contact our support team at [support@glood.ai](mailto:support@glood.ai) # Tags Source: https://docs.glood.ai/for-developers/section-template/tags Learn about available tags for extending section template functionality # Section Template Tags Tags in Glood.AI section templates provide additional functionality and integrations for your product recommendations. ## Available Tags ### Product Review Integration #### product\_ratings Integrates product reviews from supported review apps. **Parameters:** * `product_id`: The product ID to fetch reviews for **Supported Apps:** * Judge.me * Loox **Example:** ```liquid {% product_ratings product_id: product.id %} ``` **Output Examples:** For Judge.me: ```html
``` For Loox: ```html
``` ## Using Tags in Templates Here's an example of using tags in a product card: ```liquid
{{ product.title }}

{{ product.title }}

{{ product.price | money_formatter: glood }}
{% product_ratings product_id: product.id %}
``` ## Tag Configuration ### Review App Integration To use the review app integration: 1. Configure your review app in the Glood.AI dashboard 2. Add the appropriate review app scripts to your theme 3. Use the tag in your section templates The tag will automatically: * Detect the configured review app * Generate appropriate widget markup * Handle missing configurations gracefully ## Best Practices 1. Always check if review app is configured before using the tag 2. Handle cases where product ID might be missing 3. Consider loading performance of review widgets 4. Test integration with different review app configurations 5. Provide fallback content when review app is not available ## Error Handling The tag handles various error cases: * No review app configured: Shows HTML comment * Missing product data: Shows HTML comment * Unsupported review app: Shows HTML comment ## Support For questions about tags or custom tag development, contact our support team at [support@glood.ai](mailto:support@glood.ai) # Activate Glood.AI Source: https://docs.glood.ai/get-started/activate-glood-store Enable Glood.AI recommendations on your Shopify store After installing Glood.AI from the Shopify App Store, you'll need to activate it on your store using Shopify's Theme Editor. Follow these simple steps: ## Enable the App Embed Block 1. Go to your Shopify admin panel and navigate to **Online Store** > **Themes** 2. Find your current live theme and click **Customize** to open the Theme Editor 3. In the Theme Editor, click on **Theme Settings** at the bottom of the left navigation panel 4. Select **App embeds** from the settings menu 5. Find "Glood.AI Recommendations" in the list and toggle it **ON** 6. Click **Save** in the top-right corner to publish your changes The app embed block must be enabled for Glood.AI recommendations to appear on your store. If you switch themes later, you'll need to enable the app embed block again on the new theme. ## Verify Installation After enabling the app embed: 1. Visit your store's frontend 2. Check that Glood.AI recommendation sections appear where configured 3. Verify that product recommendations are loading correctly If you don't see recommendations appearing, try: * Refreshing your browser cache * Waiting a few minutes for changes to propagate * Checking that you saved the Theme Editor changes * Contacting [support@glood.ai](mailto:support@glood.ai) if issues persist ## Next Steps Once Glood.AI is activated, you can: * Create your first personalized recommendations section * Customize the appearance of recommendation widgets * Configure advanced settings and targeting rules * Track performance in the Glood.AI dashboard # Introduction to Glood.AI Source: https://docs.glood.ai/get-started/introduction Welcome to Glood.AI - The AI-powered Personalized Recommendation Engine for Shopify Plus stores ## Getting Started Follow these steps to start personalizing your Shopify Plus store: Install Glood.AI directly from the Shopify App Store to get started with AI-powered recommendations and upselling. Enable the Glood.AI application in your Shopify theme settings to start personalizing your store. Set up your first AI product recommendation section to start showing personalized suggestions to your customers. Use our Visual Editor or Templates to customize the look and feel of your recommendations to match your brand. Build your first product bundle to increase average order value and encourage multi-product purchases. Integrate personalized upsell recommendations into your cart page to boost sales. Add upsell offers to your checkout process to maximize conversion opportunities. Get up and running with Glood.AI in minutes Integrate Glood.AI programmatically using our APIs # Create First Personalized Recommendations Section Source: https://docs.glood.ai/guides/create-first-personalized-recommendations-section Learn how to add AI-powered product recommendations to your Shopify store ## Setup your store Learn how to configure and deploy personalized product recommendations on your Shopify store. ### Configure and preview To get started with Glood.AI recommendations, install our app from the [Shopify App Store](https://apps.shopify.com/recommendation-kit). Once installed, you'll have access to our dashboard where you can configure your recommendation sections and view analytics. Create your first recommendation section by selecting a recommendation type and placement: 1. From your Shopify admin, go to Apps > Glood.AI 2. Click "Create New Section" 3. Choose a recommendation type (e.g. "Similar Products", "Frequently Bought Together") 4. Select where you want the section to appear on your store 5. Customize the appearance and behavior of your recommendations ### Deploy your recommendations Once you've created a recommendation section, you'll need to add it to your theme. We provide multiple integration options: 1. Automatic installation through our app 2. Manual installation using our snippet 3. Headless integration using our API After adding the section to your theme, publish your changes for them to go live. You can preview the recommendations on your store before publishing. Our AI will automatically start personalizing recommendations based on your store's data and customer behavior. ## Enhance your recommendations Customize and optimize your recommendation sections to maximize their impact. Style your recommendation sections to match your store's branding. Use our API for custom implementations and headless commerce. Monitor engagement and conversion metrics for your recommendations. Explore AI-powered personalization and merchandising features. # Custom Web Pixel Events Source: https://docs.glood.ai/guides/glood-custom-web-pixel-events Learn about the custom Web Pixel events supported by Glood.AI ## Overview Glood.AI's Web Pixel extension includes custom events to provide enhanced personalization and analytics capabilities. This guide covers all the custom Web Pixel events that our platform supports. ### What are Glood.AI Custom Web Pixel Events? Glood.AI Custom Web Pixel events are specialized user interactions and activities that occur on your Shopify store. These events help track customer behavior specific to Glood.AI's personalization features, enabling: * Advanced customer preference tracking * Enhanced personalization capabilities * Detailed analytics and insights * Optimized recommendation performance ## Supported Events The following section details all the custom events supported by Glood.AI's Web Pixel extension. Events for tracking and storing customer preferences for personalization. ### Event: `glood:customer_preference` This event is triggered to store customer preferences for personalization purposes within the **Glood.AI** platform. ### Event Structure #### Event Name ```js glood:customer_preference ``` #### Payload The payload contains a structured object with the following fields: | Field | Type | Description | | ------------- | ---------------- | ------------------------------------------------------------- | | `preferences` | Array of Objects | An array of key-value pairs representing customer preferences | #### Preferences Object Each object in the `preferences` array contains: | Field | Type | Description | | ------- | ------ | --------------------------------------------------------------------------- | | `key` | String | The key representing the type of preference (e.g., "tags", "categories") | | `value` | String | A string representing the value associated with the key (e.g., "tag1,tag2") | ### Example Usage ```javascript Shopify.analytics.publish('glood:customer_preference', { preferences: [ { key: 'tags', value: "tag1,tag2" } ] }); ``` ### Purpose The primary purpose of this event is to store customer preferences in **Glood.AI** for: * **Personalization**: Enhance customer experiences with tailored content and recommendations * **Behavior Analysis**: Understand customer behavior through preference analysis * **Targeted Campaigns**: Create specific campaigns based on customer preferences ### Use Cases * Storing customer-selected tags, categories, or other preferences * Personalizing product recommendations or content on a Shopify store * Supporting segmentation and analytics within **Glood.AI** Events for tracking user interactions with Glood recommendation sections. ### Event: `glood:section:click` This event is triggered when a user clicks on a product within a Glood recommendation section. ### Event Structure #### Event Name ```js glood:section:click ``` #### Payload The payload contains information about the clicked product and section: | Field | Type | Description | | ---------------------- | -------------- | --------------------------------------------------------- | | `page` | String | The page ID where the click occurred | | `parent.productId` | String \| null | ID of the current product page (if applicable) | | `parent.variantId` | String \| null | ID of the current product variant (if applicable) | | `products[].productId` | String | ID of the clicked product | | `products[].variantId` | String | ID of the clicked product variant | | `section` | String | ID of the Glood recommendation section | | `sectionServeId` | String | Unique serve ID for the section render | | `requestId` | String | Unique request ID from the Glood recommendations API call | ### Example Usage ```javascript Shopify.analytics.publish('glood:section:click', { page: "55380", parent: { productId: null, variantId: null }, products: [{ productId: "4594143232103", variantId: "32389151621223" }], section: "216700", sectionServeId: "98ae55db-8e25-46be-956e-2024d820edb4", requestId: "1734410855-8dd0e6a0-4365-489b-b622-2fedca7129c0" }); ``` ### Event: `glood:section:add_to_cart` This event is triggered when a product is added to cart from a Glood recommendation section. ### Event Structure #### Event Name ```js glood:section:add_to_cart ``` #### Payload The payload contains information about the added product and section: | Field | Type | Description | | ---------------------- | -------------- | --------------------------------------------------------- | | `page` | String | The page ID where the add to cart occurred | | `parent.productId` | String \| null | ID of the current product page (if applicable) | | `parent.variantId` | String \| null | ID of the current product variant (if applicable) | | `products[].productId` | String | ID of the product added to cart | | `products[].variantId` | String | ID of the product variant added to cart | | `products[].quantity` | Number | Quantity of the product added to cart | | `section` | String | ID of the Glood recommendation section | | `sectionServeId` | String | Unique serve ID for the section render | | `requestId` | String | Unique request ID from the Glood recommendations API call | ### Example Usage ```javascript Shopify.analytics.publish('glood:section:add_to_cart', { page: "55380", parent: { productId: null, variantId: null }, products: [{ productId: "4594143232103", variantId: "32389151621223", quantity: 1 }], section: "216700", sectionServeId: "98ae55db-8e25-46be-956e-2024d820edb4", requestId: "1734410855-8dd0e6a0-4365-489b-b622-2fedca7129c0" }); ``` ### Purpose These events help track user interactions with Glood recommendation sections to: * **Measure Engagement**: Track clicks and conversions from recommendation sections * **Analyze Performance**: Evaluate the effectiveness of different recommendation strategies * **Improve Recommendations**: Use interaction data to enhance recommendation algorithms ### Use Cases * Tracking which recommended products users click on * Measuring conversion rates from recommendation sections * Analyzing user behavior patterns with recommended products # Introduction Source: https://docs.glood.ai/guides/introduction Start building awesome documentation in under 5 minutes ## Setup your development Learn how to update your docs locally and deploy them to the public. ### Edit and preview During the onboarding process, we created a repository on your Github with your docs content. You can find this repository on our [dashboard](https://dashboard.mintlify.com). To clone the repository locally, follow these [instructions](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) in your terminal. Previewing helps you make sure your changes look as intended. We built a command line interface to render these changes locally. 1. Install the [Mintlify CLI](https://www.npmjs.com/package/mintlify) to preview the documentation changes locally with this command: `npm i -g mintlify` 2\. Run the following command at the root of your documentation (where `mint.json` is): `mintlify dev` ### Deploy your changes Our Github app automatically deploys your changes to your docs site, so you don't need to manage deployments yourself. You can find the link to install on your [dashboard](https://dashboard.mintlify.com). Once the bot has been successfully installed, there should be a check mark next to the commit hash of the repo. [Commit and push your changes to Git](https://docs.github.com/en/get-started/using-git/pushing-commits-to-a-remote-repository#about-git-push) for your changes to update in your docs site. If you push and don't see that the Github app successfully deployed your changes, you can also manually update your docs through our [dashboard](https://dashboard.mintlify.com). ## Update your docs Add content directly in your files with MDX syntax and React components. You can use any of our components, or even build your own. Add flair to your docs with personalized branding. Implement your OpenAPI spec and enable API user interaction. Draw insights from user interactions with your documentation. Keep your docs on your own website's subdomain. # null Source: https://docs.glood.ai/how-it-works/bundles/introduction # null Source: https://docs.glood.ai/how-it-works/introduction # null Source: https://docs.glood.ai/how-it-works/recommendations/bought-together # null Source: https://docs.glood.ai/how-it-works/recommendations/introduction # null Source: https://docs.glood.ai/how-it-works/recommendations/similar-products # Introduction to Glood.AI Source: https://docs.glood.ai/introduction Glood.AI is an AI-powered Personalized Recommendation Engine for Shopify Plus. Learn how to get started. Hero Light Hero Dark ## Let's look at top features of Glood.AI Glood.AI is a complete Conversion Optimization Platform for Shopify Plus. It includes a Personalized Recommendation Engine, AI Search & Merchendizing, Upselling, Bundles, A/B Testing, Visual Editor and more. Preview your changes before you push to make sure they're perfect Preview your changes before you push to make sure they're perfect Preview your changes before you push to make sure they're perfect Preview your changes before you push to make sure they're perfect Preview your changes before you push to make sure they're perfect Preview your changes before you push to make sure they're perfect ## Setting up The first step to integrating Glood.AI's personalized recommendation engine is connecting your Shopify Plus store. Install Glood.AI using the Shopify App Store. Once that is done then you can start building your first AI Personalized Recommendation section to boost AoV & Conversions. Get your docs set up locally for easy development Preview your changes before you push to make sure they're perfect ## Make it yours Update your docs to your brand and add valuable content for the best user conversion. Customize your docs to your company's colors and brands Automatically generate endpoints from an OpenAPI spec Build interactive features and designs to guide your users Check out our showcase of our favorite documentation # CCPA Compliance Source: https://docs.glood.ai/legal/ccpa-compliance Learn how Glood.AI protects your privacy while powering personalization in compliance with CCPA # Glood and CCPA Compliance: Protecting Your Privacy While Powering Personalization At Glood, our mission is to help merchants create better shopping experiences through AI-powered personalization. We believe that delivering relevant product recommendations should never come at the expense of your privacy. That's why we are committed to full compliance with the California Consumer Privacy Act (CCPA) and its amendment, the California Privacy Rights Act (CPRA). For more information and queries regarding compliance, please contact us at **[support@glood.ai](mailto:support@glood.ai)** *** ## What is CCPA? The CCPA gives California residents enhanced rights and control over their personal information. Under this law, consumers have the right to: * **Know** what personal data is collected * **Access** and request deletion of personal data * **Opt-out** of the sale or sharing of personal data * **Correct** inaccurate personal information * **Limit** the use of sensitive personal information *** ## How Glood Collects and Uses Data Glood uses certain technologies and limited personal data to make product recommendations relevant and timely for shoppers: ### 1. Cookies for Personalization We use cookies and similar tracking technologies to: * Identify returning visitors * Display personalized product recommendations * Improve the accuracy and relevance of suggestions These cookies help us understand user preferences and behavior, allowing merchants to serve more tailored shopping experiences. ### 2. Collection of PII To deliver personalization, Glood may collect personally identifiable information (PII) such as: * Name * Email address * Purchase history * Browsing activity on the merchant's site This information is collected with your consent and is used solely to enhance your shopping experience. ### 3. No Sale of Personal Data **Glood does not sell your personal information to any third party.** All data we process is used exclusively for providing personalization services on behalf of the merchant you are shopping with. *** ## Shopify Consent API Integration We are fully integrated with the Shopify Consent API to ensure compliance with user choice: If you accept the site's use policy, personalization features will be enabled as described. If you do not accept, we will limit data collection and tracking accordingly. If consent has not yet been given, we may track activity for up to 24 hours to support essential session continuity — after which all personalization tracking is stopped unless consent is provided. *** ## Your Rights Under CCPA If you are a California resident, you can: * **Request access** to the personal information we have about you * **Ask for deletion** of your personal information (with certain legal/business exceptions) * **Opt-out** of the sale or sharing of your data (even though Glood does not sell data) * **Limit the use** of sensitive personal information To exercise your rights, please contact the merchant whose store you are visiting, or email us directly at **[privacy@glood.ai](mailto:privacy@glood.ai)**. *** ## Our Commitment to Privacy Glood's personalization technology is designed with privacy by default principles: We collect only the information needed to deliver relevant product recommendations We maintain technical and organizational safeguards to protect your data We respect and process consent signals, including the Global Privacy Control (GPC) standard *** ## In Summary Glood's personalization platform helps merchants improve conversion rates while respecting consumer privacy rights. We believe great shopping experiences and strong privacy protection can go hand in hand — and we build every feature with that philosophy at the core. For any privacy-related questions or to exercise your rights under CCPA, please contact us at **[privacy@glood.ai](mailto:privacy@glood.ai)** or **[support@glood.ai](mailto:support@glood.ai)**. # Data Processing Agreement Source: https://docs.glood.ai/legal/data-processing-agreement Standard Data Processing Agreement for Glood.AI services under GDPR # Data Processing Agreement (DPA) **Effective Date**: \[Date of Acceptance] This DPA incorporates the EU Standard Contractual Clauses (SCCs) for international data transfers, ensuring GDPR compliance for transfers from the EEA to the United States. This Data Processing Agreement ("**DPA**") forms part of the agreement between: **Data Controller**: The merchant/customer using Glood.AI services ("**Customer**" or "**Controller**") **Data Processor**: Glood.AI, operated by LoopClub Ltd ("**Glood**" or "**Processor**") (each a "**Party**" and collectively the "**Parties**") *** ## 1. Definitions In this DPA, the following terms shall have the meanings set out below: * **"Data Protection Laws"**: All applicable data protection laws including GDPR (EU 2016/679), CCPA, and any other applicable privacy regulations * **"Personal Data"**: Any information relating to an identified or identifiable natural person as defined under Data Protection Laws * **"Processing"**: Any operation performed on Personal Data, including collection, storage, use, disclosure, or deletion * **"Data Subject"**: The individual to whom Personal Data relates * **"Sub-processor"**: Any third party engaged by Processor to process Personal Data *** ## 2. Processing of Personal Data ### 2.1 Scope and Purpose **Purpose of Processing**: Providing AI-powered personalization, product recommendations, and analytics services for e-commerce optimization on Shopify stores. **Categories of Data Subjects**: * Website visitors * Customers of the Controller * Prospective customers **Types of Personal Data Processed**: * Identifiers (name, email, IP address) * Shopping behavior (browsing history, product views, cart data) * Transaction data (purchase history, order details) * Device information (browser type, device type, screen resolution) * Cookie identifiers (rk\_uid, rk.uid) **Duration of Processing**: For the duration of the service agreement plus any retention period required by law or as specified in Section 5. ### 2.2 Processor's Obligations The Processor shall: a) Process Personal Data only on documented instructions from the Controller, including transfers to third countries b) Ensure that persons authorized to process Personal Data have committed to confidentiality c) Implement appropriate technical and organizational measures to ensure security of processing d) Not engage sub-processors without prior written consent of the Controller e) Assist the Controller in responding to data subject requests f) Assist the Controller in ensuring compliance with security, breach notification, and assessment obligations g) Delete or return all Personal Data after the end of services, at the Controller's choice h) Make available all information necessary to demonstrate compliance and allow for audits *** ## 3. Controller's Obligations The Controller shall: a) Ensure that it has all necessary lawful bases for the processing of Personal Data b) Provide clear instructions regarding the processing of Personal Data c) Ensure compliance with all applicable Data Protection Laws d) Inform the Processor immediately of any changes to Data Protection Laws affecting processing e) Handle all communications with data subjects and supervisory authorities unless otherwise agreed *** ## 4. Security Measures ### 4.1 Technical and Organizational Measures The Processor implements and maintains the following security measures: **Technical Measures**: * Encryption at rest and in transit (TLS 1.2+ for transit, AES-256 for storage) * Access controls and authentication systems * Regular security updates and patches * Firewall and intrusion detection systems * Regular automated backups **Organizational Measures**: * Role-based access control (RBAC) * Confidentiality agreements with all personnel * Regular security training for staff * Audit logs of all data access * Incident response procedures ### 4.2 Security Compliance The Processor maintains compliance with: * Shopify Partner Agreement requirements * Industry standard security practices * Regular security assessments *** ## 5. Data Retention and Deletion ### 5.1 Retention Periods * **Real-time event data**: 365 days from collection * **Order/transaction data**: Duration of the service agreement * **Cookie data with consent**: 1 year * **Cookie data without consent**: 24 hours ### 5.2 Data Deletion Upon termination of services or upon Controller's request: * All Personal Data will be deleted within 2 days * Deletion confirmation will be provided to Controller * Exception: Data required to be retained by law *** ## 6. Data Subject Rights ### 6.1 Assistance with Requests The Processor shall assist the Controller in fulfilling data subject requests for: * Access to Personal Data * Rectification of Personal Data * Erasure of Personal Data * Restriction of processing * Data portability * Objection to processing ### 6.2 Automated Processing via Shopify The Processor has implemented Shopify's mandatory compliance webhooks: * `customers/data_request` - for access requests * `customers/redact` - for deletion requests * `shop/redact` - for shop data deletion *** ## 7. Sub-processors ### 7.1 Current Sub-processors Glood.AI does not currently engage any sub-processors for processing Personal Data. All processing occurs within Glood's own infrastructure. ### 7.2 Addition of Sub-processors The Processor shall: * Notify the Controller of any intended addition or replacement of sub-processors * Provide the Controller with 30 days to object to such changes * Ensure sub-processors are bound by equivalent data protection obligations *** ## 8. International Data Transfers ### 8.1 Standard Contractual Clauses For transfers of Personal Data from the European Economic Area (EEA), United Kingdom, or Switzerland to the United States, the Parties agree to be bound by the **Standard Contractual Clauses (Module 2: Controller to Processor)** pursuant to Commission Implementing Decision (EU) 2021/914 ("**SCCs**"). ### 8.2 SCC Implementation For purposes of the SCCs: * **Data Exporter**: The Controller (Merchant) * **Data Importer**: The Processor (Glood.AI) * **Competent Supervisory Authority**: The supervisory authority in the Data Exporter's jurisdiction * **Governing Law for SCCs**: Laws of the Data Exporter's jurisdiction ### 8.3 SCC Annexes The following information supplements the SCCs: **Annex I - Transfer Details** * **Categories of data subjects**: As specified in Section 2.1 of this DPA * **Categories of personal data**: As specified in Section 2.1 of this DPA * **Processing purposes**: Providing AI-powered personalization and recommendations for e-commerce * **Retention period**: As specified in Section 5 of this DPA **Annex II - Technical and Organizational Measures** * Encryption at rest (AES-256) and in transit (TLS 1.2 or higher) * Role-based access controls with multi-factor authentication * Regular security updates and vulnerability patches * Audit logging of all data access * Incident response procedures * Regular backups with encryption ### 8.4 Supplementary Measures In addition to the SCCs, the Processor implements these supplementary measures to ensure adequate protection: * **Encryption**: All Personal Data is encrypted using industry-standard encryption both at rest and in transit * **Access Controls**: Strict access limitations with logging and monitoring * **Legal Protections**: Commitment to challenge any unlawful government data requests * **Transparency**: Notification to Controller if legally compelled to disclose data (where permitted by law) ### 8.5 Transfer Impact Assessment The Processor has assessed the laws and practices of the United States and confirms that, with the supplementary measures in place, they do not impinge on the effectiveness of the SCCs. This assessment is available upon request. *** ## 9. Data Breach Management ### 9.1 Breach Notification In the event of a Personal Data breach, the Processor shall: * Notify the Controller without undue delay and within 48 hours of becoming aware * Provide details of the nature, scope, and impact of the breach * Describe measures taken to address the breach * Cooperate with the Controller in notifying supervisory authorities and data subjects ### 9.2 Breach Records The Processor maintains records of all Personal Data breaches, including: * Facts relating to the breach * Effects and consequences * Remedial action taken *** ## 10. Compliance Verification ### 10.1 Demonstration of Compliance To satisfy GDPR Article 28(3)(h) requirements, the Processor shall: a) **Provide Information**: Make available to the Controller, upon reasonable written request: * Documentation of security measures and data protection practices * Confirmation of compliance with this DPA and applicable Data Protection Laws * Summary reports of data processing activities relevant to the Controller b) **Compliance Methods**: The Controller may verify Processor's compliance through: * Review of Processor's security documentation and policies * Questionnaires or self-assessment forms provided by the Processor * Review of Shopify Partner Program compliance status * Third-party certifications or attestations obtained by the Processor (when available) ### 10.2 Limitations * Information requests shall be limited to once per twelve (12) month period unless required by Data Protection Laws * The Processor may redact confidential information not relevant to the Controller's data processing * All information shared is subject to confidentiality obligations * The Controller shall provide at least 30 days written notice for any compliance verification request ### 10.3 Costs * The first annual compliance verification request shall be at no cost to the Controller * Additional requests may be subject to reasonable fees based on the Processor's time and resources *** ## 11. Liability and Indemnification ### 11.1 Liability Each Party's liability under this DPA shall be subject to the limitations set forth in the main service agreement. ### 11.2 Indemnification Each Party shall indemnify the other against losses arising from its breach of this DPA or applicable Data Protection Laws. *** ## 12. Term and Termination ### 12.1 Duration This DPA shall remain in effect for the duration of the main service agreement. ### 12.2 Survival Sections relating to confidentiality, data deletion, and liability shall survive termination. *** ## 13. Miscellaneous ### 13.1 Governing Law This DPA shall be governed by the laws applicable to the main service agreement. ### 13.2 Amendments Amendments to this DPA must be made in writing and agreed by both Parties. ### 13.3 Severability If any provision is found invalid, the remaining provisions shall continue in effect. ### 13.4 Order of Precedence In case of conflict between this DPA and the main agreement, this DPA shall prevail regarding data protection matters. *** ## 14. Contact Information ### Data Processor Contact **Glood.AI - LoopClub Inc.**\ Data Protection Officer: Harshul Jain\ Email: [privacy@glood.ai](mailto:privacy@glood.ai)\ Support: [support@glood.ai](mailto:support@glood.ai) ### Data Controller Contact To be completed by the Customer: Company Name: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\ Contact Person: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\ Email: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\ Address: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ *** ## Signature By accepting Glood.AI's services or clicking "Accept" in the application, the Controller agrees to the terms of this Data Processing Agreement. **For Glood.AI (Data Processor)** Harshul Jain\ Founder & Data Protection Officer\ LoopClub Inc. / Glood.AI **For Customer (Data Controller)** Name: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\ Title: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\ Date: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ This DPA is designed to comply with GDPR Article 28 requirements. For specific legal advice regarding your data processing activities, please consult with a qualified data protection attorney. **Questions about this DPA?**\ Contact our Data Protection Officer at [privacy@glood.ai](mailto:privacy@glood.ai) or our support team at [support@glood.ai](mailto:support@glood.ai) # GDPR Compliance Source: https://docs.glood.ai/legal/gdpr-compliance Understanding how Glood.AI protects European users' data and ensures GDPR compliance # Glood and GDPR Compliance Privacy-First Personalization for European Users **Glood.AI is fully GDPR compliant** with all required documentation, technical measures, and processes in place. Glood.AI is committed to protecting the privacy and personal data of all users, including those in the European Union. We comply with the General Data Protection Regulation (GDPR) to ensure transparent, secure, and lawful processing of personal data while delivering AI-powered personalization for Shopify stores. For GDPR-related inquiries or to exercise your data rights, please contact our Data Protection Officer at **[privacy@glood.ai](mailto:privacy@glood.ai)** *** ## Our Data Protection Officer **Harshul Jain**, Founder and Data Protection Officer\ Email: **[privacy@glood.ai](mailto:privacy@glood.ai)** Our DPO oversees all data protection activities and ensures GDPR compliance across our operations. *** ## Legal Basis for Processing Glood.AI processes personal data based on: We have a contract with merchants (formalized through our DPA) to process their visitors' data for personalization services Processing is necessary for providing personalized shopping experiences that benefit both merchants and customers - fully documented in our Legitimate Interest Assessment (LIA) Our **Legitimate Interest Assessment (LIA)** has been conducted and documented, confirming that our processing is proportionate, necessary, and respects individuals' rights. *** ## How We Collect and Use Personal Data ### Types of Data Collected We may collect and process the following personal data through Shopify: * **Identifiers**: Name, email address, IP address * **Shopping Behavior**: Browsing history, product views, cart additions * **Transaction Data**: Purchase history, order details * **Device Information**: Browser type, device type, screen resolution ### Purpose of Processing All data is processed exclusively to: * Provide personalized product recommendations * Improve recommendation accuracy * Enhance the shopping experience * Generate anonymized analytics for merchants **We do not sell, rent, or share personal data with third parties for their own marketing purposes** *** ## Data Storage and Retention ### Storage Location Glood.AI servers are located in the United States. We implement appropriate safeguards for international data transfers to ensure your data remains protected according to GDPR standards. ### Retention Periods **365 days** Browsing behavior and interaction data **Contract duration** Purchase history retained while merchant contract is active After these periods, data is automatically deleted as per the terms and conditions of the Shopify Partner Program and Glood.AI's Privacy Policy. *** ## Compliance Documentation & Accountability ### Key GDPR Documentation Glood.AI maintains comprehensive GDPR compliance documentation: Complete inventory of all data processing activities as required by Article 30 Risk assessment for AI-powered personalization per Article 35 Documented balancing test for legitimate interests basis per Article 6 All compliance documentation is reviewed annually and updated when processing activities change. *** ## Technical and Organizational Measures We implement comprehensive security measures to protect your personal data: All stored data is encrypted using industry-standard encryption Strict role-based access controls limit data access to authorized personnel Comprehensive logging of all data access and processing activities ### Additional Safeguards * Regular security assessments and updates * Employee training on data protection * Secure development practices * Incident response procedures *** ## Your Rights Under GDPR As an EU resident, you have the following rights: ### 1. Right to Access Request a copy of your personal data we process. Contact **[privacy@glood.ai](mailto:privacy@glood.ai)** for data access requests, or submit through your merchant's Shopify store. We handle these requests via Shopify's customers/data\_request webhook. ### 2. Right to Rectification Correct inaccurate personal information through Shopify, as we receive PII data via the Shopify platform. ### 3. Right to Erasure ("Right to be Forgotten") Request deletion of your personal data, subject to legal obligations. Deletion requests are automatically processed through Shopify's customers/redact webhook. ### 4. Right to Restrict Processing Limit how we process your personal data in certain circumstances. ### 5. Right to Data Portability Receive your data in a structured, machine-readable format through Shopify's systems. ### 6. Right to Object Object to processing based on legitimate interests or for direct marketing. ### 7. Rights Related to Automated Decision-Making Glood.AI does not engage in automated decision-making that produces legal or similarly significant effects on individuals. *** ## Data Sharing and Sub-processors **We do not share any personally identifiable information (PII) with sub-processors** All data processing occurs within Glood.AI's secure infrastructure. We maintain full control over your data and do not rely on third-party processors for handling personal information. *** ## International Data Transfers When transferring data from the EU to our US-based servers, we ensure full GDPR compliance through: ### Legal Transfer Mechanism **Our DPA incorporates the EU Standard Contractual Clauses (Module 2: Controller to Processor) ensuring lawful data transfers from the EEA to the United States.** ### Comprehensive Safeguards * **Standard Contractual Clauses**: Full implementation of EU Commission Decision 2021/914 SCCs * **Technical Measures**: Encryption in transit (TLS 1.2+) and at rest (AES-256) * **Supplementary Measures**: Additional protections including access controls and legal challenge commitments * **Transfer Impact Assessment**: Documented assessment confirming SCCs effectiveness with our measures * **Shopify Framework**: Additional compliance through Shopify's data processing requirements *** ## Data Breach Notification Our DPA establishes clear breach notification procedures: ### Notification Timeline * **Within 48 hours**: Notification to affected merchants (Data Controllers) * **Immediate action**: Assessment of breach severity and impact * **Documentation**: Complete breach records maintained per GDPR requirements ### Our Commitments 1. **Rapid notification** to merchants with full breach details 2. **Impact assessment** including affected data categories and individuals 3. **Mitigation measures** to address and contain the breach 4. **Cooperation** with merchants for regulatory notifications 5. **Documentation** of all breach facts and remediation actions As outlined in our DPA, merchants (as Data Controllers) are responsible for notifying supervisory authorities within 72 hours and affected individuals when required under GDPR. *** ## Children's Privacy We do not knowingly collect or process personal data from individuals under 16 years of age. Our services are designed for adult shoppers, and we rely on merchants to ensure age-appropriate access to their stores. *** ## Cookies and Tracking Glood.AI uses cookies that are essential for the proper functioning of personalization features on Shopify stores. ### Cookie Details **rk\_uid** and/or **rk.uid** Used to identify returning visitors and provide personalized recommendations Essential for running personalization features on the Shopify store ### Cookie Duration Cookie retention depends on user consent: **1 year** When users accept cookies, the rk\_uid/rk.uid cookie is stored for one year to provide consistent personalization **24 hours only** If consent is not provided, cookies are stored temporarily for 24 hours for essential session continuity ### Why These Cookies Are Essential * **Session Management**: Maintain user sessions across page views * **Personalization**: Remember product preferences and browsing history * **Performance**: Optimize recommendation loading and accuracy * **User Experience**: Provide consistent experiences for returning visitors These cookies are strictly necessary for providing our personalization services and do not track users across other websites. *** ## Data Processing Agreement (DPA) ### Standard DPA for European Customers **Glood.AI provides a comprehensive Data Processing Agreement (DPA) that complies with GDPR Article 28 requirements.** Our DPA is available to all European merchants and covers: Defines Glood as Data Processor and merchant as Data Controller with specific obligations for each party Documents technical and organizational measures including encryption, access controls, and breach notification procedures Outlines how we assist with access, deletion, rectification, and other GDPR rights through automated processes **Access our DPA**: View and accept our standard [Data Processing Agreement](/legal/data-processing-agreement) which forms part of your service agreement with Glood.AI ### Shopify Compliance Framework In addition to our DPA, we operate within Shopify's comprehensive GDPR framework: Full compliance with Shopify Partner Agreement including all data protection requirements Implementation of mandatory webhooks: * customers/redact * customers/data\_request * shop/redact ### Key DPA Provisions Our comprehensive Data Processing Agreement includes: * **Standard Contractual Clauses (SCCs)**: Full incorporation of EU Commission's Module 2 SCCs for lawful EU-US data transfers * **Processing Scope**: Clear definition of data types, purposes, and retention periods (documented in RoPA) * **Security Measures**: Documented encryption (AES-256, TLS 1.2+), access controls, and audit logging * **Transfer Impact Assessment**: Documented assessment with supplementary measures for US transfers * **Risk Assessment**: Comprehensive DPIA conducted for AI-powered processing * **Breach Notification**: 48-hour notification commitment to controllers * **No Sub-processors**: We don't share PII with any third parties * **Data Deletion**: Automatic deletion within 2 days upon request or contract termination * **Compliance Verification**: Annual verification rights for controllers *** ## Updates to Our GDPR Practices We may update our GDPR compliance measures as regulations evolve or our services change. Any significant changes will be communicated to merchants through their registered email addresses. *** ## Contact Us For any GDPR-related questions, requests, or to exercise your data rights: **[privacy@glood.ai](mailto:privacy@glood.ai)** For data protection inquiries and rights requests **[support@glood.ai](mailto:support@glood.ai)** For general questions about our services When contacting us, please include your Shopify store URL and any relevant order numbers to help us locate your data efficiently. *** ## Supervisory Authority EU residents have the right to lodge a complaint with their local data protection supervisory authority if they believe their rights under GDPR have been violated. You can find your local authority at [https://edpb.europa.eu/about-edpb/board/members\_en](https://edpb.europa.eu/about-edpb/board/members_en) *** ## GDPR Compliance Summary **Glood.AI maintains full GDPR compliance** with all required legal, technical, and organizational measures in place. ### Comprehensive Compliance Framework ✅ DPA with Standard Contractual Clauses ✅ Legitimate Interest Assessment (LIA) ✅ Records of Processing Activities (RoPA) ✅ Data Protection Impact Assessment (DPIA) ✅ Encryption (AES-256, TLS 1.2+) ✅ Access controls & audit logging ✅ Shopify compliance webhooks ✅ Automated data deletion ✅ Data subject rights via webhooks ✅ Clear retention periods ✅ Consent management system ✅ 48-hour breach notification ✅ Designated Data Protection Officer ✅ Annual compliance reviews ✅ No sale of personal data ✅ No PII sub-processors Our GDPR compliance is continuously monitored and updated. All documentation undergoes annual review or whenever processing activities change. # Release History Source: https://docs.glood.ai/releases Track the evolution of Glood.AI through our release timeline
Released on April 02, 2025
### V3 Sections Visual Editor Introducing our new V3 sections visual editor that revolutionizes section management: * **Instant Styling Updates** – Styling changes reflect instantly 99% of the time, improving the user experience * **New Design** – The overall design has been updated, bringing a fresh look and improved usability * **Global Settings in V3 Editor** – Unlike the old editor, which had settings based on layout type, the V3 Visual Editor applies settings globally ### Responsive Layout Configuration New screen size-based layout controls for better mobile optimization: * **Screen Size-Based Section Layout Configuration** – Customize section layouts for different screen sizes * **Custom Positioning of Sections** – Adjust section placement dynamically based on screen size ### Enhanced Swatch System Improved product variant selection with image support: * **Image Support in Swatches** – Now, product variants can include images in swatches, providing a more visual and intuitive selection experience ### V3 Storefront Improvements New filters and analytics integration: * **Filter Additions** – New filters `file_url` (direct file access in templates) and `handleize` (URL-friendly text conversion) added * **Mixpanel Integration** – Enables tracking of user behavior and conversions
Released on March 11, 2025
### Visual Editor Improvements We've added new features to improve the section management experience in the visual editor: #### Error Card Display * **Visual Feedback** – New error card appears when manually placed sections fail to load * **Comprehensive Error Handling** – Displays when: * Section fails to load * Section ID doesn't exist * Section is disabled * Section is recently viewed or excluded from the page * **Editor-Only Display** – Error cards are only visible in the visual editor, not on the live store ### Preview Functionality Enhanced preview capabilities for better testing and validation: * **All Section Preview** – New option to preview disabled sections * **Visual Editor Support** – Toggle 'Show disabled widgets in Shopify theme editor' to view disabled sections * **URL Parameter Preview** – Add `rk_preview=true` to URL to preview disabled sections on live store * **Testing Made Easy** – Perfect for validating sections before enabling them
Released on March 07, 2025
### Template Enhancements We've introduced several powerful updates to improve template customization and section management: #### New Variant Selector Option * **Swatch with ATC** – New `swatch_with_atc` option in `productCard.variantSelectorType` * **Streamlined Purchase Flow** – Automatically adds product to cart on swatch change * **Clean Interface** – Hidden ATC button for better visual experience #### Currency Formatting Added flexible currency formatting using Intl DOM API: ```json { "intlOptions": { "en": { "currency": "USD" }, "hi": { "currency": "GBP" }, "currency": "INR" } } ``` ### Section Management Updates * **Automatic Placement Control** – Option to prevent section sending when automatic placement is disabled * **Responsive Layouts** – Moved breakpoint-specific layout configuration from template to section extras * **Enhanced Customization** – Configure different layouts for various breakpoints directly from the dashboard's section details page
Released on March 3, 2025
### Section Status Check We've launched a simple yet powerful tool that helps you instantly check if your sections are working perfectly. #### What You Can Check * **Store Accessibility** – Ensure your store is properly connected. * **App Block Placement** – Confirm that sections are correctly installed in your theme. * **Section Rendering** – Verify that sections are displaying as intended. * **Optimal Section Placement** – Check if your sections are positioned for the best conversion results. * **Recommendation Health** – Ensure product recommendations are working properly. * **AI Recommendations** – Confirm whether AI-powered recommendations are enabled. * **Plan Availability** – Check if your current plan supports this section. * **Serve Limit** – Ensure you have available section views. ### Bundle Analytics Improvements Your Bundle Analytics just got a major speed boost and some great improvements: * **Faster Data Fetching** – Now powered by an **elastic query system**, ensuring rapid and efficient data retrieval. * **Seamless Navigation** – The interface now follows a structure similar to **Checkout Upsell Analytics**, making it easier to use. * **Fixed Date Picker Issue** – Previously, selecting the same start and end date failed to trigger an API call. This has now been resolved. ### Section Design Updates We've refreshed the section design to match Shopify's familiar Product Details layout: * **Familiar Layout** – Feels just like the rest of your Shopify admin * **Better Collection Picking** – Now uses correct collection handles * **Improved Recommendations** – Fixed the maximum recommendation count
Released on February 16, 2025
### What's New Creating templates is now easier and more flexible than ever: * **Fresh New Look** – Clean, modern design that's easier to use * **Version Options** – Switch between template versions with one click * **Smooth Transitions** – A single section can now include **both old and new template versions**, making store migrations effortless. ### Why You'll Love This Create and manage templates more easily, and transition to newer versions at your own pace without disrupting your store.