This article is designed to provide you with a clear understanding of how data flows, ensuring your operations run smoothly and efficiently.
Synchronisation general board
Entity | Sync FROM -> TO | Frequency |
Products | ZohoInv > OP | each 60 minutes |
Product Compositions | ZohoInv > OP | each 60 minutes |
Suppliers | ZohoInv > OP | each 60 minutes |
Supplier Products | ZohoInv > OP | each 60 minutes |
Sell Orders | ZohoInv > OP | each 60 minutes |
Buy Orders | ZohoInv > OP | each 60 minutes |
| OP > ZohoBooks | Every 15 min |
Buy Order Deletions | ZohoInv > OP | each 60 minutes |
Buy Order Lines (including Deletions) | ZohoInv > OP | each 60 minutes |
Receipt Lines (Item Deliveries) | ZohoInv > OP | each 60 minutes |
Options and features
Zoho Region: The Region of the company registered in Zoho
Products - Enable/Disable stockLevel sync from Zoho (1*)
An option that allows a customer to decide if we should sync or not the product's stockLevel from Zoho, some customers have third-party apps and sync to our API to manage the stockLevel.
(Sync_Stock default true)
Products - Sync stockLevel from specific WarehouseIDs from Zoho (1*)
If clients have multiple warehouse sources and want to only get stock from some, they may only select specific warehouses from Zoho Inventory by clearly stating the warehouse id’s pretended separated by commas. Furthermore, each ID should be numerical.
(warehouse_ids default "allWarehouses")
ProductCompositions - Sync composedProducts from Zoho (1*)
The client can choose not to sync the products' assembled attribute to Optiply by having this flag set to false.
(Sync_Assembled default false)
SellOrders - Sync only Completed Orders from Zoho
An option that allows a customer to decide if we should sync All Order statuses to Optiply or only salesorders.order_status == "closed". if pullAllOrders = True We pull all orders except salesorders.status == "draft"
(pullAllOrders default true)
Assembly to Zoho - Sync AssemblyOrders from Optiply to a specific warehouseID to Zoho
An option that allows a customer to decide if we should send the AssemblyOrders to a specific warehouse ID in Zoho. This is not mandatory, so by default, we don’t send this.
(export_warehouse_id default NULL)
(1*) It is not possible to change this option in your app. Please report to our Customer Support at support@optiply.nl or via chat.
Products
Optiply | Zoho Inventory |
name | name |
skuCode | sku |
price | rate |
articleCode | purchase_description |
status | if Otherwise |
eanCode | ean |
UnlimitedStock | False |
stockLevel (*) |
|
assembled (*) | is_combo_product |
remoteId | item_id |
createdAtRemote | created_time |
(*) The customer can decide if we should map this field or not. By default, we will map this field.
Product Compositions
Optiply | Zoho Inventory |
composedProductId | composite_item_id |
partProductId | mapped_items.item_id |
partQuantity | mapped_items.quantity |
remoteId | mapped_items.mapped_item_id |
Suppliers
Optiply | Zoho Inventory |
name | contacts.contact_name |
contacts.email | |
remoteId | contacts.contact_id |
Supplier Products
Optiply | Zoho Inventory |
name | name |
skuCode | sku |
articleCode | upc |
eanCode | ean |
price | purchase_rate |
supplierId | vendor_id |
productId | item_id |
Sell Orders
Optiply | Zoho Inventory |
totalValue | total |
placed | date |
remoteId | salesorder_id |
If pullAllOrders = False, we pull only salesorders.order_status == "closed"
If pullAllOrders = True, we pull all orders except salesorders.status == "draft"
Sell Order Lines
Optiply | Zoho Inventory |
productId | line_items.item_id |
quantity | line_items.quantity |
subtotalValue | line_items.rate * line_items.quantity |
Buy Orders Zoho > Optiply
Optiply | Zoho Inventory |
buyOrder.supplierId | op supplierId |
buyOrder.placed | date |
buyOrder.completed | Timestamp when order_status becomes “closed” |
buyOrder.expectedDeliveryDate | expected_delivery_date |
remoteId | purchaseorder_id |
buyOrder.totalValue | total * exchange_rate |
Buy Order Lines Zoho > Optiply
Optiply | Zoho Inventory |
productId | line_items.item_id |
quantity | line_items.quantity |
subtotalValue | line_items.quantity * line_items.bcy_rate * buyorder_exchange_rate |
buyOrderId | purchaseorder_id |
Since on Zoho Inventory multiple lines for the same product can be created, this will only be reflected in 1 line on optiply with the sums of lines inside Zoho Inventory with the same productId.
Buy Orders Optiply > Zoho
Optiply | Zoho Inventory |
buyOrder.supplierId | vendor_id |
If export_buyOrder_payment_terms is set, it will be sent with the purchase order
Buy Orders Lines Optiply > Zoho
Optiply | Zoho Inventory |
product.remoteId | item_id |
quantity | quantity |
Item Deliveries
Optiply | Zoho Inventory |
Ocurred | Date |
Quantity | line_items.quantity |
BuyOrderLineId | optiplyBuyOrderLineId |
remote_id | receive_id |
This integration supports multiple warehouses. If you have multiple warehouse sources and want to only get stock from some, they may only select specific warehouses from Zoho Inventory by clearly stating the warehouse IDs pretended separated by commas. Furthermore, each id should be numerical.
Production Orders
Production Orders (Assembly) - Zoho Inventory to Optiply
Optiply | Zoho Inventory |
totalValue |
|
remoteID |
|
placed |
|
completed | DateNow (*1) |
expectedDeliveryDate |
|
supplierId | (*2) |
(*1) Order will be set to completed when status=”bundled”
(*2) There is no Supplier for AssemblyOrders, but we need it to create the buyOrders in Optiply, and we will use the related Supplier in Optiply (the supplierProduct with a supplier_type=producer for that product).
If no SupplierProduct like that exists in Optiply for that product, the Assembly will not be synced to Optiply.
If the customer uses serial numbers on their composed products or the parts, we will not be able to send the assembly orders from Optiply to ZohoInventory.
Production Order Lines - Zoho Inventory to Optiply
Optiply | Zoho Inventory |
optiplyWebshopProductArticleCode |
|
quantity |
|
subTotalValue |
|
Production Orders (Assembly) - Optiply to Zoho Inventory
One Assembly Order created in Optiply can have multiple lines, but in Zoho, as Assembly can only have one line, so for each orderLine in Optiply, we will create one Assembly in Zoho Inventory:
The order will be set to the original Assembly Order from Optiply to be completed when all the related Assembly are set to complete in Zoho Inventory.
Production Order with one line - Optiply to Zoho Inventory
To send an Assembly to Zoho Inventory, we need to send the product being assembled and all the partItem consumed for it:
Optiply |
| Zoho Inventory |
|
optiplyBuyOrderLineId |
| reference_number |
|
buyOrder.placed |
| date |
|
buyOrderLine.product.remoteId |
| composite_item_id |
|
wp.name |
| composite_item_name |
|
buyOrderLine.quantity |
| quantity_to_bundle |
|
composition | partProduct.remoteId | line_items | item_id |
| partProduct.name |
| name |
| buyOrderLine.quantity * partQuantity |
| quantity_consumed |

