Product

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:

MetricParametersDescription
neqPerUnittransform, operatorneqPerUnit for product
lastPurchaseLandedCostPerUnittransform, operatorlastPurchaseLandedCostPerUnit for product
lastPurchasePricetransform, operatorlastPurchasePrice for product
averageGrossSalesPerUnittransform, operator, dateRange, facilityUrlListAverage gross sales per unit
averageUnitsPerSaletransform, operator, dateRange, facilityUrlListaverageUnitsPerSale for product
cogsSalestransform, operator, dateRange, facilityUrlListcogsSales for product
countSalestransform, operator, dateRange, facilityUrlListcountSales for product
grossSalestransform, operator, dateRange, facilityUrlListGross sales amount
marginSalestransform, operator, dateRange, facilityUrlListmarginSales for product
unitSalestransform, operator, dateRange, facilityUrlListNumber of units sold
unitSalesForSalesVelocitytransform, operator, dateRange, facilityUrlListunitSalesForSalesVelocity for product
reorderQuantityToOrdertransform, operator, facilityUrlList, facilityUrl, reservedSublocationFacilityUrlListQuantity to reorder to reach reorder point
reorderQuantityToOrderEditabletransform, operator, facilityUrlList, facilityUrl, reservedSublocationFacilityUrlListreorderQuantityToOrderEditable for product
replenishmentQuantityToOrdertransform, operator, facilityUrlList, facilityUrl, reservedSublocationFacilityUrlListreplenishmentQuantityToOrder for product
replenishmentQuantityToOrderEditabletransform, operator, facilityUrlList, facilityUrl, reservedSublocationFacilityUrlListreplenishmentQuantityToOrderEditable for product
stocktransform, operator, aggregate, count, facilityUrlList, includeBom, includeSupplier, lotIdSearch, stockTypeStock quantity across facilities
stockOnHandtransform, operator, aggregate, count, facilityUrlList, includeBom, includeSupplier, lotIdSearch, reservedSublocationFacilityUrlListAvailable stock on hand
stockReservedtransform, operator, aggregate, count, facilityUrlList, includeBom, lotIdSearch, reservationTypestockReserved for product
stockOnOrdertransform, operator, aggregate, count, facilityUrlList, includeBom, lotIdSearchstockOnOrder for product
stockAvailabletransform, operator, aggregate, count, facilityUrlList, includeBom, includeSupplier, lotIdSearch, reservedSublocationFacilityUrlListstockAvailable for product
stockRemainingtransform, operator, aggregate, count, facilityUrlList, includeBom, includeSupplier, lotIdSearchstockRemaining for product
averageCosttransform, operatoraverageCost for product
valuationtransform, operator, facilityUrlList, lotIdSearchvaluation for product
countNoneCount of items in the result set

Common Parameters:

  • operator - Aggregation function: sum, mean, min, max
  • transform - Mathematical transformation: abs
  • dateRange - Filter to specific date range
  • facilityUrlList - Filter to specific facilities

GroupBy Dimensions

Group metrics by these dimensions:

DimensionDescription
categoryProduct category
supplier1Primary supplier
supplier2supplier2 for product
supplier3supplier3 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 formatter argument 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

The 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

The 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

The 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

A 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

The 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

The 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

The 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

The 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

A 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

The 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

A 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

The 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

A 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

A 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

The 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

A 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

The 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

A 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

The 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

The 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

A 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

The 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

A 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

An 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

The 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

A 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

An 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

The 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

An 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

A 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

The 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

The 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

The 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

Additional 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

A 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

The 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

The 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

The 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

The 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

A 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

A 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

A 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

The 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

A 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

Label: Supplier
Sortable: No


supplier1Comments

Label: Supplier 1 comments
GraphQL Type: Text
Sortable: No


supplier1LeadTime

Label: Supplier 1 lead days
GraphQL Type: Number
Sortable: No


supplier1Price

Label: Supplier 1 price
GraphQL Type: Price
Sortable: No


supplier1ProductId

Label: Supplier 1 product ID
Sortable: No


supplier1QuantityAvailable

Label: Supplier 1 quantity available
Sortable: No


supplier2Comments

Label: Supplier 2 comments
GraphQL Type: Text
Sortable: No


supplier2LeadTime

Label: Supplier 2 lead days
GraphQL Type: Number
Sortable: No


supplier2Price

Label: Supplier 2 price
GraphQL Type: Price
Sortable: No


supplier2ProductId

Label: Supplier 2 product ID
Sortable: No


supplier2QuantityAvailable

Label: Supplier 2 quantity available
Sortable: No


supplier3Comments

Label: Supplier 3 comments
GraphQL Type: Text
Sortable: No


supplier3LeadTime

Label: Supplier 3 lead days
GraphQL Type: Number
Sortable: No


supplier3Price

Label: Supplier 3 price
GraphQL Type: Price
Sortable: No


supplier3ProductId

Label: Supplier 3 product ID
Sortable: No


supplier3QuantityAvailable

Label: Supplier 3 quantity available
Sortable: No


title

Label: Title
Sortable: No


unitOfMeasure

Label: Unit of measure
GraphQL Type: OptionList
Sortable: No


universalProductCode

Label: UPC
Sortable: No
Status: ❌ Disabled


vdlDescription

Label: VDL description
Sortable: No
Status: ❌ Disabled


weightPerUnit

Label: Weight per unit
Sortable: No


weightPerUnitSystemOfMeasure

Label: Weight per unit system of measure
Sortable: Yes


Enum Fields

These fields return one of a predefined set of values.

accountOverride

Indicates 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

The 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

The 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 - Meter
  • LEN_cm - Centimeter
  • LEN_mm - Millimeter
  • LEN_ft - Feet
  • LEN_in - Inch
  • LEN_yd - Yard

choreographyTab

The 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

The 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 - Meter
  • LEN_cm - Centimeter
  • LEN_mm - Millimeter
  • LEN_ft - Feet
  • LEN_in - Inch
  • LEN_yd - Yard

expandBillOfMaterials

Controls 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

Indicates 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

The 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

The 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 only
  • RSRV_INCLUDE_BOM - Include BOM components

status

Indicates 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 - Active
  • PRODUCT_INACTIVE - Inactive

stdReorderCalculationMethodId

The 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

Label: Weight unit
Sortable: No

Possible Values:

  • WT_kg - Kilogram
  • WT_g - Gram
  • WT_mg - Milligram
  • WT_lb - Pound
  • WT_oz - Ounce
  • WT_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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

Label: Filter
Sortable: No
Status: ❌ Disabled

Parameters:

  • filter (ProductFilter) Filter

Example Query:

{
  product(productUrl: "example-url") {
    filter(
      filter: "example-value"
    )
  }
}

grossSales

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

An 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

The 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

The 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

The 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

The 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

An 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

The 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

The 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

The 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

The 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: exclude Default value

    Options:

    • exclude - Show blank if no value is specified
    • include - Show default value if no value is specified

Example Query:

{
  product(productUrl: "example-url") {
    stdReorderCalculationMethodTimePeriod(
      defaultValue: exclude
    )
  }
}

stock

Label: Stock
Sortable: ⚠️ Yes (with limitations - see parameter options below)

Parameters:

  • aggregate (ProductStockAggregate, ❌ disabled) - Default: sum Combine quantities using

    Options:

    • sum - Sum
    • min - Minimum
    • max - Maximum
    • minAbs - Minimum of absolute values
    • maxAbs - Maximum of absolute values
  • count (ProductStockCount) - Default: totalUnits Count quantity by

    Options:

    • openQuantity - Open stock
    • caseQuantity - Case stock
    • totalUnits - Units including open and case stock
    • caseUnits - Units including case stock only
    • totalCaseEquivalents - Case equivalents including open and case stock
    • openCaseEquivalents - Case equivalents including open stock only
  • facilityUrlList (List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)

  • includeBom (ProductStockIncludeBom) - Default: exclude Bill of materials (BoM)

    Options:

    • exclude - Exclude BoM
    • include - Include BoM ⚠️ not sortable
  • includeSupplier (ProductStockIncludeSupplier) - Default: exclude Supplier

    Options:

    • exclude - Exclude supplier quantity
    • includePrioritized - Include prioritized supplier quantity
    • include - Include supplier quantity ⚠️ not sortable
  • lotIdSearch (List|LotIdSearchString) Lot ID

  • stockType (ProductStockType) Type

    Options:

    • available - Available
    • onHand - On hand
    • onOrder - On order
    • remaining - Remaining after reservations
    • reserved - Reserved
    • reservedBackordered - Reserved backordered
    • reservedOnHand - 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

The 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: sum Combine quantities using

    Options:

    • sum - Sum
    • min - Minimum
    • max - Maximum
    • minAbs - Minimum of absolute values
    • maxAbs - Maximum of absolute values
  • count (ProductStockCount) - Default: totalUnits Count quantity by

    Options:

    • openQuantity - Open stock
    • caseQuantity - Case stock
    • totalUnits - Units including open and case stock
    • caseUnits - Units including case stock only
    • totalCaseEquivalents - Case equivalents including open and case stock
    • openCaseEquivalents - Case equivalents including open stock only
  • facilityUrlList (List|FacilityUrlLocation) Location(s)

  • includeBom (ProductStockIncludeBom) - Default: exclude Bill of materials (BoM)

    Options:

    • exclude - Exclude BoM
    • include - Include BoM ⚠️ not sortable
  • includeSupplier (ProductStockIncludeSupplier) - Default: exclude Supplier

    Options:

    • exclude - Exclude supplier quantity
    • includePrioritized - Include prioritized supplier quantity
    • include - 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

The 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: totalUnits Count quantity by

    Options:

    • totalUnits - Units including open and case stock
    • totalCaseEquivalents - 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

A 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

The 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: sum Combine quantities using

    Options:

    • sum - Sum
    • min - Minimum
    • max - Maximum
    • minAbs - Minimum of absolute values
    • maxAbs - Maximum of absolute values
  • count (ProductStockCount) - Default: totalUnits Count quantity by

    Options:

    • openQuantity - Open stock
    • caseQuantity - Case stock
    • totalUnits - Units including open and case stock
    • caseUnits - Units including case stock only
    • totalCaseEquivalents - Case equivalents including open and case stock
    • openCaseEquivalents - Case equivalents including open stock only
  • facilityUrlList (List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)

  • includeBom (ProductStockIncludeBom) - Default: exclude Bill of materials (BoM)

    Options:

    • exclude - Exclude BoM
    • include - Include BoM ⚠️ not sortable
  • includeSupplier (ProductStockIncludeSupplier) - Default: exclude Supplier

    Options:

    • exclude - Exclude supplier quantity
    • includePrioritized - Include prioritized supplier quantity
    • include - 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

The 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: sum Combine quantities using

    Options:

    • sum - Sum
    • min - Minimum
    • max - Maximum
    • minAbs - Minimum of absolute values
    • maxAbs - Maximum of absolute values
  • count (ProductStockCount) - Default: totalUnits Count quantity by

    Options:

    • openQuantity - Open stock
    • caseQuantity - Case stock
    • totalUnits - Units including open and case stock
    • caseUnits - Units including case stock only
    • totalCaseEquivalents - Case equivalents including open and case stock
    • openCaseEquivalents - Case equivalents including open stock only
  • facilityUrlList (List|FacilityUrlLocation) Location(s)

  • includeBom (ProductStockIncludeBom) - Default: exclude Bill of materials (BoM)

    Options:

    • exclude - Exclude BoM
    • include - 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

Label: Stockout
Sortable: No

Parameters:

  • facilityUrlList (List|FacilityUrlLocation) Location(s)

  • facilityUrl (FacilityUrlLocation, ❌ disabled) Location

  • includeBom (ProductStockIncludeBom) - Default: exclude Bill of materials (BoM)

    Options:

    • exclude - Exclude BoM
    • include - Include BoM ⚠️ not sortable
  • stockType (ProductStockTypeForStockout) - Default: remaining Stock type

    Options:

    • available - Available
    • onHand - On hand
    • remaining - 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

The 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: sum Combine quantities using

    Options:

    • sum - Sum
    • min - Minimum
    • max - Maximum
    • minAbs - Minimum of absolute values
    • maxAbs - Maximum of absolute values
  • count (ProductStockCount) - Default: totalUnits Count quantity by

    Options:

    • openQuantity - Open stock
    • caseQuantity - Case stock
    • totalUnits - Units including open and case stock
    • caseUnits - Units including case stock only
    • totalCaseEquivalents - Case equivalents including open and case stock
    • openCaseEquivalents - Case equivalents including open stock only
  • facilityUrlList (List|FacilityUrlLocation) Location(s)

  • includeBom (ProductStockIncludeBom) - Default: exclude Bill of materials (BoM)

    Options:

    • exclude - Exclude BoM
    • include - Include BoM ⚠️ not sortable
  • includeSupplier (ProductStockIncludeSupplier) - Default: exclude Supplier

    Options:

    • exclude - Exclude supplier quantity
    • includePrioritized - Include prioritized supplier quantity
    • include - 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

Label: Reservations
Sortable: ⚠️ Yes (with limitations - see parameter options below)

Parameters:

  • aggregate (ProductStockAggregate, ❌ disabled) - Default: sum Combine quantities using

    Options:

    • sum - Sum
    • min - Minimum
    • max - Maximum
    • minAbs - Minimum of absolute values
    • maxAbs - Maximum of absolute values
  • count (ProductStockCount) - Default: totalUnits Count quantity by

    Options:

    • openQuantity - Open stock
    • caseQuantity - Case stock
    • totalUnits - Units including open and case stock
    • caseUnits - Units including case stock only
    • totalCaseEquivalents - Case equivalents including open and case stock
    • openCaseEquivalents - Case equivalents including open stock only
  • facilityUrlList (List|FacilityUrlLocation) Location(s)

  • includeBom (ProductStockIncludeBom) - Default: exclude Bill of materials (BoM)

    Options:

    • exclude - Exclude BoM
    • include - Include BoM ⚠️ not sortable
  • lotIdSearch (List|LotIdSearchString) Lot ID

  • reservationType (ProductStockReservationType) - Default: backOrdered Reservation type

    Options:

    • all - Backordered + on hand
    • backOrdered - Backordered
    • onHand - On hand

Example Query:

{
  product(productUrl: "example-url") {
    stockReserved(
      aggregate: sum
      count: totalUnits
      facilityUrlList: ["example-value"]
      includeBom: exclude
      lotIdSearch: ["example-value"]
      reservationType: backOrdered
    )
  }
}

stockSublocations

Label: 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

Label: 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

Label: 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 quantity
  • QTY_SRC_SET_MAX - Set to maximum quantity

Parameters:

  • productStoreUrl (ProductStoreUrlString) Store

  • productStoreShowDefault (ProductStoreShowDefault) - Default: empty If value for store is unset

    Options:

    • default - Show default value
    • empty - Show no value

Example Query:

{
  product(productUrl: "example-url") {
    storeBaseQuantityForStore(
      productStoreUrl: "example-value"
      productStoreShowDefault: empty
    )
  }
}

storeIncludeSupplierQuantityForStore

Label: Include supplier quantity for store
Sortable: No

Possible Values:

  • QTY_SUPPL_NONE - No suppliers
  • QTY_SUPPL_10_MAIN - Supplier 1
  • QTY_SUPPL_90_ALT - Supplier 2
  • QTY_SUPPL_91_ALT - Supplier 3
  • QTY_SUPPL_ALL - All suppliers
  • QTY_SUPPL_PRIORITY - Prioritized supplier

Parameters:

  • productStoreUrl (ProductStoreUrlString) Store

  • productStoreShowDefault (ProductStoreShowDefault) - Default: empty If value for store is unset

    Options:

    • default - Show default value
    • empty - Show no value

Example Query:

{
  product(productUrl: "example-url") {
    storeIncludeSupplierQuantityForStore(
      productStoreUrl: "example-value"
      productStoreShowDefault: empty
    )
  }
}

storeLeadDaysForStore

Label: Lead days for store
Sortable: No

Parameters:

  • productStoreUrl (ProductStoreUrlString) Store

Example Query:

{
  product(productUrl: "example-url") {
    storeLeadDaysForStore(
      productStoreUrl: "example-value"
    )
  }
}

storeMaximumQuantityForStore

Label: Maximum quantity for store
Sortable: No

Parameters:

  • productStoreUrl (ProductStoreUrlString) Store

  • productStoreShowDefault (ProductStoreShowDefault) - Default: empty If value for store is unset

    Options:

    • default - Show default value
    • empty - Show no value

Example Query:

{
  product(productUrl: "example-url") {
    storeMaximumQuantityForStore(
      productStoreUrl: "example-value"
      productStoreShowDefault: empty
    )
  }
}

storeMinimumQuantityForStore

Label: Minimum quantity for store
Sortable: No

Parameters:

  • productStoreUrl (ProductStoreUrlString) Store

  • productStoreShowDefault (ProductStoreShowDefault) - Default: empty If value for store is unset

    Options:

    • default - Show default value
    • empty - Show no value

Example Query:

{
  product(productUrl: "example-url") {
    storeMinimumQuantityForStore(
      productStoreUrl: "example-value"
      productStoreShowDefault: empty
    )
  }
}

storeQuantityForStore

Label: Quantity for store
Sortable: No

Parameters:

  • productStoreUrl (ProductStoreUrlString) Store

Example Query:

{
  product(productUrl: "example-url") {
    storeQuantityForStore(
      productStoreUrl: "example-value"
    )
  }
}

storeQuantityPercentageForStore

Label: Quantity percentage for store
Sortable: No

Parameters:

  • productStoreUrl (ProductStoreUrlString) Store

  • productStoreShowDefault (ProductStoreShowDefault) - Default: empty If value for store is unset

    Options:

    • default - Show default value
    • empty - Show no value

Example Query:

{
  product(productUrl: "example-url") {
    storeQuantityPercentageForStore(
      productStoreUrl: "example-value"
      productStoreShowDefault: empty
    )
  }
}

storeSourceForStore

Label: Source for store
Sortable: No

Parameters:

  • productStoreUrl (ProductStoreUrlString) Store

Example Query:

{
  product(productUrl: "example-url") {
    storeSourceForStore(
      productStoreUrl: "example-value"
    )
  }
}

storeStockSourceForStore

Label: Stock source for store
Sortable: No

Possible Values:

  • ##locationAll - All locations

Parameters:

  • productStoreUrl (ProductStoreUrlString) Store

  • productStoreShowDefault (ProductStoreShowDefault) - Default: empty If value for store is unset

    Options:

    • default - Show default value
    • empty - Show no value

Example Query:

{
  product(productUrl: "example-url") {
    storeStockSourceForStore(
      productStoreUrl: "example-value"
      productStoreShowDefault: empty
    )
  }
}

totalLeadTime

Label: Total lead time
Sortable: No

Parameters:

  • facilityUrl (FacilityUrlLocation) Location

Example Query:

{
  product(productUrl: "example-url") {
    totalLeadTime(
      facilityUrl: "example-value"
    )
  }
}

totalReplenishmentLeadTime

Label: Total replenishment lead time
Sortable: No

Parameters:

  • facilityUrl (FacilityUrlLocation) Location

Example Query:

{
  product(productUrl: "example-url") {
    totalReplenishmentLeadTime(
      facilityUrl: "example-value"
    )
  }
}

unitSales

Label: 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

Label: 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

Label: 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

Label: 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

Label: 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

Label: Units packed
Sortable: No

Parameters:

  • facilityUrlList (List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)

Example Query:

{
  product(productUrl: "example-url") {
    unitsPacked(
      facilityUrlList: ["example-value"]
    )
  }
}

unitsTotal

Label: Units total
Sortable: No

Parameters:

  • facilityUrlList (List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)

Example Query:

{
  product(productUrl: "example-url") {
    unitsTotal(
      facilityUrlList: ["example-value"]
    )
  }
}

unitsWorkInProgress

Label: 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

Label: 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

Label: Usage growth %/yr
Sortable: No

Parameters:

  • facilityUrl (FacilityUrlLocation) Location

Example Query:

{
  product(productUrl: "example-url") {
    usageGrowthyr(
      facilityUrl: "example-value"
    )
  }
}

valuation

Label: 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

Label: 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

Label: 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

Label: Value packed
Sortable: No

Parameters:

  • facilityUrlList (List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)

Example Query:

{
  product(productUrl: "example-url") {
    valuePacked(
      facilityUrlList: ["example-value"]
    )
  }
}

valueTotal

Label: Value total
Sortable: No

Parameters:

  • facilityUrlList (List|FacilityUrlLocationOrSublocation) Location(s) or sublocation(s)

Example Query:

{
  product(productUrl: "example-url") {
    valueTotal(
      facilityUrlList: ["example-value"]
    )
  }
}

valueWorkInProgress

Label: 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

Label: 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
      }
    }
  }
}