Daily data import
Historical data import
Supported data types
Costs
Indeliveries
Inventory
Logistics
Orders
Product Attributes
Returns
File requirements
File naming convention
File naming convention
costs, indeliveries, inventory, logistics, orders, productAttributes, returns2026-04-15, name your file:.csv, .xls, .xlsx, .parquetFolder structure
Folder structure
{dataType} token used in the filename.Technical specifications
Technical specifications
|) and the whole field must be quoted, e.g. "value1|value2|value3". Only certain fields accept multiple values — where supported, the field’s description in the schema below says so.Good to know
COGS priority
COGS priority
Separate COGS file (last resort)
Separate COGS file (last resort)
{source} part in its name, uploaded to the inventory/ folder:{source} is a name for this secondary source. Ideally it names where the data comes from, such as the system the costs are taken from. For example: inventory/acme_erp_inventory_2026-10-01.csv. The file replaces nothing else in your setup — stock levels, product data and orders keep coming from your normal integration, and only the cost per product is taken from the file.Columns — the fields are defined as in Inventory, with these rules for this file:inventoryQuantity, can be left out.productId, variantNo and warehouse all match your existing data exactly. Identifiers are compared as text, so leading zeros and spaces matter. SKU and GTIN cannot be used as identifiers in this file. Rows that don’t match are ignored without being reported back to you, and the file cannot add new products or warehouses.Products the file doesn’t cover or match keep the cost from your normal integration, if there is one. Otherwise we use the same product’s cost from another warehouse that day, or its last known cost, and finally the fallback margin set in Settings → Product Cost.DatesThe date in the filename is the date the cost takes effect. For each day, we use the most recent file dated on or before that day until a newer one arrives, so the yesterday’s-date rule for daily files does not decide which file is used, and the file does not have to be sent every day. We still recommend sending it regularly — daily, or whenever costs change — because new products get no cost from this file until they are included in it.What to keep in mind- Send the full catalogue every time. The file is a snapshot, not a list of changes — a variant left out of the latest file goes back to the cost from your normal integration, or keeps the last cost we had for it if your integration has none, so an outdated cost can linger.
- Keep identifiers as text. Opening the file in a spreadsheet can strip leading zeros, and those rows will not match.
- Costs already recorded on past orders do not change on their own. Tell your Dema contact when you upload a corrected file and we will reprocess the affected period.
MMM and incrementality testing requirements
MMM and incrementality testing requirements
Marketing Mix Modeling (MMM)
MMM requires a minimum of one year of historical marketing costs data to capture seasonality patterns and produce reliable channel-level recommendations. For profitability-based optimization targets (NGP2 or NGP3), COGS, returns, and fulfillment cost data must also be present.Incrementality testing
Dema’s incrementality testing is based on geo-experiments that assign postal code zones to treatment and control groups. For this to work, your orders data must includezipCode for the markets you want to test. Without postal codes, Dema cannot construct valid treatment and control regions.The same profitability data required for MMM (historical costs, COGS, returns, and fulfillment costs) is also recommended for incrementality testing, as it enables profit-based measurement (NGP2 / epROAS) in addition to gross sales.Storefront assignment
Storefront assignment
externalStorefrontId column in your data for granular per-row assignment.Merchant mappings
Merchant mappings connect your external storefront IDs to the platform's internal storefronts. They also optionally assign country-level marketing cost data based on country codes.Setup: Provide the following JSON structure to the commercial team:[
{
"externalStorefrontId": "STORE-001",
"countries": ["SE", "NO", "DK"]
},
{
"externalStorefrontId": "STORE-002",
"countries": ["GB"]
},
{
"externalStorefrontId": "STORE-003",
"countries": ["US"]
},
{
"externalStorefrontId": "STORE-004",
"countries": []
}
][] if no country filtering is needed.Setup instructions
Choose your preferred method for uploading files to our platform:sFTP
Azure Blob Storage
- sFTP
- Azure Blob Storage
Data schemas
Costs
Marketing costs data for campaign tracking and ROI analysis.costs/Fields
Fields
Example file
Example file
Indeliveries
Track incoming product deliveries to your warehouses.indeliveries/Product level fields
Product level fields
Variant level fields
Variant level fields
Example file
Example file
Inventory
Stock levels and cost — the dynamic part of a product record. To get complete product coverage, pair this with the static metadata sent via Product Attributes (name, brand, category, etc.); the two data types are joined on product/variant. See COGS priority for how cost values are resolved.inventory/- Version 2 (Current)
- Version 1 (Legacy)
Fields
Fields
Example file
Example file
Logistics
Shipping and fulfillment costs associated with orders.logistics/Fields
Fields
Example file
Example file
Orders
Customer transaction data including order details and line items. See COGS priority for how cost values are resolved.orders/How order data should be structured
How order data should be structured
orderId, productId, and variantNo.Order header fields
Order header fields
Order line fields
Order line fields
Return fields (within orders)
Return fields (within orders)
Custom attributes
Custom attributes
Example file
Example file
Product Attributes
productAttributes/Required fields
Required fields
Optional fields
Optional fields
Custom attributes
Custom attributes
Example file
Example file
Returns
Returns can be sent in three ways (listed in preferred order):returns/1. Part of orders
2. Referenced return
3. Unreferenced return
- Referenced returns
- Unreferenced returns
Fields
Fields
Explanation: Snapshot logic
Explanation: Snapshot logic
Example file (mixed referenced and unreferenced)
Example file (mixed referenced and unreferenced)

