Purpose and scope
Use this guide to interpret a documented Logic4 field for the entity and direction shown. It includes inbound mappings (Logic4 to Optiply) and outbound Buy Order mappings (Optiply to Logic4). The source also describes invoices without an associated order as a Sell Order input; the documented invoice fields are listed with Sell Orders below.
Prerequisites
Identify the entity and direction you want to interpret before selecting a table. Have the field name you are checking available; this guide explains documented mappings, not the settings or results of an individual connection.
Direction and documented schedule
Read each row's direction literally. The documented schedule lists a default interval, not a guarantee for an individual shop.
| Entity | Direction | Documented interval |
|---|---|---|
| Products | Logic4 → Optiply | Every 2 hours |
| Suppliers | Logic4 → Optiply | Every 2 hours |
| SupplierProducts | Logic4 → Optiply | Every 2 hours (*2) |
| Stocks | Logic4 → Optiply | Every 2 hours |
| Sell Orders | Logic4 → Optiply | Every 2 hours |
| Buy Orders | Logic4 → Optiply | Every 2 hours |
| Receipt Lines (Item Deliveries) | Logic4 → Optiply | Every 2 hours |
The source says the interval may need to increase for large shops or shops with many open Buy Orders, and may need to change because of Logic4 rate limits. SupplierProducts deletions are described as occurring in every job after the bulk endpoint change. These schedule notes do not establish a shop's actual timing or active flows.
Steps
- Identify the exact entity: Product, Supplier, SupplierProduct, Sell Order, Sell Order Line, Buy Order, Buy Order Line, or Receipt Line.
- Confirm the direction in the schedule and in the relevant table heading. For inbound mappings, Logic4 is the source and Optiply is the destination; for outbound Buy Orders, Optiply is the source and Logic4 is the destination.
- Read the matching row and retain its expression, option, and qualification. Do not apply a similarly named field or a rule from another entity or direction.
- If comparing an example, use a record you are authorized to view. Treat a difference that is not explained below as not explained by this documented mapping; this reference cannot verify a shop's settings or runtime result.
Fields and options
Products — Logic4 to Optiply
| Optiply field | Logic4 field / documented expression |
|---|---|
name | Concat (ProductName1, ProductName2) |
skuCode | ProductCode |
articleCode | ProductId |
price | SellPriceGross |
UnlimitedStock | “false” |
stockLevel | FreeStock (*1) |
status | Customer can choose to “Map Default Logic4 Status” or not (*2) |
notBeingBought | Customer can choose to “Map Default Logic4 Status” or not (*3) |
eanCode | BarCode1 |
created_at_remote | DateTimeAdded |
assembled | If IsComposedProduct = true or IsAssembledProduct = true, then assembled = true; otherwise assembled = false |
(*1) Stock can be mapped from a set of warehouse IDs; by default, stock is mapped from all warehouses. The documented option is to provide IDs in stock_warehouse_ids.
(*2) The documented status rules are: status=disabled if Logic4.IsVisibleOnWebShop<>customFlag.IsVisibleOnWebShop; status=disabled if Logic4.productStatusId is one of the custom IDs in prod_disabled_statusIds; otherwise status=enabled. The source describes the prod_disabled_statusIds default as null and IsVisibleOnWebShop default as true.
(*3) With map_notBeingBought=false (documented default), the attribute is not mapped. With map_notBeingBought=true, it is mapped as notBeingBought=false by default, except for custom status IDs configured in notBeingBought_statusIds. The source says this option only applies when map_notBeingBought=true; the status-ID list default is null.
Suppliers — Logic4 to Optiply
| Optiply field | Logic4 field / documented expression |
|---|---|
name | CompanyName |
remoteId | Id |
SupplierProducts — Logic4 to Optiply
| Optiply field | Logic4 field / documented expression |
|---|---|
name | Concat (ProductName1, ProductName2) |
price | BuyPrice or CreditorBuyPrice (*1) (*2) |
webshop_product_Id | optiplyProductId (from Optiply) |
skuCode | CreditorProductCode |
status | If Product.StatusId =1 or 10 then “disabled”; otherwise “enabled” |
supplierId | optiplySupplierId (from Optiply) |
preferred | If IsActive (on GetSuppliersForProduct) == true, preferred = true |
lotSize (purchase_in_quantities_of) | BuyCountIncrement (*1) |
minimumPurchaseQuantity | MinBuyAmount (*1) |
article_code | ProductId |
ean | Barcode1 |
(*1) The source says price, lotSize, and MOQ are synced by default, but the customer can choose whether to sync them. The documented defaults for map_MOQ and map_lotSize are true.
(*2) The customer can choose BuyPrice or CreditorBuyPrice. If CreditorBuyPrice is selected and null in Logic4, BuyPrice is mapped. If a SupplierProduct has multiple CreditorBuyPrices, the first price on the list is mapped. This reference does not identify the purchase-price option selected for your shop.
Sell Orders and Sell Order Lines — Logic4 to Optiply
The source describes optional invoice syncing for invoices from sales without an associated order. It says invoices with InvoiceBelongsToOrderNumber: null are included for this invoice flow. sync_invoices is documented with default false.
| Optiply field | Logic4 field / documented expression |
|---|---|
totalValue | AmountEx |
placed | CreationDate |
completed | CreationDate |
sellOrderId | SellOrderLine |
sellOrderRemoteId | Id |
Sell Order Line productId | ProductId |
Sell Order Line quantity | Qty |
Sell Order Line subtotalValue | NettPrice |
The source also documents sellorders_create_statusIds and sellorders_delete_statusIds as customer-defined Logic4 StatusId lists controlling which Sell Orders are created or deleted in Optiply; both are described with default null.
Buy Orders and Buy Order Lines — Optiply to Logic4
| Logic4 destination field | Optiply source field / documented expression |
|---|---|
CreatedAt | placed |
remarks | op-buyOrderId based on optiplyBuyOrderId |
CreditorId | optiplySupplierId |
BranchId | remarks |
Buy Order Line ProductId | product.articleCode |
Buy Order Line QtyToOrder | quantity |
Buy Order Line QtyToDeliver | quantity |
Buy Order Line OrderedOnDateByDistributor | placed (*1) |
Buy Order Line ExpectedDeliveryDate | expectedDeliveryDate |
(*1) The source documents send_OrderedOnDateByDistributor with default true. Without OrderedOnDateByDistributor, the Buy Order appears in Logic4 as a draft and requires manual approval. The source says this option cannot be changed in the user interface and advises contacting Customer Support. It also documents export_BranchId as a customer-defined BranchId, with default null.
Buy Orders and Buy Order Lines — Logic4 to Optiply
| Optiply field | Logic4 field / documented expression |
|---|---|
placed | CreatedAt |
buyOrderRemoteId | Id |
totalValue | 0 |
completed | “BuyOrderClosed”:true (*1) |
Buy Order Line quantity | QtyToOrder |
Buy Order Line buyOrderLineRemoteId | BuyOrderRowId |
Buy Order Line subtotalValue | QtyToOrder * Price |
Buy Order Line expectedDeliveryDate | ExpectedDeliveryDate |
(*1) Logic4 does not provide a completed date in this mapping; now() is mapped to completed when an order arrives with “BuyOrderClosed”:true.
Receipt Lines — Logic4 to Optiply
This table is the source's mapping from the Logic4 Deliveries data. The source says it was added on 27/06/2025; information from before that date was preserved as it was.
| Optiply field | Logic4 field / documented expression |
|---|---|
quantity | Records.Rows.Qty_Delivered |
occurred | Records.DateTimeProcessed |
remoteID | Records.Rows.Id |
Expected result
You can identify the documented source and destination field, expression, and relevant qualification for the selected entity. A listed mapping or interval is reference information only; it does not show which options are selected, which flows are enabled, or whether a synchronization succeeded for a particular shop.
Limitations
- The source says synchronization intervals may be changed due to shop size, open Buy Orders, or Logic4 rate limits. Do not treat the listed interval as a tenant-specific schedule or guarantee.
- Option defaults shown here are documented defaults, not evidence of a shop's selected values. Purchase-price selection must be checked separately for your shop.
- The source documents two quantity rows for outbound Buy Order Lines (
QtyToOrderandQtyToDeliver). This guide preserves both and does not assign separate meanings not stated by the source. - The Receipt Lines table covers the Deliveries mapping added on 27/06/2025. Earlier delivery data was preserved and is outside this table's scope.
- Outbound Buy Order fields are listed separately from the inbound schedule. No outbound timing guarantee or additional field behavior is implied.
Errors and recovery
Check the exact entity, direction, and any qualification shown in the matching table before comparing fields. If the example still differs, this reference does not explain it; contact Optiply Support with the specific entity and field. This check cannot confirm or change a shop's configuration, diagnose runtime behavior, or promise a successful correction.