Skip to main content
Wix guide

Vector Embedding for Wix Stores

By ยท Updated ยท 8 min read

Vector Embedding on Wix: What the Platform Actually Supports

Vector embedding converts product titles, descriptions, and customer queries into numerical arrays so similarity search can match intent rather than exact keywords. On Wix, that computation does not happen natively inside the platform. Wix Stores has no built-in semantic search engine, no vector database, and no embedding model โ€” the platform's default catalog search is keyword-based and filtered by Wix's own indexing logic.

This means embedding must be handled externally. Wix exposes its product catalog through the Wix Stores REST API and the Velo (Wix's JavaScript framework) backend environment, which gives store operators a path to pull catalog data, generate embeddings via a third-party model, store vectors in an external database, and then surface results back into the storefront through Velo HTTP functions or custom UI elements.

Wix-Specific Constraints That Shape the Architecture

Wix's hosting environment imposes runtime limits that affect how embedding pipelines are built. Velo backend functions have execution time ceilings and memory caps that make running a large embedding model inside Velo itself impractical. Batch jobs that embed an entire 10,000-SKU catalog cannot run as a single Velo function call โ€” they need to be offloaded to an external compute layer such as a cloud function or a dedicated microservice.

Wix does not allow arbitrary server-side processes or cron jobs within its infrastructure the way a self-hosted Node.js app would. Scheduled jobs in Velo (using the Velo Scheduler) can trigger external HTTP endpoints at intervals, which is the practical mechanism for keeping embeddings in sync as new products are added or descriptions are edited. Operators using Wix's built-in product import tools must account for the lag between catalog updates and vector index refreshes.

Wix's storefront is rendered through its proprietary editor and CMS, so replacing the native search bar with a vector-powered search requires either hiding the default search widget and building a custom input element in Velo, or using a Wix app that hooks into the search UI. Custom Velo elements have DOM access restrictions compared to fully self-hosted storefronts, which adds UI complexity when displaying ranked semantic results.

Tools and Services That Integrate with Wix for Semantic Search

Several external services fit into a Wix embedding architecture. Vector databases such as Pinecone, Weaviate, and Qdrant accept HTTP requests and return ranked results, making them compatible with Velo's fetch API. Embedding models from OpenAI (text-embedding-ada-002 and its successors) or Cohere can be called from Velo backend code using standard REST calls, with API keys stored in Velo's Secrets Manager to avoid exposing credentials client-side.

For operators who want a packaged solution rather than a custom build, Wix App Market apps such as Searchanise and Boost Commerce add enhanced search to Wix Stores. These apps use their own ranking logic, and some incorporate semantic or AI-assisted matching, but they operate as embedded iframes or injected scripts rather than exposing raw vector infrastructure. Operators who need full control over embedding models and ranking logic will find these apps opaque โ€” the embedding layer is managed by the vendor, not configurable per-catalog.

A hybrid approach that many mid-market Wix operators use: export the product catalog via the Wix Stores REST API to an external pipeline (Python scripts, a cloud function, or a hosted service), generate and store embeddings there, then query that external index from a Velo backend function when a shopper types a search query. The result IDs are returned to Velo, which fetches matching product objects from the Wix catalog by product ID and renders them in a custom Repeater element.

Syncing the Wix Catalog with an External Vector Index

Catalog sync is the operational challenge that separates a working embedding setup from a stale one. Wix fires webhooks for product creation, update, and deletion events through the Wix Stores webhooks API. Connecting those webhooks to an external endpoint that re-embeds the changed product and upserts the new vector into the database keeps the index current without manual intervention.

For stores that do large periodic uploads โ€” importing hundreds of products via CSV through Wix's bulk import tool โ€” webhook volume can spike. The external endpoint needs to handle concurrent embed requests or queue them. Services like AWS SQS or a simple Redis-backed queue between the webhook receiver and the embedding call prevent rate-limit errors from the embedding API provider.

Product variants in Wix (size, color, material) are stored as variant objects nested under a parent product. Decisions about embedding granularity matter here: embedding at the parent product level is simpler and reduces index size, but embedding at the variant level allows queries like 'red cotton shirt under $40' to surface the precise variant rather than requiring post-retrieval filtering. Most Wix stores start at the parent level and add variant-level embedding only when search result relevance demands it.

Building the Query Path Inside Velo

When a shopper types a query into the custom search input on a Wix page, a Velo frontend script sends that string to a Velo backend function via wixWindow or a standard Velo web module call. The backend function calls the embedding API to convert the query string into a vector, then sends that vector to the external vector database with a top-K parameter (commonly 10โ€“20 results). The database returns product IDs ranked by cosine similarity.

The backend function then calls the Wix Stores Products API using those IDs to fetch full product objects โ€” title, image, price, URL โ€” and returns the structured list to the frontend. A Velo Repeater element bound to this returned data renders the results as a product grid. This entire round trip, from keystroke to rendered results, should complete in under one second on a warm function; cold starts on Velo backend functions can add latency that needs to be communicated to UX designers setting shopper expectations.

Debouncing the input (waiting for the shopper to pause typing before firing the embedding call) reduces API costs and unnecessary latency. A 300โ€“500 millisecond debounce on the search input is a standard Velo pattern and keeps embedding API costs proportional to genuine search intent rather than every individual keystroke.

Practical Steps for Wix Store Operators

Start by exporting the full product catalog via the Wix Stores REST API and generating embeddings for every product's title plus description concatenated as a single text field. Store those embeddings in a hosted vector database with the Wix product ID as the metadata key. Set up a webhook listener on an external endpoint to re-embed products on create and update events, and register that endpoint in the Wix dashboard under Webhooks.

Build a Velo backend function that accepts a query string, calls the embedding API, queries the vector database, and returns an ordered list of Wix product IDs. Build a Velo frontend module that debounces the search input, calls the backend function, fetches product details by ID from the Wix catalog, and populates a Repeater. Store embedding API keys in Velo Secrets Manager โ€” never in client-side code. Test with queries that use natural language descriptions rather than product titles to verify semantic matching is functioning beyond keyword overlap.

Monitor embedding API costs against search query volume monthly. For catalogs under 5,000 SKUs, embedding costs are typically small relative to the revenue impact of improved search relevance. For larger catalogs, evaluate whether embedding only the top-selling or recently-updated products first produces sufficient coverage before committing to full-catalog embedding.

Frequently asked questions

Does Wix have built-in vector search for its stores?

No. Wix Stores uses keyword-based search by default. Vector embedding and semantic search require an external embedding model, an external vector database, and custom integration via Velo backend functions and the Wix Stores REST API. There is no native vector search option inside the Wix platform as of its current feature set.

Can Velo handle the embedding computation directly, or does it need an external service?

Velo cannot run large embedding models natively โ€” its backend functions have memory and execution time limits that make on-platform inference impractical. Embedding computation must be delegated to an external API such as OpenAI's embedding endpoints or Cohere. Velo calls those APIs via HTTP and handles routing and result rendering, but does not perform the vector math itself.

Which vector databases work with Wix's Velo environment?

Any vector database that exposes a REST or HTTP API works with Velo's fetch capabilities. Pinecone, Qdrant, and Weaviate all fit this pattern. The key requirement is that the database accepts upsert and query requests over HTTP with JSON payloads, since Velo backend code cannot use native Node.js database drivers or binary protocols.

How do product updates in Wix stay in sync with the vector index?

Wix Stores fires webhooks on product create, update, and delete events. Connecting those webhooks to an external endpoint that re-embeds the changed product and upserts the new vector keeps the index current. For bulk imports via CSV, a queue between the webhook receiver and the embedding API prevents rate-limit errors when many products update simultaneously.

Is it worth building custom vector search on Wix, or should operators just use an app like Searchanise?

App-based solutions are faster to deploy and require no custom code, but they give operators no control over the embedding model, ranking logic, or cost structure. Custom vector search via Velo is worth the build effort for stores with large catalogs, complex product attributes, or specific ranking requirements. Stores under a few hundred SKUs with standard product types often get sufficient results from an enhanced-search app.

MG
Written by

Matt is the founder of RunOctopus. He built All Angles Creatures from zero to page-1 rankings in reptile feeder insects in under 60 days using exactly this method โ€” turning a hard, entrenched niche into RunOctopus's proof store for programmatic SEO and AI search citation.

Connect on LinkedIn →

See what Otto would build for your store

Free architecture preview. No card required. Five minutes.

Generate Preview →