> ## Documentation Index
> Fetch the complete documentation index at: https://docs.uselayers.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Third-Party Integrations

> Connect Layers with your existing analytics and marketing tools — Klaviyo, GA4, and more — through the Integrations dashboard for unified attribution data.

## Overview

Layers integrates with popular analytics, personalization, and promotional tools to enhance your search and discovery experience. All integrations are configured through the Layers dashboard, making it easy to enable and manage connections without modifying your theme code.

The integration system is designed to be:

* **Privacy-compliant**: All integrations respect the same consent settings as the Layers Pixel
* **Non-intrusive**: Integrations only use services already loaded on the page
* **Dashboard-managed**: Enable or disable integrations with a single toggle
* **Extensible**: New integrations are added regularly based on merchant needs

## Configuring integrations

To manage your integrations:

1. Go to the **Settings** page in the Layers dashboard
2. Select the **Integrations** tab
3. Toggle integrations on or off as needed
4. Click **Save changes**

Changes take effect immediately and are synced to your storefront.

## Supported integrations

### Rivo

[Rivo](https://rivo.io/) is a loyalty and rewards platform for Shopify merchants. When enabled, Layers receives richer customer profile context from Rivo, enabling enhanced personalization in search results based on loyalty tier, points balance, and reward eligibility.

**Benefits:**

* Personalize search results based on customer loyalty status
* Surface products relevant to available rewards
* Enhance customer segmentation with loyalty data

### Blotout

[Blotout](https://blotout.io/) is a privacy-first customer data platform that helps you collect, unify, and activate customer data without relying on third-party cookies.

When enabled, Layers forwards widget clickstream events to Blotout and uses Blotout's User and Device IDs for consistent cross-session tracking.

**Benefits:**

* Unified customer identity across touchpoints
* Privacy-compliant event tracking
* Enhanced attribution for visual search interactions

### Microsoft Clarity

[Microsoft Clarity](https://clarity.microsoft.com/) is a free analytics tool that provides session recordings, heatmaps, and behavioral insights to help you understand how customers interact with your website.

When enabled, Layers streams widget click data to Clarity, allowing you to replay sessions involving visual search and shop similar interactions to identify UX friction points.

**Benefits:**

* Session recordings of visual search usage
* Heatmaps showing widget interaction patterns
* Behavioral insights for search optimization

### Abra Promotions

[Abra Promotions](https://abrapromotions.com/) is a promotional pricing platform that enables dynamic discounts and flash sales on Shopify.

When enabled, Layers natively integrates with Abra's discount engine, ensuring that price-based sorting and filtering accurately reflects promotional pricing. This integration is essential for merchants using Abra to run sales and promotions.

**Benefits:**

* Accurate price sorting with active promotions
* Correct price filtering during sales
* Consistent pricing across search and collection pages

For detailed information on using discount entitlements with the Layers API, see [Discount Entitlements](/shopify-integration/discount-entitlements).

### FoxSell Bundles

[FoxSell Bundles](https://foxsell.app/) is a product bundling app for Shopify that lets you create fixed bundles, mix-and-match bundles, cross-sell offers, multi-variant bundles, and volume discounts.

When enabled, Layers computes accurate prices for FoxSell bundle products so they appear correctly in price-based sorting, filtering, and search results. Without this integration, bundle products may display incorrect prices because Shopify stores them differently than standard products.

**Benefits:**

* Accurate price sorting and filtering for all bundle types
* Correct price display in search and collection results
* Improved search relevance through bundle component awareness — Layers indexes the titles of products included in a bundle, so searches for component products can surface relevant bundles

**How it works:**

When this integration is enabled, Layers automatically:

1. Reads the FoxSell metafields on your products and variants to determine bundle configuration
2. Computes the true bundle price by resolving component product prices
3. Overrides the indexed price range so sorting and filtering reflect the actual bundle price
4. Includes component product titles in the search index for better discoverability

**Supported bundle types:**

Each bundle type is priced differently based on how FoxSell structures its components:

* **Fixed bundles** — the price is calculated by summing each component product's price multiplied by its quantity. The resulting price range reflects the cheapest and most expensive possible combinations.
* **Mix-and-match bundles** — supports two pricing models. With **fixed pricing**, a flat price is applied based on the selected tier. With **dynamic pricing**, the price is computed by summing the individual prices of the selected component products.
* **Cross-sell bundles** — the total price is computed from the component products, and any configured percentage discount is applied. The original undiscounted total is preserved as a compare-at price so shoppers can see the savings.
* **Multi-variant bundles** — Layers evaluates each parent variant's bundled component variants to determine a minimum and maximum price across all configurations.
* **Volume discount bundles** — Shopify already stores the correct base price for volume bundles, so no price override is applied. The integration still indexes component product titles for search discoverability.

<Note>
  When you enable the FoxSell Bundles integration, Layers automatically adds the required FoxSell metafield namespaces to your store's metafield sync configuration. No manual metafield setup is needed.
</Note>

<Note>
  After enabling the integration, trigger a [catalog resync](/help/catalog/resync-catalog) to recompute bundle prices across your catalog. New and updated products are priced automatically going forward.
</Note>

### Edgemesh

[Edgemesh](https://edgemesh.com/) is a client-side performance optimization platform that accelerates page load times through intelligent prefetching, predictive preloading, and edge-based caching. When enabled, Layers syncs integration status to your storefront so that Edgemesh-aware components can coordinate prefetching behavior with Layers API responses.

**Benefits:**

* Coordinate image prefetching with Layers search and browse responses
* Leverage Edgemesh's predictive engine alongside Layers' Link header preload hints
* Unified performance optimization across search, browse, and product pages
* Improved purchase attribution through Edgemesh session tracking — Layers reads `_em_session_id` from order note attributes to link purchases back to browsing sessions (see [Order Attributes](/shopify-integration/storefront-pixel#order-attributes))

### Global-E <sup>Beta</sup>

[Global-E](https://www.global-e.com/) is an international e-commerce platform that enables cross-border selling by handling localized pricing, currency conversion, and country-specific adjustments for Shopify merchants.

When enabled, Layers applies country-based pricing to all search and browse API responses using rate snapshots synced from Global-E. This means shoppers in different countries see prices converted to their local currency with the correct conversion rates, country coefficients, and rounding rules applied directly in Layers results.

**Benefits:**

* Localized pricing in search, browse, and recommendation results without additional client-side conversion
* Accurate price-based sorting and filtering using the shopper's local currency
* Country coefficient adjustments that reflect regional pricing strategies (not just currency conversion)
* Global-E rounding rules applied server-side so displayed prices match your storefront checkout

**How it works:**

1. You provide your Global-E **Merchant Token** and **API Base URL** in the integration settings
2. Layers periodically syncs rate data from Global-E, fetching the list of supported countries along with their currency conversion rates, country coefficients, and rounding rules
3. When a storefront API request includes a country code (via the `country` parameter or geo context), Layers looks up the matching rate snapshot for that country
4. All product prices in the response are converted using the formula: `price × currency_conversion_rate × country_coefficient_rate`, then rounded according to Global-E's rounding rules
5. The response includes `currency_code` and `currency_decimal_places` metadata so your storefront can format prices correctly

**Configuration:**

| Field                       | Description                                                                                                                                                                                                     |
| :-------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Merchant Token**          | Your Global-E merchant token for API authentication. Found in your Global-E merchant dashboard.                                                                                                                 |
| **API Base URL**            | The base URL for Global-E API calls (provided by Global-E during onboarding).                                                                                                                                   |
| **Fallback to base prices** | When enabled (default), Layers returns original store-currency prices if it cannot resolve the shopper's country. When disabled, prices are still returned in the store's base currency but without conversion. |

**Rate table dashboard:**

After configuring the integration, the **Rate Table** panel in the Layers dashboard shows all synced countries with their conversion rates, coefficient rates, and currency details. You can manually trigger a resync from this panel if rates need to be refreshed immediately.

<Note>
  Global-E is currently in **beta**. The integration supports read-only rate syncing from Global-E's API. Contact [support@uselayers.com](mailto:support@uselayers.com) if you need help getting set up.
</Note>

<Note>
  Price conversion is applied at query time, so there is no need to resync your catalog when rates change. Updating the rate snapshot is sufficient.
</Note>

### Okendo

[Okendo](https://www.okendo.io/) is a customer marketing platform for Shopify that includes product reviews, surveys, referrals, and quizzes. The Layers integration focuses on Okendo's quiz feature, bringing shopper quiz responses into Layers so you can personalize search and collection results based on each customer's stated preferences.

When a shopper completes an Okendo quiz, the responses are sent to Layers via webhook and stored against the shopper's session. On every subsequent search or browse request, Layers automatically enriches the session context with the shopper's quiz profile, allowing merchandising rules and ranking signals to factor in their preferences.

**Benefits:**

* Personalize search and collection results using quiz-derived preferences
* Surface products that match a shopper's stated needs (e.g., skin type, style preferences, fitness goals)
* Combine quiz context with other signals like cart contents, purchase history, and location for richer personalization
* No theme code changes required. Quiz data flows into Layers automatically once the integration is enabled

**How it works:**

1. Enable the Okendo integration in the Layers dashboard under **Settings > Integrations**
2. Copy the webhook endpoint shown in the setup panel
3. In your Okendo dashboard, register the webhook endpoint and copy the signing secret
4. Paste the signing secret into the **Webhook Secret** field in Layers and save
5. When a shopper completes a quiz, Okendo sends the response to Layers via webhook
6. Layers normalizes the quiz answers and attaches them to the shopper's session
7. All subsequent search and browse requests for that session automatically include the quiz profile as part of the [contextual information](/engine/contextual-information)

**Configuration:**

| Field              | Description                                                                                                                           |
| :----------------- | :------------------------------------------------------------------------------------------------------------------------------------ |
| **Webhook Secret** | The signing secret from Okendo used to verify incoming webhook payloads. Found in your Okendo webhook settings. Starts with `whsec_`. |

**Supported webhook topics:**

The integration listens for the following Okendo quiz response events:

* **quiz\_response.create** — a shopper submits a new quiz response
* **quiz\_response.update** — a shopper updates an existing quiz response
* **quiz\_response.delete** — a quiz response is removed

<Note>
  Quiz responses are matched to shoppers using the session ID (subscriber ID in Okendo). This means personalization takes effect within the same browsing session in which the shopper completed the quiz.
</Note>

## Event forwarding

When analytics integrations (Blotout, Clarity) are enabled, Layers forwards visual search and shop similar events to these services. The following events are forwarded:

| Event                     | Description                                    |
| :------------------------ | :--------------------------------------------- |
| `similar-opened`          | User opened the shop similar panel             |
| `similar-closed`          | User closed the shop similar panel             |
| `similar-product-clicked` | User clicked a product in shop similar results |
| `image-search-opened`     | User opened the image search panel             |
| `image-search-closed`     | User closed the image search panel             |
| `image-search-search`     | User performed an image search                 |
| `image-search-crop`       | User cropped an image for search               |
| `shop-similar-impression` | Shop similar recommendations were displayed    |

## Implementation notes

* Integrations only forward events to services that are already loaded on your page
* No additional scripts are loaded by enabling integrations
* All integrations respect your store's consent management settings
* Events are forwarded with the same payload structure as they are sent to Layers
* If an integration service is not available on the page, events will silently skip forwarding

## Requesting new integrations

Layers regularly adds new integrations based on merchant needs. If you use a tool that isn't currently supported, you can request it.

**To request a new integration:**

1. Email [support@uselayers.com](mailto:support@uselayers.com) with:
   * The name of the tool or platform
   * How you currently use it in your store
   * What data or functionality you'd like to integrate with Layers

2. The Layers team evaluates the request based on:
   * Technical feasibility
   * Merchant demand
   * Privacy and performance considerations
   * Alignment with Layers' integration principles

**Current integration priorities:**
We prioritize integrations that enhance search personalization, improve analytics visibility, or enable better pricing and promotional capabilities. Analytics, loyalty, and customer data platforms are particularly well-suited for integration.

## Need help?

For questions about integrations or to request a new integration, contact [support@uselayers.com](mailto:support@uselayers.com).
