Fluent Commerce Logo
Docs

Data Dictionary

Essential knowledge

Changed on:

18 June 2025

Overview

Explore the data dictionary, which links well-understood business metrics (aggregate-level) to raw data in Fluent.

Key points

  • Custom Attributes risks call out ....



Fill Rate - On Time In Full (OTIF) or Perfect Order rate

Tracks if orders were delivered On Time and In Full on the first attempt for the time period.

Calculation Logic

No alt providedOTIF Rate % = (Total HD Fulfilments Fulfilled On Time And In Full / Total HD Fulfilments) * 100
  • where On Time is Delivered Date <= Promise Date
  • where In Full is HD fulfilments where units are 100% fulfilled by the location
Average lateness can be calculated by measuring the time between the Delivered Date and the Promise Date.No alt providedOTIF Rate % = (Total CC Fulfilments Fulfilled On Time And In Full / Total CC Fulfilments) * 100
  • where On Time is Awaiting Collection Date <= Promise Date
  • where In Full is CC fulfilments where units are 100% fulfilled by the location
Average lateness can be calculated by measuring the time between the Awaiting Collection Date and the Promise Date.
Data Element Name DescriptionSourceSource DBDomain Entity (= GraphQL Entity)Custom Attribute NameCustom Attribute Data Type
Order - Date/Time order was promisedCustom AttributeCOREOrderpromise_latest_etadays
Fulfillment - Date/Time fulfillment was promisedCustom AttributeCOREFulfilmentChoicepromise_etadays
Fulfillment Plan - ReferenceCustom AttributeCOREFulfilmentChoicefulfilment_plan_refstring
Fulfillment - Shipment tracking link (from carrier)Data ModelCOREConsignment

Fulfillment - Actual delivery complete date/timeCustom AttributeCOREFulfilmentdelivered_ontimestamp
Order - actual delivery complete date/time (=most recent fulfilment delivery date)Custom AttributeCOREOrderdelivered_ontimestamp
Fulfillment - How late? - Days (or hours) that actual delivery/pickup readiness was over the promiseCustom AttributeCOREFulfilmenteta_delaydays
Dashboard - Fill Rate (last x days)Custom AttributeCOREOrderorder_fill_ratefloat between 0 and 1
Dashboard - Avg. Lateness (last x days)Custom AttributeCOREOrderorder_eta_delaydays
Dashboard - Perfect Order (OTIF)Custom AttributeCOREOrderOTIFinteger= 0 or 1


Cancelled Order Rate

Tracks the ratio of cancelled orders against total orders placed for the time period.

Calculation Logic

Cancel Rate % = (Total Number of orders in status CANCELLED / Total Number of orders) * 100Order cancellation can happen for 2 reasons:
  • Cancellation via Customer Service 
  • Cancellation by self service (e.g. My Account page)
Ideally a reason for cancellation is also captured in the order. This reason can then be counted to identify the top reasons over a period of time.
Data Element Name DescriptionSourceSource DBDomain Entity (= GraphQL Entity)Custom Attribute NameCustom Attribute Data Type
Order - Canceled (yes/no)Custom AttributeCOREOrderis_canceledboolean (TRUE/FALSE)
Order - Cancellation reason codeCustom AttributeCOREOrdercancel_reasonstring (code as per setting enumeration)
Dashboard - Canceled order rate (past x days)Calculated ValueCOREOrder


Return Rate

The Return Rate measures the number of units returned against the number of units sold.

Calculation Logic

Return Rate % = (Total number of units returned / Total number of units) * 100The reason for returns is also important and can be used to determine the top return reasons by product over a time period.
Data Element Name DescriptionSourceSource DBDomain Entity (= GraphQL Entity)Custom Attribute NameCustom Attribute Data Type
Order line - Items returned (true / false)Custom AttributeCOREOrderItemhas_returnboolean: true/false
Order - Items returned (true / false)Custom AttributeCOREOrderhas_returnboolean: true/false
Order - Max return dateCustom AttributeCOREOrdermax_return_datedate
Dashboard - Return rate (past x days - configurable )Calculated ValueCOREOrder

Dashboard - Total items returned vs. total items shipped (last 7 days)Calculated ValueCOREOrder

Product Variant - Online units sold (past given period , e.g. last 7 days)Custom AttributeCOREVariantProductonline-units-sold-last-[week OR 7_days OR any_period]number (number of units)
Product Variant - Units returned (last 7 days)Custom AttributeCOREVariantProductonline-units-returned-last-[week OR 7_days OR any_period]number (number of units)
Product Variant - Return Rate (last 7 days)Calculated ValueCOREVariantProductreturn-rate-last-[week OR 7_days OR any_period]number (%)
Dashboard - SKUs with highest return rateCalculated ValueCOREVariantProduct


Order Rejection Rate

Tracks the ratio of rejected/expired fulfilments against total fulfilments placed, by location, for the time period.Calculation Logic:Rejected Rate % = (Total Number of orders in status (PARTIALLY_FULFILLED, REJECTED) / Total Number of orders) * 100Order rejections can happen for 3 reasons:
  • Automatic rejection from order sourcing logic due to no available stock (partial or full)
  • Rejection by the fulfilment store and/or warehouse (partial or full)
  • Expiry of the fulfilment due to the pick SLA being exceeded. By default, Fluent will reallocate those items/quantities to other locations to not lose the sale
The reason for rejection can also be captured to make reporting more granular.
Data Element DescriptionSourceSource DBDomain Entity (= GraphQL Entity)Custom Attribute NameCustom Attribute Data Type
Order - Number of fulfillmentsCustom AttributeCOREOrdertotal_fulfiment_countinteger
Order - Number of fulfillments that were rejected (based on fulfillment status)Custom AttributeCOREOrderrejected_fulfilment_countinteger
Order - Number of fulfillments that were expired (based on fulfillment status)Custom AttributeCOREOrderexpired_fulfilment_countinteger
Dashboard - Rejection Rate (last 7 days)Calculated ValueCOREOrder

Location - Max fulfilments per dayCustom AttributeCORELocationmax_fulfilments_dailyinteger
Dashboard - Location - Fulfillments received (last 7 days)Calculated ValueCORELocation

Dashboard - Location - Fulfillments rejected (last 7 days)Calculated ValueCORELocation

Dashboard - Location - Fulfillments expired (last 7 days)Calculated ValueCORELocation

Dashboard - Location - Rejection Rate (last 7 days)Calculated ValueCORELocation

Dashboard - Location - Expiration Rate (last 7 days)Calculated ValueCORELocation

Dashboard - Locations with highest rejection or/and expiration rateCalculated ValueCORERetailer / Network


Order Processing Time

Tracks the average time (in hours) that an order moves through its lifecycle states.

Calculation Logic

Tracks the average time (in hours) that an order moves through its lifecycle states over a time period.For example, the average time it takes for an order to move from CREATED to COMPLETE indicates the total time for the order to complete its life cycle. The states in between can also be monitored and can be used as indicators to further drill down and analyse trends.
Data Element DescriptionSourceSource DBDomain Entity/GraphQL EntityCustom Attribute NameCustom Attribute Data Type
Order - Time in status x (hours)Custom AttributeCOREOrdertime_in_status_listJSON array, value fields in hours
Order - Time in process (hours)Custom AttributeCOREOrdertime_in_processinghours
Dashboard - Avg. order time in status x (hours)Calculated ValueCOREOrder

Dashboard - Avg. order processing time (hours)Calculated ValueCOREOrder

Dashboard - At risk Orders (number that have been open more than x hours)Calculated ValueCOREOrder

Setting - At risk orders threshold (hours)Custom AttributeCORESettingorder_time_at_risk_thresholdhours


Fulfilment Processing Time

Tracks the average time (in hours) that a fulfilment moves through its lifecycle states.

Calculation Logic

Tracks the average time (in hours) that a fulfilment moves through its lifecycle states over a time period. This metric can be filtered.For example, the average time it takes for a fulfilment to move from ASSIGNED to AWAITING_WAVE indicates the time for the fulfilment to be assigned to a wave at a store. The states in between can also be monitored and can be used as indicators to further drill down and analyse trends.For example, if the time between ASSIGNED and AWAITING_WAVE increases, this may indicate the store is busy serving customers and do not have enough time to fulfil online orders. Correlating this to hours of the day and the staff on roster could further indicate labour rostering opportunities.
Data Element DescriptionSourceSource DBDomain Entity (=GraphQL Entity)Custom Attribute NameCustom Attribute Data Type
Fulfillment - Time in status x (hours)Custom AttributeCOREFulfilmenttime_in_status_listJSON array , value fields in hours
Fulfillment - Time in process (hours)Custom AttributeCOREFulfilmenttime_in_processinghours
Dashboard - Avg. fulfillment processing time (hours)Calculated ValueCOREFulfilment

Location Dashboard - Total fulfillments processed (last 7 days)Calculated ValueCORELocation

Location Dashboard - Total fulfillment processing time (last 7 days)Calculated ValueCORELocation

Location Dashboard - Avg. fulfillment time is status (last 7 days)Calculated ValueCORELocation

Location Dashboard - Avg. fulfillment processing time (last 7 days)Calculated ValueCORELocation

Dashboard - At risk fulfillments (number that have been open more than x hours)Calculated ValueCORELocation

Location attribute - At risk fulfillment threshold (hours)Custom AttributeCORELocationfulfilment_eta_at_risk_thresholdtime (hours)


Click & Collect Time

Average time taken by a customer to collect their Click & Collect order from when it is awaiting collection.

Calculation Logic

Tracks the average time (in hours) that a customer collects their order from the time it is marked as awaiting collection.Typically SLAs are put on order collection time to ensure the order is not waiting indefinitely for the customer, for example 7 days. This metric can be measured against particular customers, based on their order history and could be fed to CRM platforms.

Click & Collect Collection Time

C&C order collection time shown hour by hour.

Calculation Logic

Tracks the average time collection times, hour by hour, during a trading day.This metric is typically used to support location labour rostering schedules. For example, it may indicate 90% of order collections occur during 12pm - 2pm or no collections occur between 10am - 11am.

Appeasements

Tracks the order revenue for the time period.

Calculation Logic

Tracks the number of appeasements, average appeasement value over a time period. The appeasement reasons can also be reported on to analyse the top reasons.

Order Value

Tracks the number of orders and revenue over a time period.
Data Element DescriptionSourceSource DBDomain Entity (=GraphQL Entity)Custom Attribute NameCustom Attribute Data Type
Order - total paid amount w tax (include delivery cost)Data ModelCOREOrder
number
Order - total paid tax amountData ModelCOREOrder
number
Order - total paid amount w/o tax (include delivery cost)Custom AttributeCOREOrdertotal_paid_price_excl_taxnumber
Order - financial transaction total valueCalculated ValueCOREFinancialTransaction
number
Order - financial transaction currencyData ModelCOREFinancialTransaction
string
Order items - total paid value w tax (exclude delivery price)Data ModelCOREOrder
number
Order items - total paid value w/o tax (exclude delivery price)Custom AttributeCOREOrderorder_items_total_paid_pricenumber
Order items - currencyData ModelCOREOrder
number
Order fulfilment price (=delivery price as captured at checkout) - total w taxData ModelCOREOrder
number
Order fulfilment price (=delivery price as captured at checkout) - total w/o taxCalculated ValueCOREOrder
number
Order fulfilment price - currencyData ModelCOREOrder
number
Dashboard - value of open orders (order items paid price w tax excl delivery price)Calculated ValueCOREOrder

Dashboard - value of delivered orders (order total price w tax incl. delivery price) in past 7 daysCalculated ValueCOREOrder


Inventory Levels & Stock Status

Tracks inventory levels by location and/or product to provide accurate insights into stock availability.

Calculation Logic

Tracks inventory levels by location and/or product to provide accurate insights into stock availability.On-Hand Inventory (OH): Total units available for sale across all locations.
  • Formula: OH Inventory = Sum (Stock in All Locations)
Future Stock: Total units expected to be added to inventory from open purchase orders or incoming shipments.
  • Formula: Future Stock = Sum (Open Purchase Orders + In-Transit Stock)
Virtual Position (VP): Adjusted inventory based on reservations and pending orders.
  • Formula: VP = OH Inventory - Reserved Stock + Inbound Stock
Virtual Catalog (VC): Specific view of inventory allocated to different sales channels (e.g., online, retail).
  • Formula: VC = (OH Inventory + Future Stock) - (Reserved for Other Channels)

Split Shipment Rate

Tracks the ratio of number of shipments (fulfilments) to orders.

Calculation Logic

The ratio of the number of fulfillments (shipments) to orders:
  • Split Shipment Rate = `Total Number Fulfilments` / `Total Number of Orders`
Tracks the ratio of shipments (fulfilments) to orders over a time period. This metric can also highlight the max splits that have occurred to allow for further detailed analysis.
Data Element DescriptionSourceSource DBDomain Entity (=GraphQL Entity)Custom Attribute NameCustom Attribute Data Type
Order - Number of fulfillmentsCustom AttributeCOREOrdersplit_shipment_countinteger
Dashboard - Split shipment rate (past 7 days)Calculated ValueCOREOrder