Usage
First listing
Section titled “First listing”- Categories: search OTTO’s category list and map a CS-Cart category to an OTTO category (by its German name, for example “Kaffeemaschinen”), with an optional markup and the OTTO brand ID (the brandId from OTTO’s brand list, for example in OPC; a default brand ID can be set on the Rules page). Alternatively choose a CS-Cart product feature that holds the brand name on the Rules page: the add-on then looks the name up in OTTO’s brand list (only usable brands match) and uses the brandId found. OTTO groups categories into category groups; the list is loaded once and cached for a day (the refresh button on the Categories page reloads it).
- Attributes: for the chosen OTTO category the attributes of its category group are listed. OTTO does not publish a “required” flag; attributes OTTO marks with relevance HIGH are shown as required. Map each to a product feature or a fixed value. Where OTTO lists allowed values only those are accepted; where it lists recommended values you may enter your own (OTTO then does not use the value for filters).
- Rules: markup, price endings, stock buffer, processing time (days, 1 to 99), default VAT (19 = FULL, 7 = REDUCED, 0 = FREE), default weight, and whether the add-on lists products automatically.
- Listings: map products (one by one or a whole CS-Cart category). The barcode is the EAN and it is also the SKU on OTTO. Mapped products are uploaded on the next sync.
- Watch the Listings page: a product shows Waiting while OTTO processes the upload, Live when OTTO accepted it, or the exact error OTTO gave for that product (path and reason). Fix the product or the mapping and press Retry.
What happens when you list a product
Section titled “What happens when you list a product”- The add-on sends the product (EAN, SKU, product reference, category, brand, description, attributes, images, price with VAT class, weight) with POST /v5/products. OTTO answers at once with a task and processes it asynchronously; the add-on polls the task until it is done and reads the failed list for the reason of each rejected product.
- Once OTTO has accepted a product, the add-on sends its quantity (stock minus your buffer) and its shipping profile and processing time (POST /v1/availability/…): OTTO needs the SKU to exist first.
- OTTO builds the product title itself from brand, category and attributes: there is no title field in the product API, so the title of your CS-Cart product is not sent.
- Descriptions may use only the HTML tags OTTO allows (b, i, p, ul, ol, li, h1-h6 and similar); other markup is removed by OTTO.
Stock and price
Section titled “Stock and price”Stock is sent as an absolute quantity (up to 200 SKUs per call); prices are sent as a price update task (SKU and standard price in EUR). Both run on the schedule and whenever a mapped product is saved. Sync now queues an immediate push, order import and shipment report. A SKU OTTO does not know comes back as a readable error on the product. All prices are in EUR: set the exchange rate on the Rules page if your store uses another currency.
Orders
Section titled “Orders”- The add-on reads the orders of OTTO (orders v4, filtered by fulfillment status). Orders with status
ANNOUNCED(payment not final) wait; the add-on imports an order when its position items arePROCESSABLE, and follows later changes (SENT,RETURNED, cancelled by you or by OTTO) through the status mapping. - Every position item is one piece; position items of the same product become one order line with a quantity.
- A line whose EAN is not mapped is not imported: the Orders page shows the reason and the import is retried every hour.
- When you create a shipment with a tracking number in CS-Cart, the add-on creates the OTTO shipment (POST /v1/shipments) for all open position items of the order: carrier and tracking number, the ship-from address of the Connection page and the return tracking key OTTO requires. The CS-Cart carrier name is matched to OTTO’s carrier list (DHL, DPD, GLS, Hermes, UPS and many forwarders); an unknown name is sent as
OTHER_FORWARDER. - Cannot supply on the Orders page cancels the position items at OTTO. OTTO only cancels position items in state
PROCESSABLEand takes no reason. - Shipping cost and discounts of the OTTO order are not recreated in the CS-Cart total; they are written to the order notes.
Returns
Section titled “Returns”Returns announced by OTTO appear on the Returns page linked to the CS-Cart order (one entry per OTTO order). Approve accepts the announced position items (POST /v3/returns/acceptance, reason RETURN_RECEIVED, with the condition A to E you chose on the Connection page). Rejecting a return needs a reason and a decision per item and is done in OPC. Returns accepted at OTTO set the CS-Cart order to the status you mapped for “returned”.
Jobs, log and connection
Section titled “Jobs, log and connection”- Jobs: counts per state, the list with the last error, Retry, Remove and Run the queue now.
- Log: filter and export what happened and when.
- Connection: sandbox and live credentials, ship-from address, shipping profile, return carrier and condition, product safety contact, Test connection.
Limits worth knowing
Section titled “Limits worth knowing”- API rate limits (OTTO): 1,000 requests per minute and at most 20 per second per partner for most endpoints; 10 per second for token requests; the add-on retries after a 429 answer with back-off. The request timeout of the API is 10 seconds.
- The access token lives 30 minutes and is renewed automatically (no refresh token exists).
- OTTO has no webhooks in its public API: new orders arrive with the next cron run (every minute at best).
- Variations (several SKUs sharing a product reference) use the CS-Cart product code as the reference; product options are not exported as OTTO variations in 1.0.
- Receipts, price reductions, sponsored product ads and the returns warehouse APIs are not used in 1.0.