---
title: "Nosto events"
description: "Events the Nosto integration handles and what each does."
sidebar:
  label: Events
---

The integration sends catalog data to Nosto over the GraphQL API, for the configured market, store group, and online warehouse. When **Sync store groups** is set, events for other store groups are ignored; price events are additionally filtered to the configured market.

Nosto products are identified by the Enad product number, and SKUs by the Enad variant number. Deleted products are discontinued in Nosto rather than removed, because Nosto only supports discontinuing products.

## Products

| Event | What Enad sends |
|---|---|
| Product created | A Nosto product via the create mutation: name, description, images, brand, tags as `tag1`, collections as `tag2`, series as `tag3`, category URL paths, SKUs with per-variant prices and availability, per-store-group price variations, and the attribute set described on the main page. |
| Product updated | The same payload via the update mutation. |
| Product unchanged | Not sent again. |
| Product deleted | Discontinues the product through the REST API. Always sent. |

Product pricing comes from the configured store group and market, sale prices included. Availability is computed from status, stock in the online warehouse, and price: an inactive product or one priced at or below zero is discontinued in Nosto. When the product status is active, a per-market status override applies.

## Variants

| Event | What Enad sends |
|---|---|
| Variant updated or deleted | Nothing. Variants reach Nosto only as SKUs inside the parent product payload, so a variant change syncs when the product, its prices, or its stock are next sent. |

## Prices

| Event | What Enad sends |
|---|---|
| Prices updated (store group or single market) | Reloads the full product and sends a product patch with recomputed prices and availability for the configured store group and market. Unchanged patches are not sent again. |

## Stock

| Event | What Enad sends |
|---|---|
| Stock updated or delta | Reloads the parent product and sends a patch with recomputed availability and stock levels for the product and all its SKUs. Inventory is counted from the configured online warehouse. Always sent, without deduplication. |
| Inventory removed | The same patch flow, with that SKU marked out of stock at quantity 0. |

A zero-priced product flips to discontinued when availability is recomputed.

## Categories

| Event | What Enad sends |
|---|---|
| Category upsert | Creates or updates the category in Nosto with its URL path and parent, keyed by the Enad category ID. Unchanged categories are not sent again. |
| Category deleted | Nothing. Deleted categories are never removed in Nosto. |
| Category relationship created or deleted | Nothing. Category membership is part of the product payload and updates when products sync. |

## Tags, attributes, and images

| Event | What Enad sends |
|---|---|
| Tag or image relationship created or deleted | Rebuilds and resends the full product payload, which is how new tags and images reach Nosto. Always sent, without deduplication. |
| Attribute events | Nothing. Attributes sync only as part of full product rebuilds. |

Brand and series values reach Nosto inside the product payload.

## Field mapping

| Enad data | Nosto destination |
|---|---|
| Product number | Product ID (`product_id`) |
| Variant number | SKU ID |
| Product name | `name`, shaped by **Product name structure** (brand name prepended when selected) |
| Slug and product URL prefix | Product and SKU URLs |
| Description | `description`, HTML description first, then plain, then the locale translation |
| Images | First image as `image_url`, the rest as `alternate_image_urls`; variant images on their SKU |
| Brand | `brand`, plus the `brand_slug` and `brand_name` custom fields |
| Series | `tag3`, plus the `serie_slug` and `serie_name` custom fields |
| Tags | `tag1`, plus `tags_raw` and `tag_sort_<tag>` custom fields |
| Collections | `tag2` |
| Categories | `categories` as URL paths and `categoryIds` as Enad category IDs |
| Price | `price` and `listPrice` on the product variation for the configured store group and market, tax-inclusive, with the sale price taking the `price` slot |
| Stock | `inventory_level` from the configured online warehouse, per product and per SKU |
| Attributes | `attr_<template-key>_names` and numbered `attr_<template-key>_<index>` custom fields |
| Dimensions | `product_dimensions_*`, `package_dimensions_*`, and `variant_dimensions_*` custom fields |
| Relations | `relations_raw` custom field |
| Warehouses | `warehouse_<slug>` and `warehouse_<slug>_count` custom fields |
| Custom fields | Sent as key/value attributes, optionally filtered by **Include custom fields keys** |
| Created at | `date_published` |
| Market | `price_currency_code` and the availability math |

## Related

- [Nosto](/integrations/nosto)
- [Nosto configuration](/integrations/nosto/configuration)
