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
OTIF 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
OTIF 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
| Data Element Name Description | Source | Source DB | Domain Entity (= GraphQL Entity) | Custom Attribute Name | Custom Attribute Data Type |
| Order - Date/Time order was promised | Custom Attribute | CORE | Order | promise_latest_eta | days |
| Fulfillment - Date/Time fulfillment was promised | Custom Attribute | CORE | FulfilmentChoice | promise_eta | days |
| Fulfillment Plan - Reference | Custom Attribute | CORE | FulfilmentChoice | fulfilment_plan_ref | string |
| Fulfillment - Shipment tracking link (from carrier) | Data Model | CORE | Consignment | ||
| Fulfillment - Actual delivery complete date/time | Custom Attribute | CORE | Fulfilment | delivered_on | timestamp |
| Order - actual delivery complete date/time (=most recent fulfilment delivery date) | Custom Attribute | CORE | Order | delivered_on | timestamp |
| Fulfillment - How late? - Days (or hours) that actual delivery/pickup readiness was over the promise | Custom Attribute | CORE | Fulfilment | eta_delay | days |
| Dashboard - Fill Rate (last x days) | Custom Attribute | CORE | Order | order_fill_rate | float between 0 and 1 |
| Dashboard - Avg. Lateness (last x days) | Custom Attribute | CORE | Order | order_eta_delay | days |
| Dashboard - Perfect Order (OTIF) | Custom Attribute | CORE | Order | OTIF | integer= 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)
| Data Element Name Description | Source | Source DB | Domain Entity (= GraphQL Entity) | Custom Attribute Name | Custom Attribute Data Type |
| Order - Canceled (yes/no) | Custom Attribute | CORE | Order | is_canceled | boolean (TRUE/FALSE) |
| Order - Cancellation reason code | Custom Attribute | CORE | Order | cancel_reason | string (code as per setting enumeration) |
| Dashboard - Canceled order rate (past x days) | Calculated Value | CORE | Order |
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 Description | Source | Source DB | Domain Entity (= GraphQL Entity) | Custom Attribute Name | Custom Attribute Data Type |
| Order line - Items returned (true / false) | Custom Attribute | CORE | OrderItem | has_return | boolean: true/false |
| Order - Items returned (true / false) | Custom Attribute | CORE | Order | has_return | boolean: true/false |
| Order - Max return date | Custom Attribute | CORE | Order | max_return_date | date |
| Dashboard - Return rate (past x days - configurable ) | Calculated Value | CORE | Order | ||
| Dashboard - Total items returned vs. total items shipped (last 7 days) | Calculated Value | CORE | Order | ||
| Product Variant - Online units sold (past given period , e.g. last 7 days) | Custom Attribute | CORE | VariantProduct | online-units-sold-last-[week OR 7_days OR any_period] | number (number of units) |
| Product Variant - Units returned (last 7 days) | Custom Attribute | CORE | VariantProduct | online-units-returned-last-[week OR 7_days OR any_period] | number (number of units) |
| Product Variant - Return Rate (last 7 days) | Calculated Value | CORE | VariantProduct | return-rate-last-[week OR 7_days OR any_period] | number (%) |
| Dashboard - SKUs with highest return rate | Calculated Value | CORE | VariantProduct |
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
| Data Element Description | Source | Source DB | Domain Entity (= GraphQL Entity) | Custom Attribute Name | Custom Attribute Data Type |
| Order - Number of fulfillments | Custom Attribute | CORE | Order | total_fulfiment_count | integer |
| Order - Number of fulfillments that were rejected (based on fulfillment status) | Custom Attribute | CORE | Order | rejected_fulfilment_count | integer |
| Order - Number of fulfillments that were expired (based on fulfillment status) | Custom Attribute | CORE | Order | expired_fulfilment_count | integer |
| Dashboard - Rejection Rate (last 7 days) | Calculated Value | CORE | Order | ||
| Location - Max fulfilments per day | Custom Attribute | CORE | Location | max_fulfilments_daily | integer |
| Dashboard - Location - Fulfillments received (last 7 days) | Calculated Value | CORE | Location | ||
| Dashboard - Location - Fulfillments rejected (last 7 days) | Calculated Value | CORE | Location | ||
| Dashboard - Location - Fulfillments expired (last 7 days) | Calculated Value | CORE | Location | ||
| Dashboard - Location - Rejection Rate (last 7 days) | Calculated Value | CORE | Location | ||
| Dashboard - Location - Expiration Rate (last 7 days) | Calculated Value | CORE | Location | ||
| Dashboard - Locations with highest rejection or/and expiration rate | Calculated Value | CORE | Retailer / 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 Description | Source | Source DB | Domain Entity/GraphQL Entity | Custom Attribute Name | Custom Attribute Data Type |
| Order - Time in status x (hours) | Custom Attribute | CORE | Order | time_in_status_list | JSON array, value fields in hours |
| Order - Time in process (hours) | Custom Attribute | CORE | Order | time_in_processing | hours |
| Dashboard - Avg. order time in status x (hours) | Calculated Value | CORE | Order | ||
| Dashboard - Avg. order processing time (hours) | Calculated Value | CORE | Order | ||
| Dashboard - At risk Orders (number that have been open more than x hours) | Calculated Value | CORE | Order | ||
| Setting - At risk orders threshold (hours) | Custom Attribute | CORE | Setting | order_time_at_risk_threshold | hours |
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 Description | Source | Source DB | Domain Entity (=GraphQL Entity) | Custom Attribute Name | Custom Attribute Data Type |
| Fulfillment - Time in status x (hours) | Custom Attribute | CORE | Fulfilment | time_in_status_list | JSON array , value fields in hours |
| Fulfillment - Time in process (hours) | Custom Attribute | CORE | Fulfilment | time_in_processing | hours |
| Dashboard - Avg. fulfillment processing time (hours) | Calculated Value | CORE | Fulfilment | ||
| Location Dashboard - Total fulfillments processed (last 7 days) | Calculated Value | CORE | Location | ||
| Location Dashboard - Total fulfillment processing time (last 7 days) | Calculated Value | CORE | Location | ||
| Location Dashboard - Avg. fulfillment time is status (last 7 days) | Calculated Value | CORE | Location | ||
| Location Dashboard - Avg. fulfillment processing time (last 7 days) | Calculated Value | CORE | Location | ||
| Dashboard - At risk fulfillments (number that have been open more than x hours) | Calculated Value | CORE | Location | ||
| Location attribute - At risk fulfillment threshold (hours) | Custom Attribute | CORE | Location | fulfilment_eta_at_risk_threshold | time (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 Description | Source | Source DB | Domain Entity (=GraphQL Entity) | Custom Attribute Name | Custom Attribute Data Type |
| Order - total paid amount w tax (include delivery cost) | Data Model | CORE | Order | number | |
| Order - total paid tax amount | Data Model | CORE | Order | number | |
| Order - total paid amount w/o tax (include delivery cost) | Custom Attribute | CORE | Order | total_paid_price_excl_tax | number |
| Order - financial transaction total value | Calculated Value | CORE | FinancialTransaction | number | |
| Order - financial transaction currency | Data Model | CORE | FinancialTransaction | string | |
| Order items - total paid value w tax (exclude delivery price) | Data Model | CORE | Order | number | |
| Order items - total paid value w/o tax (exclude delivery price) | Custom Attribute | CORE | Order | order_items_total_paid_price | number |
| Order items - currency | Data Model | CORE | Order | number | |
| Order fulfilment price (=delivery price as captured at checkout) - total w tax | Data Model | CORE | Order | number | |
| Order fulfilment price (=delivery price as captured at checkout) - total w/o tax | Calculated Value | CORE | Order | number | |
| Order fulfilment price - currency | Data Model | CORE | Order | number | |
| Dashboard - value of open orders (order items paid price w tax excl delivery price) | Calculated Value | CORE | Order | ||
| Dashboard - value of delivered orders (order total price w tax incl. delivery price) in past 7 days | Calculated Value | CORE | Order |
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)
- Formula: Future Stock = Sum (Open Purchase Orders + In-Transit Stock)
- Formula: VP = OH Inventory - Reserved Stock + Inbound Stock
- 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`
| Data Element Description | Source | Source DB | Domain Entity (=GraphQL Entity) | Custom Attribute Name | Custom Attribute Data Type |
| Order - Number of fulfillments | Custom Attribute | CORE | Order | split_shipment_count | integer |
| Dashboard - Split shipment rate (past 7 days) | Calculated Value | CORE | Order |