> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.recurrente.com/referencia-api/api-reference/webhook-events/product-inventory-adjusted-webhook/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.recurrente.com/_mcp/server. # Inventario ajustado POST Se emite cuando alguien mueve un conteo a propósito: el comercio desde la pantalla de Inventarios, o una integración por la API. No se emite en cada venta. Una venta ya llega como su propio evento de pago, y su `items[].variant` dice qué combinación salió; este evento es para lo que no tiene un pago detrás — una entrega recibida, una merma, un reconteo después de cerrar. `variant` es `null` cuando el que lleva el conteo es el producto. `movement` es la línea que quedó en el libro, la misma que devuelve `GET /products/{id}/inventory_movements`. Reference: https://docs.recurrente.com/referencia-api/api-reference/webhook-events/product-inventory-adjusted-webhook ## Request ### Payload - `id` (string, optional) - `status` (string, optional) - `name` (string, optional) - `api_version` (string, optional) - `event_type` (string, optional) - `inventory_quantity` (integer, optional, nullable) — El conteo que quedó, del producto o de la combinación, según de quién sea el movimiento. - `low_stock_threshold` (integer, optional) — El umbral contra el que se juzga ese conteo, ya resuelto y del mismo registro que el conteo: una combinación sin umbral propio hereda el del producto, y el producto el de la cuenta. Así se compara directo, sin tener que resolver la herencia del otro lado. - `variant` (ProductVariant, optional, nullable) — La combinación cuyo conteo se movió; `null` si fue el del producto. - `movement` (InventoryMovement, optional) — Una línea del libro de inventario: qué se movió, por qué, y qué quedó. El conteo que devuelve el resto de la API es un caché de la última de estas líneas. - `created_at` (datetime, optional) ## Types ### ProductVariant Una combinación vendible de las opciones del producto (el modelo de variantes de Shopify). Su precio es un `Price` del producto; la línea del checkout apunta a ese `price_id` y el webhook trae la variante en `items[].variant`. - `id` (string, optional) - `product_id` (string, optional) — El producto al que pertenece esta combinación. El SKU es único por producto, no por cuenta, así que es lo que permite resolver una fila de la lista. - `status` (enum, optional) - Allowed values: `active`, `archived` - `title` (string, optional) — Los valores unidos por " / ". - `option_values` (list of string, optional) - `sku` (string, optional, nullable) - `price_id` (string, optional) — El precio de esta variante. - `amount_in_cents` (integer, optional) - `currency` (string, optional) - `inventory_quantity` (integer, optional, nullable) — Existencias de esta variante. `null` es ilimitado. Baja con cada venta pagada de esta variante y puede quedar en negativo si se vendió más de lo que había; un número escrito aquí es cero o más. - `low_stock_threshold` (integer, optional, nullable) — Desde qué cantidad se considera baja esta variante. `null` usa el valor por defecto de la cuenta. ### InventoryMovement Una línea del libro de inventario: qué se movió, por qué, y qué quedó. El conteo que devuelve el resto de la API es un caché de la última de estas líneas. - `id` (string, optional) - `product_id` (string, optional) - `variant_id` (string, optional, nullable) - `delta` (integer, optional) — Las unidades que se movieron, con signo: una venta es negativa, una entrega positiva. - `resulting_quantity` (integer, optional) — El conteo que quedó justo después de este movimiento. - `reason` (enum, optional) — `sale` y `refund` los escribe un pago; el resto los escribe el comercio o una integración. `manual` es un conteo escrito en el formulario del producto y `api` su equivalente enviado por la API. - Allowed values: `sale`, `refund`, `received`, `recount`, `damaged`, `lost`, `manual`, `api` - `note` (string, optional, nullable) - `created_at` (datetime, optional)