Package Configuration — Complete Guide

Under Review

The definitive guide to configuring packages in Kaptio — from the package record through components, options, sort order, pricing, and admin settings.

Version 35 min read | March 26, 2026 Gallery

Package Configuration — Complete Guide

The definitive guide to configuring packages in Kaptio — covering every field and setting that controls how packages behave across the entire platform.

Why This Guide Matters

Package configuration is upstream of everything. A single checkbox on a Package Component can determine whether an optional service appears in the Booking Wizard Options tab, whether it is included in cancellation fee calculations, and whether its price rolls up into the package total on travel documents. Understanding these settings prevents configuration surprises downstream.

What’s Covered

  • Prerequisites — What must be in place before creating a package
  • Package Record Configuration — Record types, departure types, pricing setup, visibility, and service level modes
  • Service Levels — Multi-tier pricing; guest selects a tier. See Service Level Configuration.
  • Package Levels — Cabin-category selection for cruise and rail. See Package Level Configuration.
  • Component Configuration — Selection types, booking wizard tabs, cancellation controls, and pricing behaviour
  • Component Options — Service levels, pricelists, fare classes, and meal plans
  • Sort Order & Defaulting — Display order, auto-selection logic, and advanced defaulting rules
  • Filtering Package Search — Categories and activity-level fields
  • Group Tours & Price Models — Summary and link to the dedicated Group Tours guide
  • Admin Reference — Pilot features, permissions, app settings, and field sets
  • Downstream Impact Reference — How each setting flows into Package Search, Booking Wizard, and Package Modifications
  • Validation Checklist & Troubleshooting — Setup checklist and common issues

Available In

Circle Sell · Voyage Train · Voyage Cruise · Quest Tailormade

This guide is structured as a field-level reference. Each setting is documented with:

  • API Name — The Salesforce field API name
  • Picklist Values — All available options with their API and label values
  • What It Controls — The behaviour this setting drives
  • Downstream Impact — Which downstream systems (Search, Wizard, Modifications) are affected

Prerequisites

Before creating any package, ensure the following are in place:


Part 1: The Package Record

Creating a Package

Navigate to Packages in Kaptio and click New. Salesforce will first ask you to choose a record type:

Record TypeAPI NameDescriptionWhen to Use
PackagePackageA top-level, sellable product (the trip your customer books) with its own components, services, and pricingMost tour packages — group tours, FIT packages, rail journeys, cruise itineraries
BundleBundleA reusable building block that groups services together (e.g., “3 Nights in Rome” with a hotel + breakfast + city tour), which gets nested inside a Package as a component option.Combo tours, multi-leg journeys, packages assembled from sub-packages, shared segments re-used across multiple packages

After selecting the record type, fill in the required fields:

FieldAPI NameDescriptionBehavior
NameNameThe display name shown in search results and documentsFree text; use a clear, customer-facing title
Departure TypeDepartureType__cAnyday, Seasonal, or FixedChoose carefully — changing after save may affect departures, seasons, and components already configured against the package
DurationLength__cTotal trip length in nightsDetermines the date span for components
Booking Wizard Unit Number SelectionPhysicalInventorySelection__cControls whether cabin/room number selection appears in the Booking WizardPicklist — see guidance below

Departure Type

Field: Package__c.DepartureType__c — Controls how the package handles travel dates and which Package Editor tabs are available.

ValueLabelPackage Editor TabDescription
FixedFixedDepartures tab enabledPackage runs on specific departure dates. Each departure has a date, status, capacity. Most common for group tours.
SeasonalSeasonalSeasons tab enabledPackage is available within date ranges (seasons). Uses PackageSchedule__c records with nested time periods.
AnydayAnydayNeither tab enabledPackage is available on any date. No departure or season management needed. Common for FIT packages.

Downstream Impact

Package Search: Fixed packages only appear for dates with published departures. Seasonal packages appear within season date ranges. Anyday packages appear for any searched date. Component Behaviour: When Departure Type is Fixed, components gain departure assignment controls (DepartureMode__c). Components can be applicable to all departures, or selectively assigned at the component or component option level.

Booking Wizard Unit Number Selection

Field: Package__c.PhysicalInventorySelection__c — Controls whether the Booking Wizard requires physical unit (room/cabin) number selection.

ValueWhen to use
Mandatory (default)Cruise, rail, or any package where the customer must select a specific cabin or room number during booking. The Booking Wizard displays a Cabins tab that must be completed before the itinerary can be created.
Not Mandatory/HiddenLand-only packages or packages where cabin/room selection is not needed. The Cabins tab is hidden in the Booking Wizard. For cruise and rail packages, the system auto-assigns a default cabin behind the scenes.
Component ControlledMixed packages (e.g., a land tour with an optional cruise segment) where cabin selection should only apply to specific components rather than the entire package. The need for cabin selection is determined by each component’s type.

Downstream Impact

Booking Wizard: This setting directly controls whether the room/cabin selection step appears in the Booking Wizard flow. If set to Not Mandatory, travelers skip this step entirely.

Package Settings

After saving the package record, configure these additional settings:

FieldAPI NameDescriptionBehavior
Package CodePackageCode__cBrochure or internal identifierUsed as a prefix for reservation numbers via Tour Code
ActiveIsActive__cControls whether the package appears in searchLeave unchecked until setup is complete
Visibility & AccessVisibilitySetting__c, AccessRule__cWho can see and book the package by channel and accountVisible for All (default) or Restricted with an Access Rule. Visibility Settings & Access Rules
CategoriesCategories__cMultiselect picklist for filtering and grouping packagesValues are configured in metadata (e.g., Family Package, Adventure Package)
Start LocationPackageStartLocation__cLookup to Location; used in Package Search
End LocationPackageEndLocation__cLookup to Location; used in Package Search
SupplierSupplier__cPrimary supplier account for the packageUsed for single-supplier prepackaged products
Service Level ModeServiceLevelMode__cControls how service levels are managed across the packageStandard (single tier), Service Levels (guest selects tier), or Package Levels (cabin-category selection). See Service Level Configuration
Package LevelsCabin-category pricing for cruise and rail productsEnabled when Service Level Mode is set to Package Levels. See Package Level Configuration
UnpricedUnpriced__cShows “Unpriced” in search instead of a priceUse when prices are not yet configured or are available on request
Pricing Setup FieldsSell price setup, cost setup, rounding, and profitability configurationSee Pricing Setup Fields below
Commission & Profitability FieldsCommission groups, profitability groups, and discount groupsSee Commission & Profitability Fields below

Pricing Setup Fields

Lightning Costings note: Lightning costings only supports Dynamic for both Cost Setup and Selling Price Setup. Fixed cost and fixed sell price modes are legacy (classic costings only) and are not supported in lightning costings. Some fields in the table below only apply to classic costings and are marked accordingly.

These fields control how sell prices are calculated for the package:

FieldAPI NameDescriptionBehavior
Selling Price SetupSellingPriceSetupChoice__cHow sell prices are derivedDynamic is the supported mode — sell prices are calculated from cost + markup/margin rules
Cost SetupNetPriceSetupChoice__cHow cost prices are derivedDynamic is the supported mode — cost prices are calculated from service pricing or from a 3rd party source
Sell Price RoundingSellPriceRounding__cRounding rule for calculated sell pricesOverrides the channel-level rounding setting for required components
Primary Pricing Component (Classic only)PrimaryPricingComponent__cWhich component drives the primary price splitOnly relevant for fixed cost or sell price setups (classic costings). Not used in lightning costings where Dynamic is the only supported mode
Secondary Pricing Component (Classic only)SecondaryPricingComponent__cOptional second component contributing to package priceUsed with SecondaryComponentAmount__c. Only relevant for classic costings.
Calculated as Day Rate (Classic only)IsCalculatedAsDayRate__cWhen checked, package pricing is calculated as a daily rate multiplied by the number of daysOnly applies to fixed net rate packages from a single supplier. Not used in lightning costings.
Profitability GroupProfitabilityGroup__cLinks to a Profitability Book for margin targetsSee Cost & Pricing Architecture
Commission GroupCommissionGroup__cReseller commission groupingCan be overridden at the component or price category level
Discount GroupDiscountGroup__cDiscount rule groupingCan be overridden at the component or add-on level

Service Level Mode

Field: Package__c.ServiceLevelMode__c — Controls how service levels (room types, cabin classes, etc.) are managed across the package.

ModeBehavior
StandardSingle pricing tier — no service level selection during booking
Service LevelsMultiple tiers (e.g., Standard, Superior, Luxury) — guest selects a tier. When a traveler selects “Premium”, all components upgrade to their Premium variant. Common for rail packages with cabin classes and cruise packages with deck categories.
Package LevelsCabin-level selection — used for cruise-style products with cabin categories

See Service Level Configuration for detailed setup, or Package Level Configuration for cabin-category pricing on cruise and rail products.

Commission & Profitability Fields

These fields control commission calculations and profitability tracking at the package level.

FieldAPI NameDescription
Commission GroupCommissionGroup__cLookup to a Commission Group record. Controls which commission rates apply to this package when sold through reseller channels.
Profitability GroupProfitabilityGroup__cLookup to a Profitability Group. Used for grouping packages in profitability analysis and reporting.
Discount GroupDiscountGroup__cFor Bundle record type packages only. Links to a discount group used in the Advanced Price Rules tab.

Single Supplier Packages

Field: Package__c.PrepackagedBySingleSupplier__c (checkbox)

When checked, this indicates the entire package is provided by a single supplier. This changes component edit behaviour:

  • The package-level Supplier__c field is used as the default supplier for all components
  • Component option modals pre-fill supplier information from the package record
  • Simplifies setup for packages where one operator delivers everything (e.g., a single DMC providing all services)

Part 2: Components

What Components Are

Components are the building blocks of a package. Each component represents a segment of the trip — a hotel stay, an activity, a transfer, a rail segment. The package is a container; the components hold the product and pricing.

Component Types

TypePurposeExample
BundleGroups multiple services into a single destination segment”City A — 3 Night Stay” (hotel + breakfast + city tour)
ComponentA single service with structured pricing”Airport Transfer”, “Guided Walking Tour”
LiveReal-time pricing from an external system”Dynamic Rail Fare” via Kaptio Connect

Creating Components

From the package record, navigate to the Components related list and click New.

Not all component fields are listed in this table. The fields here are those that do not have multiple values requiring full explanation; fields that do are covered in the sections after the table.

FieldAPI NameDescriptionBehavior
Record TypeComponentType__cBundle, Component, or LiveDetermines the structure and pricing behavior
NameNameDescriptive label for the componentShown in Builder, Costings, and customer documents
SortSort__cDisplay order in the itineraryComponents are rendered in ascending sort order
Start DayStart__cDay number when this component beginsMandatory; determines placement within the package duration
End DayEnd__cDay number when this component endsFor multi-day components (e.g., accommodation spanning 3 nights)
Is ActiveIsActive__cWhether the component is selectableInactive components are hidden from booking flows

Selection Type

Field: Component__c.SelectionType__c — Controls whether the component is included in the base package or presented as an option.

ValueBehavior
Pre-Selected RefundableThe component is included in the itinerary by default. The guest can remove it during booking, and the cost is removed from the package total — the guest is not charged for it. Use this for standard included components where the guest has the option to opt out.
OptionalThe component is not included in the itinerary by default. The guest can add it during booking if they want it. Use this for extras, upgrades, and add-on experiences that the guest opts into.
Pre-Selected Non-RefundableThe component is included in the itinerary by default. If the guest removes it during booking, the cost remains on the package total — the guest still pays for it even though the service is removed. Use this for components where the operator has committed cost that cannot be waived (e.g., a group transfer or charter segment).

Common Confusion

The API value Required maps to the label “Pre-Selected Refundable” — not “Required” in the UI. Similarly, NonRefundable maps to “Pre-Selected Non-Refundable”. The distinction matters: both are pre-selected, but they differ in refund behaviour when removed.

Example: Transfers

  1. Shared Transfer (e.g., coach) — Set to Pre-Selected Non-Refundable. The guest opts out, but the charge is non-refundable since the coach still needs to operate.
  2. Private Transfer (or activity) — Set to Pre-Selected Refundable. The guest opts out because it is not needed. Since the operator only charges for these if they are needed, the amount due is refundable — assuming the supplier does not need to be paid.

Booking Wizard Tab

Field: Component__c.BookingWizardTab__c — Controls which tab in the Booking Wizard displays this component. Only relevant for Optional selection type components.

API ValueLabelBooking Wizard Display
NoneNoneNot shown in any Booking Wizard tab. Used for background or included components.
OptionsOptionsShown in the Options tab. Standard optional services and upgrades.
Protection PlanProtection PlanShown in the Protection Plan tab. Travel insurance and protection products.
Pre StayPre StayShown in the Pre Stay tab. Hotel nights before the main package.
Post StayPost StayShown in the Post Stay tab. Hotel nights after the main package.

Most Common Configuration Mistake

If your optional component is not appearing in the Booking Wizard, the most common cause is BookingWizardTab__c set to None or SelectionType__c not set to Optional. Both must be correctly configured for the option to display.

Package Totals

Field: Component__c.PackageTotals__c — Controls whether this component’s price is included in the displayed “Package Total”.

API ValueLabelDescription
IncludedInPackageTotalIncluded in Package TotalDefault. Component’s price rolls up into the displayed package total.
ExcludedFromPackageTotalExcluded from Package TotalComponent’s price is not included in the displayed package total.

Critical: What Package Totals Does NOT Control

Despite the name suggesting broad control, this setting has a limited scope. Based on field testing and code verification:

AreaAffected?
Content generation (documents/PDFs)Yes
Costings hover display (package icon on optional services)Yes
Cancellation fee calculationsNo
Payment schedule generationNo
Itinerary rollup totalsNo
UI total displaysNo

Source: CancellationFeeCalculations.cls does not reference PackageTotalsSetting__c. Confirmed via field testing and code review. This is an older field with limited usage. See Cancellation Controls for the fields that actually control cancellation fee inclusion.

Cancellation Controls

Looking for Cancellation Configurations? The settings below control which component price lines are included in cancellation fee calculations. For the full guide on setting up Cancellation Configurations — the rule engine that automatically generates cancellation fee schedules for Booking Wizard itineraries — see Cancellation Configurations — Setup & How They Work.

Two checkboxes on the Package Component determine which components’ prices feed into cancellation fee calculations. These are the actual controllers for cancellation fee inclusion — not the Package Totals setting. They are most commonly ticked on core required components (accommodation, main tour) to ensure those prices count toward cancellation fees.

FieldAPI NameControlsWhen Ticked
Is Main ComponentComponent__c.IsMainComponent__cPercentage-based cancellation feesThe component’s price is included in percentage-based cancellation fee calculations (e.g., 25% of package price)
Is Main Tour ComponentComponent__c.IsMainTourComponent__cFixed-amount cancellation feesThe component’s price is included in fixed-amount cancellation fee calculations (e.g., a flat fee)

Example: Multi-Day Accommodation Component

Consider a 10-night group tour package with a percentage-based cancellation schedule (25% more than 60 days out, 50% at 30–60 days, 100% under 30 days). The package has three components: a main accommodation (7 nights), a rail transfer, and a city tour. If IsMainComponent__c is ticked on the accommodation component, the 25% fee is calculated against the total that includes the accommodation price. If IsMainComponent__c is not ticked on the accommodation component, its price is excluded and the percentage-based fee applies to a smaller total — likely not the intended behaviour for a core component.

Technical Note

The cancellation fee engine (CancellationFeeCalculations.cls) iterates through all price lines per passenger and applies cancellation rules uniformly. These checkboxes control behaviour upstream — determining which items generate price lines that feed into the cancellation calculation. The cancellation calculator itself does not filter by component type. Source: Confirmed via field testing and code review. Verified in CancellationFeeCalculations.cls.

Component Behaviour

Field: Component__c.ComponentBehaviourChoice__c — Controls how the component handles quantity and selection in the Booking Wizard.

API ValueLabelDescription
SingleSingleComponent is selected once. One unit per booking (e.g., a hotel stay for the trip).
PassPassComponent applies as a pass across the trip (e.g., a National Park pass valid for multiple days).
UnlimitedUnlimitedComponent can be added multiple times with no limit (e.g., extra excursions).
DayTicketsDay TicketsComponent is managed as day-by-day tickets (e.g., daily activity passes).

Related field: MaxTimes__c — sets an upper limit on how many times a component can be selected (only applicable for Unlimited behaviour).

Pricing Behaviour

Field: Component__c.PricingBehaviorChoice__c — Controls whether cost and sell prices from the associated supplier service are applied to the itinerary.

ValueEffect
StandardBoth cost and selling price from the associated supplier service will be used. This is the default for most components.
Free ComponentThere is no cost or sell price added to the Itinerary, even if the supplier service has a valid cost or sell price for the booking date. Use this for complimentary inclusions where you do not want any pricing to appear.
No Cost RateThe cost rate from the supplier service will not be added to the Itinerary, but the sales rate will be. Use this when you want to charge the customer but treat the component as zero-cost internally (e.g., bundled services where the cost is already accounted for elsewhere).
No Sales RateThe sell rate from the supplier service will not be added to the Itinerary, but the cost rate will be. Use this when you need to track the supplier cost but do not want the component to contribute to the customer-facing price (e.g., an included transfer where the cost is absorbed into the package margin).

Departure Mode

Field: Component__c.DepartureMode__c — For packages with Departure Type = Fixed, determines whether this component is applicable to all departures on the package or only to selected departures (matches the field description on Component__c).

API ValueLabelDescription
Applicable to AllApplicable to AllThe component applies to every departure. No per-departure assignment is needed. Default for new components.
Selective Departures for ComponentSelective Departures for ComponentThe component applies only to departures you assign. In the component edit modal, set this mode, save if needed, then use + Assign to Package Departure Dates — that opens the component departures selection modal (not a package-level screen).
Selective Departures for Component OptionsSelective Departures for Component OptionsDeparture applicability is defined per component option. In the component edit modal, use + Assign to Package Departure Dates — that opens Assign Component Options to Departure (not a package-level screen).

Where this lives in the UI

Departure Mode and + Assign to Package Departure Dates are on the component edit modal (open the component from the package itinerary). They are not configured from the package record layout or from package-level editor views without opening the component.

Use Case

Use Selective Departures for Component when the whole component applies only on some departures (e.g., whale watching only on summer departures). Use Selective Departures for Component Options when different options under the same component apply on different departures (e.g., one room type only on selected departure dates).

Looking for Pricing Controls? Pricing Controls — managing BAR levels, bulk price adjustments, and discount configurations — is a separate revenue-management feature. See the dedicated Pricing Controls guide.

Day Range & Night Fields

These fields control the day range and night behaviour of a component within the package itinerary.

FieldAPI NameDescription
Start DayStart__cThe day within the package itinerary that this component begins. The field label changes depending on the service type — it displays as “Check In” for accommodation, “Pick-up” for car rental/hire, and “Day” for other service types.
End DayEnd__cThe day within the package itinerary that this component ends. The field label changes depending on the service type — it displays as “Check Out” for accommodation and “Return” for car rental/hire. Some service types that do not span multiple days (e.g., activities, transfers) do not display an End Day field.
Available Any DayIsAvailableAnyday__cWhen checked, this component is not tied to specific days and can be placed on any day in the itinerary.
Min Number of NightsMinNumberOfNights__cMinimum number of nights this component can be booked for. Used for Pre/Post Stay components where the traveller can choose a flexible number of nights within an allowed range (e.g., minimum 2-night stay).
Max Number of NightsMaxNumberOfNights__cMaximum number of nights this component can be booked for. Used for Pre/Post Stay components to cap the upper limit of the flexible night range.
Create Item Per Night Per RoomCreateItineraryItemPerNightPerRoom__cWhen checked, the system creates a separate itinerary item for each night and each room. Used for per-night pricing models (e.g., hotel stays with different nightly rates).
Controls Departure DatesIsControllingDepartureDates__cWhen checked, this component’s dates drive the departure date of the package. This field is not edited directly on the component — it is set from the Package Departures tab (see note below).

Where is Controls Departure Dates set?

You won’t find this checkbox on the component page layout. To set which component controls departure dates, go to the Package Departures tab on the package record. Select one or more components from the dropdown list — the system marks those components as controlling departure dates automatically. The checkbox on the component record (IsControllingDepartureDates__c) is updated behind the scenes based on your selection.

When to use Create Item Per Night Per Room

This is a standard platform setting available to any customer — it is not specific to any single implementation.

When this checkbox is checked, each night of a Pre/Post Stay gets its own booking line. A 3-night pre-stay in a double room creates 3 separate itinerary items (one per night, per room). This enables:

  • Per-night pricing — each night can carry a different rate (e.g., weekend vs weekday, seasonal surcharges)
  • Per-night confirmation tracking — Night 1 can be confirmed while Night 2 is still on request
  • Incremental changes — add or remove individual nights without replacing the entire stay

When this checkbox is unchecked (the default), the entire stay is a single booking line regardless of duration. This is simpler but means any change to the stay requires replacing the whole line, and all nights share the same rate and status.

Use the per-night setting when your accommodation supplier quotes different rates per night, or when your operations team needs to track confirmation at the individual-night level.

IMPORTANT

MUST be set if you want free-night offers from Promos — for example cheapest night free or most expensive night free — to work on that accommodation. The promotion engine needs individual night line items to identify which night to discount. Without this setting, the entire stay is a single line and the engine cannot apply a per-night promotional discount.

Tip: Step-by-step setup for those promotion types in Booking Wizard is still being documented. See Promotions in Booking Wizard — Free night promotions (placeholder).

See Pre/Post Stay Configuration for the full setup of flexible accommodation nights.

Sort & Display Fields

FieldAPI NameDescription
SortSort__cControls display order of the component within the Package Editor and itinerary. Lower values appear first.
Day-by-Day DisplayDayByDayDisplay__cControls whether this component appears in day-by-day itinerary views and documents.

See How Sort Order Works for a detailed explanation of display order vs auto-selection logic.

Commission Fields

The commission on a component can be calculated in different ways depending on the business needs. The Reseller Commission Settings picklist on each component controls which method is used:

  1. Package Level (default) — Uses the Commission Group specified on the Package. If the component sits inside a Bundle, the Bundle’s Commission Group is used instead.

    Tip: For package commission to apply on the component, a Commission Group must exist on the Package or Bundle. If the component is left on Package Level (the default) and no Commission Group is set on the Package, commission is zero — the system does not fall back to the Item (service) Commission Group. Use Inherit From Selected Service when commission should come from the service instead.

  2. Inherit From Selected Service — Uses the Commission Group from the Item (service) linked to the selected component option. The system checks for a commission group in this order: Add-on → Price Category → Item. If none of these records have a Commission Group set, no commission is applied for that component — it does not fall back to the Package-level Commission Group.

  3. No Reseller Commission — No commission is applied for this component regardless of any Commission Group configured elsewhere.

  4. Override — Enables a Reseller Commission Group lookup directly on the component, allowing the user to select a different Commission Group that applies only to this component.

Note: The Reseller Commission Group field on the component is only visible and editable when Override is selected. In all other modes the system clears the field automatically.

FieldAPI NameDescription
Reseller Commission SettingsResellerCommissionSettings__cPicklist controlling which commission calculation method is used for this component. Values: PackageLevel (default), InheritFromSelectedItem, NoResellerCommission, Override.
Reseller Commission GroupResellerCommissionGroup__cLookup to a Commission Group. Only editable when Reseller Commission Settings is set to Override — in all other modes this field is hidden and cleared automatically.

Primary Component

Field: Component__c.PrimaryComponent__c (checkbox) — Only applies to Fixed Departure packages (DepartureType__c = 'Fixed').

When checked, this component is flagged as a core part of the package. The system uses this flag for departure variation highlighting: if a specific departure is missing a component marked as primary, that gap is surfaced in the Package Editor so users can see which departures have incomplete component coverage.

For example, if a whale-watching excursion only runs on summer departures it would not be marked as primary — but the main accommodation would be, so its absence from any departure would be flagged.

Primary Component and Departure Mode are a paired set of fields — both appear in the component editor only for Fixed Departure packages. When a new component is created, both default to on: Primary Component is checked and Departure Mode is set to “Applicable to All”.

Note: Primary Component does not affect pricing calculations, date ranges, or booking wizard flow. It is purely a departure-completeness indicator.

Other Component Behaviour Fields

FieldAPI NameDescription
Is Mandatory OptionalIsMandatoryOptional__cOptional component that still requires a selection in Booking Wizard
On Ground Payment RequiredOnGroundPaymentRequired__cIndicates payment for this component is collected on-ground rather than pre-trip
Time AvailabilityTimeAvailability__cControls time-based availability filtering
Apex ClassApexClass__cCustom Apex class for component-specific business logic

Other Notable Fields

IsActive__c — Must be checked for the component to be included in the package ComponentType__cPriceCategories (standard), Live (live service), or Bundle (references another package)


Part 3: Component Options

What Component Options Are

Component Options link supplier services to components. Each option represents one possible service that can fulfil the component. A hotel component might have three options: Hotel A, Hotel B, Hotel C — the guest (or the default) selects one.

Component options are managed via the Component Option Edit Modal in the Package Editor, accessed by clicking the option icon on a component card.

Component Options vs Price Categories

A component links to a service, and each service has price categories (e.g., “King Bed”, “Two Twins”). Component options configure how those price categories are offered within the package — with which pricelist, pricing behaviour, and service level.

Creating Component Options

For each component, click New Component Option. The creation flow starts by selecting the Supplier (Account), which filters the available services based on the component record type — for example, if the component record type is Accommodation then only Accommodation services will be displayed. Select the Service from that supplier, then configure the remaining fields.

The fields available on a component option depend on the option type. The sections below group fields by Price Category options, Meal Plan options, Add-on options, and Rail options. Fields that apply to every option type are listed first; fields that apply to several types but not all are grouped next.

Fields in the modal header

These fields sit above the option tables in the Component Option Edit Modal (they are not columns in the Meal Plan / Price Category / Add-on grids).

FieldAPI NameDescription
Service SortServiceSort__cControls which service is auto-selected when other options are filtered out. Defaulting priority: (1) Default flag; (2) lowest Service Sort; (3) Sorting Scheme; (4) undefined. Lowest value wins.
SortSort__cDisplay order of options within the component. Options shown in ascending sort order.
UnpricedUnpriced__cShows “Unpriced” in Booking Wizard. Shown only when the component Selection Type is Optional (hidden for Required and other selection types).

Fields on Price Category, Add-on, and Rail options (not Meal Plan)

FieldAPI NameDescription
Service LevelServiceLevel__cWhich service level tier this option belongs to. When ServiceLevelMode__c is not Standard, selecting a tier at booking time shows only matching options.

Price Category options

FieldAPI NameDescription
Pre-Selected in CostingsIsPreSelectedInCostings__cAuto-selects this option as the default when a Package is added to an Itinerary via Costings. Shown only when the component Selection Type is Optional (commonly Package Item components). Not used in Package Search.
Price CategoryPriceCategory__cWhich price category to use. Links to the service’s pricing tier (e.g., “King Bed”, “Two Twins”).
Price ListPricelist__cThe pricelist to use. Determines cost and sell rates.
Available TimesAvailableTimes__cDefault departure/arrival times for the option. Shown when the component Time Availability is not inherited from the service. On Live components the same control appears on these rows (labelled Time From).

Meal Plan options

IMPORTANT

Meal Plan options apply only to Accommodation type services.

FieldAPI NameDescription
Board BasisBoardBasis__cMeal plan assignment. Links to a board basis record (e.g., Bed & Breakfast, Half Board, Full Board).
DefaultIsDefault__cMarks this as the default meal plan. When a package is added to a quote, the default meal plan is pre-selected.

Add-on options

Add-on options are not available when the component is Live (Rail) — the modal does not show an Add-on table for Live components.

FieldAPI NameDescription
Pricing BehaviorPricingBehaviorId__cOverrides the component-level pricing behaviour for this specific option. See Pricing Behaviour for values.
Price ListPricelist__cThe pricelist to use. Determines cost and sell rates.
Add-onAddon__cLinks to an add-on record.
MandatoryIsMandatory__cWhether the add-on is automatically included. When checked, the add-on is added during booking. Users cannot add mandatory add-ons manually in Package Search; the system handles them automatically.
IncludedIsIncluded__cWhether the add-on is included when booking the service. This field is not on the page layout — it is set automatically to true when an add-on component option is created.

Rail options

These fields apply to Live (Rail) components on the Price Category–style rows in the modal (there is no separate Meal Plan or Add-on table for Live). Available Times for Live uses the same field documented under Price Category options above.

FieldAPI NameDescription
Fare ClassFareClass__cRail fare class (e.g., Standard, Premium, Bedroom).
Departure LocationDepartureLocation__cStart location for the rail service.
Arrival LocationArrivalLocation__cEnd location for the rail service.

Part 4: Sort Order, Defaulting & Display

How Sort Order Works

Two concepts work together here: display order (what sequence things appear in on screen) and auto-selection (which option the system picks when you add the package to a booking). They use different fields and follow different logic.

Display Order

Display order controls the sequence in which components and options appear in the Package Editor, Booking Wizard, Builder, Costings, and customer-facing documents.

  • Components are ordered by the Sort__c field on Component__c — lowest number first (ascending). A component with Sort 10 appears before Sort 20.
  • Options within a component are ordered by ComponentOption__c.Sort__c — again lowest first.
  • In some UI contexts, the option marked as Default (IsDefault__c = true) is promoted to the top of the list regardless of its sort value.

Use increments of 10 (10, 20, 30…) so you can insert new components or options later without renumbering everything.

How the System Picks a Default

When a package is added to a quote, the system needs to auto-select one option per component. It follows this priority, top to bottom — the first rule that produces a match wins:

  1. Default flag — if one option has IsDefault__c checked, it is selected. Done.
  2. Lowest Service Sort — if no Default flag is set, the system picks the option with the lowest ServiceSort__c value (1 beats 2, 2 beats 3, etc.).
  3. Sorting Scheme — if Service Sort values are equal or unset, and the component has a Sorting Scheme configured (via ComponentDefault__c), the scheme’s JSON rules determine the winner.
  4. Undefined — if none of the above apply, the selection order is undefined and you should not rely on which option gets picked.

Worked Example

Imagine a hotel component with three options:

OptionDefault?Service SortStatus
Hotel ANo1Available
Hotel BNo2Sold Out
Hotel CYes3Available
  • Auto-selection: Hotel C is picked because the Default flag (rule 1) takes priority — even though Hotel A has a lower Service Sort value.
  • Display order: The options appear in Sort order (determined by each option’s Sort__c field), with Hotel C potentially promoted to the top of the list in some UI contexts because it is the Default.
  • If Hotel C were sold out: The Default flag no longer applies (the option is unavailable). The system falls to rule 2 and selects Hotel A (Service Sort 1, and it is available). Hotel B (Service Sort 2) is skipped because it is also sold out.

Best practices:

  • Accommodation bundles anchor the major segments (lowest sort values per city/destination)
  • Activities and transfers follow their parent bundle in sort order
  • Live components slot in wherever the transport segment occurs
  • Keep sort values consistent across similar packages for operational efficiency

Advanced Defaulting

Beyond the simple IsDefault__c flag on component options, Kaptio supports advanced defaulting through the ComponentDefault__c object.

Advanced defaulting is typically used when options should be filtered or sorted by external criteria before defaulting.

See the Priority Schemes guide for how to create Defaulting, Filtering, and Sorting Schemes and assign them to Package Components.


Part 5: Filtering Package Search Results

Categories and activity-level fields control how packages appear and can be filtered in Package Search. This section groups them together so you can configure search behavior in one pass.

Categories

The Categories field (Categories__c) is a multiselect picklist on the package record. It allows packages to be grouped and filtered by type.

Categories are defined in Salesforce metadata — values like “Family Package”, “Adventure Package”, “Luxury”, “Rail Journey” are configured by administrators. A single package can belong to multiple categories.

Categories are used for:

  • Filtering packages in search results
  • Organizing packages in the Package Editor
  • Grouping packages in reports and dashboards

There is a deprecated single-select Category__c field. Always use the multiselect Categories__c field for new configuration.

Activity Level and Pace

FieldAPI NamePurpose
Activity LevelActivityLevel__cPhysical demand rating for travellers
PacePace__cDaily schedule tempo
Minimum AgeMinimumAge__cRecommended minimum guest age

These fields do not affect pricing or availability, but they differ in how they surface to users:

  • Activity Level is a working filter in Package Search — users can select activity levels from a dropdown to narrow search results.
  • Pace and Minimum Age are display-only — they appear in search results and on documents but are not built-in filters in Package Search.

All three values are available via the Kaptio API (KTAPI). Customers building their own websites can read Activity Level, Pace, and Minimum Age from the package data and build custom filtering on top. Activity Level can also be filtered directly via the API’s package search endpoint.


Part 6: Group Tours & Price Models

Group Tours are the operational layer that connects a Package to tour departures, price models, and service conversion. The Package remains the sellable product — the Group Tour record (GroupTravel__c) wires it into the group-tour workflow: channel, currencies, departures, pricing, and operations.

For the full guide — including how Group Tours relate to Packages, the build order, price model configuration (configuration groups, group sizes, tour table), pricing overview (margin groups, calculation states, passenger discounts, export), and service conversion — see the dedicated Group Tours — Configuration Guide.


Part 7: Downstream Impact Reference

The settings you configure on a package flow into three key areas of the platform. Understanding these areas helps you predict how a configuration change will affect the end-user experience.

  • Package Search — The customer-facing (or agent-facing) search interface where users browse and filter available packages by date, destination, price, and availability. Package Search is powered by KTAPI and can be embedded in ecommerce sites or used within Salesforce. Configuration choices like departure type, visibility, and inventory settings directly control what appears in search results and how packages are displayed.

  • Booking Wizard — The guided, step-by-step booking flow inside Salesforce that takes a user from package selection through to a confirmed booking. The wizard handles room/cabin selection, optional component add-ons, passenger details, and pricing summary. Many package and component settings control which steps appear, what options are available, and how prices are calculated within the wizard.

  • Package Modifications — Post-booking changes made through the Booking Wizard in modification mode. This includes transferring to a different departure, changing occupancy, adding or removing components, and cancelling rooms or entire packages. Modification behaviour is governed by cancellation policies, component flags (like IsMainComponent__c), and pilot feature toggles.

The tables below show how each package and component setting affects these three areas. Use this to understand the ripple effects of configuration changes.

Package-Level Settings

SettingPackage SearchBooking WizardPackage Modifications
DepartureType__cControls date-based search behaviour (Fixed = specific dates, Anyday = any date)Determines room/cabin selection flowAffects transfer departure matching
SellingPriceSetupChoice__cAffects displayed prices in search resultsControls price calculation in wizard summaryAffects price comparison on modify
ServiceLevelMode__cFilters search by service level availabilityShows service level selector; coordinates component optionsService level preserved on modify
PhysicalInventorySelection__cNo direct impactControls room/cabin number selection stepAffects change occupancy room reassignment
VisibilitySetting__cControls which users/channels can see the packageNo direct impact (already in wizard)No direct impact
IsActive__cInactive packages excluded from searchNo direct impactNo direct impact

Component-Level Settings

SettingPackage SearchBooking WizardPackage Modifications
SelectionType__cRequired components included in search priceOptional components shown in Options tab; NonRefundable greyed if removedNonRefundable components cannot be refunded on cancellation
BookingWizardTab__cNo direct impactControls which tab displays the component (Options, Pre Stay, Post Stay, Protection Plan)Tab assignment preserved on modify
PackageTotals__cMay affect displayed total in searchAffects content/document generation onlyDoes NOT affect cancellation fees or payment schedules
IsMainComponent__cNo direct impactNo direct impactControls inclusion in percentage-based cancellation fees
IsMainTourComponent__cNo direct impactNo direct impactControls inclusion in fixed-amount cancellation fees
ComponentBehaviourChoice__cNo direct impactControls selection quantity (single pick, unlimited, day tickets)Behaviour preserved on modify
PricingBehaviorChoice__cFree components show as “Included”Controls price display (free, no cost, no sales)Pricing behaviour preserved on modify
InventoryRequired__cAffects availability status in search resultsControls inventory check and status badges (FS, AL, RQ, SO)Inventory rechecked on modify/change occupancy
DepartureMode__cSelectively assigned components only appear for assigned departuresComponent hidden for non-assigned departuresComponent availability on transfer target departure

Part 8: Admin Reference

Pilot Features

Pilot Features gate access to specific package-related capabilities. They are defined in Kaptio Travel Settings > User Overrides > Company Settings [Edit] > Pilot Features App Wide.

Pilot FeatureWhat It EnablesArea
PackageModificationBooking Wizard in modification modePackage Modifications
ChangePackageOccupancyBooking Wizard in change occupancy modePackage Modifications
ChangePackageOrDepartureBooking Wizard in transfer modePackage Modifications
CancelRoomOrPackageBooking Wizard in cancellation modePackage Modifications
CreatePassengerReservationNumbersAuto-create reservation numbers from PackageDepartureDepartures
BookingFlowInventoryReserveReserve inventory items on itinerary creationBooking Wizard
AllowWaitListRequestsEnable waitlist functionality in Package Search and Booking WizardPackage Search / Booking Wizard

Permissions

Use the tables below only for package configuration: creating and editing Package, Component, and Component Option records, plus reading Services (items) and Inventory while you build and validate a package. Permissions for searching and booking packages (Package Search, Booking Wizard, itinerary creation) are documented in Package Search — Permissions. Permissions for post-booking changes are in Package Modifications.

Object Permissions

ObjectAPI NameAccess NeededWhy
PackageKaptioTravel__Package__cCreate, Read, EditCreate and configure package records
ComponentKaptioTravel__Component__cCreate, Read, EditAdd and configure components within a package
Component OptionKaptioTravel__ComponentOption__cCreate, Read, EditAdd and configure component options linking services to components
Service (Item)KaptioTravel__Item__cReadBrowse and select supplier services when creating component options
InventoryKaptioTravel__InventoryItem__cReadView inventory availability during package configuration

Booking and modification workflows — Overrides to sell price, tax, commission, cancellation fees, itinerary creation, and bulk operations use different permission requirements than package configuration. See Package Search — Permissions and Package Modifications.

App Settings

AppSettings__c is a custom setting that controls org-wide package behaviour.

FieldDescriptionImpact
EnableAllotmentCategories__cEnables allotment category controls in the Package Editor component edit modalShows additional allocation behaviour fields and extra days/nights picklists
EnableLockSellPrice__cEnables the sell price locking mechanismPrevents sell price recalculation after initial booking
AllowLiveServicesAsOfflineServices__cAllows live service components to function as offline servicesAffects component type behaviour
CancellationRecordType__cRecord type set when an itinerary is fully cancelledPackage Modifications cancellation flow
DefaultTaxProfile__cDefault tax profile for pricing calculationsTax calculation on all price lines
RoomTypeFilterEnabled__cEnables room type filtering in the Booking WizardBooking Wizard room selection step

Field Sets

Field sets allow admins to customise which fields appear in the Package Editor UI without code changes.

ObjectField SetPurpose
Package__cFieldsOnPackageEditControls which fields appear on the Package Edit modal. Add custom fields here to make them editable in the Package Editor.
Component__cFieldsOnComponentEditControls which fields appear on the Component Edit modal. Custom component fields added to this field set will appear in the edit form.
ComponentOption__cFieldsOnFilteringSchemeControls filtering scheme fields for component options.

Extending the Package Editor

To add a custom field to the Package Editor: create the field on Package__c or Component__c, then add it to the corresponding field set above. The field will appear as an editable input in the Package or Component edit pop-up, and its value is saved on the record.

IMPORTANT

Adding a field to the field set does not automatically surface it in Package Search results, the Booking Wizard, travel documents, or the external API (KTAPI). Those channels each have their own configuration and would require additional development to display the new field.

The custom field data lives on the Salesforce record, so it is available in Salesforce reports, list views, automation (flows and workflow rules), and page layouts. To surface it in customer-facing channels — such as ecommerce search results, booking confirmations, or API responses — additional configuration or development is required.


Validation Checklist

Kaptio includes validation rules on Package, Component, and Component Option records that enforce required field combinations at save time. The checklists below serve as a manual QC process to catch configuration issues that validation rules alone do not cover — such as sort order, default selection, and category assignments.

For automated post-build verification, use Costings or Builder to test pricing calculations, and the Package Search API to confirm the package appears correctly with the expected filters and pricing. See Package Search Troubleshooting for post-build verification steps.

Before activating any package, verify:

Package Record

  • Record Type selected (Package or Bundle)
  • Departure Type is correct (cannot be changed after save)
  • Duration matches the total trip length in nights
  • Selling Price Setup configured
  • Cost Setup configured
  • Service Level Mode set (if applicable)
  • Booking Wizard Unit Number Selection configured (PhysicalInventorySelection__c)
  • Visibility Setting and Access Rule are configured
  • Categories assigned for search filtering
  • Start and End Locations are set
  • Package marked as Active

Components

  • Each component has correct Selection Type (Required / Optional / NonRefundable)
  • Optional components have Booking Wizard Tab set (Options / Pre Stay / Post Stay / Protection Plan)
  • Sort order produces the correct itinerary sequence
  • Start Day and End Day are set on each component
  • Package Totals setting reviewed (Included vs Excluded)
  • IsMainComponent__c reviewed on optional components (percentage-based cancellation fees)
  • IsMainTourComponent__c reviewed on optional components (fixed-amount cancellation fees)
  • Component Behaviour set correctly
  • Pricing Behaviour set correctly
  • No duplicate or orphaned components exist
  • Components marked as Active

Component Options

  • Every component has at least one option assigned
  • Default options are marked for components with multiple choices
  • Pricelists assigned to component options (if in use)
  • Service levels linked (if Service Level Mode is not Standard)
  • Price Categories are selected on each option
  • Sort order of options matches the intended display sequence
  • Departure assignments set (if Departure Mode is Selective Departures for Component or Selective Departures for Component Options)

Pricing

  • Prices configured for all price categories and channels

Permissions

  • Users have Create/Read/Edit on Package, Component, and Component Option objects
  • Users have Read access to Services (Item) and Inventory

Activation

  • Activate the package and run a test search
  • Verify the package appears with correct pricing
  • Confirm component ordering matches expectations
  • Test with different service levels (if applicable)

Common Issues and Solutions

IssueLikely CauseSolution
Package not appearing in search at allActive is unchecked; Visibility is Restricted with no matching Access Rule; or no valid package seasons cover the searched datesCheck Active flag; verify Access Rule assignments match the search channel; confirm package seasons include the departure date (and day-of-week rules)
Components in wrong orderSort values are incorrect or missingReview Sort__c on each component; use increments of 10
Wrong service selected by defaultIsDefault__c not set, or advanced defaulting overridingCheck IsDefault__c on component options; review ComponentDefault__c records if using advanced defaulting
Package shows “Unpriced”Unpriced__c is checked on the package or a component optionUncheck the flag, or verify that pricing is configured
Component not appearing in Booking WizardComponent is inactive (IsActive__c = false) or Booking Wizard Tab is not setActivate the component and verify the tab assignment
Access Rule not workingThe Access Rule does not include the Channel or Account the user is searching or booking under, or Visibility is not Restricted (Access Rules apply only when Visibility is Restricted)Set Visibility to Restricted; then on the Access Rule, verify the correct Channel and Account assignments
Categories not filtering correctlyUsing deprecated Category__c field instead of Categories__cSwitch to the multiselect Categories__c field
Package commission was expected but reseller commission is zeroReseller Commission Settings is Package Level (default) but there is no Commission Group on the Package or Bundle — Package Level does not fall back to the ItemSet Commission Group on the Package (or Bundle, if the component sits in a bundle), or change the component to Inherit From Selected Service so commission resolves from the service
Search returns results but no pricePrice seasons or component option pricing is missing or misconfiguredCheck there are valid price seasons and pricing for the component option, and that pricing is expected based on Pricing Behaviour
Wrong price showing for a departureDeparture date falls in the wrong price season due to date boundary errors, or overlapping price seasons resolve unexpectedlyCheck price season start/end dates — ensure boundaries align correctly (no off-by-one errors); reduce overlapping price season windows where possible
”No availability” despite correct package seasonsInventory seasons or allotments don’t cover the date, capacity is zero, or inventory is marked unavailableVerify InventorySeason and AllotmentDay for the departure date; check inventory status
”No availability” but seasons and base inventory look correctInsufficient availability for the requirement — e.g. 3 rooms requested but only 1 room available on that dateConfirm remaining capacity (rooms, pax, or units as configured) meets the full requested quantity for that date

ObjectAPI NamePurpose
PackageKaptioTravel__Package__cTop-level product container
ComponentKaptioTravel__Component__cSegment within a package (Bundle, Component, Live)
Component OptionKaptioTravel__ComponentOption__cLinks a supplier service to a component
Component DefaultKaptioTravel__ComponentDefault__cAdvanced defaulting rules with filtering and sorting schemes
Access RuleKaptioTravel__AccessRule__cControls channel and account access to packages
Channel Access Rule AssignmentKaptioTravel__ChannelAccessRuleAssignment__cLinks a channel to an access rule
Account Access Rule AssignmentKaptioTravel__AccountAccessRuleAssignment__cLinks an account to an access rule
ServiceKaptioTravel__Item__cSupplier service offering
Service LevelKaptioTravel__ServiceLevel__cPricing tier (Standard, Superior, Luxury)

See Also

Downstream Guides (affected by settings in this guide)

Departure-Type Specific Guides

Support

Back to Gallery