Product
Overview
Products represent the items that your company sells, purchases, builds, or tracks. They are the fundamental "things" in your inventory system that everything else references. Whether you're fulfilling orders, receiving shipments, or tracking stock levels, products are at the center of every operation.
Products in Finale can serve different roles based on your business needs. Regular products are standard inventory items tracked individually. Kit products have a Bill of Materials (BOM) that defines their component parts - useful when you sell assembled items or bundles. Virtual kits allow you to sell a bundle while shipping the individual components, with the system automatically handling the kit-to-component conversion during fulfillment.
The product record captures essential identifiers like SKU, UPC, and manufacturer information that help you track and organize your catalog. Products can be categorized, assigned to manufacturers, and marked as active or inactive. Pricing information includes both item price (per unit) and case price (for wholesale), accommodating different sales scenarios.
Physical attributes like dimensions and weight support shipping calculations and warehouse space planning. The system tracks case packing configurations - for example, "12/1" means 12 units per case - which affects how quantities are displayed and how products are picked and packed in your warehouse.
Products connect to nearly every other part of Finale. They appear on order line items, shipment records, invoice lines, and stock records. The GraphQL API enhances products with calculated fields showing current stock levels (on hand, available, reserved), average costs, and sales performance metrics, giving you real-time visibility into inventory and financial status without needing separate queries.
GraphQL API
The product collection provides access to product data via the GraphQL API. All queries use the Relay connection specification with cursor-based pagination.
Query Name: productViewConnection
Available Features:
- Cursor-based pagination (first/last/after/before)
- 22 filter options
- 42 sortable fields
- 7 relations to other collections
Query Examples
Basic Query
The product collection is accessed via the productViewConnection query, which returns a Relay-style connection with pagination support.
query {
productViewConnection(first: 10) {
edges {
node {
accountOverride
amazonStandardIdentificationNumber
averageCost
averageGrossSalesPerUnit
averageGrossSalesPerUnitChange
}
}
pageInfo {
hasNextPage
endCursor
}
}
}Pagination
Use cursor-based pagination to retrieve large datasets:
# First page
query {
productViewConnection(first: 50) {
edges {
node { amazonStandardIdentificationNumber }
}
pageInfo {
hasNextPage
endCursor
}
}
}
# Subsequent pages
query {
productViewConnection(first: 50, after: "cursor-from-previous-page") {
edges {
node { amazonStandardIdentificationNumber }
}
pageInfo {
hasNextPage
endCursor
}
}
}Filtering
Apply filters to narrow results (see Filters section for all available options):
query {
productViewConnection(
first: 10
accountOverride: ["##productAcctOverride"]
) {
edges {
node { amazonStandardIdentificationNumber }
}
}
}Sorting
Sort results by one or more fields:
query {
productViewConnection(
first: 10
sort: [{ field: "averageCost", mode: "desc" }]
) {
edges {
node {
amazonStandardIdentificationNumber
averageCost
}
}
}
}Relations
Query related data (see Relations section for all available relations):
query {
productViewConnection(first: 10) {
edges {
node {
amazonStandardIdentificationNumber
connectionRelation {
syncStatuses
errorDetails
}
}
}
}
}Summary and Aggregation
This collection supports data aggregation and dimensional analysis through the summary field. You can calculate metrics (like totals, averages, counts) and group them by dimensions (like category, date, status).
For a comprehensive guide to using aggregations, see the Aggregation Concept Guide.
Query Structure
productViewConnection(filters...) {
summary {
errorCode
errorMessage
groupBy {
# Group by dimensions (see table below)
}
metrics {
# Calculated metrics (see table below)
}
}
}Available Metrics
This collection provides 24 metrics that can be aggregated:
| Metric | Parameters | Description |
|---|---|---|
neqPerUnit | transform, operator | neqPerUnit for product |
lastPurchaseLandedCostPerUnit | transform, operator | lastPurchaseLandedCostPerUnit for product |
lastPurchasePrice | transform, operator | lastPurchasePrice for product |
averageGrossSalesPerUnit | transform, operator, dateRange, facilityUrlList | Average gross sales per unit |
averageUnitsPerSale | transform, operator, dateRange, facilityUrlList | averageUnitsPerSale for product |
cogsSales | transform, operator, dateRange, facilityUrlList | cogsSales for product |
countSales | transform, operator, dateRange, facilityUrlList | countSales for product |
grossSales | transform, operator, dateRange, facilityUrlList | Gross sales amount |
marginSales | transform, operator, dateRange, facilityUrlList | marginSales for product |
unitSales | transform, operator, dateRange, facilityUrlList | Number of units sold |
unitSalesForSalesVelocity | transform, operator, dateRange, facilityUrlList | unitSalesForSalesVelocity for product |
reorderQuantityToOrder | transform, operator, facilityUrlList, facilityUrl, reservedSublocationFacilityUrlList | Quantity to reorder to reach reorder point |
reorderQuantityToOrderEditable | transform, operator, facilityUrlList, facilityUrl, reservedSublocationFacilityUrlList | reorderQuantityToOrderEditable for product |
replenishmentQuantityToOrder | transform, operator, facilityUrlList, facilityUrl, reservedSublocationFacilityUrlList | replenishmentQuantityToOrder for product |
replenishmentQuantityToOrderEditable | transform, operator, facilityUrlList, facilityUrl, reservedSublocationFacilityUrlList | replenishmentQuantityToOrderEditable for product |
stock | transform, operator, aggregate, count, facilityUrlList, includeBom, includeSupplier, lotIdSearch, stockType | Stock quantity across facilities |
stockOnHand | transform, operator, aggregate, count, facilityUrlList, includeBom, includeSupplier, lotIdSearch, reservedSublocationFacilityUrlList | Available stock on hand |
stockReserved | transform, operator, aggregate, count, facilityUrlList, includeBom, lotIdSearch, reservationType | stockReserved for product |
stockOnOrder | transform, operator, aggregate, count, facilityUrlList, includeBom, lotIdSearch | stockOnOrder for product |
stockAvailable | transform, operator, aggregate, count, facilityUrlList, includeBom, includeSupplier, lotIdSearch, reservedSublocationFacilityUrlList | stockAvailable for product |
stockRemaining | transform, operator, aggregate, count, facilityUrlList, includeBom, includeSupplier, lotIdSearch | stockRemaining for product |
averageCost | transform, operator | averageCost for product |
valuation | transform, operator, facilityUrlList, lotIdSearch | valuation for product |
count | None | Count of items in the result set |
Common Parameters:
operator- Aggregation function:sum,mean,min,maxtransform- Mathematical transformation:absdateRange- Filter to specific date rangefacilityUrlList- Filter to specific facilities
GroupBy Dimensions
Group metrics by these dimensions:
| Dimension | Description |
|---|---|
category | Product category |
supplier1 | Primary supplier |
supplier2 | supplier2 for product |
supplier3 | supplier3 for product |
All dimensions accept a formatter parameter: "html", "none", "abbreviated", "blank-zero".
Examples
Example 1: Inventory Analysis by Category
Calculate total stock and count by product category:
query {
productViewConnection(first: 1) {
summary {
errorCode
errorMessage
groupBy {
category
}
metrics {
itemCount: count
totalStock: stock(operator: sum)
totalOnHand: stockOnHand(operator: sum)
}
}
}
}Expected result structure:
{
"data": {
"productViewConnection": {
"summary": {
"errorCode": null,
"errorMessage": null,
"groupBy": {
"category": ["Electronics", "Apparel", "Home Goods"]
},
"metrics": {
"itemCount": [45, 120, 78],
"totalStock": [1500, 3200, 890],
"totalOnHand": [1200, 2800, 750]
}
}
}
}
}Example 2: Sales Performance by Supplier
Analyze sales metrics grouped by primary supplier:
query {
productViewConnection(first: 1) {
summary {
errorCode
errorMessage
groupBy {
supplier1
}
metrics {
productCount: count
avgGrossSales: grossSales(operator: mean)
}
}
}
}Fields
This collection has 192 fields:
- 104 simple fields
- 12 enum fields (with predefined values)
- 76 parameterized fields (accept query options)
Note on Field Formatting: All scalar fields support the
formatterargument to control output format. Available options:"html","none","abbreviated","blank-zero". Some fields have a default formatter (shown below). See the Formatting guide for details.
Note on Sorting: Field sortability may vary depending on the UI context and query parameters used. Some parameter options explicitly disable sorting (marked with ⚠️ not sortable).
Simple Fields
These fields return values directly without additional options.
amazonStandardIdentificationNumber
amazonStandardIdentificationNumberThe Amazon Standard Identification Number (ASIN) assigned to the product for selling on Amazon. This unique identifier is used to track and manage products within Amazon's marketplace, particularly for Fulfillment by Amazon (FBA) operations. The field can be populated through scan lookup services when importing or merging product information from Amazon.
Label: Amazon
ASIN
Sortable: No
averageCost
averageCostThe calculated average cost per unit of the product, based on purchase transactions. This value changes over time as new inventory is purchased at different unit prices. When products are received through purchase orders and shipments, the average cost is recalculated by blending the cost of existing inventory with newly received items. For example, if 25 units are purchased at $11.22 and then 20 more units are received at $12.33, the average cost would be recalculated to reflect the weighted average of these transactions. This field is used for inventory valuation and cost of goods calculations.
Label: Average cost
Sortable: Yes
bomEstimatedAverageCost
bomEstimatedAverageCostThe calculated average cost of all components in a product's bill of materials. This field aggregates the average cost of each component product listed in the BOM, factoring in the quantities specified for each component. The value is only populated when all BOM items have an average cost; if any component lacks an average cost, this field remains null. This calculation is useful for understanding the total material cost that goes into manufacturing or assembling a product based on the average costs of its constituent parts.
Label: BOM estimated
average cost
Sortable: No
bomSublocationSummary
bomSublocationSummaryA text summary showing the Bill of Materials components for a product along with their inventory availability across different sublocations. For each BOM component, displays the product ID, quantity needed, and current stock levels by sublocation. Items with no inventory show "No items on hand" while items with stock display the sublocation name and quantity available. This provides a quick overview of component availability when planning production or assembly of bundled products.
Label: BOM sublocation summary
Sortable: No
caseDepth
caseDepthThe depth measurement of the product's case or packaging. This dimension works together with case height and case width to define the complete dimensions of a product case, with the unit of measurement specified in the case dimensions unit field. These measurements are important for warehouse space planning, shipping calculations, and inventory storage optimization.
Label: Case depth
Sortable: No
Status: ❌ Disabled
caseHeight
caseHeightThe height measurement of the product's case or outer packaging. This dimension is used alongside case width and case depth to specify the full dimensions of a case, with the unit of measurement defined by the case dimensions unit field. These case dimensions are typically used for warehouse planning, shipping calculations, and storage space management.
Label: Case height
Sortable: No
Status: ❌ Disabled
casePrice
casePriceThe list price for selling the product by the case rather than by individual item. This represents the standard selling price when the product is sold in case quantities, as opposed to itemPrice which applies to single unit sales. The case price is stored in USD and appears in product lists and reports where pricing by case is relevant, particularly for products with defined case packaging.
Label: Case price
GraphQL Type: Price
Sortable: Yes
caseWidth
caseWidthThe width dimension of the product's case or outer packaging. This field is part of the case dimensions (along with case depth and case height) that describe the physical size of the product when packaged for shipping or storage. The width is typically measured in the unit specified by the case dimensions unit field and is used for warehouse space planning, shipping calculations, and logistics management.
Label: Case width
Sortable: No
Status: ❌ Disabled
category
categoryA free-text field for categorizing products using custom category names. This is the modern alternative to the legacy user-defined category codes stored in userCategory. The system can operate in either legacy mode (using predefined category codes from productUserCategoryList) or modern mode (using free-text category values). When filtering or displaying products, the category helps organize items by type such as "Shells", "Cakes", "Giraffes", or any other custom classification relevant to the business. Users can search, filter, and group products by category, making it easier to manage and analyze inventory across different product types.
Label: Category
GraphQL Type: OptionList
Sortable: Yes
cbmPerUnit
cbmPerUnitThe volume measurement in cubic meters per unit for a product. This field stores the physical volume that a single unit of the product occupies, expressed as a decimal number. Users can enter or update this value to track space requirements for inventory planning and shipping calculations.
Label: CBM per unit
Sortable: No
Status: ❌ Disabled
ceNumber
ceNumberA product compliance identifier used for tracking CE (Conformité Européenne or European Conformity) marking numbers or similar regulatory certification numbers. This field is optional and can be enabled or disabled through user preferences, appearing alongside other regulatory identifiers like hazardous materials codes. It accepts up to 255 characters and is typically used by businesses selling products in markets that require CE marking or similar compliance certifications.
Label: CE number
Sortable: Yes
chainNumberOfDevices
chainNumberOfDevicesThe number of devices in a chain for the product. This field accepts numeric values, including zero, and can be left blank if not applicable. It is displayed and editable in product-related reporting and pivot table views where users can track and modify the device count for chain configurations.
Label: Chain number of devices
Sortable: No
code128
code128A barcode identifier field that stores Code 128 barcode values for the product. This field accepts alphanumeric text that can be used for barcode scanning and product identification. The field supports barcode scanning functionality through scan lookups and can be enabled or disabled through the useCode128 account configuration setting. When invalid characters are entered (such as characters not supported by Code 128 format), the value is rejected and set to null.
Label: Code 128
Sortable: No
Status: ❌ Disabled
customPartField
customPartFieldA user-definable text field for storing custom product information, limited to 255 characters. This field allows businesses to track additional product attributes that are specific to their operations and not covered by standard product fields. The field can be displayed in product reports and pivot tables, and is editable through the product interface.
Label: Custom part field
Sortable: No
Status: ❌ Disabled
description
descriptionThe short text name or description that identifies the product. This is the primary display name used throughout the system to describe what the product is, such as "Red Fake Peony" or "Hat". Users can view and edit this field when creating or updating product records. The field has a maximum length and cannot contain special unicode characters or control characters.
Label: Description
Sortable: Yes
dmxFixtureDefinition
dmxFixtureDefinitionA text field that stores the DMX fixture definition for a product. DMX (Digital Multiplex) is a standard protocol used in the entertainment and lighting industry to control stage lighting and effects equipment. This field allows businesses to specify the technical DMX configuration or fixture profile associated with a product, which is essential for entertainment equipment retailers and rental companies who need to track lighting fixture specifications for inventory and setup purposes. The field has a maximum length of 255 characters.
Label: DMX fixture definition
Sortable: No
Status: ❌ Disabled
dmxPatch
dmxPatchThe DMX patch assignment for the product. DMX is a standard communication protocol used in the entertainment and events industry to control lighting, special effects, and other stage equipment. The patch value identifies where this product is assigned within the DMX control system, allowing it to be controlled and addressed by lighting consoles and controllers. This field is particularly relevant for products that are lighting fixtures or controllable stage equipment.
Label: DMX patch
Sortable: No
Status: ❌ Disabled
duration
durationA numeric value representing the duration of a product. This field is typically used for products that have a time-based characteristic, such as effects or performances. The value is stored as a number and can be zero or any positive value. When not specified, the field is treated as null.
Label: Duration
Sortable: No
effectColor
effectColorThe color description for the visual effect produced by the product. This text field is used for products that create visual effects, such as pyrotechnic or lighting items, and describes the color characteristics of the effect when the product is used. The field can be updated and is often used alongside other effect properties like effect height, width, and subtype to fully describe the visual display characteristics of the product.
Label: Effect color
Sortable: No
Status: ❌ Disabled
effectHeight
effectHeightThe vertical dimension of the light or visual effect produced by the product, typically measured in the product's distance unit. This field is commonly used for lighting equipment, special effects devices, and similar products where the height of the projected or emitted effect is an important specification. The value is stored as a numeric measurement and can be null if not applicable to the product type.
Label: Effect height
Sortable: No
effectSubType
effectSubTypeA text field that categorizes the specific subtype of effect for products that produce lighting or visual effects. This field provides additional classification detail beyond the main effect category, allowing users to distinguish between different variations of effects. The field can store up to 255 characters and is typically used for products with effect-related properties such as stage lighting, special effects equipment, or similar effect-producing items.
Label: Effect sub type
Sortable: No
Status: ❌ Disabled
effectWidth
effectWidthThe width dimension of a product's visual effect, typically measured in numeric units. This field is used alongside effect height and effect sub-type to define the spatial characteristics of products that produce visual effects. The value can be a decimal number, zero, or null if not applicable to the product.
Label: Effect width
Sortable: No
eMatches
eMatchesA text field used to store eMatches information for fireworks products. eMatches are electronic ignition devices used in pyrotechnic displays. This field allows users to record details about the electronic match specifications or requirements for the product, which is particularly relevant for products used in professional fireworks displays and special effects.
Label: E-matches
Sortable: No
Status: ❌ Disabled
exNumber
exNumberAn explosives certification identifier assigned to pyrotechnic products. This field can contain multiple EX numbers separated by spaces, commas, semicolons, or colons. EX numbers are regulatory certifications used in the fireworks and explosives industry to indicate that a product has been tested and approved for safety compliance. Users can enter and search by these certification numbers to identify products that meet specific regulatory requirements.
Label: EX number
Sortable: Yes
fuseDelay
fuseDelayThe delay time for a fuse in a fireworks product, measured in seconds. This field is used in the pyrotechnics industry to specify how long the fuse will burn before the firework ignites. The field displays as "Fuse delay" in product tables and can be left blank for non-pyrotechnic products. When set to zero, it indicates an instant ignition with no delay.
Label: Fuse delay
Sortable: No
Status: ❌ Disabled
hazardDefault
hazardDefaultA text field that stores default hazard information or warnings associated with the product. This field can contain descriptive text about hazards related to the product and can be updated as needed. The field is displayed as "Hazard default" in reporting interfaces and is typically hidden by default in product views.
Label: Hazard default
Sortable: No
Status: ❌ Disabled
hazardousMaterial
hazardousMaterialAn identifier that classifies the product as a hazardous material, typically using standardized codes such as UN numbers (e.g., UN0433). This field is used to track and categorize products that require special handling, storage, or shipping procedures due to their hazardous nature. The identifier corresponds to entries in a hazardous materials reference collection that contains detailed descriptions of each classification. When present, this field appears in product summaries and can be used to filter or group products by their hazardous material classification.
Label: Hazardous
material
Sortable: Yes
hazardousMaterialDescription
hazardousMaterialDescriptionThe descriptive text that explains the specific hazardous material classification assigned to the product. This field provides a human-readable description of the hazardous material type, such as the description for a UN hazard code (e.g., "Description for UN0433"). It appears alongside the hazardous material identifier to help users understand the nature of the hazardous material classification without needing to look up the code separately.
Label: Hazardous
material
description
Sortable: No
imageTooltip
imageTooltipAn image attachment associated with the product, typically displayed visually in product lists and views. This field returns a Content object containing metadata about the product image including the filename, file type, file size, and storage location. Products may have an image attached, have partial image information, or have no image at all. Use the Content object's fileUrl field to access the actual image file.
Label: Image
Type: ##contentUrlAttachment
Sortable: No
internationalArticleNumber
internationalArticleNumberThe product's International Article Number (EAN), which is a standardized barcode format primarily used in Europe for retail product identification. This field is used when integrating with e-commerce platforms like Shopify to sync barcode information, and is checked along with UPC and ISBN codes when performing scan lookups to identify products.
Label: EAN
Sortable: No
Status: ❌ Disabled
itemCost
itemCostThe cost value assigned to a product item, representing the per-unit expense of the product in inventory. This field is used in accounting calculations and can be sorted in product queries. The itemCost contributes to determining total costs for orders and transactions when combined with other expenses like shipping costs.
Label: Std accounting cost
GraphQL Type: Price
Sortable: Yes
itemPrice
itemPriceThe list price for a single unit of the product. This is the standard retail or catalog price displayed to customers, extracted from the product's price list where the price type is LIST_PRICE. The field can be used for sorting and filtering products.
Label: Item price
GraphQL Type: Price
Sortable: Yes
lastPurchaseLandedCostPerUnit
lastPurchaseLandedCostPerUnitThe per-unit landed cost from the most recent purchase of this product. Landed cost includes the purchase price plus any additional costs such as shipping, duties, and freight charges allocated to each unit. This differs from the last purchase price, which reflects only the supplier's quoted price. Users can view this field to understand the true total cost per unit of acquiring the product from their last purchase order, helping with accurate pricing decisions and profitability analysis.
Label: Last purchase landed cost per unit
Sortable: Yes
lastPurchasePrice
lastPurchasePriceThe price paid per unit on the most recent purchase order for this product. This field captures the unit price from the last time the product was purchased, providing a historical reference point for comparing current vendor pricing and tracking cost trends over time. It differs from lastPurchaseLandedCostPerUnit, which includes additional costs beyond the base purchase price.
Label: Last purchase price
Sortable: Yes
leadTime
leadTimeThe number of days required to obtain this product when it is not currently in stock. This field can be set at the product level as a default value, and can also be specified for individual suppliers in the product's supplier list. When determining how long it will take to fulfill an order for a product that needs to be restocked, the system uses the lead time to calculate expected availability dates. Lead time values are typically between 0 and several weeks, with null indicating no default lead time has been specified.
Label: Std lead days
Sortable: No
manufacturer
manufacturerThe name of the manufacturer or brand associated with the product. This field is used to identify and group products by their maker, allowing users to filter and organize product listings by manufacturer. It appears in product views and reports as "Mfg" and can be used to filter product searches. The manufacturer name helps users quickly identify products from specific brands or suppliers when viewing inventory, creating orders, or generating reports.
Label: Manufacturer
GraphQL Type: OptionList
Sortable: Yes
manufacturerMarkText
manufacturerMarkTextA text field that stores manufacturer marking information for the product. This field can be configured through the product GUI options using the useManufacturerMark setting and is available for import and export operations. The field allows businesses to record specific text markings or identifiers that the manufacturer uses for the product, which may differ from standard identifiers like the manufacturer product ID.
Label: Manufacturer mark text
Sortable: No
mfgProductId
mfgProductIdThe manufacturer's unique identifier or part number for the product. This is the identifier assigned by the product's manufacturer to distinguish it in their catalog, often referred to as the MPN (Manufacturer Part Number). This field is used alongside other product identifiers like UPC and EAN for product identification and lookup purposes.
Label: Mfg
product ID
Sortable: Yes
neqPerUnit
neqPerUnitThe net explosive mass per unit of the product, expressed as a numeric quantity. This field is used for products containing hazardous or explosive materials and represents the NEQ (Net Explosive Quantity) value for a single unit. The measurement system for this value is specified in the companion field neqPerUnitSystemOfMeasure, with values typically expressed in weight units such as ounces, pounds, or grams.
Label: NEQ
per unit
Sortable: No
neqPerUnitSystemOfMeasure
neqPerUnitSystemOfMeasureThe net explosive quantity per unit converted to a standard system of measurement for consistent comparison and sorting across products. When products have their net explosive quantity measured in different weight units (such as ounces, pounds, or grains), this field normalizes those values to a common baseline, enabling accurate sorting and comparison regardless of the original unit of measurement used for each product.
Label: NEQ
per unit
system of measure
Sortable: Yes
notes
notesAdditional descriptive text or detailed notes about a product that supplement the product description. This field is stored as longDescription in the database and provides space for extended information, specifications, or other details that help identify or explain the product. Users can enter multiple lines of text including tabs and newlines, but the field cannot contain emojis, control characters, or unicode characters in the supplementary plane.
Label: Notes
GraphQL Type: Text
Sortable: No
physicalSpecifications
physicalSpecificationsA text field that stores physical specifications and characteristics of the product. This field can be used to capture descriptive information about the product's physical attributes, dimensions, materials, or other tangible properties that define the product's physical nature. The field has a 255-character limit and is not visible by default in product views.
Label: Physical Specifications
Sortable: No
Status: ❌ Disabled
potentialBuildQuantity
potentialBuildQuantityThe potential build quantity indicates how many units of this product can be built after accounting for existing reservations. This calculated value shows the available capacity to assemble or manufacture the product based on current inventory and component availability, minus any quantities already reserved for other purposes.
Label: Potential build quantity (after reservations)
Sortable: No
prefireTime
prefireTimeThe duration of time before a firework or pyrotechnic effect begins after ignition, typically measured in seconds. This is a characteristic used to describe choreography and timing of firework effects, allowing users to plan and coordinate displays by knowing when the visual effect will start after the device is lit.
Label: Prefire time
Sortable: No
priceAdditionalUnits
priceAdditionalUnitsThe price charged for each unit purchased beyond the first unit. This field works in conjunction with the price first unit field to enable tiered pricing, where the first unit of a product may be priced differently than subsequent units in the same order or transaction.
Label: Price additional units
GraphQL Type: Price
Sortable: Yes
priceFirstUnit
priceFirstUnitThe price charged for the first unit of this product when using tiered pricing. This field works in conjunction with priceAdditionalUnits to support pricing structures where the first unit has a different price than subsequent units. For example, a product might be priced at $1.25 for the first unit and $0.55 for each additional unit. This pricing model is commonly used for setup fees, minimum charges, or volume discounting scenarios.
Label: Price first unit
GraphQL Type: Price
Sortable: Yes
productBomList
productBomListA list of the component products that make up this assembled product. In manufacturing and inventory systems, a Bill of Materials (BOM) defines what parts or materials are needed to build or assemble a finished product. This field displays the components required to create the product, allowing businesses to track inventory requirements for assembled items and understand the relationship between parent products and their constituent parts.
Label: Product BOM list
Sortable: No
productDetailUrl
productDetailUrlA web link that directs users to the full product detail page within the Finale Inventory application. This URL is automatically generated by the server for direct access to view complete product information in the system interface.
IMPORTANT: Treat URL values as opaque strings supplied by the server. Do not attempt to parse, interpret, or construct URL values manually:
- The URL structure is an internal implementation detail subject to change
- Manually constructing URLs can lead to bugs and system errors
- Always use URL values exactly as provided by the API
Label: Product detail URL
Sortable: No
productId
productIdThe unique identifier for a product in the system. This ID is used to identify and reference products across sales orders, purchase orders, invoices, shipments, stock items, and other transactions. It is the primary user-facing identifier that appears on documents and reports, and is required when importing or creating new products. Users search for and identify products by this ID throughout the system.
Label: Product ID
Sortable: Yes
Default Formatter: html
Example Query:
{
product(productUrl: "example-url") {
productId # Uses default formatter: html
productIdRaw: productId(formatter: "none") # Get raw value
}
}productUrl
productUrlThe unique API identifier for a product record. This is the primary key used throughout the system to reference and look up products in API calls, relationships with other entities like orders, shipments, and inventory items, and data queries. This field is automatically generated by the server and is used to link products across different parts of the system including bill of materials, supplier lists, product associations, inventory tracking, and sales orders.
IMPORTANT: Treat URL values as opaque strings supplied by the server. Do not attempt to parse, interpret, or construct URL values manually:
- ID values embedded in URLs may differ from entity ID values
- The URL structure is an internal implementation detail subject to change
- Manually constructing URLs can lead to bugs and system errors
- Always use URL values exactly as provided by the API
Label: Product Url
Sortable: No
rackTubes
rackTubesThe number of tubes that can fit in a rack for this product. This field is used for inventory organization and storage management, allowing users to track how many tube units of a product can be stored in a single rack configuration. The field is numeric and may be null if the product is not stored in tube racks or if rack capacity has not been specified.
Label: Rack tubes
Sortable: No
Status: ❌ Disabled
rackTypeDefault
rackTypeDefaultThe default rack type assigned to this product. This text field specifies the type of rack or storage configuration that should be used for the product when no specific rack type is otherwise specified. Users can view and update this value to set the preferred rack type for organizing or storing the product in inventory.
Label: Rack type default
Sortable: No
Status: ❌ Disabled
recordCreated
recordCreatedThe timestamp when the product record was first created in the system. This field is automatically set when a new product is added and cannot be modified afterward. It appears as a filter and column option in product list views, allowing users to search for or sort products by their creation date.
Label: Record created
Sortable: Yes
recordLastUpdated
recordLastUpdatedThe timestamp when the product record was most recently modified or updated in the system. This field is displayed as a formatted date and time (such as "Oct 27 2021 6:21:39 am") and respects the user's configured timezone settings from application preferences. It can be used for filtering products by date range to identify recently changed items, and is commonly shown alongside recordLastUpdatedUser to provide a complete audit trail of who made the last change and when.
Label: Record last updated
Sortable: Yes
safetyDistance
safetyDistanceThe minimum recommended distance that spectators or personnel should maintain from the product when it is in use, typically measured in meters or feet. This field is primarily used for pyrotechnic and fireworks products to ensure safe operation and is displayed alongside other physical specifications like effect height and effect width. The field can be enabled or disabled using the useSafetyDistance setting and accepts numeric values including zero.
Label: Safety distance
Sortable: No
salesLast14Days
salesLast14DaysThe total quantity of units sold for this product in the last 14 days. This field is commonly used to analyze recent sales trends and identify inventory movement patterns, such as determining slow-moving items by comparing recent sales against longer time periods. It can be combined with other sales history fields in formulas to support reordering decisions and inventory management.
Label: Sales last 14 days
Sortable: No
salesLast180Days
salesLast180DaysThe total quantity of this product sold during the last 180 days. This metric is part of a series of rolling sales period calculations that help businesses analyze product performance and demand patterns over different time horizons, useful for inventory planning and identifying sales trends.
Label: Sales last 180 days
Sortable: No
salesLast30Days
salesLast30DaysThe total sales quantity for this product over the most recent 30-day period. This metric provides a snapshot of recent product performance and is commonly used alongside other time-based sales metrics (7, 14, 60, 90, 180, and 365 days) to analyze sales trends and velocity. The field helps users assess current demand patterns and make informed decisions about inventory levels, reordering, and product management.
Label: Sales last 30 days
Sortable: No
salesLast365Days
salesLast365DaysThe total quantity of this product sold in the last 365 days. This field provides a full year view of product sales activity, useful for annual inventory planning, identifying consistently performing products, and calculating long-term demand trends. It belongs to a family of sales tracking fields that measure product movement over different time periods.
Label: Sales last 365 days
Sortable: No
salesLast60Days
salesLast60DaysThe total sales quantity for this product over the last 60 days. This field is part of a series of sales metrics that track product performance across different time periods, helping businesses analyze sales trends and make inventory decisions. The value represents the cumulative number of units sold during the 60-day period ending today.
Label: Sales last 60 days
Sortable: No
salesLast7Days
salesLast7DaysThe total quantity of this product sold through completed sales orders in the last 7 days. Only sales orders with a completed status are included in this calculation; orders in other statuses such as created or locked are excluded. The 7-day time window is calculated based on the order date and is timezone-dependent, using either the application's default timezone or a specified timezone parameter. If the product has no sales within the last 7 days, this field returns 0.00.
Label: Sales last 7 days
Sortable: No
salesLast90Days
salesLast90DaysThe total quantity of this product sold during the last 90 days. This metric helps businesses track recent sales performance and make informed decisions about inventory replenishment, purchasing, and demand forecasting. It provides a rolling 90-day window of sales activity for each product.
Label: Sales last 90 days
Sortable: No
salesLastMonth
salesLastMonthThe total sales quantity for this product during the previous calendar month. This field is part of a suite of time-based sales metrics that help track product performance over various time periods. It provides visibility into month-over-month sales trends and is typically used for inventory planning, reorder decisions, and sales velocity analysis.
Label: Sales last month
Sortable: No
salesLastWeekMonToSun
salesLastWeekMonToSunThe total sales quantity for this product during the previous week, calculated from Monday through Sunday. This field provides a weekly sales metric using the Monday-to-Sunday week definition, which differs from the salesLastWeekSunToSat field that tracks sales using a Sunday-to-Saturday week. This allows businesses to analyze product performance based on their preferred weekly calendar convention.
Label: Sales last week Mon to Sun
Sortable: No
salesLastWeekSunToSat
salesLastWeekSunToSatThe total sales quantity for this product during the last complete week, calculated from Sunday through Saturday. This field provides weekly sales performance data using a Sunday-to-Saturday week definition, which differs from the Monday-to-Sunday week calculation available in the salesLastWeekMonToSun field. This allows businesses to track product sales performance based on their preferred weekly calendar convention.
Label: Sales last week Sun to Sat
Sortable: No
salesThisMonth
salesThisMonthThe total sales quantity for this product during the current calendar month. This field helps users track current month performance and compare it against other time periods like last month, this week, or various historical periods. The value represents the sum of product sales from the beginning of the current month through today.
Label: Sales this month
Sortable: No
salesThisWeekMonToSun
salesThisWeekMonToSunThe total sales quantity for a product during the current week, calculated from Monday through Sunday. This field provides a weekly sales metric that aligns with the Monday-to-Sunday week definition, as opposed to the alternative Sunday-to-Saturday week view also available in the system.
Label: Sales this week Mon to Sun
Sortable: No
salesThisWeekSunToSat
salesThisWeekSunToSatThe total sales quantity for this product during the current week, where the week is defined as running from Sunday through Saturday. This field provides a weekly sales metric using the Sunday-to-Saturday week definition, as opposed to the Monday-to-Sunday alternative. It helps track current week performance and is typically displayed in product sales reports and analytics.
Label: Sales this week Sun to Sat
Sortable: No
shortCode
shortCodeA compact scannable code identifier assigned to a specific product, packing configuration, and lot combination for inventory scanning and data collection. The short code is retrieved from the scan lookup table based on the product URL, normalized packing string, and lot ID, making it easier to identify and track inventory items during physical counts, transfers, and other warehouse operations. This field is particularly useful in mobile data collection scenarios where users can scan or enter a short code instead of typing longer product identifiers.
Label: Short code
Sortable: No
shortCodeInStdPacking
shortCodeInStdPackingThe product's short code identifier specifically for its standard packing configuration. This field generates a scannable lookup code based on the product URL and the standard packing specification, allowing the product to be identified by scan key when in its standard case or packing format. This is distinct from the general product short code, as it's tied to the specific packing configuration defined for the product.
Label: Short code in std packing
Sortable: Yes
skuList
skuListA comma-separated list of product SKUs associated with this product. This field is stored as a JSON array internally and displays the SKU identifiers joined together for easy readability. For example, a product might show "Apple, Canteloupe" or "Banana" to represent multiple or single associated product variants.
Label: Product lookup list
Sortable: No
stdBinId
stdBinIdThe default warehouse bin or location where this product is stored. This field is used when syncing orders to ShipStation to specify the warehouse location from which items should be picked, helping warehouse staff locate products for order fulfillment.
Label: Std bin ID
GraphQL Type: Text
Sortable: Yes
stdBuyPrice
stdBuyPriceThe standard buying price for the product. This represents a baseline or expected purchase cost that the business uses for planning and cost calculations, as opposed to the actual last purchase price which may vary from order to order. The standard buy price serves as a reference point for pricing and costing operations.
Label: Std buy price
GraphQL Type: Price
Sortable: No
stdPacking
stdPackingThe standard packing configuration for a product, indicating how items are packaged in cases. This field uses a normalized format to describe the case packing structure, such as "6 cs 6/1" (meaning 6 cases with 6 units of 1 each) or "72/1" (72 units per 1 case). The field helps users understand the default packaging for inventory management, particularly when working with scanned stock changes and converting between cases and individual units (eaches). This information is used to calculate units per case and is displayed throughout the system when viewing or managing product inventory.
Label: Std packing
Sortable: Yes
stdPackingUnitsPerCase
stdPackingUnitsPerCaseThe standard number of individual units contained within each case for this product. For example, a product with standard packing of "3/1" would have 3 units per case, while a product with "5/1" would have 5 units per case. This value defaults to 1 if no standard packing configuration is defined for the product. This field is commonly used to convert between case quantities and individual unit quantities across inventory, sales, and purchasing operations.
Label: Std packing units per case
Sortable: Yes
stdReorderLevel
stdReorderLevelThe manually entered minimum stock level that triggers a reorder when inventory falls below this threshold. This field is used when the reorder calculation method is set to manual entry rather than automated calculations based on sales velocity. When populated, this value represents the minimum quantity of product that should be maintained in inventory before initiating a replenishment order. This field can be set at the facility level through reorder guidelines, allowing different reorder levels for the same product across multiple locations.
Label: Std
reorder point
GraphQL Type: Number
Sortable: No
stdReorderLevelMax
stdReorderLevelMaxThe maximum reorder level manually set by users for inventory replenishment. This field allows users to define an upper threshold for when to reorder a product, working in conjunction with the standard reorder level (stdReorderLevel). While the system can calculate reorder points automatically (reorderPointMaxCalc), this field provides a way for users to override or supplement those calculations with manually specified maximum reorder thresholds. When left empty, the system relies on calculated values instead.
Label: Std
reorder point max
GraphQL Type: Number
Sortable: No
stdReorderMaxDays
stdReorderMaxDaysThe maximum number of days of inventory to maintain for this product when calculating reorder points. This value represents the reorderMaxDays setting from the product's reorder guidelines and is used in conjunction with processing lead time to determine how much inventory should be kept on hand. When set, it ensures that reorder calculations don't exceed this maximum threshold, helping to prevent over-ordering and excess inventory. If no reorderMaxDays is specified in the product's reorder guidelines, this field will be empty and the system may use a default value from preferences.
Label: Std
reorder days of inventory
GraphQL Type: Number
Sortable: No
stdReorderProcessingLeadTime
stdReorderProcessingLeadTimeThe standard number of days required for internal processing when reordering this product. This represents the time needed to handle the reorder internally (such as order processing, receiving, inspection, and put-away) before the product is available for use. This value is used in calculating the total lead time for inventory replenishment, which combines the supplier lead time, processing time, and safety stock days to determine when reorder points should trigger.
Label: Std
processing days
GraphQL Type: Number
Sortable: No
stdReorderQuantity
stdReorderQuantityThe standard quantity increment to use when reordering this product. This field specifies the quantity of units to order at a time, helping to ensure orders are placed in appropriate batch sizes. It works in conjunction with other reorder settings like reorder level and reorder point to determine when and how much inventory to replenish. This field is only applicable when the reorder functionality is enabled for the product.
Label: Std
reorder in qty of
GraphQL Type: Number
Sortable: No
stdReorderSafetyStock
stdReorderSafetyStockThe standard number of safety stock days configured for this product, which serves as a buffer to protect against stockouts due to demand variability or supply delays. This field is used in reorder point calculations to ensure adequate inventory levels are maintained. Safety stock days represent the number of additional days of inventory to keep on hand beyond the expected lead time, providing a cushion for unexpected demand spikes or supplier delays.
Label: Std
safety stock days
GraphQL Type: Number
Sortable: No
stdReorderUsageGrowth
stdReorderUsageGrowthThe expected annual percentage growth rate in product usage, used when calculating reorder points and quantities. This value is expressed as a percentage per year and helps adjust inventory levels to account for anticipated increases in demand over time. For example, a value of 10 represents 10% expected growth per year. When set, the system uses this growth rate to project future demand and ensure adequate stock levels are maintained as product usage trends upward. This field is part of the standard reorder calculation settings and is typically used alongside other reorder parameters like safety stock, processing lead time, and reorder quantity.
Label: Std
usage growth %/yr
GraphQL Type: Number
Sortable: No
supplier
supplierLabel: Supplier
Sortable: No
supplier1Comments
supplier1CommentsLabel: Supplier 1
comments
GraphQL Type: Text
Sortable: No
supplier1LeadTime
supplier1LeadTimeLabel: Supplier 1
lead days
GraphQL Type: Number
Sortable: No
supplier1Price
supplier1PriceLabel: Supplier 1
price
GraphQL Type: Price
Sortable: No
supplier1ProductId
supplier1ProductIdLabel: Supplier 1
product ID
Sortable: No
supplier1QuantityAvailable
supplier1QuantityAvailableLabel: Supplier 1
quantity available
Sortable: No
supplier2Comments
supplier2CommentsLabel: Supplier 2
comments
GraphQL Type: Text
Sortable: No
supplier2LeadTime
supplier2LeadTimeLabel: Supplier 2
lead days
GraphQL Type: Number
Sortable: No
supplier2Price
supplier2PriceLabel: Supplier 2
price
GraphQL Type: Price
Sortable: No
supplier2ProductId
supplier2ProductIdLabel: Supplier 2
product ID
Sortable: No
supplier2QuantityAvailable
supplier2QuantityAvailableLabel: Supplier 2
quantity available
Sortable: No
supplier3Comments
supplier3CommentsLabel: Supplier 3
comments
GraphQL Type: Text
Sortable: No
supplier3LeadTime
supplier3LeadTimeLabel: Supplier 3
lead days
GraphQL Type: Number
Sortable: No
supplier3Price
supplier3PriceLabel: Supplier 3
price
GraphQL Type: Price
Sortable: No
supplier3ProductId
supplier3ProductIdLabel: Supplier 3
product ID
Sortable: No
supplier3QuantityAvailable
supplier3QuantityAvailableLabel: Supplier 3
quantity available
Sortable: No
title
titleLabel: Title
Sortable: No
unitOfMeasure
unitOfMeasureLabel: Unit of measure
GraphQL Type: OptionList
Sortable: No
universalProductCode
universalProductCodeLabel: UPC
Sortable: No
Status: ❌ Disabled
vdlDescription
vdlDescriptionLabel: VDL description
Sortable: No
Status: ❌ Disabled
weightPerUnit
weightPerUnitLabel: Weight
per unit
Sortable: No
weightPerUnitSystemOfMeasure
weightPerUnitSystemOfMeasureLabel: Weight
per unit
system of measure
Sortable: Yes
Enum Fields
These fields return one of a predefined set of values.
accountOverride
accountOverrideIndicates whether the product has custom account assignments that override the default accounting configuration. Products can either use default accounts or have specific account overrides configured, such as custom COGS accounts. This field allows filtering and grouping products based on their accounting setup, distinguishing between products with customized accounting versus those using standard defaults.
Label: Has account override
Sortable: No
Possible Values:
##productAcctOverride- Has account override(s)##productAcctDefault- Default accounts
caliber
caliberThe measurement of the internal diameter or bore size of ammunition or firearm-related products, typically expressed in inches (e.g., 6", 7") or millimeters (e.g., 123mm, 2000mm). This field is used to categorize and filter ammunition products, and can be sorted to organize products by their bore size from smallest to largest. The caliber value is stored internally as a numeric measurement but displayed to users with the appropriate unit designation.
Label: Caliber
Sortable: Yes
Possible Values:
##calSmall- Small##cal2in- 2" / 51mm##cal25in- 2.5" / 64mm##cal3in- 3" / 76mm##cal4in- 4" / 102mm##cal5in- 5" / 127mm##cal6in- 6" / 152mm##cal7in- 7" / 178mm##cal8in- 8" / 203mm##calLarge- Large
caseDimensionsUnit
caseDimensionsUnitThe unit of measurement used for the product's case dimensions (case depth, case height, and case width). Common values include feet, meters, and inches. This field allows users to specify which measurement system applies to the physical dimensions of the product's case or packaging.
Label: Case dimensions unit
Sortable: No
Status: ❌ Disabled
Possible Values:
LEN_m- MeterLEN_cm- CentimeterLEN_mm- MillimeterLEN_ft- FeetLEN_in- InchLEN_yd- Yard
choreographyTab
choreographyTabThe category classification for a product, used to organize and filter products by type. Products can be categorized into groups such as Shells, Cakes, and other category types. This field enables users to filter product listings and reports by category, making it easier to view and analyze products within specific classifications. The field is displayed as "Choreography tab" in the user interface and stores enumerated category values that determine which product category a given item belongs to.
Label: Choreography tab
Sortable: No
Status: ❌ Disabled
Possible Values:
##shells- Shells##comets- Comets##mines- Mines##multishot- Candles##cakes- Cakes##singleShot- Single shot##ground- Ground##rocket- Rocket##flame- Flame##sfx- Sfx##macro- Macro##light- Light##fountains- Other##nonChoreographed- Non-choreographed##not_an_effect- Not an effect##rack- Rack##fixture- Fixture
distanceUnit
distanceUnitThe unit of measurement used for distance-related product attributes such as safety distance, effect width, and effect height. This field accepts length measurement units like feet or meters and determines how dimensional values for the product are measured and displayed. When set, it applies to all distance measurements associated with the product.
Label: Distance unit
Sortable: No
Possible Values:
LEN_m- MeterLEN_cm- CentimeterLEN_mm- MillimeterLEN_ft- FeetLEN_in- InchLEN_yd- Yard
expandBillOfMaterials
expandBillOfMaterialsControls whether the product's bill of materials should be expanded when syncing to integrations. When set to "Always expand bill of materials," the system will break down the product into its component parts during integration operations. When set to "Never expand bill of materials," the product is treated as a single item. This setting can be configured per product to override the default behavior set at the integration level, which is useful for managing how assembled or kit products are represented in different sales channels or external systems.
Label: Expand bill of materials
GraphQL Type: OptionList
Sortable: No
Possible Values:
##expand- Always expand bill of materials##noexpand- Never expand bill of materials
hasBom
hasBomIndicates whether the product has a Bill of Materials (BOM) defined. A Bill of Materials is a list of components and materials required to manufacture or assemble the product. This field helps users identify which products are assembled items with defined component structures versus simple products that are purchased or sold as single units.
Label: Has BOM
Sortable: No
Possible Values:
##productHasBom- Has BOM##productDoesNotHaveBom- Does not have BOM
mfgCountry
mfgCountryThe country where the product is manufactured. This field stores a country code (such as USA, CHN, BEL, or AUS) that identifies the geographic location of the product's manufacturing origin. It appears in import screens with the label "Mfg country" and is optional for import. This field is commonly used alongside manufacturer information to track product sourcing and country of origin requirements.
Label: Mfg
country
Sortable: No
Possible Values: See Country Codes (ISO 3166-1 alpha-3)
reservationPolicy
reservationPolicyThe policy that controls how inventory is reserved for products with a bill of materials. When set to a specific value like "Finished product only" (RSRV_PRODUCT_ONLY), it determines whether reservations apply only to the finished product or include its component parts. When left empty or null, the system uses the default reservation policy configured in the global settings. This field is particularly relevant for products that have bill of materials, controlling how inventory allocation and reservations cascade through the product structure.
Label: Reservation policy
GraphQL Type: OptionList
Sortable: No
Possible Values:
RSRV_PRODUCT_ONLY- Finished product onlyRSRV_INCLUDE_BOM- Include BOM components
status
statusIndicates whether a product is currently active or inactive in the system. Active products (PRODUCT_ACTIVE) are available for use in orders, inventory tracking, and appear in product listings and reports. Inactive products (PRODUCT_INACTIVE) are excluded from most product lists and operations, effectively removing them from active use without deleting the record. This allows businesses to discontinue products while preserving their historical data and transaction records.
Label: Status
GraphQL Type: OptionList
Sortable: Yes
Possible Values:
PRODUCT_ACTIVE- ActivePRODUCT_INACTIVE- Inactive
stdReorderCalculationMethodId
stdReorderCalculationMethodIdThe method used to calculate reorder points for this product. Options include "Do not reorder" (product is not restocked), "Default from settings" (uses system-wide default method), "Manual reorder point entry" (user manually specifies reorder levels), "Sales velocity" (calculates based on historical sales patterns), and "Demand velocity" (calculates based on demand patterns including orders and usage). This setting determines how the system automatically calculates when to restock inventory for the product.
Label: Reorder calculation method
GraphQL Type: OptionList
Sortable: No
Possible Values:
##manual- Manual reorder point entry##salesVelocity- Sales velocity##doNotReorder- Do not reorder
weightUnit
weightUnitLabel: Weight
unit
Sortable: No
Possible Values:
WT_kg- KilogramWT_g- GramWT_mg- MilligramWT_lb- PoundWT_oz- OunceWT_gr- Grain
Parameterized Fields
These fields accept parameters to customize the returned data. Parameters allow filtering by location, date ranges, aggregation methods, and more.
averageGrossSalesPerUnit
averageGrossSalesPerUnitThe average revenue generated per unit of this product sold. This metric is calculated by dividing total gross sales by the total number of units sold, providing insight into the typical selling price per unit. This field can be filtered by date range and facility location to analyze pricing trends across different time periods and locations. A related field, averageGrossSalesPerUnitChange, shows the percentage change in this metric between two time periods.
Label: Average gross sales per unit
Sortable: No
Parameters:
-
dateRange (
DateRange) Dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
averageGrossSalesPerUnit(
dateRange: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}averageGrossSalesPerUnitChange
averageGrossSalesPerUnitChangeThe percentage change in average gross sales per unit between two time periods. This metric compares the average revenue earned per unit sold in a later period against an earlier period, showing whether the product is generating more or less revenue per unit over time. For example, a value of 22.3% indicates the average gross sales per unit increased by 22.3%, while -95.8% shows a significant decrease. This field accepts parameters to specify the before and after time periods for comparison, as well as optional facility filtering to analyze performance at specific locations.
Label: Average gross sales per unit change
Sortable: No
Parameters:
-
before (
DateRange) Baseline dates -
after (
DateRange) Comparison dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
averageGrossSalesPerUnitChange(
before: { begin: "2024-01-01", end: "2024-12-31" }
after: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}averageUnitsPerSale
averageUnitsPerSaleThe average number of product units included in each sale transaction. For example, if a product was sold in three separate transactions with quantities of 2, 3, and 1 units respectively, the average units per sale would be 2. This metric can be filtered by date range and facility to analyze sales patterns over specific time periods or locations.
Label: Average units per sale
Sortable: No
Parameters:
-
dateRange (
DateRange) Dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
averageUnitsPerSale(
dateRange: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}averageUnitsPerSaleChange
averageUnitsPerSaleChangeThe percentage change in the average number of units sold per sale transaction between two time periods. This metric helps identify whether customers are buying more or fewer units in each transaction over time. For example, a value of "1650%" indicates customers are purchasing significantly more units per sale compared to the earlier period, while "0.0%" shows no change in the average quantity per sale. The field accepts time period parameters to specify which periods to compare (such as comparing yesterday to the day before).
Label: Average units per sale change
Sortable: No
Parameters:
-
before (
DateRange) Baseline dates -
after (
DateRange) Comparison dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
averageUnitsPerSaleChange(
before: { begin: "2024-01-01", end: "2024-12-31" }
after: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}cogsSales
cogsSalesThe total cost of goods sold for this product over a specified date range and facility. This represents the inventory cost associated with all sales transactions for the product during the period, and is used to calculate profit margins when compared against gross sales. The field accepts optional date range and facility parameters to filter the calculation to specific time periods and locations.
Label: COGS Sales
Sortable: No
Parameters:
-
dateRange (
DateRange) Dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
cogsSales(
dateRange: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}cogsSalesChange
cogsSalesChangeThe percentage change in cost of goods sold for a product between two time periods. This field accepts before and after time period parameters to compare COGS across different date ranges, showing whether product costs increased or decreased. For example, a value of 100.0% indicates COGS doubled from the before period to the after period, while 50.0% indicates COGS increased by half. This metric helps track cost trends and identify products with significant cost fluctuations over time.
Label: COGS Sales change
Sortable: No
Parameters:
-
before (
DateRange) Baseline dates -
after (
DateRange) Comparison dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
cogsSalesChange(
before: { begin: "2024-01-01", end: "2024-12-31" }
after: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}consumptionQuantity
consumptionQuantityThe estimated quantity of this product consumed over the standard reorder calculation time period for a specific facility. This value is calculated by multiplying the consumption velocity (how much is used per day) by the reorder calculation time period. For example, if a product is consumed at a rate of 0.25 units per day and the standard reorder time period is 4 days, the consumption quantity would be 1 unit. This field is used in inventory management to help determine reorder points and quantities needed to maintain adequate stock levels during the replenishment cycle.
Label: Consumption quantity
Sortable: No
Parameters:
- facilityUrl (
FacilityUrlLocation) Location
Example Query:
{
product(productUrl: "example-url") {
consumptionQuantity(
facilityUrl: "example-value"
)
}
}consumptionVelocity
consumptionVelocityThe average daily rate at which a product is consumed or used, calculated by dividing the total quantity consumed by the number of days in the calculation period. This metric is primarily used in reorder point calculations to determine how much inventory is needed. For products that are components in assembled items, consumption velocity includes both direct sales and indirect usage as components in other products. The calculation period can be customized based on reorder guidelines or defaults to a standard time period.
Label: Consumption
velocity
Sortable: No
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
facilityUrl (
FacilityUrlLocation, ❌ disabled) Location
Example Query:
{
product(productUrl: "example-url") {
consumptionVelocity(
facilityUrlList: ["example-value"]
facilityUrl: "example-value"
)
}
}countSales
countSalesThe total number of sales transactions for the product within a specified date range. This field counts individual sales orders or invoices that include the product, regardless of the quantity sold in each transaction. For example, if a product was sold in three separate orders during a time period, countSales would be 3, even if different quantities were purchased in each order. This metric is useful for understanding sales frequency and customer purchase patterns, and can be filtered by facility location to track sales activity across different warehouses or stores.
Label: Count sales
Sortable: No
Parameters:
-
dateRange (
DateRange) Dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
countSales(
dateRange: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}countSalesChange
countSalesChangeThe percentage change in the number of sales transactions for a product between two time periods. This metric tracks how the count of individual sales has increased or decreased, regardless of the quantity or dollar amount sold in each transaction. For example, a value of 100.0% indicates the number of sales doubled between the compared periods, while 0.0% indicates no change in the transaction count. This field accepts before and after time period parameters to specify which periods to compare, and can optionally be filtered by facility location.
Label: Count sales change
Sortable: No
Parameters:
-
before (
DateRange) Baseline dates -
after (
DateRange) Comparison dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
countSalesChange(
before: { begin: "2024-01-01", end: "2024-12-31" }
after: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}daysUntilReorder
daysUntilReorderThe calculated number of days until a product needs to be reordered at a specific facility. This field is facility-specific and can be queried with or without a facility parameter. A positive value indicates how many days remain before reordering is needed, while a negative value indicates the product is already past its reorder point. This helps businesses plan inventory purchases and avoid stockouts by showing the urgency of reordering each product at each location.
Label: Days until reorder
Sortable: No
Parameters:
- facilityUrl (
FacilityUrlLocation) Location
Example Query:
{
product(productUrl: "example-url") {
daysUntilReorder(
facilityUrl: "example-value"
)
}
}demandPerDay
demandPerDayThe average daily demand for a product, calculated over a specified date range and optionally filtered by facility. This metric measures how much of the product is needed per day based on actual consumption and sales activity during the time period. It can be calculated across all facilities or limited to specific warehouses or fulfillment centers. The field supports date range parameters to analyze demand over custom time windows, such as the last 5 days or other periods relevant to reorder point calculations and inventory planning.
Label: Demand per day
Sortable: No
Status: ❌ Disabled
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
dateRange (
DateRange) Dates
Example Query:
{
product(productUrl: "example-url") {
demandPerDay(
facilityUrlList: ["example-value"]
dateRange: { begin: "2024-01-01", end: "2024-12-31" }
)
}
}filter
filterLabel: Filter
Sortable: No
Status: ❌ Disabled
Parameters:
- filter (
ProductFilter) Filter
Example Query:
{
product(productUrl: "example-url") {
filter(
filter: "example-value"
)
}
}grossSales
grossSalesThe total revenue generated from sales of this product for a specified date range and optional facility location. This field represents the gross sales amount before deducting costs, and can be filtered by time period and specific facilities to analyze product performance across different locations and timeframes.
Label: Gross sales
Sortable: No
Parameters:
-
dateRange (
DateRange) Dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
grossSales(
dateRange: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}grossSalesChange
grossSalesChangeThe percentage change in gross sales revenue for a product between two time periods. This metric compares the total sales revenue (before any deductions) from a "before" period to an "after" period, allowing users to track sales performance trends over time. The field accepts time period parameters to define the comparison windows (such as specific days or date ranges) and can be filtered by facility to analyze location-specific sales trends. Values are expressed as percentages, where positive values indicate sales growth and negative values indicate sales decline.
Label: Gross sales change
Sortable: No
Parameters:
-
before (
DateRange) Baseline dates -
after (
DateRange) Comparison dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
grossSalesChange(
before: { begin: "2024-01-01", end: "2024-12-31" }
after: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}inventoryVarianceValuation
inventoryVarianceValuationThe total dollar value of inventory variances for this product within a specified date range. This field calculates the monetary impact of physical inventory count discrepancies by multiplying the quantity variance (difference between physical count and system quantity) by the product's unit cost. For example, if physical inventory counts reveal a shortage of 5 units at $10 each, the inventory variance valuation would be $50. This helps businesses quantify the financial impact of inventory shrinkage, counting errors, or other discrepancies discovered during physical inventory audits.
Label: Inventory variance valuation
Sortable: No
Status: ❌ Disabled
Parameters:
- dateRange (
DateRange) Dates
Example Query:
{
product(productUrl: "example-url") {
inventoryVarianceValuation(
dateRange: { begin: "2024-01-01", end: "2024-12-31" }
)
}
}marginSales
marginSalesThe profit margin percentage for sales of this product over a specified date range. This metric represents the profitability of the product by comparing the difference between gross sales revenue and cost of goods sold, expressed as a percentage. The value can be negative when the cost of goods sold exceeds the gross sales revenue, indicating the product was sold at a loss during that period.
Label: Margin sales
Sortable: No
Parameters:
-
dateRange (
DateRange) Dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
marginSales(
dateRange: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}marginSalesChange
marginSalesChangeThe percentage change in margin sales for a product between two specified time periods. This field compares the profit margin from sales in a "before" period against an "after" period, showing whether the product's profitability has increased or decreased over time. The field accepts time period parameters to define the comparison windows and can be filtered by specific facilities. Values are returned as percentages, such as "5.2%" for a slight increase or "-2.0%" for a decrease in margin sales.
Label: Margin sales change
Sortable: No
Parameters:
-
before (
DateRange) Baseline dates -
after (
DateRange) Comparison dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
marginSalesChange(
before: { begin: "2024-01-01", end: "2024-12-31" }
after: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}processingDays
processingDaysThe number of days required for internal processing when reordering this product. This represents the time needed to handle, inspect, receive, or otherwise prepare the product after it arrives from the supplier but before it becomes available for use or sale. This processing time is combined with supplier lead time to calculate the total lead time for inventory planning and reorder point calculations. The field can be specified at the facility level to account for different processing times at different locations.
Label: Processing days
Sortable: No
Parameters:
- facilityUrl (
FacilityUrlLocation) Location
Example Query:
{
product(productUrl: "example-url") {
processingDays(
facilityUrl: "example-value"
)
}
}reorderDaysOfInventory
reorderDaysOfInventoryThe maximum number of days of inventory to maintain when calculating reorder points for a product. This value determines how much buffer stock to keep on hand beyond the lead time requirements. The field can be queried globally for the product or specified per facility, allowing different inventory day targets for the same product across multiple locations. When not explicitly set, the system uses a default value to ensure adequate stock coverage.
Label: Reorder days of inventory
Sortable: No
Parameters:
- facilityUrl (
FacilityUrlLocation) Location
Example Query:
{
product(productUrl: "example-url") {
reorderDaysOfInventory(
facilityUrl: "example-value"
)
}
}reorderDemandPerDay
reorderDemandPerDayThe average daily demand for this product calculated over a configured time period, used for reorder point calculations. This metric includes both direct sales demand from customer orders and indirect demand from orders of finished goods that include this product as a component in their bill of materials. The calculation can be filtered to specific facilities and uses the default reorder calculation time period set in preferences. For example, if a component is sold directly at 10 units per day and is also used in a finished product that sells 5 units per day with 2 components needed per finished product, the total demand per day would be 20 units (10 direct + 10 indirect).
Label: Reorder demand per day
Sortable: No
Status: ❌ Disabled
Parameters:
- facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
reorderDemandPerDay(
facilityUrlList: ["example-value"]
)
}
}reorderPoint
reorderPointThe inventory level at which a product should be reordered to avoid stockouts. When stock falls to or below this point, it triggers the need to create a purchase order or replenishment action. This value can be manually set or automatically calculated based on sales velocity, lead time, and safety stock requirements. The reorder point ensures that new inventory arrives before current stock is depleted, accounting for the time needed to receive goods from suppliers. Different reorder points can be maintained for different warehouse locations.
Label: Reorder point
Sortable: No
Parameters:
- facilityUrl (
FacilityUrlLocation) Location
Example Query:
{
product(productUrl: "example-url") {
reorderPoint(
facilityUrl: "example-value"
)
}
}reorderPointCalculated
reorderPointCalculatedThe system-calculated reorder point for a product at one or more facilities, determined by analyzing consumption velocity and lead time. This calculation helps determine when to reorder inventory to avoid stockouts. The field can be queried for specific facilities or across all facilities, and the calculation considers historical demand patterns excluding future sales and sales from the current day. The calculated value represents the inventory level at which a reorder should be triggered, based on how quickly the product is consumed and how long it takes to replenish.
Label: Reorder point calculated
Sortable: No
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
facilityUrl (
FacilityUrlLocation, ❌ disabled) Location
Example Query:
{
product(productUrl: "example-url") {
reorderPointCalculated(
facilityUrlList: ["example-value"]
facilityUrl: "example-value"
)
}
}reorderPointMax
reorderPointMaxThe maximum reorder point threshold manually set for a product at a specific facility or across facilities. This represents the upper limit of inventory level at which a reorder should be triggered, allowing businesses to override the system-calculated maximum reorder point with their own preferred threshold. When left unset, the system uses the calculated maximum reorder point instead. This field is typically used in conjunction with the standard reorder point to define a range for inventory replenishment decisions, helping to manage stock levels based on business-specific needs, seasonal demand patterns, or other factors not captured by automated calculations.
Label: Reorder point max
Sortable: No
Parameters:
- facilityUrl (
FacilityUrlLocation) Location
Example Query:
{
product(productUrl: "example-url") {
reorderPointMax(
facilityUrl: "example-value"
)
}
}reorderPointMaxCalc
reorderPointMaxCalcThe calculated maximum reorder point for a product at a facility. This represents the upper threshold for inventory levels that triggers reordering, calculated based on factors such as sales velocity, consumption velocity, and lead time. Unlike the standard reorder point which indicates when to reorder, the maximum reorder point helps determine the target quantity to reorder up to, ensuring sufficient stock during peak demand or longer lead times. This field can be queried for specific facilities or across all facilities.
Label: Reorder point max calc
Sortable: Yes
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
facilityUrl (
FacilityUrlLocation, ❌ disabled) Location
Example Query:
{
product(productUrl: "example-url") {
reorderPointMaxCalc(
facilityUrlList: ["example-value"]
facilityUrl: "example-value"
)
}
}reorderQuantity
reorderQuantityThe standard order quantity used when replenishing this product. This defines the lot size or batch quantity in which the product should be purchased or manufactured when inventory needs to be restocked. For example, if a product has a reorder quantity of 100, the system will suggest ordering in multiples of 100 units. This value can be set at the product level as a default or overridden for specific facility locations. The reorder quantity helps ensure orders align with supplier minimums, case pack sizes, or other purchasing constraints, and is used in conjunction with reorder point calculations to determine the quantity to order when inventory falls below the reorder level.
Label: Reorder in qty of
Sortable: No
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
facilityUrl (
FacilityUrlLocation, ❌ disabled) Location
Example Query:
{
product(productUrl: "example-url") {
reorderQuantity(
facilityUrlList: ["example-value"]
facilityUrl: "example-value"
)
}
}reorderQuantityToOrder
reorderQuantityToOrderThe suggested quantity to order when the product reaches its reorder point at a specific facility or across multiple facilities. This calculated value helps determine how much inventory should be purchased to replenish stock when it falls below the reorder threshold. The field can be filtered by facility location and may return null for products with no sales velocity or reorder point configured. When aggregated across multiple products, it represents the total quantity recommended for ordering.
Label: Reorder quantity to order
Sortable: Yes
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
facilityUrl (
FacilityUrlLocation, ❌ disabled) Location -
reservedSublocationFacilityUrlList (
List|FacilityUrlSublocation) Excluded sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
reorderQuantityToOrder(
facilityUrlList: ["example-value"]
facilityUrl: "example-value"
reservedSublocationFacilityUrlList: ["example-value"]
)
}
}reorderQuantityToOrderEditable
reorderQuantityToOrderEditableAn editable version of the suggested reorder quantity that allows users to modify the calculated quantity to order when inventory reaches the reorder point. While the system calculates a recommended quantity to order based on reorder rules, this field permits manual adjustments to that recommendation before creating purchase orders or replenishment requests.
Label: Reorder quantity to order
GraphQL Type: quantity
Sortable: No
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
facilityUrl (
FacilityUrlLocation, ❌ disabled) Location -
reservedSublocationFacilityUrlList (
List|FacilityUrlSublocation) Excluded sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
reorderQuantityToOrderEditable(
facilityUrlList: ["example-value"]
facilityUrl: "example-value"
reservedSublocationFacilityUrlList: ["example-value"]
)
}
}reorderVariance
reorderVarianceThe difference between a product's available inventory and its reorder point for a specific facility or set of facilities. A negative value indicates the product's inventory has fallen below the reorder point and needs replenishment, while a positive value shows inventory is above the reorder point. This field helps identify products that require purchasing or production to maintain adequate stock levels.
Label: Reorder variance
Sortable: Yes
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
facilityUrl (
FacilityUrlLocation, ❌ disabled) Location -
reservedSublocationFacilityUrlList (
List|FacilityUrlSublocation) Excluded sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
reorderVariance(
facilityUrlList: ["example-value"]
facilityUrl: "example-value"
reservedSublocationFacilityUrlList: ["example-value"]
)
}
}replenishmentPointCalculated
replenishmentPointCalculatedThe calculated inventory level at which replenishment should be triggered for a product at specified facilities. This is distinct from the reorder point, as replenishment typically refers to internal stock transfers or production to refill inventory between locations, while reorder points trigger external purchase orders. The field accepts facility filtering parameters to calculate the replenishment point for specific warehouse or location combinations, and works in conjunction with replenishmentPointMaxCalc to establish minimum and maximum inventory thresholds for replenishment decisions.
Label: Replenishment point calculated
Sortable: Yes
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
facilityUrl (
FacilityUrlLocation, ❌ disabled) Location
Example Query:
{
product(productUrl: "example-url") {
replenishmentPointCalculated(
facilityUrlList: ["example-value"]
facilityUrl: "example-value"
)
}
}replenishmentPointMaxCalc
replenishmentPointMaxCalcThe calculated maximum replenishment point for a product at specified facilities, representing the upper threshold inventory level that triggers replenishment ordering. This is the calculated counterpart to the manually-set replenishment point max. When stock falls to or below the replenishment point, an order should be placed to bring inventory back up to this maximum level. The field can be filtered by facility using facilityUrl or facilityUrlList parameters to calculate the replenishment point max for specific locations or groups of locations, and is used in conjunction with replenishment variance and replenishment quantity to order to manage inventory replenishment decisions.
Label: Replenishment point max calc
Sortable: Yes
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
facilityUrl (
FacilityUrlLocation, ❌ disabled) Location
Example Query:
{
product(productUrl: "example-url") {
replenishmentPointMaxCalc(
facilityUrlList: ["example-value"]
facilityUrl: "example-value"
)
}
}replenishmentQuantityToOrder
replenishmentQuantityToOrderThe calculated quantity of a product that should be ordered to replenish inventory from the current available stock level up to the maximum replenishment point. This field is facility-specific and can be filtered by one or more facilities. The quantity represents how many units need to be ordered to bring stock back to optimal replenishment levels, based on factors like sales velocity, replenishment points, and current available inventory. When the replenishment variance is zero or positive (indicating adequate stock), this field returns null, as no order is needed.
Label: Replenishment quantity to order
Sortable: Yes
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
facilityUrl (
FacilityUrlLocation, ❌ disabled) Location -
reservedSublocationFacilityUrlList (
List|FacilityUrlSublocation) Excluded sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
replenishmentQuantityToOrder(
facilityUrlList: ["example-value"]
facilityUrl: "example-value"
reservedSublocationFacilityUrlList: ["example-value"]
)
}
}replenishmentQuantityToOrderEditable
replenishmentQuantityToOrderEditableAn editable version of the replenishment quantity to order field that allows users to manually adjust the calculated quantity needed to bring inventory up to the maximum replenishment point. This field appears alongside the read-only replenishment quantity to order field and is displayed with the label "Replenishment quantity to order" in product views. The editable capability is controlled by the uiReplenish configuration parameter and is available when users need to override system-calculated replenishment recommendations for specific facilities or locations.
Label: Replenishment quantity to order
GraphQL Type: quantity
Sortable: No
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
facilityUrl (
FacilityUrlLocation, ❌ disabled) Location -
reservedSublocationFacilityUrlList (
List|FacilityUrlSublocation) Excluded sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
replenishmentQuantityToOrderEditable(
facilityUrlList: ["example-value"]
facilityUrl: "example-value"
reservedSublocationFacilityUrlList: ["example-value"]
)
}
}replenishmentVariance
replenishmentVarianceThe difference between the current available inventory and the replenishment point for a product at a facility or set of facilities. A negative value indicates that inventory has fallen below the replenishment point, signaling that the product needs to be restocked. Users can filter products by replenishment variance to identify items that require replenishment, such as finding all products with variance less than zero to prioritize restocking efforts.
Label: Replenishment variance
Sortable: Yes
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
facilityUrl (
FacilityUrlLocation, ❌ disabled) Location -
reservedSublocationFacilityUrlList (
List|FacilityUrlSublocation) Excluded sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
replenishmentVariance(
facilityUrlList: ["example-value"]
facilityUrl: "example-value"
reservedSublocationFacilityUrlList: ["example-value"]
)
}
}safetyStockDays
safetyStockDaysThe number of days of buffer inventory to maintain beyond lead time requirements to protect against stockouts due to variability in supply or demand. This safety stock period is added to the total lead time when calculating reorder points and replenishment quantities. For example, if a product has a 7-day total lead time and 4 safety stock days, the system will plan to maintain enough inventory to cover 11 days of expected consumption. This field can be specified at the facility level to allow different safety stock policies across locations.
Label: Safety stock days
Sortable: No
Parameters:
- facilityUrl (
FacilityUrlLocation) Location
Example Query:
{
product(productUrl: "example-url") {
safetyStockDays(
facilityUrl: "example-value"
)
}
}salesVelocity
salesVelocityThe average number of units sold per day for a product, calculated over a specified time period and optionally filtered by specific facility locations. This metric is used to determine inventory reorder points and stockout predictions. Users can specify a date range to calculate sales velocity, such as the last 14, 30, or 60 days. When used with the sales velocity reorder calculation method, this field helps automatically calculate when to reorder products based on actual sales patterns. The field returns numeric values like 0.67 indicating units sold per day, with 0.00 indicating no sales during the period.
Label: Sales
velocity
Sortable: Yes
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
dateRange (
DateRange) Dates
Example Query:
{
product(productUrl: "example-url") {
salesVelocity(
facilityUrlList: ["example-value"]
dateRange: { begin: "2024-01-01", end: "2024-12-31" }
)
}
}stdReorderCalculationMethodTimePeriod
stdReorderCalculationMethodTimePeriodThe number of days used as the time period when calculating reorder points using demand or sales velocity methods. This field works in conjunction with the reorder calculation method to determine how far back in time the system looks when analyzing consumption patterns. For example, a value of 10 means the reorder point calculation will analyze velocity over the past 10 days, while a value of 40 would use a 40-day lookback period. This allows businesses to adjust the sensitivity of their reorder calculations based on whether they want to respond to recent trends or prefer longer-term averages. The field can be set at the product level or fall back to a system-wide default value configured in preferences.
Label: Calculation method time period (days)
GraphQL Type: Number
Sortable: No
Parameters:
-
defaultValue (
DefaultValue) - Default:excludeDefault valueOptions:
exclude- Show blank if no value is specifiedinclude- Show default value if no value is specified
Example Query:
{
product(productUrl: "example-url") {
stdReorderCalculationMethodTimePeriod(
defaultValue: exclude
)
}
}stock
stockLabel: Stock
Sortable: ⚠️ Yes (with limitations - see parameter options below)
Parameters:
-
aggregate (
ProductStockAggregate, ❌ disabled) - Default:sumCombine quantities usingOptions:
sum- Summin- Minimummax- MaximumminAbs- Minimum of absolute valuesmaxAbs- Maximum of absolute values
-
count (
ProductStockCount) - Default:totalUnitsCount quantity byOptions:
openQuantity- Open stockcaseQuantity- Case stocktotalUnits- Units including open and case stockcaseUnits- Units including case stock onlytotalCaseEquivalents- Case equivalents including open and case stockopenCaseEquivalents- Case equivalents including open stock only
-
facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s) -
includeBom (
ProductStockIncludeBom) - Default:excludeBill of materials (BoM)Options:
exclude- Exclude BoMinclude- Include BoM ⚠️ not sortable
-
includeSupplier (
ProductStockIncludeSupplier) - Default:excludeSupplierOptions:
exclude- Exclude supplier quantityincludePrioritized- Include prioritized supplier quantityinclude- Include supplier quantity ⚠️ not sortable
-
lotIdSearch (
List|LotIdSearchString) Lot ID -
stockType (
ProductStockType) TypeOptions:
available- AvailableonHand- On handonOrder- On orderremaining- Remaining after reservationsreserved- ReservedreservedBackordered- Reserved backorderedreservedOnHand- Reserved on hand
Example Query:
{
product(productUrl: "example-url") {
stock(
aggregate: sum
count: totalUnits
facilityUrlList: ["example-value"]
includeBom: exclude
includeSupplier: exclude
lotIdSearch: ["example-value"]
stockType: available
)
}
}stockAvailable
stockAvailableThe quantity of product units available to promise to customers. This represents inventory that can be committed to new orders, calculated as on-hand stock minus existing reservations. The field supports filtering by specific facilities or warehouses, and can optionally include additional available quantities from bill of materials components or supplier stock when calculating what can be promised to fulfill orders.
Label: Available to promise
Sortable: ⚠️ Yes (with limitations - see parameter options below)
Parameters:
-
aggregate (
ProductStockAggregate, ❌ disabled) - Default:sumCombine quantities usingOptions:
sum- Summin- Minimummax- MaximumminAbs- Minimum of absolute valuesmaxAbs- Maximum of absolute values
-
count (
ProductStockCount) - Default:totalUnitsCount quantity byOptions:
openQuantity- Open stockcaseQuantity- Case stocktotalUnits- Units including open and case stockcaseUnits- Units including case stock onlytotalCaseEquivalents- Case equivalents including open and case stockopenCaseEquivalents- Case equivalents including open stock only
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
includeBom (
ProductStockIncludeBom) - Default:excludeBill of materials (BoM)Options:
exclude- Exclude BoMinclude- Include BoM ⚠️ not sortable
-
includeSupplier (
ProductStockIncludeSupplier) - Default:excludeSupplierOptions:
exclude- Exclude supplier quantityincludePrioritized- Include prioritized supplier quantityinclude- Include supplier quantity ⚠️ not sortable
-
lotIdSearch (
List|LotIdSearchString) Lot ID -
reservedSublocationFacilityUrlList (
List|FacilityUrlSublocation) Excluded sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
stockAvailable(
aggregate: sum
count: totalUnits
facilityUrlList: ["example-value"]
includeBom: exclude
includeSupplier: exclude
lotIdSearch: ["example-value"]
reservedSublocationFacilityUrlList: ["example-value"]
)
}
}stockBomQuantity
stockBomQuantityThe quantity of stock that is available through component products in a Bill of Materials (BOM). This field calculates how many units of the product can be assembled from the on-hand inventory of its component parts. For example, if a finished product requires 2 units of a component and there are 10 components in stock, the stockBomQuantity would show how many finished products could be made. The field can be filtered by facility location and can count in different units such as total units or case equivalents.
Label: BOM quantity
Sortable: No
Parameters:
-
count (
ProductStockCountUnitsOrCases) - Default:totalUnitsCount quantity byOptions:
totalUnits- Units including open and case stocktotalCaseEquivalents- Case equivalents including open and case stock
-
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
stockBomQuantity(
count: totalUnits
facilityUrlList: ["example-value"]
)
}
}stockDistinctSublocations
stockDistinctSublocationsA list of the unique sublocations within a facility where this product currently has stock. This field can be filtered by facility location and lot ID to show only sublocations relevant to specific inventory parameters. Users can view this field to identify all the distinct physical storage locations within a warehouse or facility where units of the product are stored.
Label: Distinct sublocations
Sortable: No
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
lotIdSearch (
List|LotIdSearchString) Lot ID
Example Query:
{
product(productUrl: "example-url") {
stockDistinctSublocations(
facilityUrlList: ["example-value"]
lotIdSearch: ["example-value"]
)
}
}stockOnHand
stockOnHandThe current inventory quantity physically present at one or more facilities for a product. This field represents the actual stock that exists in warehouse locations, excluding items that are on order but not yet received. Users can view stock on hand across different count types (open quantity, case quantity, or total units) and filter by specific facilities, lot numbers, or include bill of materials components. The value can be positive (indicating available inventory), zero, or negative (indicating oversold or allocated inventory). This is a fundamental inventory metric used to understand what physical product is currently in stock and can be compared against reserved quantities to determine what is truly available for sale or fulfillment.
Label: Quantity on hand
Sortable: ⚠️ Yes (with limitations - see parameter options below)
Parameters:
-
aggregate (
ProductStockAggregate, ❌ disabled) - Default:sumCombine quantities usingOptions:
sum- Summin- Minimummax- MaximumminAbs- Minimum of absolute valuesmaxAbs- Maximum of absolute values
-
count (
ProductStockCount) - Default:totalUnitsCount quantity byOptions:
openQuantity- Open stockcaseQuantity- Case stocktotalUnits- Units including open and case stockcaseUnits- Units including case stock onlytotalCaseEquivalents- Case equivalents including open and case stockopenCaseEquivalents- Case equivalents including open stock only
-
facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s) -
includeBom (
ProductStockIncludeBom) - Default:excludeBill of materials (BoM)Options:
exclude- Exclude BoMinclude- Include BoM ⚠️ not sortable
-
includeSupplier (
ProductStockIncludeSupplier) - Default:excludeSupplierOptions:
exclude- Exclude supplier quantityincludePrioritized- Include prioritized supplier quantityinclude- Include supplier quantity ⚠️ not sortable
-
lotIdSearch (
List|LotIdSearchString) Lot ID -
reservedSublocationFacilityUrlList (
List|FacilityUrlSublocation) Excluded sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
stockOnHand(
aggregate: sum
count: totalUnits
facilityUrlList: ["example-value"]
includeBom: exclude
includeSupplier: exclude
lotIdSearch: ["example-value"]
reservedSublocationFacilityUrlList: ["example-value"]
)
}
}stockOnOrder
stockOnOrderThe quantity of product currently on order from suppliers through pending purchase orders. This field displays how much inventory has been ordered but not yet received, helping businesses track incoming stock and plan for future availability. The field accepts parameters to specify different counting methods such as open quantity, case quantity, case units, or total units, allowing users to view on-order stock in different unit measurements depending on their needs.
Label: On order
Sortable: ⚠️ Yes (with limitations - see parameter options below)
Parameters:
-
aggregate (
ProductStockAggregate, ❌ disabled) - Default:sumCombine quantities usingOptions:
sum- Summin- Minimummax- MaximumminAbs- Minimum of absolute valuesmaxAbs- Maximum of absolute values
-
count (
ProductStockCount) - Default:totalUnitsCount quantity byOptions:
openQuantity- Open stockcaseQuantity- Case stocktotalUnits- Units including open and case stockcaseUnits- Units including case stock onlytotalCaseEquivalents- Case equivalents including open and case stockopenCaseEquivalents- Case equivalents including open stock only
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
includeBom (
ProductStockIncludeBom) - Default:excludeBill of materials (BoM)Options:
exclude- Exclude BoMinclude- Include BoM ⚠️ not sortable
-
lotIdSearch (
List|LotIdSearchString) Lot ID
Example Query:
{
product(productUrl: "example-url") {
stockOnOrder(
aggregate: sum
count: totalUnits
facilityUrlList: ["example-value"]
includeBom: exclude
lotIdSearch: ["example-value"]
)
}
}stockoutDays
stockoutDaysLabel: Stockout
Sortable: No
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
facilityUrl (
FacilityUrlLocation, ❌ disabled) Location -
includeBom (
ProductStockIncludeBom) - Default:excludeBill of materials (BoM)Options:
exclude- Exclude BoMinclude- Include BoM ⚠️ not sortable
-
stockType (
ProductStockTypeForStockout) - Default:remainingStock typeOptions:
available- AvailableonHand- On handremaining- Remaining after reservations
-
reservedSublocationFacilityUrlList (
List|FacilityUrlSublocation) Excluded sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
stockoutDays(
facilityUrlList: ["example-value"]
facilityUrl: "example-value"
includeBom: exclude
stockType: remaining
reservedSublocationFacilityUrlList: ["example-value"]
)
}
}stockRemaining
stockRemainingThe quantity of stock remaining for a product, calculated as the difference between stock on order and what is currently reserved or allocated. This value can be negative when reservations exceed available inventory, indicating backordered items. The field supports different count types including open quantity, case quantity, case units, and total units, allowing businesses to track remaining stock across various measurement units.
Label: Remaining after reservations
Sortable: ⚠️ Yes (with limitations - see parameter options below)
Parameters:
-
aggregate (
ProductStockAggregate, ❌ disabled) - Default:sumCombine quantities usingOptions:
sum- Summin- Minimummax- MaximumminAbs- Minimum of absolute valuesmaxAbs- Maximum of absolute values
-
count (
ProductStockCount) - Default:totalUnitsCount quantity byOptions:
openQuantity- Open stockcaseQuantity- Case stocktotalUnits- Units including open and case stockcaseUnits- Units including case stock onlytotalCaseEquivalents- Case equivalents including open and case stockopenCaseEquivalents- Case equivalents including open stock only
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
includeBom (
ProductStockIncludeBom) - Default:excludeBill of materials (BoM)Options:
exclude- Exclude BoMinclude- Include BoM ⚠️ not sortable
-
includeSupplier (
ProductStockIncludeSupplier) - Default:excludeSupplierOptions:
exclude- Exclude supplier quantityincludePrioritized- Include prioritized supplier quantityinclude- Include supplier quantity ⚠️ not sortable
-
lotIdSearch (
List|LotIdSearchString) Lot ID
Example Query:
{
product(productUrl: "example-url") {
stockRemaining(
aggregate: sum
count: totalUnits
facilityUrlList: ["example-value"]
includeBom: exclude
includeSupplier: exclude
lotIdSearch: ["example-value"]
)
}
}stockReserved
stockReservedLabel: Reservations
Sortable: ⚠️ Yes (with limitations - see parameter options below)
Parameters:
-
aggregate (
ProductStockAggregate, ❌ disabled) - Default:sumCombine quantities usingOptions:
sum- Summin- Minimummax- MaximumminAbs- Minimum of absolute valuesmaxAbs- Maximum of absolute values
-
count (
ProductStockCount) - Default:totalUnitsCount quantity byOptions:
openQuantity- Open stockcaseQuantity- Case stocktotalUnits- Units including open and case stockcaseUnits- Units including case stock onlytotalCaseEquivalents- Case equivalents including open and case stockopenCaseEquivalents- Case equivalents including open stock only
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
includeBom (
ProductStockIncludeBom) - Default:excludeBill of materials (BoM)Options:
exclude- Exclude BoMinclude- Include BoM ⚠️ not sortable
-
lotIdSearch (
List|LotIdSearchString) Lot ID -
reservationType (
ProductStockReservationType) - Default:backOrderedReservation typeOptions:
all- Backordered + on handbackOrdered- BackorderedonHand- On hand
Example Query:
{
product(productUrl: "example-url") {
stockReserved(
aggregate: sum
count: totalUnits
facilityUrlList: ["example-value"]
includeBom: exclude
lotIdSearch: ["example-value"]
reservationType: backOrdered
)
}
}stockSublocations
stockSublocationsLabel: Sublocations
Sortable: No
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
lotIdSearch (
List|LotIdSearchString) Lot ID
Example Query:
{
product(productUrl: "example-url") {
stockSublocations(
facilityUrlList: ["example-value"]
lotIdSearch: ["example-value"]
)
}
}stockSublocationSummary
stockSublocationSummaryLabel: Sublocation summary
Sortable: No
Parameters:
-
facilityUrlList (
List|FacilityUrlLocation) Location(s) -
lotIdSearch (
List|LotIdSearchString) Lot ID
Example Query:
{
product(productUrl: "example-url") {
stockSublocationSummary(
facilityUrlList: ["example-value"]
lotIdSearch: ["example-value"]
)
}
}storeBaseQuantityForStore
storeBaseQuantityForStoreLabel: Base quantity for store
Sortable: No
Possible Values:
QTY_SRC_RMNG- Remaining after reservations (include BOM)QTY_SRC_AVAIL- Available to promise (include BOM)QTY_SRC_QOH- Quantity on hand (include BOM)QTY_SRC_RMNG_NO_BOM- Remaining after reservations (exclude BOM)QTY_SRC_AVAIL_NO_BOM- Available to promise (exclude BOM)QTY_SRC_QOH_NO_BOM- Quantity on hand (exclude BOM)QTY_SRC_SET_MIN- Set to minimum quantityQTY_SRC_SET_MAX- Set to maximum quantity
Parameters:
-
productStoreUrl (
ProductStoreUrlString) Store -
productStoreShowDefault (
ProductStoreShowDefault) - Default:emptyIf value for store is unsetOptions:
default- Show default valueempty- Show no value
Example Query:
{
product(productUrl: "example-url") {
storeBaseQuantityForStore(
productStoreUrl: "example-value"
productStoreShowDefault: empty
)
}
}storeIncludeSupplierQuantityForStore
storeIncludeSupplierQuantityForStoreLabel: Include supplier quantity for store
Sortable: No
Possible Values:
QTY_SUPPL_NONE- No suppliersQTY_SUPPL_10_MAIN- Supplier 1QTY_SUPPL_90_ALT- Supplier 2QTY_SUPPL_91_ALT- Supplier 3QTY_SUPPL_ALL- All suppliersQTY_SUPPL_PRIORITY- Prioritized supplier
Parameters:
-
productStoreUrl (
ProductStoreUrlString) Store -
productStoreShowDefault (
ProductStoreShowDefault) - Default:emptyIf value for store is unsetOptions:
default- Show default valueempty- Show no value
Example Query:
{
product(productUrl: "example-url") {
storeIncludeSupplierQuantityForStore(
productStoreUrl: "example-value"
productStoreShowDefault: empty
)
}
}storeLeadDaysForStore
storeLeadDaysForStoreLabel: Lead days for store
Sortable: No
Parameters:
- productStoreUrl (
ProductStoreUrlString) Store
Example Query:
{
product(productUrl: "example-url") {
storeLeadDaysForStore(
productStoreUrl: "example-value"
)
}
}storeMaximumQuantityForStore
storeMaximumQuantityForStoreLabel: Maximum quantity for store
Sortable: No
Parameters:
-
productStoreUrl (
ProductStoreUrlString) Store -
productStoreShowDefault (
ProductStoreShowDefault) - Default:emptyIf value for store is unsetOptions:
default- Show default valueempty- Show no value
Example Query:
{
product(productUrl: "example-url") {
storeMaximumQuantityForStore(
productStoreUrl: "example-value"
productStoreShowDefault: empty
)
}
}storeMinimumQuantityForStore
storeMinimumQuantityForStoreLabel: Minimum quantity for store
Sortable: No
Parameters:
-
productStoreUrl (
ProductStoreUrlString) Store -
productStoreShowDefault (
ProductStoreShowDefault) - Default:emptyIf value for store is unsetOptions:
default- Show default valueempty- Show no value
Example Query:
{
product(productUrl: "example-url") {
storeMinimumQuantityForStore(
productStoreUrl: "example-value"
productStoreShowDefault: empty
)
}
}storeQuantityForStore
storeQuantityForStoreLabel: Quantity for store
Sortable: No
Parameters:
- productStoreUrl (
ProductStoreUrlString) Store
Example Query:
{
product(productUrl: "example-url") {
storeQuantityForStore(
productStoreUrl: "example-value"
)
}
}storeQuantityPercentageForStore
storeQuantityPercentageForStoreLabel: Quantity percentage for store
Sortable: No
Parameters:
-
productStoreUrl (
ProductStoreUrlString) Store -
productStoreShowDefault (
ProductStoreShowDefault) - Default:emptyIf value for store is unsetOptions:
default- Show default valueempty- Show no value
Example Query:
{
product(productUrl: "example-url") {
storeQuantityPercentageForStore(
productStoreUrl: "example-value"
productStoreShowDefault: empty
)
}
}storeSourceForStore
storeSourceForStoreLabel: Source for store
Sortable: No
Parameters:
- productStoreUrl (
ProductStoreUrlString) Store
Example Query:
{
product(productUrl: "example-url") {
storeSourceForStore(
productStoreUrl: "example-value"
)
}
}storeStockSourceForStore
storeStockSourceForStoreLabel: Stock source for store
Sortable: No
Possible Values:
##locationAll- All locations
Parameters:
-
productStoreUrl (
ProductStoreUrlString) Store -
productStoreShowDefault (
ProductStoreShowDefault) - Default:emptyIf value for store is unsetOptions:
default- Show default valueempty- Show no value
Example Query:
{
product(productUrl: "example-url") {
storeStockSourceForStore(
productStoreUrl: "example-value"
productStoreShowDefault: empty
)
}
}totalLeadTime
totalLeadTimeLabel: Total lead time
Sortable: No
Parameters:
- facilityUrl (
FacilityUrlLocation) Location
Example Query:
{
product(productUrl: "example-url") {
totalLeadTime(
facilityUrl: "example-value"
)
}
}totalReplenishmentLeadTime
totalReplenishmentLeadTimeLabel: Total replenishment lead time
Sortable: No
Parameters:
- facilityUrl (
FacilityUrlLocation) Location
Example Query:
{
product(productUrl: "example-url") {
totalReplenishmentLeadTime(
facilityUrl: "example-value"
)
}
}unitSales
unitSalesLabel: Unit sales
Sortable: No
Parameters:
-
dateRange (
DateRange) Dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
unitSales(
dateRange: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}unitSalesChange
unitSalesChangeLabel: Unit sales change
Sortable: No
Parameters:
-
before (
DateRange) Baseline dates -
after (
DateRange) Comparison dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
unitSalesChange(
before: { begin: "2024-01-01", end: "2024-12-31" }
after: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}unitSalesForSalesVelocity
unitSalesForSalesVelocityLabel: Total sales
Sortable: No
Parameters:
-
dateRange (
DateRange) Dates -
facilityUrlList (
List|FacilityUrlLocation) Location(s)
Example Query:
{
product(productUrl: "example-url") {
unitSalesForSalesVelocity(
dateRange: { begin: "2024-01-01", end: "2024-12-31" }
facilityUrlList: ["example-value"]
)
}
}unitsInStock
unitsInStockLabel: Units in stock
Sortable: No
Parameters:
- facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
unitsInStock(
facilityUrlList: ["example-value"]
)
}
}unitsInTransit
unitsInTransitLabel: Units in transit
Sortable: No
Parameters:
- facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
unitsInTransit(
facilityUrlList: ["example-value"]
)
}
}unitsPacked
unitsPackedLabel: Units packed
Sortable: No
Parameters:
- facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
unitsPacked(
facilityUrlList: ["example-value"]
)
}
}unitsTotal
unitsTotalLabel: Units total
Sortable: No
Parameters:
- facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
unitsTotal(
facilityUrlList: ["example-value"]
)
}
}unitsWorkInProgress
unitsWorkInProgressLabel: Units WIP (consuming)
Sortable: No
Parameters:
- facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
unitsWorkInProgress(
facilityUrlList: ["example-value"]
)
}
}unitsWorkInProgressProducing
unitsWorkInProgressProducingLabel: Units WIP (producing)
Sortable: Yes
Parameters:
- facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
unitsWorkInProgressProducing(
facilityUrlList: ["example-value"]
)
}
}usageGrowthyr
usageGrowthyrLabel: Usage growth %/yr
Sortable: No
Parameters:
- facilityUrl (
FacilityUrlLocation) Location
Example Query:
{
product(productUrl: "example-url") {
usageGrowthyr(
facilityUrl: "example-value"
)
}
}valuation
valuationLabel: Valuation
Sortable: Yes
Parameters:
-
facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s) -
lotIdSearch (
List|LotIdSearchString) Lot ID
Example Query:
{
product(productUrl: "example-url") {
valuation(
facilityUrlList: ["example-value"]
lotIdSearch: ["example-value"]
)
}
}valueInStock
valueInStockLabel: Value in stock
Sortable: No
Parameters:
- facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
valueInStock(
facilityUrlList: ["example-value"]
)
}
}valueInTransit
valueInTransitLabel: Value in transit
Sortable: No
Parameters:
- facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
valueInTransit(
facilityUrlList: ["example-value"]
)
}
}valuePacked
valuePackedLabel: Value packed
Sortable: No
Parameters:
- facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
valuePacked(
facilityUrlList: ["example-value"]
)
}
}valueTotal
valueTotalLabel: Value total
Sortable: No
Parameters:
- facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
valueTotal(
facilityUrlList: ["example-value"]
)
}
}valueWorkInProgress
valueWorkInProgressLabel: Value WIP (consuming)
Sortable: No
Parameters:
- facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
valueWorkInProgress(
facilityUrlList: ["example-value"]
)
}
}valueWorkInProgressProducing
valueWorkInProgressProducingLabel: Value WIP (producing)
Sortable: No
Parameters:
- facilityUrlList (
List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)
Example Query:
{
product(productUrl: "example-url") {
valueWorkInProgressProducing(
facilityUrlList: ["example-value"]
)
}
}Relations
connectionRelation
- Related Collection: connectionRelation
- Label: Integration
TODO: Add relation description
lastPurchaseShipment
- Related Collection: shipment
- Label: Last purchase shipment
TODO: Add relation description
recordCreatedUser
- Related Collection: userLogin
- Label: Record created user
TODO: Add relation description
recordLastUpdatedUser
- Related Collection: userLogin
- Label: Record last updated user
TODO: Add relation description
supplier1
- Related Collection: party
- Label: Supplier 1
- Typename: PartyUrlSupplierString
TODO: Add relation description
supplier2
- Related Collection: party
- Label: Supplier 2
- Typename: PartyUrlSupplierString
TODO: Add relation description
supplier3
- Related Collection: party
- Label: Supplier 3
- Typename: PartyUrlSupplierString
TODO: Add relation description
Filters
accountOverride
- Label: Has account override
- Type: List|String
- Enabled: Yes
- Options:
- Default accounts (##productAcctDefault)
- Has account override(s) (##productAcctOverride)
Filter Type: Predefined options
Get Current Options:
These options may vary by account configuration. To get the current list:
query {
dataSetMeta(purpose: "uiProduct") {
dataSets(name: "product") {
filters {
name
optionList {
value
label
}
}
}
}
}Usage Example:
query {
productViewConnection(
first: 10
accountOverride: ["##productAcctOverride", "##productAcctDefault"]
) {
edges {
node {
title
accountOverride
}
}
}
}caliber
- Label: Caliber
- Type: String
- Enabled: Yes
- Options:
- 2.5" / 64mm (##cal25in)
- 2" / 51mm (##cal2in)
- 3" / 76mm (##cal3in)
- 4" / 102mm (##cal4in)
- 5" / 127mm (##cal5in)
- 6" / 152mm (##cal6in)
- 7" / 178mm (##cal7in)
- 8" / 203mm (##cal8in)
- Large (##calLarge)
- Small (##calSmall)
Filter Type: Predefined options
Get Current Options:
These options may vary by account configuration. To get the current list:
query {
dataSetMeta(purpose: "uiProduct") {
dataSets(name: "product") {
filters {
name
optionList {
value
label
}
}
}
}
}Usage Example:
query {
productViewConnection(
first: 10
caliber: ["##calSmall", "##cal2in"]
) {
edges {
node {
title
caliber
}
}
}
}category
- Label: Category
- Type: List|String
- Enabled: Yes
Filter Type: Text value
This filter accepts freeform text values.
Usage Example:
query {
productViewConnection(
first: 10
category: "Electronics"
) {
edges {
node {
title
category
}
}
}
}choreographyTab
- Label: Choreography tab
- Type: List|String
- Enabled: No
- Options:
- Cakes (##cakes)
- Candles (##multishot)
- Comets (##comets)
- Fixture (##fixture)
- Flame (##flame)
- Ground (##ground)
- Light (##light)
- Macro (##macro)
- Mines (##mines)
- Non-choreographed (##nonChoreographed)
- Not an effect (##not_an_effect)
- Other (##fountains)
- Rack (##rack)
- Rocket (##rocket)
- Sfx (##sfx)
- Shells (##shells)
- Single shot (##singleShot)
Filter Type: Predefined options
Get Current Options:
These options may vary by account configuration. To get the current list:
query {
dataSetMeta(purpose: "uiProduct") {
dataSets(name: "product") {
filters {
name
optionList {
value
label
}
}
}
}
}Usage Example:
query {
productViewConnection(
first: 10
choreographyTab: ["##shells", "##comets"]
) {
edges {
node {
title
choreographyTab
}
}
}
}connectionRelationErrorDates
- Label: Latest error date
- Type: dateRangeInput
- Enabled: Yes
Filter Type: Date range
Input Structure:
{
begin: string // ISO date format: "2024-01-01"
end: string // ISO date format: "2024-12-31"
}Usage Example:
query {
productViewConnection(
first: 10
connectionRelationErrorDates: {
begin: "2024-01-01"
end: "2024-12-31"
}
) {
edges {
node {
title
connectionRelationErrorDates
}
}
}
}connectionRelationSyncStatuses
- Label: Sync status
- Type: List|String
- Enabled: Yes
- Options:
- Excluded from syncing (##crStatusSkipped)
- Has error (##crStatusError)
- Not synced (##crStatusNotPushed)
- Partially synced (##crStatusPartiallySynced)
- Synced (##crStatusPushed)
Filter Type: Predefined options
Get Current Options:
These options may vary by account configuration. To get the current list:
query {
dataSetMeta(purpose: "uiProduct") {
dataSets(name: "product") {
filters {
name
optionList {
value
label
}
}
}
}
}Usage Example:
query {
productViewConnection(
first: 10
connectionRelationSyncStatuses: ["##crStatusNotPushed", "##crStatusPushed"]
) {
edges {
node {
title
connectionRelationSyncStatuses
}
}
}
}hasBom
- Label: Has BOM
- Type: List|String
- Enabled: Yes
- Options:
- Does not have BOM (##productDoesNotHaveBom)
- Has BOM (##productHasBom)
Filter Type: Predefined options
Get Current Options:
These options may vary by account configuration. To get the current list:
query {
dataSetMeta(purpose: "uiProduct") {
dataSets(name: "product") {
filters {
name
optionList {
value
label
}
}
}
}
}Usage Example:
query {
productViewConnection(
first: 10
hasBom: ["##productHasBom", "##productDoesNotHaveBom"]
) {
edges {
node {
title
hasBom
}
}
}
}lastPurchaseDate
- Label: Last purchase date
- Type: dateRangeInput
- Enabled: Yes
Filter Type: Date range
Input Structure:
{
begin: string // ISO date format: "2024-01-01"
end: string // ISO date format: "2024-12-31"
}Usage Example:
query {
productViewConnection(
first: 10
lastPurchaseDate: {
begin: "2024-01-01"
end: "2024-12-31"
}
) {
edges {
node {
title
lastPurchaseDate
}
}
}
}manufacturer
- Label: Manufacturer
- Type: List|String
- Enabled: Yes
Filter Type: Text value
This filter accepts freeform text values.
Usage Example:
query {
productViewConnection(
first: 10
manufacturer: "Acme Corp"
) {
edges {
node {
title
manufacturer
}
}
}
}productId
- Label: Product ID
- Type: List|String
- Enabled: No
Filter Type: Text value
This filter accepts freeform text values.
Usage Example:
query {
productViewConnection(
first: 10
productId: "12345"
) {
edges {
node {
title
productId
}
}
}
}productStoreUrlList
- Label: Product stores
- Type: List|ProductStoreUrlString
- Enabled: Yes
Filter Type: Reference to productStore collection
This filter accepts values from the productStoreViewConnection query. To get available values:
query {
productStoreViewConnection(
first: 100
status: "PROD_STORE_ACTIVE"
) {
edges {
node {
productStoreUrl # Use this value in the filter
name
}
}
}
}Usage Example:
query {
productViewConnection(
first: 10
productStoreUrlList: ["PRODUCTSTORE_URL_VALUE"]
) {
edges {
node {
title
productStore {
name
}
}
}
}
}productUrl
- Label: Product
- Type: List|ProductUrlString
- Enabled: Yes
Filter Type: Reference to product collection
This filter accepts values from the productViewConnection query. To get available values:
query {
productViewConnection(
first: 100
) {
edges {
node {
productUrl # Use this value in the filter
title
}
}
}
}Usage Example:
query {
productViewConnection(
first: 10
productUrl: ["PRODUCT_URL_VALUE"]
) {
edges {
node {
title
product {
title
}
}
}
}
}reorderQuantityToOrder
- Label: Reorder quantity to order
- Type: numberRangeInputForProductReorderQuantityToOrder
- Enabled: Yes
Filter Type: Number range
Input Structure:
{
minInclusive: number
maxInclusive: number
}Usage Example:
query {
productViewConnection(
first: 10
reorderQuantityToOrder: {
minInclusive: 0
maxInclusive: 100
}
) {
edges {
node {
title
reorderQuantityToOrder
}
}
}
}reorderVariance
- Label: Reorder variance
- Type: numberRangeInputForProductReorderVariance
- Enabled: No
Filter Type: Number range
Input Structure:
{
minInclusive: number
maxInclusive: number
}Usage Example:
query {
productViewConnection(
first: 10
reorderVariance: {
minInclusive: 0
maxInclusive: 100
}
) {
edges {
node {
title
reorderVariance
}
}
}
}replenishmentQuantityToOrder
- Label: Replenishment quantity to order
- Type: numberRangeInputForProductReplenishmentQuantityToOrder
- Enabled: Yes
Filter Type: Number range
Input Structure:
{
minInclusive: number
maxInclusive: number
}Usage Example:
query {
productViewConnection(
first: 10
replenishmentQuantityToOrder: {
minInclusive: 0
maxInclusive: 100
}
) {
edges {
node {
title
replenishmentQuantityToOrder
}
}
}
}replenishmentVariance
- Label: Replenishment variance
- Type: numberRangeInputForProductReplenishmentVariance
- Enabled: No
Filter Type: Number range
Input Structure:
{
minInclusive: number
maxInclusive: number
}Usage Example:
query {
productViewConnection(
first: 10
replenishmentVariance: {
minInclusive: 0
maxInclusive: 100
}
) {
edges {
node {
title
replenishmentVariance
}
}
}
}search
- Label: Not specified
- Type: SearchString
- Enabled: Yes
Filter Type: Search text
This filter performs a text search across multiple fields.
Usage Example:
query {
productViewConnection(
first: 10
search: "search term"
) {
edges {
node {
title
}
}
}
}searchCustom
- Label: Not specified
- Type: searchCustomFilter
- Enabled: Yes
Filter Type: Advanced search with result expansion
See the Advanced Search guide for complete documentation on how this filter works.
Collection-Specific Examples:
Example 1: Basic search:
query {
productViewConnection(
first: 10
searchCustom: {
terms: "red widget"
}
) {
edges {
node {
title
}
}
}
}Example 2: Include additional fields in search:
# Searches defaults PLUS manufacturer, brand, and category fields
query {
productViewConnection(
first: 10
searchCustom: {
terms: "acme"
include: ["productManufacturer", "productBrand", "productCategory"]
}
) {
edges {
node {
title
}
}
}
}Example 3: Expand results to include related records:
# For each matching product, also return the supplier party record
query {
productViewConnection(
first: 10
searchCustom: {
terms: "urgent"
extend: ["supplierPartyUrl"]
}
) {
edges {
node {
title
}
}
}
}Example 4: Combine include and extend:
# Search in defaults + additional fields, then expand to related records
query {
productViewConnection(
first: 10
searchCustom: {
terms: "acme corp"
include: ["productManufacturer"]
extend: ["supplierPartyUrl"]
}
) {
edges {
node {
title
}
}
}
}status
- Label: Status
- Type: List|String
- Enabled: Yes
- Options:
- Active (PRODUCT_ACTIVE)
- Inactive (PRODUCT_INACTIVE)
Filter Type: Predefined options
Get Current Options:
These options may vary by account configuration. To get the current list:
query {
dataSetMeta(purpose: "uiProduct") {
dataSets(name: "product") {
filters {
name
optionList {
value
label
}
}
}
}
}Usage Example:
query {
productViewConnection(
first: 10
status: ["PRODUCT_ACTIVE", "PRODUCT_INACTIVE"]
) {
edges {
node {
title
status
}
}
}
}stock
- Label: Stock
- Type: numberRangeInputForProductStock
- Enabled: No
Filter Type: Number range
Input Structure:
{
minInclusive: number
maxInclusive: number
}Usage Example:
query {
productViewConnection(
first: 10
stock: {
minInclusive: 0
maxInclusive: 100
}
) {
edges {
node {
title
stock
}
}
}
}supplier
- Label: Supplier
- Type: List|PartyUrlSupplierString
- Enabled: Yes
Filter Type: Reference to party collection
Note: Filters to suppliers only
This filter accepts values from the partyViewConnection query. To get available values:
query {
partyViewConnection(
first: 100
role: ["SUPPLIER"]
status: "PARTY_ENABLED"
) {
edges {
node {
partyUrl # Use this value in the filter
name
}
}
}
}Usage Example:
query {
productViewConnection(
first: 10
supplier: ["PARTY_URL_VALUE"]
) {
edges {
node {
title
party {
name
}
}
}
}
}unitSales
- Label: Unit sales
- Type: numberRangeInputForProductUnitSales
- Enabled: No
Filter Type: Number range
Input Structure:
{
minInclusive: number
maxInclusive: number
}Usage Example:
query {
productViewConnection(
first: 10
unitSales: {
minInclusive: 0
maxInclusive: 100
}
) {
edges {
node {
title
unitSales
}
}
}
}