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.
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.
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.
See why a value changed
productData_getChanges shows why a product's price or availability changed. Check it before investigating the feed.
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.
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.
productData_search¶
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
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
{
"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
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
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.enqueuedAtis when it was queued, andrerunRequestedistruewhen 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.