Product Catalog sync through API

This page will describe how you can use our GraphQL API to synchronize product catalog AI Knowledge with your systems, with the aim to use this knowledge in your generative AI bots.

Introduction

This feature allows to keep knowledge about products up to date, by allowing you to send updates, creations and deletion operations about the product information your system holds. Upon receiving these events, we'll index the new knowledge such that your bot can use the very latest information to answer your visitors' questions.

To do so, we'll look into how you can create a knowledge source (your product catalog), and insert, update and delete knowledge items (your products information).

Although this step is optional, we highly recommend you take the time to properly configure the custom data that holds the product id. This will enable the generative AI bots to automatically fetch the relevant product information based on the visitor's current page.

You'll find an article describing how to set up a custom data here. Take note of the custom data variable name, it will be useful during step 2.

Step 2: Create a new KnowledgeSource

This operation will only need to be done once, therefore there is no need to write any code for it.

It consists in using GraphQL to create a new KnowledgeSource, and taking note of the identifier that was attributed to it. This identifier will be used during step 3.

You can open the GraphQL mutation by clicking on this link. You'll need to:

  • Be logged in as an administrator.

  • Replace the variables in the bottom panel with the identifier of your project, the name of the knowledge you're about to create ("API sync product catalog" for instance), and put the name of the custom data variable.

  • Execute the query by clicking the KnowledgeSourceCreate blue button

  • Write down the identifier of the KnowledgeSource that will appear in the right panel

If you are requesting our GraphQL API directly, do not forget to get your GraphQL token first

Step3: Synchronize your products with us

Now you have a KnowledgeSource, you can add, update or delete items within that source. In order to do this, you'll need to react to events within your system and call our GraphQL API.

Create or update a product with upsert

You can use this mutation, bearing in mind you can submit up to 20 products in a single mutation.

When using the mutation knowledgeProductsUpsert to update a product, you need to send all the product's payload. If you want to only send fields which have changed (eg. price, availability, etc.), please refer to the knowledgeProductsPatch mutation described below.

When upserting a large number of products or an entire catalog, ensure that you comply with the rate limit of 50 requests per second. This limit is enforced on a per-IP address basis.

Below is an example of request you can use to upsert products. This example only references a subset of fields you can set for products. Please refer to the definition of each available field in our GraphQL documentation and to get the expected type and values for each field.

Partially update products (patch)

Use this mutation when you only need to change a subset of fields for products that already exist in the knowledge source. Unlike knowledgeProductsUpsert, you do not send a full product payload: for each field, omit it to leave the stored value unchanged, pass null to clear it, or pass a value to set or replace it.

Value passed in the query for one field
Effect on the product's field on iAdvize's side

non-null value

the current field's value will be replaced with the new value. This behavior also impacts array fields (for example productDetails): setting a new value for the array will override the array. You can't just add or update one value of an array.

null value

field's value will be cleared

no value passed (not even null)

value will remain unchanged

Each object in products must include the product id plus at least one other patchable field (otherwise the request is rejected).

You can patch up to 100 products in a single mutation (compared to 20 for upsert).

Note: The response returns immediately with the list of products that were accepted for update, but indexing is asynchronous, like upsert. Respect the same rate limit (50 requests per second per IP address) when patching large catalogs.

Mutation

Variables

For example if you want to:

  1. Set product 1's availability to OUT_OF_STOCK

  2. Set product 2's price to 14.99 EUR and its availability to IN_STOCK

  3. Remove product 3's brand information (a null value will remove the data)

Delete a product

Last updated