Traducida del inglés. Si hay alguna diferencia, la página en inglés es la referencia. Leer en inglés

Duplicados: Requiere atención y Mismo producto

Cómo gestionan las importaciones los productos que quizá ya existen, cómo resolverlos y cómo unir dos productos en uno.

Cuando una importación de un canal encuentra un elemento que podría ser un producto que ya está en Nembol (pero sin certeza), no adivina ni lo descarta: el elemento entra en pausa, con estado to_verify ("Requiere atención" en el panel). No se publica, sincroniza ni vincula hasta que alguien decida.

Encontrar lo que requiere atención

curl "https://api.nembol.com/rest/v1/products?status=to_verify" \
  -H "Authorization: Bearer $NEMBOL_API_KEY"

Cada producto explica el motivo en requires_attention:

{
  "id": "prod_7c1e",
  "status": "to_verify",
  "requires_attention": {
    "reason": "ambiguous_match",
    "message": "The SKU matches more than one product in Nembol",
    "channel": "etsy",
    "conflicting_product_ids": ["prod_51aa", "prod_51ab"],
    "detected_at": "2026-10-13T10:00:00.000Z"
  }
}

Las importaciones indican cuántos elementos entraron así (import.requires_attention en la operación). Mientras un producto está en to_verify, las escrituras de anuncios responden 409 product_requires_attention y las escrituras de inventario asociadas por SKU lo omiten.

Resolverlo

Hay dos salidas:

  • Es el mismo artículo que un producto existente → únelos con POST /products/merge (más abajo). Esto también lo resuelve.
  • En cualquier otro caso → POST /products/{id}/resolve:
resolutionCuándo
keep_independent (+ with)Es un producto distinto de los de with. Se recuerda: no se vuelve a proponer. Si with deja fuera algunos productos en conflicto, sigue en to_verify con los demás. Comprueba resolved_ids.
made_to_orderAnuncio de Etsy con una sola cantidad para todas las variantes, hecho por encargo: cada variante mantiene esa cantidad.
recheckEl vendedor corrigió la configuración de Etsy: Nembol vuelve a leer el anuncio (409 still_requires_attention si aún no está corregida).
ignoreNo se quiere en Nembol: el producto se elimina y las futuras importaciones omiten ese anuncio del canal. No cambia nada en el canal.

Los motivos de Etsy (etsy_shared_quantity, etsy_processing_profiles) son configuraciones del canal, no duplicados: keep_independent responde 409 resolution_not_applicable para ellos.

Los anuncios ignorados se listan con GET /ignored_listings; DELETE /ignored_listings/{id} deja de ignorar uno, y la siguiente importación de ese canal lo vuelve a traer.

Unir dos productos (Mismo producto)

curl -X POST https://api.nembol.com/rest/v1/products/merge \
  -H "Authorization: Bearer $NEMBOL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"product_ids": ["prod_51aa", "prod_7c1e"], "survivor_id": "prod_51aa", "dry_run": true}'
  • El superviviente conserva su id; los demás se archivan con merged_into y sus anuncios pasan al superviviente. Después, todos los canales comparten un único stock por variante.
  • Envía siempre primero dry_run: true y muestra la vista previa: title, variants y lo que mostrará cada canal (listings).
  • choices elige, por campo, de qué producto procede un valor (por defecto: el superviviente): title, description, sku, barcode, price, quantity, photos, tags, category. Por ejemplo: "choices": {"photos": {"from": "prod_7c1e"}, "quantity": {"values": {"var_1": 5}}}. Tomar photos trae también las imágenes de las variantes de ese producto. Los canales conservan sus propios títulos y descripciones.
  • Los productos que no se parecen aparecen en looks_different: para unirlos hace falta confirm_different: true.
  • Se rechaza cuando dos productos están publicados en la misma cuenta de canal (422 same_channel_account).
  • Se puede deshacer durante 30 días con POST /actions/{id}/undo (el id está en la cabecera Nembol-Action-Id).

Variantes que no se corresponden

Las variantes se asocian por SKU y después por valores de opción. Cuando eso falla, la unión responde 422 variants_differ con error.details.matching: ambas listas de variantes y una suggestion. Si manual_allowed es true (el producto absorbido solo está publicado en Etsy, Shopify o WooCommerce, con el mismo número de variantes), asócialas tú y vuelve a enviar la unión:

{
  "product_ids": ["prod_51aa", "prod_7c1e"],
  "survivor_id": "prod_51aa",
  "variant_maps": { "prod_7c1e": { "var_e1": "var_a1", "var_e2": "var_a2" } }
}

El mapa debe ser completo y uno a uno. Tras la unión, las variantes del canal toman los nombres de Nembol (y los SKU cuando el canal lo permite).

Eventos

Una unión emite product.updated para el superviviente (data.merged) y product.deleted para cada producto absorbido (data.merged_into). Una resolución emite product.updated (product.deleted para ignore).

Buenas prácticas para agentes

  • Nunca resuelvas ni unas por tu cuenta: muestra a la persona los productos en conflicto uno al lado del otro y deja que elija.
  • Usa dry_run antes de cada unión y guarda el id de la acción para poder deshacerla.

Última actualización el 20 de octubre de 2026

¿Necesitas ayuda?

Escríbenos y te responde una persona, normalmente en un día laborable.

En esta página