Rackbeat - Item Update
This document describes the process of synchronizing item data from Rackbeat to App4Sales. The connector fetches items, prices, stock levels, and translations from various Rackbeat API endpoints and maps them to the App4Sales data model.
Data Source Configuration
The connector retrieves item data from the Rackbeat API using several endpoints. The base URL is configured in the App4Sales administration.
Items: Fetched from
/items?is_barred=false. This retrieves all active items.Item Images: Fetched from
/products/{item_url_friendly_number}/imagefor each item.Item Translations: Fetched from
/products/{item_url_friendly_number}/translationsfor each item.Custom Fields: Fetched from
/items/{item_url_friendly_number}/fieldsto enrich item data.Default Prices: Fetched from
/products/{item_url_friendly_number}/pricesfor each item and currency.Customer-Specific Prices: Fetched from
/customers/{customer_number}/pricesfor each customer.Stock Information: Fetched from
/items/{item_number}/locations. This is part of a separate stock sync process.
Data Mapping
App4Sales Field | Source Field (API) | Logic/Notes |
ItemCode | number | The main item identifier. |
InternalItemCode | urlfriendly_number | Used internally for API calls, especially when the item code contains special characters like '/'. |
EanCode | barcode | The item's barcode. |
Description | name / description | Uses |
SalesPrice | sales_price | The base sales price of the item. This is overridden by pricelist prices if available. |
MinimumOrderQuantity | min_order | The minimum quantity required for an order. |
LastAvailableStock | available_quantity | Represents the available stock quantity from the main item record. |
VatPercentage | Derived | Uses the 'Item VAT Percentage' setting if specified; otherwise, falls back to the application's high VAT setting for Sweden (SE). |
Unit | unit.name | The unit of measure for the item (e.g., "pcs", "kg"). |
PurchasePackageSize | min_sales | The minimum quantity for sales orders. |
PicturesBytes | picture_url | An image is downloaded from the |
ExtraData | unit.number, recommended_cost_price | Stores the unit number and the recommended cost price in a JSON object. |
Item Categories
The connector creates several item categories based on item properties from Rackbeat.
App4Sales Category | Source Field (API) | Logic/Notes |
Item Group | group.name | The item's group in Rackbeat. |
Weight | physical.weight, physical.weight_unit | Formatted as "{weight} {unit}" (e.g., "1.5 kg"). |
Width | physical.width, physical.size_unit | Formatted as "{width} {unit}" (e.g., "10 cm"). |
Height | physical.height, physical.size_unit | Formatted as "{height} {unit}" (e.g., "20 cm"). |
Depth | physical.depth, physical.size_unit | Formatted as "{depth} {unit}" (e.g., "5 cm"). |
Custom Fields | (from /items/{id}/fields) | Any custom fields defined for items in Rackbeat are also added as item categories. |
Translations
The connector fetches translated item descriptions and maps them to App4Sales description fields.
App4Sales Field | Source Field (API) | Logic/Notes |
Description2-5 | product.name (from translations endpoint) | The connector maps translated descriptions to available description fields (2 to 5) based on the language code configuration in App4Sales. If a language is encountered for the first time, a new mapping is created. |
Domain Specifics
Price Logic
The connector handles both default and customer-specific prices.
Default Price Lists: For each currency available in Rackbeat (e.g., EUR, DKK), a default, selectable pricelist is created in App4Sales. The prices are fetched from the
/products/{item_id}/pricesendpoint.Customer-Specific Price Lists: If a customer has specific prices defined in Rackbeat (retrieved from
/customers/{customer_id}/prices), a dedicated, non-selectable pricelist is created for them. This pricelist inherits all prices from the customer's default currency pricelist and then overrides them with the specific prices.
App4Sales Entity | Source Field (API) | Logic/Notes |
PriceList | - | One pricelist is created per currency, plus one for each customer with specific prices. |
PriceListPrice | price (from price endpoints) | Contains the actual price for an item in a specific pricelist. |
Stock & Availability
Stock information is handled in a separate process (FullStockSync) but is summarized here for context.
App4Sales Field | Source Field (API) | Logic/Notes |
AvailableStock | available | The total available stock across all locations, or filtered by the 'Default Inventory Location Number' setting. |
ToBeDelivered | in_order | The total quantity in open sales orders. |
ToBeReceived | purchased | The total quantity in open purchase orders. |
ShelfStock | stock | The total physical stock on shelves. |
Related Settings & Prerequisites
Use item name as description: If enabled, the item's
nameis used as the App4Sales description. Otherwise, thedescriptionfield is used.Item VAT Percentage: If set, this value is used for all items. Otherwise, a fallback value is used.
Default Inventory Location Number: If set, the stock sync will only consider stock from this specific location.