Skip to content

Product data

Find products by free text, fetch a product's full indexed details, inspect how it has changed over time, list the values a field actually has in the search index, and check whether the catalog is waiting to be re-indexed.

Tips & tricks

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

Finding a product

Start from the name, not the id

Most tools want a product id, and nobody knows those by heart. productData_search takes what a person would actually say (a product name, a category, a product number) and gives back the id along with the title, brand and price, so two similar products are easy to tell apart.

Find the blue cap on my website and show me its full product data.
Root cause

Check the feed run first

If a product's data looks wrong, check the feed run that produced it before investigating the product itself. A failed or partial feed run is the most common cause.

Pass a product number from a feed run to productData_get to see what Hello Retail indexed for it.

Show the indexed product data for product number <NUMBER> on my website.
Change history

See why a value changed

productData_getChanges shows why a product's price or availability changed. Check it before investigating the feed.

Show the recent changes for product number <NUMBER> on my website.
Exact values

Read the value before you boost or filter on it

Search boosts and filters match a field's value exactly as indexed, so a guessed spelling or casing silently matches nothing. productData_getFieldValues lists what the index really holds. Category paths come back $-separated, as in kids$shoes.

List the brand values indexed for my website that contain "nik".
Re-index

Is my change live yet?

Synonyms and indexed fields only reach visitors once the product catalog has been re-indexed. Editing either schedules a run for you a few minutes out and later edits join it, so there is nothing to start by hand. Use this to see where the run stands.

Add the synonyms we agreed on and index the "material" field for filtering, then tell me when it will be live.

Find products on a website by free text, the way the Products > Finder page does in the Hello Retail admin UI: it matches titles, keywords, product numbers, categories, descriptions and brands, and returns the best matches first. A title match counts for more than a description match, so searching by name works the way you would expect.

Use it to turn a product someone named into the id other tools need, such as promoting it in a Retail Media campaign or elevating it in a search engine. Each hit is a short summary; pass its url to productData_get for the product's full data.

Only indexed products can be found, so a product that has been saved but not yet re-indexed will not appear. productData_getReindexStatus says whether a run is pending.

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.
query string Yes What to search for: a product name, a category or a product number. Use * to match every product.
skip integer No Number of matches to skip, for paging. Defaults to 0.
limit integer No Maximum number of products to return. Default 20, maximum 100.

hasMore says whether another page may follow; ask for it by raising skip by the number of products you got back.

Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "productData_search",
    "arguments": {
      "websiteUuid": "<string>",
      "query": "blue cap",
      "limit": 20
    }
  }
}
{
  "query": "blue cap",
  "products": [
    {
      "id": "<string>",
      "title": "Blue cap",
      "url": "<string>",
      "productNumber": "<string>",
      "brand": "Nike",
      "price": 149.0,
      "currency": "DKK",
      "inStock": true
    }
  ],
  "hasMore": false
}

productData_get

Retrieve full product data for a product on a Hello Retail website, looked up by URL or product number. Provide exactly one of url or productNumber. Returns identity, pricing, inventory, categorisation, scoring, and feature-flag fields that match the Products > Data lookup page in the Hello Retail admin UI. Deleted products return only url, id, and status.

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.
url string No The full URL of the product to look up. Provide exactly one of url or productNumber.
productNumber string No The product number of the product to look up. Provide exactly one of url or productNumber. When multiple products share a product number, the ACTIVE product is preferred.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "productData_get",
    "arguments": {
      "websiteUuid": "<string>"
    }
  }
}
{
  "url": "<string>",
  "id": "<string>",
  "status": "<string>",
  "websiteUuid": "<string>",
  "inStock": false,
  "created": "<string>",
  "lastSeen": "<string>",
  "price": 0.0,
  "priceExVat": 0.0,
  "oldPrice": 0.0,
  "oldPriceExVat": 0.0,
  "currency": "<string>",
  "priceLowered": false,
  "title": "<string>",
  "description": "<string>",
  "brand": "<string>",
  "keywords": "<string>",
  "hierarchies": [],
  "imgUrl": "<string>",
  "ean": "<string>",
  "productNumber": "<string>",
  "variantProductNumbers": [],
  "groupingKey": "<string>",
  "disabledInFeature": [],
  "productScore": {},
  "normalizedScore": 0.0,
  "extraData": {},
  "extraDataNumber": {},
  "extraDataList": {},
  "pi": {}
}

productData_getChanges

Retrieve the change history for a product on a Hello Retail website, looked up by URL or product number. Provide exactly one of url or productNumber. Returns changes grouped by field name, each entry listing prior values with date and source. Changes are in reverse-chronological order (newest first). The current value lives on the product itself; use productData_get to see it.

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.
url string No The full URL of the product to look up. Provide exactly one of url or productNumber.
productNumber string No The product number of the product to look up. Provide exactly one of url or productNumber. When multiple products share a product number, the ACTIVE product is preferred.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "productData_getChanges",
    "arguments": {
      "websiteUuid": "<string>"
    }
  }
}
{
  "<fieldName>": [
    {
      "date": "<string>",
      "source": "<string>",
      "oldValue": "<string>"
    }
  ]
}

productData_getFieldValues

List the distinct values a product field has in a website's search index. Use it to pick correct values for search boosts (search_updateProductEngineBoosts), product filters and initial content filters. Values are returned exactly as indexed, and a boost or filter must use that raw value. Hierarchy values use a $-separated encoding: kids$shoes is the category path Kids > Shoes.

Range fields (price, priceExVat, created, extraDataNumber.*) have no distinct value list and are rejected. The field must be indexed for search; see dataFields_getProductFields and dataFields_updateProductFieldsIndexing.

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.
field string Yes The field to list values for, such as brand, hierarchies or extraData.color.
match string No Only return values containing this text (case-insensitive).
limit integer No Maximum number of values to return. Default 100, maximum 1000.

totalCount is the number of matching values before the limit was applied, and truncated says whether the list was cut off.

Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "productData_getFieldValues",
    "arguments": {
      "websiteUuid": "<string>",
      "field": "brand",
      "match": "nik",
      "limit": 100
    }
  }
}
{
  "field": "brand",
  "values": [
    "Nike"
  ],
  "totalCount": 1,
  "truncated": false
}

productData_getReindexStatus

Report whether a customer website's product catalog is waiting to be re-indexed, which is what publishes saved changes to visitors. Editing search synonyms (search_addSynonyms and its siblings) or which product fields are indexed (dataFields_updateProductFieldsIndexing) schedules a run automatically. Content (categories, site pages, blog posts and brands) is a separate catalog with its own tool, contentData_getReindexStatus.

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.

The state field says where the catalog stands:

  • IDLE: nothing is pending, so everything saved has been indexed.
  • SCHEDULED: a run is queued and has not started. Changes saved until it starts join that run.
  • INDEXING: a run is under way. enqueuedAt is when it was queued, and rerunRequested is true when a change saved after it started is already booked into a follow-up run.

There is no tool that starts a run or brings a scheduled one forward: a run is always scheduled automatically by the change that needs it.

Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "productData_getReindexStatus",
    "arguments": {
      "websiteUuid": "<string>"
    }
  }
}
{
  "state": "SCHEDULED",
  "enqueuedAt": "2026-09-03T14:00:00Z",
  "rerunRequested": false
}