Skip to main content

Subscribed webhooks

Layers listens to the following Shopify Webhooks to maintain synchronization:
  • product/create: Triggers when a new product is added to your Shopify store.
  • product/update: Fires when any changes are made to existing products or their related items like variants or metafields.
  • product/delete: Activates when a product is permanently removed from your Shopify catalog.
  • variants/in_stock: Fires when a variant is restocked in Shopify.
  • variants/out_of_stock: Fires when a variant sells out in Shopify.
  • collections/create: Triggers when a new smart or custom collection is created in Shopify.
  • collections/update: Triggers when smart collection rules or custom collections are updated in Shopify.
  • collections/delete: Fires when a smart or custom collection is deleted from Shopify.
  • orders/create: Fires when an order is created in Shopify.
  • metaobjects/create: Fires when a metaobject is created in Shopify. Registered per metaobject definition type.
  • metaobjects/update: Fires when a metaobject is updated in Shopify. Registered per metaobject definition type.
  • metaobjects/delete: Fires when a metaobject is deleted from Shopify. Registered per metaobject definition type.
  • app/uninstalled: Fires when the Layers app is uninstalled from your Shopify store.
*Order webhooks are only subscribed to to calculate product and variant level sales metrics. PII is not ingested or retained.

Synced content

The synchronization includes all active products and variants, as well as associated media. It also encompasses all Product, Variant, and Shopify’s Standard Product Taxonomy Metafields specified under the Metafields & Metaobjects configuration.

Sales channel visibility

Layers imports and indexes all active products, including those published only to non-online-store sales channels (such as mobile app channels). This enables mobile app users to discover and purchase app-exclusive products. How channel filtering works:
  • Web/online store requests: Products must be published to the online store sales channel to appear in search and browse results. This filter is applied automatically at query time.
  • Mobile app requests: When shoppingChannel is set to app (automatically detected for Tapcart, Fuego, and Canvas integrations), products published only to app channels are included in results, even if they’re not published to the online store.
  • Dashboard/merchandising: All products are visible regardless of sales channel publication status, allowing you to manage your entire catalog.

Configuring catalog sync

To adjust your catalog sync settings:
  1. Go to the Settings page on the Layers dashboard.
  2. Select the Metafields & Metaobjects tab.
  3. Here, you can configure the product and variant metafields captured in the sync.

Excluding metafield definitions

You can control which product and variant metafield definitions are synced from Shopify to Layers. This allows you to exclude metafields that aren’t needed for search and browse functionality, keeping your catalog data focused and efficient.

How to exclude metafield definitions

  1. Go to SettingsMetafields & Metaobjects in the dashboard.
  2. Scroll to the Metafield Definitions card.
  3. Metafield definitions will load automatically from your Shopify store, organized by namespace.
  4. Toggle individual metafields on or off to include or exclude them from sync.
  5. Use the Select All / Deselect All checkbox to quickly manage all metafields at once.
  6. Save your changes.

Important notes

  • Excluded metafields persist: Once you exclude a metafield definition and save, it will remain excluded on all subsequent catalog syncs until you re-enable it.
  • Automatic loading: Metafield definitions are fetched automatically when you visit the configuration page—no manual refresh is needed.
  • Applies to new syncs: Exclusions only affect future syncs. To remove already-synced metafield data, you’ll need to trigger a full catalog resync after updating your exclusions.
  • Relates to Synced Content: The metafields you select here determine which Product, Variant, and Standard Product Taxonomy Metafields are included in the “Synced Content” described above.

Configure export schedule

By default your entire catalog is resynced from Shopify every eight hours. Please contact support to adjust this schedule.

Variant availability calculation

Layers calculates variant availability to determine which products and variants are shown as available in search and browse results. By default, Layers uses Shopify’s availableForSale field, which considers inventory across all locations.

Digital products and untracked inventory

Variants that do not have inventory tracking enabled in Shopify (such as digital downloads, gift cards, or services) are always treated as available. Because these products have no physical stock to deplete, Layers skips inventory-based availability checks and keeps them visible in search and browse results regardless of variants/in_stock or variants/out_of_stock webhook events. No configuration is required — this behavior applies automatically to any variant where Shopify reports no inventory management.

Always-available vendors

Some vendors sell digital products (such as gift cards from Rise.ai) that use tracked inventory in Shopify but should never appear as out of stock. Because these products have inventory management enabled with a quantity of zero, Layers would normally mark them as unavailable. To prevent this, you can configure an always-available vendors list. Products from any vendor on this list are treated as always available, regardless of their inventory level or inventory policy. How it works:
  • Vendor matching is case-insensitive — entering rise.ai matches products with the vendor set to Rise.ai, RISE.AI, or any other casing.
  • The check applies during both bulk availability recalculations and real-time webhook updates (variants/in_stock and variants/out_of_stock).
  • You can add multiple vendors to the list.
This setting overrides all other inventory-based availability logic for the specified vendors. Products from always-available vendors remain visible even when their inventory quantity is zero and their inventory policy is set to deny overselling.
To configure always-available vendors, contact the support team with the list of vendor names you want to mark as always available.

Online-fulfilling locations feature

For stores with multiple inventory locations (such as retail stores and warehouses), you can enable an opt-in feature that recalculates variant availability based only on locations where fulfills_online_orders = true. This ensures that variants are only marked as available if they have stock at locations that can fulfill online orders.

How availability is calculated

When the online-fulfilling locations feature is enabled, a variant is considered available if:
  1. The variant has inventory_policy = 'continue' (allows selling when out of stock), OR
  2. The variant has available quantity > 0 at any active location where fulfills_online_orders = true

When availability is recalculated

Variant availability is automatically recalculated in the following scenarios:
  • After bulk inventory syncs complete
  • When inventory levels are updated via webhooks
  • When a location’s fulfills_online_orders or is_active status changes
  • When the feature is first enabled for your store
After recalculation, affected products are automatically updated in the search index to reflect the new availability status.

Location-based inventory tracking

Layers tracks which inventory locations have available stock for each variant through the variants.in_stock_location_ids field. This field contains an array of location IDs where the variant has available > 0 inventory, enabling you to use location-specific availability in sort orders for product demotion.
The in_stock_location_ids field is sortable but not filterable, and is not included in API responses. It is an internal field used exclusively for sorting operations such as demoting products that are out of stock at specific locations.
The in_stock_location_ids field is automatically updated whenever:
  • Inventory levels change via webhooks or bulk syncs
  • A variant’s inventory is adjusted at any location
  • New inventory locations are added or modified
You can use this field in sort orders to demote products that are not in stock at specific locations. See the Sorting documentation for details on configuring sort orders with priority rules.

Enabling the feature

To enable online-fulfilling location availability calculation:
  1. Go to SettingsShopify Sync in the Layers dashboard.
  2. Enable the Use Online Fulfillment Locations for Availability checkbox.
  3. Save your changes.
The feature will take effect after the next inventory sync completes.

Synchronization process

Upon receiving a webhook notification, Layers performs the following steps:
  1. Verification: Confirms the validity of the webhook event.
  2. Data fetch: Retrieves the latest information on the affected products.
  3. Index update: Updates the search index to reflect the new or changed data.

Troubleshooting sync issues

If you encounter issues with catalog synchronization, consider the following steps:
  • Check Webhook Settings: Ensure that Layers has the correct permissions.
  • Review Product Status: Verify that products are active and published to the correct storefront.

App uninstallation and data retention

When you uninstall the Layers app from your Shopify store, your data is not immediately deleted. Instead, your store is queued for deletion with a 30-day grace period to allow for accidental uninstallations or changes of mind.

What happens during the grace period

  1. Store queued for deletion: Your store and all associated data are marked for deletion but remain intact.
  2. Jobs paused: All background sync jobs are automatically paused to prevent unnecessary processing.
  3. Support notification: A support ticket is automatically created to notify the Layers team.

Restoring access after uninstallation

If you uninstalled the app by mistake or changed your mind:
  1. Reinstall the Layers app from the Shopify App Store within the 30-day grace period.
  2. Contact the support team to restore your store and data.
  3. Your previous configuration and data will be preserved and reactivated.

Permanent deletion

After 30 days, your store and all associated data will be permanently deleted. This includes:
  • Product catalog data
  • Search analytics and metrics
  • Configuration settings
  • All historical data
If you have any questions about uninstalling or need assistance, please contact the support team before the 30-day period expires.

Catalog scale and limits

Layers has no hard limits on the number of products, variants, or SKUs that can be synced and indexed. The platform is designed to scale with your business and has successfully handled catalogs with millions of SKUs.

What this means for your store

  • No product limits: Sync your entire catalog regardless of size
  • No variant limits: Products with hundreds or thousands of variants are fully supported
  • No SKU limits: The system scales to accommodate catalogs with millions of unique SKUs
  • Proven at scale: Layers has been tested and validated with large enterprise catalogs
If you have questions about catalog size or performance for your specific use case, please contact support.

FAQs

Q: How often does catalog sync occur?
A: Synchronization happens in near real-time following the triggering of any subscribed webhook events. Additionally, every eight hours, the entire catalog is bulk exported from Shopify.
Q: Can I manually trigger a catalog sync? A: Yes, you can initiate a manual sync via the Layers dashboard if needed. Q: Does the catalog sync work with split products or Combined Listings? A: Yes, all published products are synced from Shopify. Q: How can I hide a product from Layers?
A: You can unpublish it from the Online Store sales channel, add the hide tag, or configure custom excluded tags in Settings → Search Behavior. By default, products with the hide, or layers-ignore tags are excluded from search.
For more information or if you need assistance, please contact support.