Skip to content

Recommendations

Create a recommendation from one of Hello Retail's best-practice algorithms, list the recommendations on a website, read and change the algorithm that decides which products they show, along with their settings, placement, Google Analytics events and context crawl config, edit the designs they render with, copy a design as a starting point, and point recommendations at a different design.

Tips & tricks

Pick the card that matches what you're doing. Each prompt is ready to paste into your assistant.

Orientation

List first, then read one

recoms_list gives you the key, name, type, state and design of every recommendation. Everything else sits behind a read tool per section: recoms_getGeneralSettings, recoms_getGoogleAnalyticsSettings, recoms_getPlacement and recoms_getContextCrawlConfig.

List the recommendations on my website, then show the general settings and placement of the one on the cart page.
Settings

Change one field at a time

The update tools are partial: pass only the fields you want to change and the rest stays as it was. recoms_updateGeneralSettings covers name, type, product count, devices and load order; recoms_updateGoogleAnalyticsSettings covers the events the recommendation sends.

Set recommendation <KEY> to show 6 products on mobile only, and rename it "Cart upsell".
Placement

Read the defaults, then move it

recoms_getPlacement returns the current selector, selectorMode and insertMode, plus the default selector and the <div> to paste into your page for the default placement. Change the three fields with recoms_updatePlacement.

Placement only applies when Hello Retail renders the recommendation on your page with a managed template. If you fetch recommendations through the API and render them yourself, these fields do nothing.

Move recommendation <KEY> so it appears right after the element matching .product-description.
Context for strategy

Read the syntax before you write it

A context crawl config extracts values from the page the recommendation renders on, and every field it defines can filter the strategy as $input.<field>. It is written in crawl strings, one field per line. recoms_updateContextCrawlConfig names docs://crawl-strings/syntax; ask for it first and the assistant writes a config that parses the first time.

Read docs://crawl-strings/syntax, then make recommendation <KEY> read the brand from the .product-brand element so the strategy can filter on it.
Design source

Read and edit HTML and CSS

Use recoms_getDesign and recoms_updateDesign to read and edit a design's HTML and CSS directly. A recommendation's designKey in recoms_list tells you which design to open.

Show the HTML and CSS for recommendation design <KEY> on my website.
Rollout

Copy, edit, then point recommendations at it

For a design rollout, combine recoms_copyDesign and recoms_updateSelectedDesign: copy the current design, edit the copy, then point the recommendations you want at it, all in one conversation.

Copy the design used by recommendation <KEY>, make the product titles larger in the copy, and point that recommendation at it.
Algorithm

Read the format before you write steps

An algorithm is an ordered list of steps. Each one adds products until the recommendation is full, so a precise first step followed by broader fallbacks is the usual shape. recoms_updateAlgorithm names docs://product-algorithms/format, which holds every step type, the filter expressions and the run conditions. Ask for it first and the assistant writes steps the engine accepts instead of guessing at field names.

Read docs://product-algorithms/format, then show me the algorithm behind recommendation <KEY> and explain what each step contributes.
Best practice

Start from a proven algorithm

recoms_listBestPracticeAlgorithms returns the algorithms Hello Retail recommends for a kind of page, each with its steps. recoms_create starts a new recommendation from one, and recoms_applyBestPracticeAlgorithm puts one on a recommendation that already exists, keeping its own global filters. Adapt the result afterwards with recoms_updateAlgorithm.

Show me the best practice algorithms for a product page, then create one using "Related products".

recoms_list

List the recommendations of a customer website using Hello Retail. Returns LIVE and DRAFT recommendations by default; pass includeArchived=true to also include archived ones. Each row carries the key, name, type, state, whether it is a draft, the key of the design it renders with and when it last changed. Type and state are the enum names the update tools take, such as FRONT_PAGE and LIVE. Read the rest with recoms_getAlgorithm, recoms_getGeneralSettings, recoms_getGoogleAnalyticsSettings, recoms_getPlacement and recoms_getContextCrawlConfig.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
includeArchived boolean No Whether to include archived recommendations. Defaults to false.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_list",
    "arguments": {
      "websiteUuid": "<string>"
    }
  }
}
{
  "recoms": [
    {
      "key": "<string>",
      "name": "<string>",
      "type": "FRONT_PAGE",
      "state": "LIVE",
      "draft": false,
      "designKey": "<string>",
      "lastModified": "<string>"
    }
  ]
}

recoms_create

Create a recommendation, the same way the dashboard's Create new menu does: pick the page it is for and one of Hello Retail's best-practice algorithms, and the recommendation starts with that algorithm's steps. Use recoms_listBestPracticeAlgorithms to see which algorithms a page type offers and what each one does.

The new recommendation is a DRAFT and shows nothing until it is published. It is named after the algorithm it started from, Retargeted - Box 1, and renaming it is recoms_updateGeneralSettings, the same second step as in the dashboard. It renders with the website's default design and attaches at its own default selector; placementDivExample is the element the shop pastes into the page where the recommendation should appear.

Write operation

This tool creates a recommendation in DRAFT state. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
type string Yes The page the recommendation is for: FRONT_PAGE, CATEGORY_PAGE, PRODUCT_PAGE, CART_PAGE, E404_PAGE, UPSELL_STEP, SEARCH_PAGE or OTHER.
algorithmName string Yes The best-practice algorithm to start from, as recoms_listBestPracticeAlgorithms reports it for this type, such as Related products.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_create",
    "arguments": {
      "websiteUuid": "<string>",
      "type": "PRODUCT_PAGE",
      "algorithmName": "Related products"
    }
  }
}
{
  "id": "<string>",
  "key": "<string>",
  "name": "Related products - Box 1",
  "type": "PRODUCT_PAGE",
  "state": "DRAFT",
  "algorithmName": "Related products",
  "designKey": "<string>",
  "placementDivExample": "<div id=\"hr-recom-<key>\"></div>",
  "lastModified": "<string>"
}

recoms_getGeneralSettings

Read the general settings of a recommendation: name, type, number of products, the devices it shows on, load order, Retail Media mode, whether the template renders when no products are found, and whether it is locked. The values come back exactly as recoms_updateGeneralSettings accepts them.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
key string Yes The key of the recommendation. Use recoms_list to find available keys.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_getGeneralSettings",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>"
    }
  }
}
{
  "key": "<string>",
  "state": "DRAFT",
  "name": "<string>",
  "type": "PRODUCT_PAGE",
  "productCount": 4,
  "responsiveMode": "BOTH",
  "priority": 5,
  "retailMediaInjectionMode": "ALL",
  "renderIfEmpty": false,
  "locked": false,
  "lastModified": "<string>"
}

recoms_updateGeneralSettings

Update the general settings of a recommendation, the fields of the General section in the editor. Updates are partial: omitted fields are left unchanged, but at least one must be provided. Editing a LIVE recommendation automatically creates a draft and leaves it in DRAFT state for review; if the key already has a draft, that draft is edited instead. The draftCreated field in the response tells you whether a new draft was created. Use recoms_getGeneralSettings first to read the current values. Publishing is not possible through this tool.

A few values are checked before anything is saved. The name must not be blank. The retired LEGACY type cannot be selected. You can show up to 20 products, or keep a higher count the recommendation already has. retailMediaInjectionMode requires Retail Media on your agreement; without it the call is refused and your assistant can ask Hello Retail to get in touch.

Write operation

This tool edits the recommendation and moves a LIVE recommendation to DRAFT state. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
key string Yes The key of the recommendation. Use recoms_list to find available keys.
name string No Name of the recommendation as shown in the dashboard. Must not be blank.
type string No The page the recommendation is for. One of: FRONT_PAGE, CATEGORY_PAGE, PRODUCT_PAGE, CART_PAGE, E404_PAGE, UPSELL_STEP, SEARCH_PAGE, OTHER.
productCount integer No Number of products the recommendation shows, at least 1.
responsiveMode string No Devices the recommendation shows on. One of: MOBILE, DESKTOP, BOTH.
priority integer No Load order among the page's recommendations, from 1 (loads first) to 10 (loads last).
retailMediaInjectionMode string No Retail Media content injected into the recommendation. One of: ALL (products and banners), PRODUCTS_ONLY, BANNERS_ONLY, NONE.
renderIfEmpty boolean No Whether the template renders even when no products are found.
locked boolean No Hello Retail staff only: lock the recommendation and hide it from the customer. Other callers get an error.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_updateGeneralSettings",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>",
      "productCount": 6,
      "responsiveMode": "MOBILE"
    }
  }
}
{
  "key": "<string>",
  "state": "DRAFT",
  "name": "<string>",
  "type": "PRODUCT_PAGE",
  "productCount": 6,
  "responsiveMode": "MOBILE",
  "priority": 5,
  "retailMediaInjectionMode": "ALL",
  "renderIfEmpty": false,
  "locked": false,
  "draftCreated": true,
  "lastModified": "<string>"
}

recoms_getAlgorithm

Read the algorithm of a recommendation: the ordered steps that fill it, the global filters every step draws through, and whether product variants count as one product. This is the Strategy section of the recommendation editor. productCount is the number of slots the steps fill, and filterableFields lists the product fields a filter or condition on this recommendation may name, which is the website's own filterable fields plus every field its context crawl config defines. matchesBestPractice names the best-practice algorithm the steps are still running unchanged, and is null once they have been tuned. Each step carries all of its possible fields, with the ones its productType does not use set to null. The format is documented in docs://product-algorithms/format; read it before making sense of what comes back. Edit with recoms_updateAlgorithm, or replace the steps wholesale with recoms_applyBestPracticeAlgorithm.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
key string Yes The key of the recommendation. Use recoms_list to find available keys.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_getAlgorithm",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>"
    }
  }
}
{
  "key": "<string>",
  "state": "LIVE",
  "type": "PRODUCT_PAGE",
  "productCount": 6,
  "filterByGroupingKey": true,
  "filters": [
    { "field": "inStock", "operator": "EQUALS", "value": "true" }
  ],
  "steps": [
    {
      "productType": "BOUGHT_TOGETHER",
      "productLimit": 0,
      "onlyOffers": false,
      "excludeProducts": false,
      "useAsContext": false,
      "filters": [],
      "condition": null,
      "skipDaysAgo": null,
      "numberDaysAgo": null,
      "numberReceipts": null,
      "skipReceipts": null,
      "productIds": null,
      "relatedTo": null,
      "searchTerm": null,
      "priceInfluence": 0.25
    },
    {
      "productType": "TOP",
      "productLimit": 0,
      "onlyOffers": false,
      "excludeProducts": false,
      "useAsContext": false,
      "filters": [
        { "field": "hierarchies", "operator": "IN", "value": "$hierarchies" }
      ],
      "condition": null,
      "skipDaysAgo": null,
      "numberDaysAgo": null,
      "numberReceipts": null,
      "skipReceipts": null,
      "productIds": null,
      "relatedTo": null,
      "searchTerm": null,
      "priceInfluence": null
    }
  ],
  "matchesBestPractice": "Related products",
  "filterableFields": ["pi.productCluster", "pi.budgetZone", "price", "inStock", "brand", "hierarchies"],
  "lastModified": "<string>"
}

recoms_updateAlgorithm

Change the algorithm of a recommendation. Read docs://product-algorithms/format first: it holds every step type with the extra fields it carries, the filter operators and $context expressions, the run conditions and worked examples. To start from a proven setup instead of writing steps by hand, use recoms_listBestPracticeAlgorithms and recoms_applyBestPracticeAlgorithm.

Updates are partial, and each argument replaces its part whole. Omitted arguments are left unchanged, but at least one must be given. Passing steps replaces every step, so read the current ones with recoms_getAlgorithm and send them back with your edits; a recommendation must keep at least one step, since one saved with none is read back as a default Top products box. An input the engine cannot run is refused with the path of the offending step, such as steps[1].searchTerm is not a field of a TOP step, and nothing is saved. Input that is storable but probably not what you meant, such as a filter on a field the website cannot filter on, is saved and reported in warnings.

Write operation

This tool replaces the recommendation's algorithm and moves a LIVE recommendation to DRAFT state. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
key string Yes The key of the recommendation. Use recoms_list to find available keys.
steps array No The whole ordered step list, replacing the current one. Steps run from the top, each filling the remaining slots. Fields per entry are described below.
filters array No The whole global filter list, replacing the current one. These apply to every step except MANUAL; [] removes them all. Same fields as a step's own filters, described below.
filterByGroupingKey boolean No Whether variants the catalogue groups together count as one product, so five colours of the same shirt cannot take five slots.

Each step has these fields. Only the extras belonging to its own productType may be set; another type's extra is refused rather than ignored.

Name Type Required Description
productType string Yes What the step contributes, such as RETARGETED, BOUGHT_TOGETHER, TOP or MANUAL. The catalogue is the one the dashboard's editor offers, listed in docs://product-algorithms/format; a type outside it is refused, except on an algorithm that already uses it.
productLimit integer No At most this many products from this step. 0, the default, means no limit: it fills whatever is left.
onlyOffers boolean No Only products currently on sale.
filters array No Filters applied to this step alone, on top of the global ones.
condition object No When the step runs at all. Omit it and the step always runs. Fields described below.
excludeProducts boolean No Inverts the step: instead of contributing products, it removes them from what the later steps may return. Only some step types support it.
useAsContext boolean No Its products are not shown; they become the products in context for the later steps, as if the page were about them. Only some step types support it.
skipDaysAgo, numberDaysAgo integer No The look-back window of a RETARGETED or RECENTLY_BOUGHT step: skip the most recent skipDaysAgo days, then look back numberDaysAgo further. RECENTLY_CREATED takes numberDaysAgo alone.
numberReceipts, skipReceipts integer No How many of the visitor's receipts a RECENTLY_BOUGHT step reads, and how many recent ones it skips. The dashboard does not show these: send back what recoms_getAlgorithm returned rather than setting them, or they reset to 100 and 0.
relatedTo string No The step type whose products a VIEWED_WITH or BOUGHT_WITH step starts from. RETARGETED or RECENTLY_BOUGHT, the two the editor offers.
searchTerm string No What a SEARCH step searches for. $title searches for the title of the product in context.
productIds string[] No The products a MANUAL step returns, in the order given.
priceInfluence number No How strongly an ALTERNATIVES or BOUGHT_TOGETHER step prefers similarly priced products. One of 0, 0.25, 0.5 or 0.75 and nothing between them, the notches the editor offers. Omit it and a new ALTERNATIVES step starts at 0.25, a new BOUGHT_TOGETHER step at 0.

Each filter, global or per step, has these fields:

Name Type Required Description
field string Yes A product field from filterableFields in recoms_getAlgorithm.
operator string Yes EQUALS, NOT_EQUALS, GREATER_THAN or LESS_THAN for a single-valued field; IN, NOT_IN or ALL for a list-valued one (hierarchies, category, extraDataList.*).
value string Yes A literal, a JSON list for a list-valued field, or a $context expression such as $user.avgPrice * 1.2 or $hierarchies|trimToLevel:2. A filter whose expression resolves to nothing aborts that step, and the next one runs.

A literal has to match the catalogue exactly, and guessing it is the usual reason a filter matches nothing. productData_getFieldValues lists the values a field actually has — the only practical way to get a hierarchy right, since they are $-separated (kids$shoes is Kids > Shoes). It reads the search index, so it answers only for fields indexed for search and not at all for range fields like price.

A condition is one of five shapes:

Name Type Required Description
type string Yes ALWAYS (same as no condition), COMPARE, ALL_OF, ANY_OF or NEVER. ALWAYS cannot be a rule inside a group.
field string For COMPARE A filterable field or a context path written without the leading $, such as user.bias.brand.
operator string For COMPARE EQ, NE, LT, LTE, GT or GTE for single values; ANY, ALL or NONE for lists.
value string No Compared as written. "null" tests for a missing value, and an empty string matches products that have none.
rules array For ALL_OF and ANY_OF The nested conditions, which may be groups themselves. An empty ALL_OF holds for everyone; an empty ANY_OF holds for nobody.
Example request & response

Retarget what the visitor viewed, treat those products as the subject, offer alternatives near their usual spend, then fall back to the catalogue for visitors with a known brand.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_updateAlgorithm",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>",
      "steps": [
        {
          "productType": "RETARGETED",
          "productLimit": 3,
          "useAsContext": true,
          "skipDaysAgo": 1,
          "numberDaysAgo": 30
        },
        {
          "productType": "ALTERNATIVES",
          "priceInfluence": 0.5,
          "filters": [
            { "field": "price", "operator": "LESS_THAN", "value": "$user.avgPrice * 1.2" }
          ]
        },
        {
          "productType": "TOP",
          "filters": [
            { "field": "brand", "operator": "EQUALS", "value": "$user.bias.brand" }
          ],
          "condition": {
            "type": "COMPARE",
            "field": "user.bias.brand",
            "operator": "NE",
            "value": ""
          }
        }
      ],
      "filters": [
        { "field": "inStock", "operator": "EQUALS", "value": "true" }
      ]
    }
  }
}
{
  "key": "<string>",
  "state": "DRAFT",
  "filterByGroupingKey": true,
  "filters": [
    { "field": "inStock", "operator": "EQUALS", "value": "true" }
  ],
  "steps": [
    { "productType": "RETARGETED", "productLimit": 3, "useAsContext": true, "skipDaysAgo": 1, "numberDaysAgo": 30 },
    { "productType": "ALTERNATIVES", "priceInfluence": 0.5 },
    { "productType": "TOP" }
  ],
  "warnings": [],
  "draftCreated": true,
  "lastModified": "<string>"
}

Each returned step carries all of its fields, with the unused ones null; they are left out here for brevity.

recoms_listBestPracticeAlgorithms

List the algorithms Hello Retail recommends for a kind of recommendation: the step sequences the dashboard offers when a recommendation is created or its type is changed. Each entry carries a name, one line on which products it puts in the recommendation, and its steps, so you can apply it as it stands with recoms_applyBestPracticeAlgorithm or adapt it and write it back with recoms_updateAlgorithm. Which ones exist depends on the type: a product page can use the ones about the product on the page, a front page cannot.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
type string Yes The page the recommendation is for: FRONT_PAGE, CATEGORY_PAGE, PRODUCT_PAGE, CART_PAGE, E404_PAGE, UPSELL_STEP, SEARCH_PAGE or OTHER. Read a recommendation's type from recoms_list.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_listBestPracticeAlgorithms",
    "arguments": {
      "websiteUuid": "<string>",
      "type": "PRODUCT_PAGE"
    }
  }
}
{
  "type": "PRODUCT_PAGE",
  "typeTitle": "Product page",
  "algorithms": [
    {
      "name": "Retargeted",
      "description": "Products this visitor has looked at, topped up with related picks",
      "steps": [
        { "productType": "RETARGETED" },
        { "productType": "BOUGHT_WITH", "relatedTo": "RETARGETED" },
        { "productType": "VIEWED_WITH", "relatedTo": "RETARGETED" },
        { "productType": "TOP" }
      ]
    },
    {
      "name": "Related products",
      "description": "Bought and viewed together with the product on the page",
      "steps": [
        { "productType": "BOUGHT_TOGETHER" },
        { "productType": "RELATED", "filters": [{ "field": "hierarchies", "operator": "NOT_IN", "value": "$hierarchies" }] },
        { "productType": "RELATED" }
      ]
    }
  ]
}

Each step carries all of its fields, with the unused ones null; they are left out here for brevity.

recoms_applyBestPracticeAlgorithm

Replace the steps of a recommendation with one of Hello Retail's best practice algorithms for its type, by name. Use recoms_listBestPracticeAlgorithms to see the names and what each one does; an unknown name is refused and the available ones are listed back.

Only the steps are replaced. The recommendation's global filters and filterByGroupingKey are kept, since they are the shop's own rules rather than part of what the algorithm recommends. Adapt the result afterwards with recoms_updateAlgorithm if it needs the recommendation's own filters or limits.

Write operation

This tool replaces the recommendation's steps and moves a LIVE recommendation to DRAFT state. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
key string Yes The key of the recommendation. Use recoms_list to find available keys.
algorithmName string Yes The name of the best practice algorithm, as recoms_listBestPracticeAlgorithms reports it, such as Related products.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_applyBestPracticeAlgorithm",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>",
      "algorithmName": "Related products"
    }
  }
}
{
  "key": "<string>",
  "state": "DRAFT",
  "name": "Related products",
  "steps": [
    { "productType": "BOUGHT_TOGETHER" },
    { "productType": "RELATED", "filters": [{ "field": "hierarchies", "operator": "NOT_IN", "value": "$hierarchies" }] },
    { "productType": "RELATED" }
  ],
  "warnings": [],
  "draftCreated": true,
  "lastModified": "<string>"
}

recoms_getGoogleAnalyticsSettings

Read the Google Analytics settings of a recommendation: whether it sends events, the category, action and label of the click event and of the view event, and the extra query parameters appended to product links. The values come back exactly as recoms_updateGoogleAnalyticsSettings accepts them.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
key string Yes The key of the recommendation. Use recoms_list to find available keys.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_getGoogleAnalyticsSettings",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>"
    }
  }
}
{
  "key": "<string>",
  "state": "LIVE",
  "gaEventEnabled": true,
  "gaEventCategory": "helloretail",
  "gaEventAction": "Recom click",
  "gaEventLabel": "<string>",
  "gaViewEventCategory": "helloretail",
  "gaViewEventAction": "Recom view",
  "gaViewEventLabel": "<string>",
  "extraLinkParams": "",
  "lastModified": "<string>"
}

recoms_updateGoogleAnalyticsSettings

Update the Google Analytics settings of a recommendation, the fields of the Google Analytics section in the editor. Updates are partial: omitted fields are left unchanged, but at least one must be provided; pass an empty string to clear a text field. Labels are sent prefixed with the recommendation type's title, for example Product page - <label>. A new recommendation starts with category helloretail, actions Recom click and Recom view, and its name as both labels; the dashboard's UTM suggestion for extraLinkParams is utm_source=helloretail&utm_medium=productbox&utm_campaign=<url-encoded name>. Editing a LIVE recommendation automatically creates a draft and leaves it in DRAFT state for review. Use recoms_getGoogleAnalyticsSettings first to read the current values. Publishing is not possible through this tool.

Write operation

This tool edits the recommendation and moves a LIVE recommendation to DRAFT state. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
key string Yes The key of the recommendation. Use recoms_list to find available keys.
gaEventEnabled boolean No Whether the recommendation sends Google Analytics events at all.
gaEventCategory string No Category of the event sent when a recommended product is clicked.
gaEventAction string No Action of the click event.
gaEventLabel string No Label of the click event.
gaViewEventCategory string No Category of the event sent when the recommendation is viewed.
gaViewEventAction string No Action of the view event.
gaViewEventLabel string No Label of the view event.
extraLinkParams string No Query parameters appended to every product link in the recommendation, without a leading ?, e.g. utm_source=helloretail&utm_medium=productbox.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_updateGoogleAnalyticsSettings",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>",
      "extraLinkParams": "utm_source=helloretail&utm_medium=productbox&utm_campaign=cart-upsell"
    }
  }
}
{
  "key": "<string>",
  "state": "DRAFT",
  "gaEventEnabled": true,
  "gaEventCategory": "helloretail",
  "gaEventAction": "Recom click",
  "gaEventLabel": "<string>",
  "gaViewEventCategory": "helloretail",
  "gaViewEventAction": "Recom view",
  "gaViewEventLabel": "<string>",
  "extraLinkParams": "utm_source=helloretail&utm_medium=productbox&utm_campaign=cart-upsell",
  "draftCreated": true,
  "lastModified": "<string>"
}

recoms_getPlacement

Read where and how a recommendation is placed on the page: the CSS selector it attaches to, the selectorMode deciding when that selector is evaluated, the insertMode deciding how it is inserted relative to the matched element, whether the selector is the default one, what that default is, and placementDivExample, the <div id="hr-recom-<key>"></div> you paste into your page where the recommendation should render by default. Change the first three with recoms_updatePlacement.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
key string Yes The key of the recommendation. Use recoms_list to find available keys.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_getPlacement",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>"
    }
  }
}
{
  "key": "<string>",
  "state": "LIVE",
  "selector": "#hr-recom-<key>",
  "selectorMode": "NORMAL",
  "insertMode": "REPLACE",
  "usingDefaultSelector": true,
  "defaultSelector": "#hr-recom-<key>",
  "placementDivExample": "<div id=\"hr-recom-<key>\"></div>",
  "lastModified": "<string>"
}

recoms_updatePlacement

Update where a recommendation is placed on the page: the CSS selector it attaches to, the selectorMode deciding when that selector is evaluated, and the insertMode deciding how it is inserted relative to the matched element. These fields only matter when Hello Retail renders the recommendation with a managed template; they have no effect if you fetch recommendations through the API and render them yourself. Updates are partial: omitted fields are left unchanged, but at least one of them must be provided. Passing an empty string as selector resets it to the default #hr-recom-<key>. Editing a LIVE recommendation automatically creates a draft and leaves it in DRAFT state for review; if the key already has a draft, that draft is edited instead. The draftCreated field in the response tells you whether a new draft was created. Use recoms_getPlacement first to read the current placement. Publishing is not possible through this tool.

Write operation

This tool edits the recommendation's placement and moves a LIVE recommendation to DRAFT state. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
key string Yes The key of the recommendation to update. Use recoms_list to find available keys.
selector string No CSS selector for the element the recommendation attaches to, at most 2000 characters. Pass an empty string to reset to the default #hr-recom-<key>.
selectorMode string No When the selector is evaluated. One of: NORMAL (evaluated when the script loads), LIVE_ONCE, LIVE_MULTI (the page is observed and the recommendation attaches when a matching element appears; LIVE_MULTI keeps observing for new matches).
insertMode string No How the recommendation is inserted relative to the matched element. One of: REPLACE, PREPEND, APPEND, BEFORE, AFTER.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_updatePlacement",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>",
      "selector": ".product-description",
      "insertMode": "AFTER"
    }
  }
}
{
  "key": "<string>",
  "state": "DRAFT",
  "selector": ".product-description",
  "selectorMode": "NORMAL",
  "insertMode": "AFTER",
  "draftCreated": true,
  "lastModified": "<string>"
}

recoms_getContextCrawlConfig

Read the context crawl config of a recommendation as crawl strings. The config runs in the visitor's browser on the page the recommendation renders on and extracts values from it; every field it defines is available to the recommendation's strategy as a filter value, $input.<field>. crawlStrings is an empty string when the recommendation crawls nothing, and null when the stored config cannot be rendered as crawl strings, in which case recoms_updateContextCrawlConfig cannot edit it either. fieldNames lists the fields the config defines. The syntax is documented in docs://crawl-strings/syntax.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
key string Yes The key of the recommendation. Use recoms_list to find available keys.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_getContextCrawlConfig",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>"
    }
  }
}
{
  "key": "<string>",
  "state": "LIVE",
  "crawlStrings": "brand: $(\".product-brand\").text().trim()\nprice: $(\".price\").text().replace(\",\", \".\")",
  "fieldNames": ["brand", "price"]
}

recoms_updateContextCrawlConfig

Replace the context crawl config of a recommendation with the given crawl strings; pass an empty string to remove it. Read docs://crawl-strings/syntax first: it holds the line shape, the field names a recommendation may define, selectors, processors and annotations. The text is parsed server-side, and the first syntax error rejects the call with its line, so nothing is saved. Deprecated field names still parse and come back in warnings. Editing a LIVE recommendation automatically creates a draft and leaves it in DRAFT state for review. Use recoms_getContextCrawlConfig first to read the current config. Publishing is not possible through this tool.

Write operation

This tool replaces the recommendation's context crawl config and moves a LIVE recommendation to DRAFT state. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
key string Yes The key of the recommendation. Use recoms_list to find available keys.
crawlStrings string Yes The whole context crawl config as crawl strings, one field per line. An empty string removes it.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_updateContextCrawlConfig",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>",
      "crawlStrings": "brand: $(\".product-brand\").text().trim()"
    }
  }
}
{
  "key": "<string>",
  "state": "DRAFT",
  "crawlStrings": "brand: $(\".product-brand\").text().trim()",
  "fieldNames": ["brand"],
  "warnings": [],
  "draftCreated": true,
  "lastModified": "<string>"
}

recoms_updateSelectedDesign

Assign a different design to one or more recommendations of a customer website using Hello Retail. Every listed recommendation is pointed at the design with the given key; use one call for bulk reassignments such as design rollouts, instead of calling once per recommendation. Recommendations already using the design are reported UNCHANGED and left untouched, so re-running the same call is safe. Editing a LIVE recommendation automatically creates a draft and leaves it in DRAFT state for review; the per-recommendation draftCreated field tells you when that happened. Use recoms_list to find recommendation keys and recoms_listDesigns to find design keys; copy a design first with recoms_copyDesign to point recommendations at an editable variant. Recommendations cannot be pointed at an archived design. Publishing is not possible through this tool.

All recommendations are checked before anything is written, so a bad key fails the whole call without changing anything. If a save fails midway, the error says how many recommendations earlier in the list were already updated; retry with only the remaining ones rather than the full list.

Write operation

This tool edits the listed recommendations and moves LIVE ones to DRAFT state. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
designKey string Yes The key of the design the recommendations should render with. Use recoms_listDesigns to find available keys.
keys array of strings Yes The keys of the recommendations to point at the design. Use recoms_list to find available keys.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_updateSelectedDesign",
    "arguments": {
      "websiteUuid": "<string>",
      "designKey": "<string>",
      "keys": ["<string>", "<string>"]
    }
  }
}
{
  "designKey": "<string>",
  "recoms": [
    {
      "key": "<string>",
      "state": "DRAFT",
      "outcome": "UPDATED",
      "draftCreated": true,
      "lastModified": "<string>"
    },
    {
      "key": "<string>",
      "state": "LIVE",
      "outcome": "UNCHANGED",
      "draftCreated": false,
      "lastModified": "<string>"
    }
  ]
}

recoms_listDesigns

List all designs available to a website: the company's custom designs (including archived ones) and the shared standard designs. Returns key, title, archived/standard flags and last-modified for each design. Use the key with recoms_getDesign or recoms_updateDesign. Archived and standard designs are read-only; copy them with recoms_copyDesign to get an editable design.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_listDesigns",
    "arguments": {
      "websiteUuid": "<string>"
    }
  }
}
{
  "designs": [
    {
      "key": "<string>",
      "title": "<string>",
      "archived": false,
      "standard": false,
      "lastModified": "<string>"
    }
  ]
}

recoms_getDesign

Retrieve the design (template and styles) for a customer website using Hello Retail. Use this before recoms_updateDesign to read the current state of the design.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
key string Yes The key of the design. Use recoms_listDesigns to find available keys.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_getDesign",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>"
    }
  }
}
{
  "key": "<string>",
  "title": "<string>",
  "templateCode": "<string>",
  "templateStyles": "<string>"
}

recoms_updateDesign

Update the design (template and styles) that recommendations render with. Edits the design with the given key. templateCode and templateStyles are optional and updates are partial: omitted fields are left unchanged, but at least one of them must be provided. Saving a design automatically creates a draft of any LIVE recommendation using it, leaving them in DRAFT state for review. Use recoms_getDesign first to read the current state before making changes. Publishing is not possible through this tool.

Write operation

This tool edits the design and moves any LIVE recommendations that use it to DRAFT state. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
key string Yes The key of the design to update. Use recoms_listDesigns to find available keys.
templateCode string No HTML/Liquid template for rendering the recommendation.
templateStyles string No CSS styles applied to the recommendation.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_updateDesign",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>",
      "templateStyles": "<string>"
    }
  }
}
{
  "key": "<string>",
  "designId": 0,
  "title": "<string>",
  "lastModified": "<string>"
}

recoms_copyDesign

Copy a recommendation design into a new, independent design for a customer website using Hello Retail. The copy starts from the source design's template and styles but gets its own key, so it can be edited without affecting the original. This is useful for customizing a standard or archived design, which cannot be edited directly. Use recoms_listDesigns to find the source key, edit the copy with recoms_updateDesign, and point recommendations at it with recoms_updateSelectedDesign.

Write operation

This tool creates a new design for the company. It does not change any recommendations or existing designs. Your assistant will ask for confirmation before this runs.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
sourceKey string Yes The key of the design to copy. Use recoms_listDesigns to find available keys.
title string No Title of the new design. Defaults to the source design's title with " (copy)" appended.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "recoms_copyDesign",
    "arguments": {
      "websiteUuid": "<string>",
      "sourceKey": "<string>",
      "title": "<string>"
    }
  }
}
{
  "key": "<string>",
  "designId": 0,
  "title": "<string>",
  "sourceKey": "<string>",
  "lastModified": "<string>"
}