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

Editar un producto: qué llega realmente a los canales

Tu PATCH siempre actualiza Nembol; lo que se propaga a cada canal depende de la configuración de sincronización del vendedor.

PATCH /products/{id} (y los endpoints de variantes e inventario) siempre actualizan Nembol, de forma síncrona, y la respuesta lo refleja. Que el cambio llegue después a cada canal es otra cuestión, que depende de la configuración de sincronización por canal del vendedor en el panel de Nembol.

Las cuentas nuevas empiezan con todas las opciones desactivadas

En todos los canales, una cuenta recién conectada tiene todas sus opciones de sincronización desactivadas (false), tanto desde la API como desde el panel. Activa las que quiera el comerciante con PATCH /channel_accounts/{id} (ver más abajo).

La opción "Enviar actualizaciones a (canal)" (por canal)

Cada conexión de canal tiene una opción Enviar actualizaciones a (canal). Según cómo la tenga el canal de un anuncio:

  • Activada: la edición se propaga por completo: contenido, precio y cantidad se envían al canal.
  • Desactivada: Nembol envía solo la cantidad (el canal conserva su propio contenido y precio; con pequeños matices por canal: OnBuy sigue recibiendo precio y stock, Google Merchant Center solo la disponibilidad).

Es una decisión del vendedor, no un error: muchos comerciantes cuidan el contenido directamente en un canal y usan Nembol solo para el stock.

Por qué importa para tu integración

Puedes hacer PATCH de un título, recibir un 200, ver que la operación termina con éxito y seguir viendo el título antiguo en el canal, porque el trabajo envió legítimamente solo la cantidad. Si una edición de contenido "no se aplicó" en un canal:

  1. No reintentes. La API hizo exactamente lo que configuró el vendedor.
  2. Pide al comerciante que revise Canales → (canal) → Enviar actualizaciones a (canal) en su panel.
  3. Una vez activada, fuerza un nuevo envío con PATCH /listings/{id} y un cuerpo vacío (una resincronización simple).

Las ediciones también pueden ir en sentido contrario

Los vendedores pueden elegir un canal (Shopify o WooCommerce) como su canal líder de contenido: las ediciones hechas en ese canal llegan a Nembol y, desde ahí, a los demás canales. Si está activado, el contenido que escribe tu integración puede ser sobrescrito legítimamente por las ediciones del vendedor en el canal. En cuanto al stock, las ediciones de cantidad y las ventas en el canal llegan a Nembol según sus propias opciones por canal.

Regla práctica: Nembol es el centro, pero el vendedor decide la dirección de cada tubería. Si tu integración da por hecho que es la única que escribe, acuerda con el comerciante qué opciones se quedan desactivadas.

Textos por canal

Un anuncio puede tener su propio título y descripción (overrides en el anuncio; todo anuncio importado empieza con los textos del canal). El canal recibe el texto del anuncio cuando está definido y, si no, el del producto (consulta Listing.content).

  • PATCH /products/{id} cambia los textos del producto. En un producto con un solo anuncio, ese anuncio lo sigue; con varios, los anuncios con texto propio lo conservan.
  • PATCH /listings/{id} con overrides.title / overrides.description define los textos de un canal; null hace que vuelva a usar los del producto.
  • Un canal líder de contenido reemplaza los textos del producto y los textos propios de cada anuncio. Para no tocar el contenido de un canal, desactiva Enviar actualizaciones a (canal) en ese canal (precio y stock se siguen sincronizando).

Puntos a tener en cuenta

  • Los precios pueden transformarse al salir. Las reglas de precio por canal (ajustes porcentuales o fijos) se aplican al enviar, así que es normal que el precio del canal difiera de tu PATCH cuando hay reglas configuradas.
  • La cantidad siempre se sincroniza (es lo único que envían todos los modos). Si ni siquiera la cantidad cambia, es un error real: revisa los issues[] del anuncio y la operación.
  • Estas opciones son por cuenta de canal. Una cuenta de eBay puede tener sincronización completa y una segunda, solo de cantidad.

Leer las opciones desde la API

No hace falta preguntar al comerciante: cada entrada de GET /channel_accounts incluye las opciones:

{
  "id": "chac_66a1f09b2",
  "channel": "ebay",
  "sync": {
    // Nembol pushes content + price + quantity to this channel.
    // false = quantity only; the channel keeps its own content and
    // price (two exceptions: OnBuy still gets price+stock, Google
    // Merchant Center only availability).
    "product_edits": true,

    // Sales on this channel adjust stock everywhere.
    "quantity_from_orders": true,

    // Quantity edited directly ON the channel flows back into Nembol.
    // null = the switch isn't there (channel doesn't have it, or an older
    // account never stored it): it behaves as off. New accounts start false.
    "quantity_from_channel_edits": null,

    // true would make this channel the CONTENT LEADER: its edits
    // overwrite Nembol content (at most one channel per store).
    "content_from_channel_edits": null,

    // Orders received here are transferred to the store's fulfillment
    // channel (at most one channel per store).
    "transfer_orders": null
  },

  // Price rule applied when Nembol pushes prices to this channel:
  // here every price goes out +10%, rounded to .99. This is why the
  // channel price can legitimately differ from what you PATCH.
  "pricing": {"mode": "percentage", "value": 10, "rounding": true},

  // Quantity cap: the channel shows at most 5 units even with 40 on
  // hand. (On Google Merchant Center, which only gets availability, the
  // threshold is a MINIMUM: in stock only while quantity >= threshold.)
  "inventory": {"control": true, "threshold": 5},

  // What can be changed on THIS account with PATCH (varies by channel).
  "writable": ["sync.product_edits", "sync.quantity_from_orders", "pricing.mode", "…"]
}

Cambiarlas desde la API

Con una clave que tenga el scope channels:write, PATCH /channel_accounts/{id} cambia las mismas opciones que el comerciante ve en el panel, con los mismos efectos. Envía solo lo que cambias:

curl -X PATCH https://api.nembol.com/rest/v1/channel_accounts/chac_66a1f09b2 \
  -H "Authorization: Bearer $NEMBOL_KEY" \
  -H "Content-Type: application/json" \
  -d '{"pricing": {"mode": "percentage", "value": 10, "rounding": true},
       "inventory": {"control": true, "threshold": 5}}'
  • Todo lo que no esté en el writable de la cuenta falla con 422 setting_not_supported.
  • content_from_channel_edits y transfer_orders son exclusivos por tienda: activar uno lo desactiva en todas las demás cuentas.
  • Los valores predeterminados del canal (políticas empresariales de eBay, perfiles de envío y políticas de devolución de Etsy, colección de Shopify) van en defaults, con ids de GET .../policies y GET .../collections. En eBay, policy_validation te indica si eBay acepta las políticas elegidas.

Deshacer cualquier cambio

Cada cambio, desde la API o desde el panel, emite un evento channel_account.updated. Su previous_attributes contiene el valor anterior de cada campo modificado; envíalo tal cual para deshacer:

// event data
{
  "object": { "id": "chac_66a1f09b2", "…": "…" },
  "source": "api",
  "previous_attributes": {"pricing": {"mode": "off", "value": null}}
}
// undo
PATCH /channel_accounts/chac_66a1f09b2
{"pricing": {"mode": "off", "value": null}}

Estas opciones deciden quién es dueño del contenido de un canal: si las cambias en nombre de un comerciante, avísale. Detalles campo por campo en el modelo Channel account.

Ú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