Skip to content

Product Intelligence API

Free beta

Product Intelligence is in beta, and free while it's in beta. Expect it to move: fields can be renamed, added or removed, and we may start charging for access once the API leaves beta. We'll announce changes before they take effect, but don't build anything business-critical on it without a fallback.

The Hello Retail Product Intelligence API employs cutting-edge artificial intelligence technology to offer an extensive analysis and insights about your product catalog. These valuable insights can significantly influence business decisions such as which products to retain in the inventory and when and how to distribute marketing resources. The Product Intelligence API goes beyond the traditional methods, using AI to extrapolate and understand potential trends and demand, thereby augmenting decision-making with data-driven insights.

The API exposes two GraphQL queries, each documented on its own page:

  • productInsight accepts a specific product and returns data insights about it: lifetime value, recurrence patterns, typical discount levels, buyer retention and seasonal sales patterns.
  • topProducts answers the inverse question: which of your products best match a criterion? It returns a ranked product list for campaign targeting, discount optimization and time-based promotions.

How the analysis works

Please be aware that while the model is based on a substantial dataset, it may not generate insights for every product. This limitation is due to the varying data quantity and quality available for different products. In cases where sufficient data is lacking to deliver an accurate response, our system opts to send an empty response instead of potentially inaccurate data, thereby upholding the accuracy of the API.

Before insights can be generated for a product, it must first be created in Hello Retail. Most often this happens through your product feed. Additionally, we require your product to have a description and a valid image before we will be able to analyze it. There is also a delay when creating new products until this analysis has happened.

We are continuously updating and improving the model.

Accessing and Authenticating GraphQL API

The data is made available in a GraphQL API that is available from the URL:

https://core.helloretail.com/pi/graphql

This page also has a GraphiQL test interface for running queries, and a "Docs" panel containing the full schema with all available fields.

To interact with the API, you will need to authenticate. Both methods require a Hello Retail account. If you don't yet have an account, you can create a new one on my.helloretail.com. There are two primary mechanisms for authentication:

  1. User Session Authentication: If you are already logged into my.helloretail.com and try to access the API in your browser, you will be automatically authenticated. This method is primarily useful for testing.

  2. API-key Authentication: Please, see details here: Authentication Guide

Regardless of the authentication method, you can only request data for websites that you have access to.

Purchase next

For the purchase next API-endpoint you have to use our Unmanaged Recommendations API, using the BOUGHT_NEXT source type.

Below is an example in JavaScript:

 async function loadRecoms() {
        var data = {
            websiteUuid: '{website id}',
            trackingUserId: '{tracking user}',
            requests:[{
                trackingKey: 'testing',
                count: 8,
                sources: [
                    {
                        type: "BOUGHT_NEXT"
                    }
                ],
                fields: ["title", "url",]
            }]
        };
        var options = {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify(data),
        }
        const response = await fetch('https://core.helloretail.com/serve/recoms', options);
        return await response.json();
    }
    loadRecoms().then((resp) => {
        console.log(resp);
    })