Rules and limits

The behaviours an integration should know: variants, texts per channel, images, orders, shipping, timings. Each one is enforced by the API with a clear error.

Everything on this page was verified end to end on real channels. When a rule is broken the API answers 422 validation_failed (or the code shown) with a message that names the field. Nothing is changed silently.

Products and variants

  • One SKU per variant. Stock, orders and POST /inventory/batch match variants by SKU, so two variants of a product can't share one (422, Two variants share the SKU …).
  • Every option combination. A product with Size S/M and Color Red/Blue has exactly 4 variants. To add a color, add it in every size; to drop a size, drop it for every color. Channels build the full grid, so a missing combination would appear there as a phantom variant.
  • At most 3 options and 100 variants per product.
  • Prices have at most 2 decimals; quantities are whole numbers ≥ 0.
  • Images: a product needs at least one image to be published (photo_required_for_channel). Up to 20 per product.
  • Deleting a product that is still on a channel is refused (422 product_still_listed), also when its listing is in error but still live there. Delist first (DELETE /listings/{id}).

Texts per channel

  • PATCH /listings/{id} with overrides.title / overrides.description sets the text for that channel only; null goes back to the product's.
  • Titles longer than the channel allows are refused right away: Shopify 255, Etsy 140, eBay 80 characters.
  • A product on a single channel: editing the product's title or description changes that channel's too, but only the field you edited (a description edit keeps a title set for the channel).
  • A channel set as leader (its edits flow into Nembol) overwrites the product's texts and every channel's.
  • Descriptions are HTML and reach the channels as HTML.

Orders

  • One order per channel order: an order with several lines comes back as one order with every line in lines and the full total; order.created fires once per order.
  • New orders arrive within seconds by webhook where the channel sends them, otherwise at the next poll. Status changes made on the channel (cancelled, refunded, shipped elsewhere) arrive within 10 minutes.
  • source_status is the channel's own status string, as last read.

Shipping (POST /orders/{id}/fulfillment)

  • mark_shipped without tracking updates Nembol only: the marketplace is not told.
  • With a tracking number the marketplace is notified once per order. A tracking sent later (after mark_shipped) is notified then. Once the marketplace has a tracking, a different number is saved in Nembol only and the answer says channel_notification.error: channel_already_notified. Correct it on the marketplace itself.
  • tracking.number ≤ 64, carrier ≤ 64, url ≤ 512 characters: longer is refused, never shortened.
  • A cancelled or refunded order can't be marked shipped (order_not_fulfillable).

Channel connections

  • A connection link works once and for one hour.

  • Amazon: params.country picks the region; params.marketplace must be a marketplace of that region.

  • OAuth channels (eBay, Etsy, Shopify, WooCommerce, TikTok Shop, Temu, Amazon, Google Merchant Center, Facebook Catalog, Square, Squarespace, Faire, Wix, Facebook, Pinterest, Tumblr) connect through a link.

  • Kaufland, OnBuy, PrestaShop and Subito connect with credentials in params (no link).

  • eBay publishing needs Business Policies: if the account isn't enrolled, POST /channel_accounts/{id}/enable_business_policies (with confirmation).

  • A new channel account gets the channel's default settings when it connects, the same through the API as in the dashboard.

Timings and limits

  • Rate limits and Idempotency-Keys are per store (per company for partners). See Rate limits.
  • A listing usually turns listed within seconds; marketplaces that review products (Amazon, TikTok Shop) can take longer.

Last updated on October 16, 2026

Need help?

Email us and a human replies, usually within one business day.

On this page