For developers

One script. Every storefront feature.

For developers placing Recommendor on a custom theme or a non-WordPress front end.

The three loaders

Load only what you use

Each loader is a separate script, so a theme that only wants recommendations never pays for the chat widget's weight.

getrecommendor-embed.js

Recommendations, search, and alerts

Renders every <span class="getrecommendor"> block on the page, fires click and search tracking, and powers the product-alert widget and bundle add-to-cart.

getrecommendor-chat.js

The shopping assistant

Loads the AI shopping-assistant chat widget for the storefront.

getrecommendor-rec.js

Session recording

The rrweb-based session recorder, gated by the store's toggle — nothing records unless you turn it on.

Serving contract

Every block resolves from a design UUID

Recommendation and search blocks resolve with a single GET request. Context is optional — the loader also reads window.getrecommendorContext and <meta name="getrec:…"> tags if you'd rather not use query params.

Public storefront endpoints are CORS-open and quota-gated, keyed to your registered store origin. Cart, checkout, chat, alerts, and recordings each have their own documented POST endpoints.

api.getrecommendor.com
GET /embed/{uuid}?p=42&c=17&q=linen%20shirt
&visitor_id=v_8f2c&email=customer@example.com
ParamMeaning
?p=Product context (e.g. the current product ID)
?c=Category context
?q=Search keywords
?visitor_id=Anonymous visitor identifier
?email=Known customer email, for logged-in shoppers
Placement options

Two ways to put a block on the page

Both are configured from the dashboard's element builder — no redeploy needed to move a block later.

Injection

Point the loader at a CSS selector and it inserts the block for you — before, after, appended, or prepended, or replacing the element outright — with an optional exclude-URL rule for pages you want left alone.

Embedded code

Paste the generated one-line <span> into your theme directly. Store, logic, product count, title, and position are all resolved server-side from the design UUID.

Full endpoint reference, payload shapes, and error codes are covered in the documentation.

View documentation
Developers

Questions about the embed and API

Placement, context, and what happens when something is unreachable.

No. The plugin is the fastest path on WooCommerce, Shopify, or Magento, but the same loaders and endpoints work on any theme — add the script tag and the generated <span> markup, and the block resolves the same way.

The storefront renders as before. A block that can't resolve simply doesn't inject — it never blocks the rest of the page from loading.

No, all of them are optional. The loader falls back to window.getrecommendorContext or <meta name="getrec:…"> tags if you'd rather set context once per page instead of per query string.

Yes — the loaders and endpoints are plain JavaScript and REST, independent of WordPress. The store still needs to be a WooCommerce, Shopify, or Magento store today; the front end serving it can be anything.

No Credit Card for Your First Month

See What Your Store Is Leaving on the Table

Connect your store, let the catalog sync, and the first numbers land the same day.

No card for your first month Billed postpaid, in arrears Cancel any time