Skip to content
XICBOT

Settings

Deutsch
Documentation · Tools and actions

Catalogue, basket and shop connection

Maintain and import the product catalogue, connect and sync a shop, product search, product cards and basket handover: fields, limits, messages.

In plain language

This page explains the catalogue. The catalogue is the list of your products. The assistant only names products from this list. You keep the list by hand, upload it or get it from your shop. In a chat, the assistant shows matching products as cards. It can also put together a basket. Your shop then picks up this basket.

Last updated

All documentation topics

The catalogue is the list of products your assistant knows about: anything not listed there, it will not mention. You maintain it by hand, import it as a JSON list or have it synchronised from a connected shop. The Search the catalogue tool pulls products from it and shows them as cards in the conversation, and the Hand over basket tool puts together a basket that your shop collects with a pickup token. This page covers the catalogue, the shop connection, both tools and the pickup, with their fields, limits and messages.

Where to find it

In the app, the catalogue sits in the Triggers group under Tools (app.xicbot.de/werkzeuge), on the Catalogue tab. At the top it reads “What the assistant may name. What is not listed here, it does not know.”, followed by the Shop connection box, the Products list, the Add product form and the Import box. You also create the Search the catalogue and Hand over basket tools under Tools, as described in Tools. Handed-over baskets appear under Cases on the Baskets tab, see Appointments and cases.

Roles and plan

WhatMinimum role
View the catalogue and the state of the shop connectionRead
Add, change, delete and import productsEdit
Connect a shop, change, check, sync and disconnect itAdministration

With the Read role the product form is locked and the page says: “With the Read role this area is view-only. Changes need at least the Edit role.” Each product shows View instead of Edit, and the Import box is missing. If no shop is connected yet, users below Administration see “Administrators of this account can connect a shop.” Which role may do what is explained in Team and roles.

Product fields

You create a product with Add product and open an existing one with Edit. Edit scrolls the form into view and moves the focus to its heading “Edit: …” with the title. Save stores it (“Saving …”); the form is then empty, “Saved: …” with the title appears next to the button, and the focus is on the product’s Edit button in the list. Cancel discards your input and returns the focus there.

FieldRequired and limitsDefaultEffect
IdentifierRequired, at most 100 characters, unique in the catalogue; cannot be changed after creationemptyArticle number. The basket, accessories, import and sync find the product by it.
TitleRequired, at most 200 charactersemptyHeading of the card; the search looks in it.
DescriptionAt most 800 charactersemptyText about the product; the search looks in it too.
Price in centsWhole number from 0 to 100000000emptyPrice on the card and basis of the basket. Without a price the card shows none.
List price in centsSame as the price; not checked against the priceemptyOnly a list price above the price produces a saving on the card, and only with a Currency.
CurrencyExactly 3 characters, stored in upper caseEURCode after every amount on the card
Image addressValid address, at most 500 charactersemptyPassed to the widget with the card, see Product cards.
Product addressValid address, at most 500 charactersemptyThe card title links there; target of the Product page button.
AvailableOn or offonThe search only finds available products.
Rating (0 to 5)0 to 5, one decimal placeemptyLine such as “4.5 out of 5” on the card, only above 0
Number of ratingsWhole number from 0emptyAdds “(12 reviews)” after the rating
Delivery time in business days0 to 365empty0 shows “Ships today”, otherwise “Delivery: … business days”
FeaturesOne per line, at most six, each at most 60 charactersemptyFeature line on the card and a row in the comparison
AccessoriesOne identifier per line, at most six, each at most 100 charactersemptyBasis of “Goes together”
Customers also boughtSame as accessoriesemptyBasis of “Customers also bought”
Button targetNo button, Product page or CartProduct page“View product” or “Add to cart” button on the card
Cart addressValid address, at most 500 characters; only shown for the Cart targetemptyTarget of the “Add to cart” button

Viewing, changing and deleting products

  • The Products list is sorted by title and shows the title, identifier and price of each product, or a dash without a price. An unavailable product carries the suffix “· not available”.
  • A product from the connected shop also carries “from the shop · synced …” with the date and time of its last sync.
  • Above it, the total appears as “in the catalogue: …”, during a search “… matches of … in the catalogue”, together with the range shown, for example “1–50 shown”. Each page holds 50 products; with more, Back and Next turn the pages, with “Page 1 / 10”.
  • The search field takes up to 120 characters and finds products whose title or identifier starts with the text you enter; the hint below the field says the same. A new search starts on page 1.
  • While loading it says “Loading …”. If the request fails, “The list could not be loaded.” appears with a Load again button; an empty catalogue shows “The catalogue is empty.”, a search without matches “No product whose title or identifier starts with “…”.”
  • Delete asks “Delete this product from the catalogue?” with Delete and Cancel; afterwards “The product has been deleted.” appears below the list heading, and the page reloads so that the next product moves up.
  • If a product has been deleted in the meantime, for example in another window, the page reports “This entry no longer exists. Reload the page to see the current state.” when saving or deleting.
  • The form rejects an identifier that is already taken with “This identifier already exists in the catalogue.”

Import

The Import box takes a list in JSON format: “A list in JSON format, at most 500 rows per run. Existing identifiers are updated, not duplicated. If an entry carries the identifier of a product from the shop, the next sync overwrites its synchronised details.” Paste the list into the text field and click Start import. Each entry is one product with the field names from the table below.

katalog.json json

[
  {
    "external_id": "MUG-01",
    "title": "Stoneware coffee mug",
    "price_cents": 1490,
    "list_price_cents": 1890,
    "currency": "EUR",
    "image_url": "https://shop.example.com/images/mug-01.jpg",
    "product_url": "https://shop.example.com/mug-01",
    "is_available": true,
    "rating_tenths": 45,
    "rating_count": 12,
    "delivery_days": 2,
    "features": ["dishwasher safe", "300 ml"],
    "accessories": ["COASTER-01"],
    "action": "product"
  }
]
Field nameForm fieldLimits
external_idIdentifierRequired, at most 100 characters
titleTitleRequired, at most 200 characters
descriptionDescriptionAt most 800 characters
price_cents, list_price_centsPrice in cents, List price in centsWhole number from 0 to 100000000
currencyCurrencyExactly 3 characters, EUR if omitted
image_url, product_url, cart_urlImage address, Product address, Cart addressValid address, at most 500 characters
is_availableAvailabletrue or false, true if omitted
rating_tenthsRating (0 to 5)In tenths, 0 to 50; 45 stands for 4.5
rating_countNumber of ratingsWhole number from 0 to 100000000
delivery_daysDelivery time in business days0 to 365
featuresFeaturesList, at most six entries of 60 characters each
accessories, also_boughtAccessories, Customers also boughtList of identifiers, at most six of 100 characters each
actionButton targetnone, product or cart, product if omitted
  • One run takes at least one and at most 500 entries. Split larger catalogues across several runs.
  • All or nothing: if a single entry is invalid, the run writes none.
  • An existing identifier is updated and a new one is created. Afterwards the box reports next to the button, for example, “new: 3, updated: 12, in the catalogue: 240”.
  • If the input is not JSON or not a list, “The input is not valid JSON.” appears and nothing is sent.
  • Importing, creating and changing products as well as saving, checking and syncing the shop connection share a limit of 20 requests per minute per signed-in user.

Shop connection

Instead of maintaining the catalogue yourself, you can connect a shop whose sales channel offers a Store API with an access key. The catalogue is then synchronised every hour, and on every product search the assistant re-reads price and availability from the shop. The connection only reads: nothing is written to the shop. Nothing needs to be installed in the shop for this; the address and access key of the sales channel are enough. The widget goes into the shop with the embed code, as on any other website, see Embed the widget.

Setting up the connection

FieldRequired and limitsNote
Shop addressRequired, at most 300 characters, with https://The address of the sales channel, such as https://shop.example.com. A trailing /store-api and a trailing slash are removed; user name, password, query and fragment are not allowed. Addresses that do not point to the public internet are not fetched.
Access keyRequired on first save; 12 to 200 letters, digits, hyphens or underscoresThe API access key of the sales channel from your shop administration. It is stored encrypted and afterwards only shown by its last characters. Leaving it empty keeps the stored key; a different shop address needs the key to be entered again.
Sync and live re-reading switched onOn or off; on when first createdOff means the state paused: no sync and no re-reading during conversations.
  1. Step 1

    Get the key

    You will find the access key in your shop administration under the sales channel the assistant should read.

  2. Step 2

    Enter and save

    Enter the Shop address and Access key and click Save. The key field stays empty afterwards; only “…” followed by the last four characters is shown.

  3. Step 3

    Check the connection

    Check connection (“Checking”) reads the currency and one product, with a deadline of 5 seconds. Success reports “The connection works. The shop prices in …”, an empty sales channel “The connection works (…), but the sales channel shows no products.” The server rejects more than three checks per minute per account.

  4. Step 4

    Start the first sync

    Sync now queues a sync: “The sync has been queued.” or, if one is already waiting, “A sync is already waiting.” The display then checks every 3 seconds, up to 100 times, and reloads the product list.

Connection status

RowContent
Shop addressThe stored address
Access key“…” and the last four characters
Stateactive or paused
Last syncSync running, none yet or a time with successful or failed
Productsread, new, updated with “of which previously not from the shop: …”, withdrawn
ReasonOnly if the last sync failed or was incomplete: the message from the table below, plus “The catalogue shows the state of …” if there was an earlier successful sync

With the Administration role, below are the buttons Sync now (disabled while a sync is running or the connection is paused), Check connection, Edit and Disconnect. If the state could not be loaded, “The current state could not be loaded.” appears with Load again; without a connection it says “No shop is connected yet.”

What the sync does

  • Every hour at minute 41 a sync is queued for each switched-on connection of an active account whose plan includes the shop connection. A waiting or running sync is not duplicated, and a manual sync takes precedence.
  • Manual syncs are possible at most every 15 minutes; the regular sync continues independently.
  • Products are read in pages of 100, at most 100 pages, so up to 10000 products. If the shop has more, the run counts as incomplete: what was read is taken over, missing products are not withdrawn.
  • Each request to the shop has 20 seconds, the whole sync 300 seconds. The sync does not follow redirects.
  • Products with variants count as containers and are skipped; each variant comes in as its own product, with the variant options in brackets after the title.
  • Matching uses the shop's product ID. A product without a shop link whose Identifier equals the article number of a shop product is taken over and belongs to the sync from then on, so the first sync does not duplicate an imported catalogue.
  • Products without a shop link whose number the shop does not list are left untouched.
  • Only after a run that has read all pages of the shop are shop products that no longer came back set to unavailable as withdrawn. Nothing is deleted.
  • If the sync fails, the existing catalogue stays unchanged. If the shop returns no products although it had some before, the catalogue also stays unchanged.
FieldDuring the sync
IdentifierThe shop's article number, or the shop product ID if there is none
TitleProduct name, with variant options for variants, at most 200 characters; the article number if there is no name
DescriptionWithout HTML, at most 800 characters
Price in cents, List price in centsA tier price before the calculated price
CurrencyCurrency of the sales channel
Image addressCover image of the product
Product addressThe product's canonical SEO address, otherwise its SEO path after the shop address, otherwise the detail page via the shop product ID
AvailableAs the shop lists the product
Rating (0 to 5)Average rating in the shop, only if it is above 0
Delivery time in business daysMaximum delivery time if the shop states it in days or weeks; a week counts as 7 days, 0 to 365 is taken over, other units stay empty
Features, Accessories, Customers also bought, Button target, Cart address, Number of ratingsStay as you maintain them in the catalogue

Connection messages

MessageCause
“The shop rejected the access key. Check that it belongs to this sales channel.”The shop answers with 401 or 403.
“The shop could not be reached.” / “The shop did not answer in time.”No connection or deadline exceeded
“No Store API answers at this address. Enter the address of the sales channel.”The shop answers with 404.
“The address redirects. Enter the address the shop redirects to.”The shop answers with a redirect.
“The shop answered with status ….”Any other error status
“The shop's answer could not be read.” / “The shop's answer was too large.”No readable answer, or more than 8 MiB per page during a sync
“The shop did not state a currency.”The sales channel states no currency.
“The stored key could not be read. Please enter it again.”The stored key can no longer be read.
“The shop returned no products although it had some before. The catalogue stays unchanged; check the sales channel.”Empty sales channel while the catalogue has products
“The shop has more products than one sync reads. The products read have been taken over; missing ones are not withdrawn.”More than 10000 products
“The shop took too long for the whole sync. The catalogue stays unchanged.”Sync longer than 300 seconds
“Your plan does not include the shop connection.”The plan no longer includes the shop connection.
“An internal error occurred during the sync.”Error on our side
“No shop is connected yet.” / “The connection is paused.”Check or sync without a connection or in the paused state
“The address cannot be read. Expected is, for example, https://shop.example.”Not a valid address
“Only addresses with https are possible.” / “The shop must be reachable via https. Enter the address with https://.”Address without https
“This address does not point to the public internet and is therefore not fetched.” / “The name of this address cannot be resolved.”Internal target or unknown name
“A different shop address needs its access key as well. Please enter it too.”New address without a new key
“The access key consists of 12 to 200 letters, digits, hyphens or underscores.”Key in the wrong format
“The connection was just tested several times. Please wait a minute.”More than three checks per minute
“A manual sync is possible at most every 15 minutes. The regular sync continues independently.”Manual sync before 15 minutes have passed
“The sync failed.”Any other reason

Prices and availability from the shop

If a shop is connected and switched on and your plan includes the shop connection, the assistant re-reads the price and availability of the products that come from the shop on every product search and every basket change; for the cards of the product search it also re-reads the list price and delivery time. The shop has 3 seconds for this, establishing the connection 2 seconds. Nothing is written in the process, neither to the shop nor to the catalogue.

SituationWhat the visitor sees
Shop answersCurrent price from the shop; products the shop currently does not list as available are dropped, and the assistant is told that they were left out and must not be mentioned
After dropping, only one card is left of a comparison, accessories or suggestionsA single card; the assistant receives a matching note, for a comparison for example that only one of the two products is currently available and it should ask what to compare with
Shop lists none of the products, or not the starting product of accessories and suggestions, as availableNo card; the assistant is told that nothing is currently available in the shop and that it must not invent a product or price
Shop does not answer in time or answers with an errorPrice from the last sync; the assistant is told that prices and availability come from the last sync at … and that the shop was not reachable just now
No shop connected or connection pausedPrice from the catalogue, without a note to the assistant
Plan without the shop connectionNo card: without the shop connection, the service does not offer Search the catalogue and Hand over basket tools to the assistant, and they can only be deleted

You create the Search the catalogue tool under Tools. It only reads; it runs without confirmation if its Approval is set to without asking. For a new tool the form suggests with confirmation. The assistant passes a search term, identifiers from an earlier search or both, plus one of four forms and the number of hits. The preview reads “Search catalog for: …” in an English conversation and “Im Katalog suchen nach: …” in a German one.

FormResult in the widget
searchA single card or a Recommendations row with 1 to 6 hits, 4 if not specified.
compareExactly two products as a Direct comparison with rows for price, rating, delivery and features; the better value carries the Advantage mark, missing values show “not stated”. If only one product is found, a single card appears.
bundleThe first product and its Accessories under Goes together, with a Total if every item has a price.
also_boughtThe first product and the entries from Customers also bought under “Customers also bought”.
  • Named identifiers come first; hits for the search term then fill up to the requested number. Without a term and without an identifier there is no search; the assistant is told that it cannot search without a search term.
  • The search looks in the title and the description.
  • Only products set to Available are found. An identifier that is not in the catalogue does not appear in any form, not even as an accessory.
  • If nothing is found, the widget shows no card, and the assistant is told that the catalogue has nothing on it and that it must not invent a product or price.
  • A separate tool reads the stock level of a product: Read stock level from the tool kit; it also only reads and runs without confirmation if its Approval is set to without asking.

Product cards

Part of the cardShown when
Title, linked to the product addressOn every card; the link only with a Product address
PricePrice in cents is set
“Was …” and “You save …”List price in cents is above the price and a Currency is given
“… out of 5” with “(… reviews)”Rating (0 to 5) above 0
“Ships today”, “Delivery: 1 business day”, “Delivery: … business days”Delivery time in business days is set
FeaturesUp to six, each at most 60 characters
“View product” or “Add to cart” buttonButton target with a matching address; opens in a new tab
ImageImage address with https, loaded only when it scrolls into view; with http the card has no image

Basket in the conversation

The Hand over basket tool puts together a basket during the conversation. Every call changes something and therefore needs the visitor's confirmation: the widget shows the proposal with Confirm and Reject. A proposal that stays unconfirmed for 60 minutes expires; after that it reads “This suggestion was not confirmed in time, so nothing was carried out. Just ask again.” How confirmations work in the conversation is explained in Chat in the widget.

ModePreview in the widgetEffect
set“Hand over cart: … items”Creates a new basket with a new pickup token, without a coupon
add“Add to cart: … items”Adds quantities; creates a basket if none is open
update“Change quantity in cart: … items”Sets the quantity; 0 removes the item
remove“Remove from cart: … items”Removes items
clear“Empty cart”Empties the basket and removes the coupon
coupon“Apply coupon: …” or “Remove coupon from cart”Applies a coupon code or removes it
  • An item holds 1 to 99 units; more is capped at 99.
  • Every item needs an Identifier from the catalogue. Every change recalculates the whole basket against the catalogue, and with a connected shop against the prices the shop currently states.
  • A product the shop currently does not list as available is not added to the basket; the assistant is told which one it was.
  • Every change after set writes to the same basket, and the pickup token stays the same.
  • If the same confirmed call runs a second time, the basket does not change again.
  • After every change the widget shows the items, Subtotal (only if it differs from the total), Coupon (only with a discount), Shipping (“free” at 0), Total, the amount left until free shipping and, with a handover address starting with http:// or https://, the Continue button.
Message to the assistantCause
“The basket is ready to be taken over.”set carried out
“The basket has been changed and is ready to be taken over.”add, update or remove carried out
“The basket has been emptied.”clear carried out
“The coupon has been applied. The basket is ready to be taken over.” / “The coupon has been removed. The basket is ready to be taken over.”coupon carried out
“There is no open basket that could be changed.”Change without an open basket
“The call names no item that could be changed.”update or remove without a usable item
“The item … is not in the basket.”Change to an item that is missing
“The product … is not in the catalogue.”Unknown identifier
“An empty basket does not accept a coupon.”Coupon on an empty basket
“The basket was empty.”No item is left after the calculation
“Not in the basket because the shop currently does not list it as available: … Tell the visitor and do not state a price for it.”Product the shop currently does not list as available

Handover to the shop

  1. Step 1

    Set the address

    On the Hand over basket tool, enter the Address for the basket handover: the address of a page in your shop, such as https://shop.example.com/basket, at most 500 characters.

  2. Step 2

    Visitor clicks Continue

    The Continue button opens this address in a new tab and appends token= with the pickup token, using ? or, if the address already has a query, &. The token consists of 40 random letters and digits. Without an address, or with an address that does not start with http:// or https://, the widget shows no button.

  3. Step 3

    The shop collects the basket

    Your page calls GET /api/v1/cart/pickup/{token} with the token and puts the items into its own basket. The pickup only reads; your page can repeat it within the deadline.

GET /api/v1/cart/pickup/{token}

Returns the basket for a pickup token, up to 7 days after the last change. The response carries Cache-Control: no-store. The server allows browser access via Access-Control-Allow-Origin only from the origin (scheme, host and port) of an Address for the basket handover stored on a basket tool of the assistant that held the conversation.

Authentication
no sign-in; the pickup token is the access
Rate limit
60 requests per minute per source address, for IPv6 per /64 network
Response fieldContent
itemsItems with external_id, title, amount, unit_price_cents; for newer baskets also price_source: live (price re-read from the shop) or stand (price from the catalogue)
subtotal_cents, discount_cents, shipping_cents, total_centsSubtotal, discount, shipping and total in cents
coupon_codeApplied coupon code or null
currencyCurrency of the basket, currently EUR
created_at, updated_at, expires_atTimestamps in ISO 8601 format
StatusMeaning
200Basket returned
404 unknown_cartToken unknown, in the wrong format or account deactivated
410 cart_expiredDeadline passed
429Too many requests, see API limits

More on endpoints without sign-in is in Public API endpoints.

Shipping and coupons

In the Hand over basket tool, the Shipping and coupons section sets what the assistant uses when calculating the basket: “The assistant calculates the basket with these. Whether a shop honours a discount later is up to the shop.”

FieldLimitsEffect
Shipping cost in centsWhole number from 0 to 100000Shipping per basket; an empty basket costs no shipping
Free shipping from (cents)Whole number from 0 to 10000000; 0 means no thresholdFrom this goods value after discount, shipping is free; needs a shipping cost
Code2 to 40 characters: letters A to Z, digits, hyphen and underscore, starting with a letter or digit; stored in upper case, each code only onceThe code the visitor names
KindPercent or Fixed amountType of discount
Value1 to 100 for percent, 1 to 10000000 cents for a fixed amountSize of the discount, at most the subtotal; percentages are rounded down to whole cents
Minimum value in centsWhole number from 0 to 10000000Goods value before discount from which the code applies
Valid untilDate in the form 2026-12-31, empty for no end dateLast valid day; the code applies until the end of that day, German time (Europe/Berlin)
ActiveOn or off; a new code is onThe assistant rejects switched-off codes
  • At most 20 coupon codes per tool; you maintain the list with Add coupon and Remove coupon. A new entry starts with Percent, value 10, minimum value 0 and Active switched on. Without an entry, “No coupon code stored yet.” is shown.
  • A basket carries at most one coupon. If a coupon no longer applies after a change, for example because the minimum value is no longer reached, it is dropped and the assistant receives the reason from the table below.
  • The widget shows amounts in the currency of the basket, currently EUR; the messages to the assistant write them in German notation, with a comma before the cents, a dot as thousands separator and the euro sign after the amount.
Message when savingCause
“A threshold for free shipping needs a shipping cost. Enter a shipping cost or set the threshold to 0.”Threshold without a shipping cost
“Shipping cost and threshold are whole amounts in cents, at most 100000.”Shipping cost outside 0 to 100000 or threshold outside 0 to 10000000
“A coupon code has 2 to 40 characters: letters, digits, hyphen, underscore. Each code occurs only once.”Code in the wrong format or duplicated
“A percent coupon is between 1 and 100, a fixed amount between 1 and 10000000 cents. The minimum value is not negative.”Value out of range
“The field “Valid until” needs a date in the form 2026-12-31.”Date in the wrong format
“The coupon list is not valid: it is incomplete or has more than 20 entries.”List incomplete or too long
Message to the assistantCause
“The coupon code … does not exist here.”Unknown code
“The coupon code … is switched off.”Code not set to Active
“The coupon code … was valid until … and has expired.”Valid until has passed
“The coupon code … applies from a basket value of … Still missing: …”Minimum value in cents not reached
“The coupon … takes … off.”Code applied
“Plus … shipping.”Shipping cost without a threshold
“The free-shipping threshold has been reached.” / “… left until free shipping; until then shipping costs …”Shipping threshold reached or not

API

Every endpoint under /api/v1/catalog needs a sign-in with a confirmed email address and a plan with the shop connection. The writing endpoints except the two delete endpoints share a limit of 20 requests per minute per signed-in user. Sign-in and keys are covered in API integration, the limits in API limits.

GET /api/v1/catalog

Lists products by title, page from 1, per_page 1 to 200, 50 if omitted. search (at most 120 characters) matches the start of the title and identifier. total is the number of all products in the catalogue, regardless of the search, matches the number of hits of the query before paging. Each product carries from_shop and shop_synced_at; shop_sync_active states whether an active shop connection exists.

Authentication
signed in, confirmed email address, any role

POST /api/v1/catalog

Creates a product with the import fields. An identifier that is already taken returns 422 identifier_taken.

Authentication
signed in, confirmed email address, Edit or higher
Rate limit
20 requests per minute per signed-in user

PUT /api/v1/catalog/{id}

Changes a product. The identifier stays; missing fields are cleared or set to their default. Unknown {id}: 404 not_found.

Authentication
signed in, confirmed email address, Edit or higher
Rate limit
20 requests per minute per signed-in user

DELETE /api/v1/catalog/{id}

Deletes a product permanently. Unknown {id}: 404 not_found.

Authentication
signed in, confirmed email address, Edit or higher

POST /api/v1/catalog/import

Imports products, 1 to 500 entries, all or nothing. The response states new, changed and total.

Authentication
signed in, confirmed email address, Edit or higher
Rate limit
20 requests per minute per signed-in user

GET /api/v1/catalog/shop

State of the connection and the last sync; the key only as access_key_masked with its last characters.

Authentication
signed in, confirmed email address, any role

PUT /api/v1/catalog/shop

Saves base_url, access_key and the switch for sync and re-reading. An unreadable address returns 422 url_unreadable, one without https:// returns 422 https_required, and an address that does not point to the public internet also returns 422 with the reason. An address on a different server without a new key: 422 access_key_required.

Authentication
signed in, confirmed email address, Administration or higher
Rate limit
20 requests per minute per signed-in user

POST /api/v1/catalog/shop/test

Checks the connection and answers with ok: true, the currency and has_products; if the check fails, with ok: false and the reason in error, for example key_unreadable. More than three checks per minute per account: 429 too_many_tests with retry_after. Without a connection: 404 connection_missing.

Authentication
signed in, confirmed email address, Administration or higher
Rate limit
20 requests per minute per signed-in user

POST /api/v1/catalog/shop/sync

Queues a sync and answers with 202; already_pending says whether one was already waiting. Paused: 422 connection_inactive; with no sync waiting and less than 15 minutes since the last manual sync: 429 sync_too_soon with retry_after. Without a connection: 404 connection_missing.

Authentication
signed in, confirmed email address, Administration or higher
Rate limit
20 requests per minute per signed-in user

DELETE /api/v1/catalog/shop

Removes the connection; the products stay in the catalogue. Without a connection: 404 connection_missing.

Authentication
signed in, confirmed email address, Administration or higher

Frequent questions

Why does the assistant not mention a product that is in the catalogue?

The search only finds products set to Available. With a connected shop, products the shop currently does not list as available are dropped as well.

Why does the card show no button?

Either Button target is set to No button, or the matching address is missing: Product address for Product page, Cart address for Cart.

Why is no list price shown?

The card only shows “Was …” and “You save …” if the list price is above the price and a currency is given.

How long can the shop collect a basket?

7 days after the last change. After that the pickup answers with 410 cart_expired.

Does the sync overwrite my features and accessories?

No. You maintain Features, Accessories, Customers also bought, Button target, Cart address and Number of ratings in the catalogue; the sync leaves them as they are.

Something still unclear?

Tell us which page and which step you mean. We reply personally.

Enquiry in three steps

  1. 1. Topic
  2. 2. Your case
  3. 3. Contact

What is this about?

One click is enough, everything else is optional.

Tell us briefly about your case

Everything in this step is optional. It helps us reply with something concrete straight away instead of asking back.

Enquiries per month, roughly (optional)
When should it start? (optional)
How can we reach you?

Name and email address are enough. We reply personally.

We use your details to handle your enquiry. More on this in the privacy policy.