CatalogItem
Creates a Service Catalog Item (sc_cat_item) — a requestable item in the ServiceNow Service Catalog.
Signature
CatalogItem(config)
Usage
Use CatalogItem for ordering goods and services. Assign catalogs and categories to place the item in the catalog. Control visibility with availableFor/notAvailableFor using User Criteria sys_ids — never use the roles property for this. Wire fulfillment via flow, workflow, or executionPlan (mutually exclusive). Define user input with variables (inline) or variableSets (reusable groups). For conditional show/hide and mandatory logic, attach CatalogUiPolicy records; for validation and dynamic calculations, attach CatalogClientScript records.
Properties
-
$id (required):
string | number | ExplicitKey<string> -
name (required):
stringName to appear in the catalog. -
accessType (optional):
'restricted' | 'delegated'Controls who can request the item. Default:'restricted'. -
active (optional):
booleanWhether the item is active. Default:true. -
assignedTopics (optional):
(string | Record<'topic'>)[]sys_id of existing topics. Controls ESC portal visibility. -
availability (optional):
'desktopOnly' | 'both' | 'mobileOnly'Platform availability. Default:'desktopOnly'. -
availableFor (optional):
(string | Record<'user_criteria'>)[]sys_id of user criteria for availability. -
billable (optional):
booleanBillable status. Default:false. -
catalogs (optional):
(string | Record<'sc_catalog'>)[]sys_id of existing catalogs. Use queries to find. -
categories (optional):
(string | Record<'sc_category'>)[]sys_id of existing categories. Use queries to find. Can only be selected aftercatalogsis populated. -
checkedOut (optional):
booleanWhether the item is checked out. -
cost (optional):
numberCost of the catalog item. Default:0. -
customCart (optional):
string | Record<'sys_ui_macro'>Custom cart for the catalog item. -
deliveryPlanScript (optional):
stringDelivery plan script for the catalog item. -
deliveryTime (optional):
DurationEstimated delivery time{ days, hours }. Default:{}. -
description (optional):
stringDetailed description shown on the item page. -
displayPriceProperty (optional):
stringDisplay price property. Default:'non_zero'. -
entitlementScript (optional):
stringEntitlement script for the catalog item. -
executionPlan (optional):
string | Record<'sc_cat_item_delivery_plan'>Delivery plan sys_id for fulfillment. Mutually exclusive withflowandworkflow. -
flow (optional):
string | Record<'sys_hub_flow'> | FlowFlow Designer flow sys_id orFlow()instance for fulfillment. Mutually exclusive withexecutionPlanandworkflow. -
fulfillmentAutomationLevel (optional):
'unspecified' | 'manual' | 'semiAutomated' | 'fullyAutomated'Default:'unspecified'. -
fulfillmentGroup (optional):
string | Record<'sys_user_group'>Group sys_id responsible for delivery. -
hideAddToCart (optional):
booleanHides "Add to Cart" button. Default:false. -
hideAddToWishList (optional):
booleanHides "Add to Wishlist". Default:false. -
hideAttachment (optional):
booleanHides attachment section. Cannot betruewhenmandatoryAttachmentistrue. Default:false. -
hideDeliveryTime (optional):
booleanHides delivery time. Default:false. -
hideQuantitySelector (optional):
booleanHides quantity selection. Default:false. -
hideSaveAsDraft (optional):
booleanHides "Save as Draft". Default:false. -
hideSP (optional):
booleanHides from Service Portal. Default:false. -
icon (optional):
stringIcon for the catalog item. -
ignorePrice (optional):
booleanIgnores price display. Default:true. -
image (optional):
stringImage for the catalog item. -
location (optional):
string | Record<'cmn_location'>Location for access configuration. -
makeItemNonConversational (optional):
booleanPrevents virtual agent ordering. Default:false. -
mandatoryAttachment (optional):
booleanRequires an attachment. ForceshideAttachmenttofalsewhen set. Default:false. -
meta (optional):
string[]Search tags for the catalog item. -
mobileHidePrice (optional):
booleanHides price on mobile. Default:false. -
mobilePicture (optional):
stringMobile picture for the catalog item. -
mobilePictureType (optional):
'desktopPicture' | 'mobilePicture' | 'noPicture'Mobile picture type. Default:'desktopPicture'. -
model (optional):
string | Record<'cmdb_model'>Model of the catalog item. -
noCart (optional):
booleanHide cart (legacy). Default:false. -
noOrder (optional):
booleanHide order (legacy). Default:false. -
noOrderNow (optional):
booleanHide order now (legacy). Default:false. -
noProceedCheckout (optional):
booleanHide proceed checkout (legacy). Default:false. -
noQuantity (optional):
booleanHide quantity (legacy). Default:false. -
noSearch (optional):
booleanExclude from portal search. Default:false. -
notAvailableFor (optional):
(string | Record<'user_criteria'>)[]sys_id of user criteria for restrictions (overridesavailableFor). -
omitPrice (optional):
booleanOmits price entirely. Default:false. -
order (optional):
numberOrder of the catalog item. Default:0. -
owner (optional):
string | Record<'sys_user'>Owner for the catalog item. -
picture (optional):
stringPicture for the catalog item. -
pricingDetails (optional):
PricingDetail[]Pricing breakdown:{ amount, currencyType, field }. -
protectionPolicy (optional):
'read' | 'protected'Controls edit/view access for other developers after the application is installed.'read'lets others view but not modify;'protected'prevents any changes. Omit to allow customization. -
recurringFrequency (optional):
'weekly' | 'quarterly' | 'weekly2' | 'semiannual' | 'monthly' | 'yearly' | 'daily' | 'monthly2'Required whenpricingDetailscontains'recurring_price'. -
requestMethod (optional):
'order' | 'request' | 'submit'Submission button label. Default:'order'. -
roles (optional):
(string | Role)[]Roles for catalog item access. -
shortDescription (optional):
stringBrief summary shown in catalog listings. -
showVariableHelpOnLoad (optional):
booleanShows help text by default. Default:false. -
startClosed (optional):
booleanStart closed. Default:false. -
state (optional):
'published' | 'draft' | 'publishing' | 'in_review' | 'reviewed'State of the catalog item. -
useScLayout (optional):
booleanUse service catalog layout. Default:true. -
variables (optional):
objectVariable definitions for the form. -
variableSets (optional):
{ variableSet: string | VariableSet; order: number }[]Variable set references. -
vendor (optional):
string | Record<'core_company'>Vendor for access configuration. -
version (optional):
numberVersion of the catalog item. Default:1. -
view (optional):
string | Record<'sys_ui_view'>View for the catalog item. -
visibleBundle (optional):
booleanBundle visibility. Default:true. -
visibleGuide (optional):
booleanGuide visibility. Default:true. -
visibleStandalone (optional):
booleanStandalone visibility. Default:true. -
workflow (optional):
string | Record<'wf_workflow'>Legacy workflow sys_id for fulfillment. Mutually exclusive withexecutionPlanandflow.
Fulfillment Configuration
Flow Designer (flow) — Recommended fulfillment method for catalog items. Use Now.ref() to reference a project-defined flow or provide a sys_id string for an existing platform flow.
Pricing Configuration
Use pricingDetails array with { amount, currencyType, field } objects. Supported field values: price, recurring_price. When using recurring_price, recurringFrequency is required (monthly, yearly, etc.).
Access Control
Use User Criteria as the preferred method:
availableFor: Users/groups who can see the itemnotAvailableFor: Users/groups restricted (overrides availableFor)accessType:'restricted'or'delegated'roles: Role-based restrictionsassignedTopics: For Employee Center visibility
Standard user criteria updates take effect immediately; scripted user criteria requires session relaunch.
UI Display Options
| Property | Description |
|---|---|
| hideAddToCart | Hides "Add to Cart" button |
| hideAttachment | Hides attachment section |
| hideDeliveryTime | Hides delivery time |
| hideQuantitySelector | Hides quantity selection |
| hideSaveAsDraft | Hides "Save as Draft" |
| hideSP | Hides from Service Portal |
| hideAddToWishList | Hides "Add to Wishlist" |
| ignorePrice | Ignores price display |
| omitPrice | Omits price entirely |
| mandatoryAttachment | Requires attachment |
| makeItemNonConversational | Prevents virtual agent ordering |
| showVariableHelpOnLoad | Shows help text by default |
Common User Requests Mapping
| User Request | Agent Implementation |
|---|---|
| "Order a laptop" | Catalog Item with variables and Flow Designer |
| "Request software license" | Catalog Item with variable sets and recurring pricing |
| "Service with approvals" | Catalog Item with flow fulfillment |
| "Reusable fields across items" | Catalog Item with variable sets |
Quick Reference
ALWAYS
- Assign items to at least one catalog and category
- Use queries to find existing catalog/category/topic sys_ids
- Use Flow Designer as the preferred fulfillment method
- Use
snake_casefor variable names - Use
orderincrements of 100
NEVER
- Use catalog items for creating task records directly (use Record Producers)
- Skip catalogs or categories assignment
- Hard-code sys_ids without documenting their source