Service Level Configuration

To be Reviewed

Setting up multi-tier pricing with service level assignments, configuring search API integration, and enabling upsell flows during booking.

Version 12 min read | March 4, 2026 Gallery

Overview

Service Levels allow a single package to offer multiple pricing tiers — Standard Class, First Class, Premium Class, and so on — each with its own component-level pricing. When a guest books, they choose a tier and the system adjusts every component price accordingly.

This mechanism is foundational for operators who sell the same itinerary at different quality levels. Rather than duplicating packages for each tier, you create one package, assign service levels to it, and set per-tier prices on each component. The result is a single searchable product that fans out into multiple price points at booking time.

Service levels also have a critical integration point with the Search API. Packages that have service level assignments will only appear in search results when the service_level_ids parameter is included in the request. This is the single most common reason a package “disappears” from search after service levels are added.

Prerequisites

Before configuring service levels, ensure the following are in place:

  • Package created — the base package exists with at least one itinerary and component structure.
  • Components built — all components (accommodation, transport, activities, etc.) are created and linked to the package.
  • Pricing strategy defined — you know how many tiers you need and how pricing differs between them.
  • Search integration access — you can modify the front-end or API configuration that sends search requests.

Part 1: Understanding Service Levels

When to Use Service Levels

Use service levels when:

  • The same itinerary is sold at multiple quality tiers (e.g., Standard and Premium accommodation).
  • You want to enable upsell flows where guests can upgrade during booking.
  • Different component suppliers or room categories map to different price points.
  • Your front-end or booking engine supports tier selection.

Use standard pricing when:

  • There is only one quality level for the package.
  • The product is simple and upsell is not required.
  • You want to minimize configuration effort.

Common Service Level Patterns

PatternExample TiersWhat Changes Between Tiers
Accommodation qualityStandard Room, Superior Room, SuiteHotel category or room type
Transport classEconomy, Business, First ClassSeat class on trains or flights
Experience levelEssential, Comfort, LuxuryCombination of accommodation, meals, and activities
Inclusion scopeBase, Plus, All-InclusiveWhich optional components are included

How service levels interact with search depends on whether you’re using Kaptio’s built-in Package Search or calling the API directly.

For users searching within Kaptio’s Package Search feature, service levels are handled automatically. When service levels exist in the org, a Service Levels filter appears on the search screen. All tiers are included by default, so packages with service levels show up in results straight away. Users can toggle individual tiers on or off to narrow results — no additional configuration is needed.

Searching via the API (e.g. Your Website)

If you’re calling the Search API directly — for example, from an ecommerce website — you must explicitly include the service_level_ids parameter in the request. Without it, packages that have service level assignments will not appear in results at all. This applies regardless of departure type — Anyday, Seasonal, or Fixed.

Critical: This is the single most common reason a package “disappears” from search after service levels are added. If a package was previously appearing and stops showing up, check that service_level_ids is included in every search request from your integration.

The API uses this parameter to determine which tier’s pricing to return. Without it, the API has no way to resolve which price to show, so it excludes the package entirely.

Part 2: Creating Service Level Records

Step 1: Create Service Level Records

  1. Navigate to Kaptio Settings > SERVICE & PACKAGE > Service Levels.
  2. Click New Service Level.
  3. Enter the Name — this is the display name guests will see (e.g., “First Class”).
  4. Enter the API Name — the internal identifier used in API calls and configuration.
  5. Set the Order (sort position) — this integer controls the display sequence wherever tiers appear, including search results, the booking upsell flow, and list views. Lower numbers appear first. The tier with the lowest Order value is treated as the primary tier — it is shown first when a guest views the package and used for initial price display. For example, set your base tier to 1, the mid-range to 2, and premium to 3.
  6. Save the record.
  7. Repeat for each tier you need.
FieldPurposeExample
NameDisplay name shown to guests”Standard Class”
API_Name__cInternal identifier for API calls”standard_class”
Order__cSort position (ascending)1, 2, 3

Screenshot of a list view showing three service level records ordered by the Order field.

Part 3: Assigning Service Levels to Packages

Step 2: Set Service Level Mode and Select Service Levels on the Package

Once service level records exist, assign them directly on the Package record:

  1. Open the Package record.
  2. Set the Service Level Mode field — this tells Package Search how to behave for this package (e.g., whether to show tier selection, how to display pricing).
  3. In the Service Levels field on the Package, select the relevant service levels (e.g., “Standard Class”, “First Class”).
  4. Save the Package.

Screenshot of the Package record showing the Service Level Mode field and the Service Levels selection field with two tiers selected.

Assignment Rules

  • A package can have 2 to 5 service levels selected.
  • Every selected tier must have pricing configured on the Service Price Category. A Price Category without pricing will cause errors at booking time.
  • Removing a service level from the Package removes it from search results for that tier.
  • If you remove all service levels, the package reverts to standard pricing behavior and will appear in search without service_level_ids.

Part 4: Configuring Tier-Specific Pricing

Step 3: Assign Service Levels and Set Prices via Service Price Categories

The service level is assigned on the Component Option, but per-tier pricing is set on the Service Price Category, not the Component Option itself:

  1. Open a Component Option within the package.
  2. Assign the relevant Service Level to the Component Option.
  3. Set the cost and sell price for that tier on the Service Price Category associated with the Component Option.
  4. Repeat for each service level, creating a Component Option per tier where pricing differs.
  5. Repeat for every component in the package.
Component OptionStandard ClassFirst ClassPremium Class
Accommodation – Night 1$150 (Standard Room)$250 (Deluxe Room)$400 (Prestige Room)
Accommodation – Night 2$150 (Standard Room)$250 (Deluxe Room)$400 (Prestige Room)
Transport – Day 1$80$80$80
Activity – City Tour$45$45$45
Package Total$425$625$925

Screenshot of a Component Option showing the assigned service level and per-tier sell price.

Step 4: Verify Price Differences

After setting tier-specific pricing, verify that the total package price differs meaningfully between tiers:

  1. Create a test itinerary using Costings / Builder and add the relevant Service Price Categories for each Service Level to compare tier totals.
  2. Confirm that the price delta between tiers aligns with your pricing strategy.

Warning: If two tiers show the same total price, guests have no incentive to choose one over the other. Review your component pricing to ensure each tier has a clear value proposition.

Part 5: Search API Integration

How Search Finds Service Level Packages

The Search API uses the service_level_ids parameter to:

  1. Filter — only return packages that have at least one of the specified service levels assigned.
  2. Price — return the price for the specified service level tier.

Without this parameter, packages with service level assignments are excluded from results.

GET /api/v1/search/packages
  ?departure_date=2026-06-15
  &channel_id=abc123
  &service_level_ids=sl_standard,sl_first_class

The parameter accepts one or more service level IDs, comma-separated. The API returns results for each matching tier.

Step 5: Configure Search Parameters

Ensure that every search request from your front-end or integration includes service_level_ids:

  1. Identify where search requests are constructed in your front-end or middleware.
  2. Add the service_level_ids parameter with the appropriate tier IDs.
  3. If you want to show all tiers, include all service level IDs.
  4. If you want to default to one tier and let guests upgrade later, include only the default tier ID.
ScenarioParameter ValueResult
Show all tiersservice_level_ids=sl_standard,sl_first,sl_premiumReturns package with pricing for each tier
Show default onlyservice_level_ids=sl_standardReturns package with standard pricing only
No parameter(omitted)Package not returned

Testing Search Results

After configuring the parameter:

  1. Execute a search request with service_level_ids included.
  2. Verify the package appears in results.
  3. Check that the returned price matches the tier’s expected total.
  4. Remove service_level_ids and confirm the package no longer appears.
  5. Test with each individual tier ID to verify per-tier pricing.

Screenshot of a search API response showing a package with service level pricing for two tiers.

Part 6: Upsell Flows

How Upsell Works at Booking Time

The upsell experience differs depending on the channel:

Each service level appears as its own line in the search results. Agents compare the full prices side by side and advise guests on the available tier options.

For guests on a website or booking portal

  1. The first tier (by sort order) is shown with its total price.
  2. The guest sees the available tiers with price differences displayed (e.g., ”+$240 for First Class”).
  3. The guest selects their preferred tier.
  4. All component prices adjust to the selected tier.
  5. The booking is created with the chosen service level recorded.

This flow enables natural upselling — guests see the upgrade options and their cost before committing.

Configuring Upsell Display

The upsell presentation depends on your front-end implementation, but the data contract from the API includes:

FieldDescription
service_level_idThe tier’s unique identifier
service_level_nameDisplay name (e.g., “Premium Class”)
total_pricePackage total for this tier
price_deltaDifference from the base tier’s price (lowest sort order)

Tip: Display tiers in ascending price order with the first tier (by sort order) pre-selected. Show the price delta rather than the absolute price for upgrade tiers — ”+$240” is more persuasive than showing the full price again.

Screenshot or wireframe showing a tier selection UI with three tiers, price deltas, and a selected default.


Validation Checklist

Before going live with service levels on a package, verify each item:

  • Service Level records created with correct names and API names.
  • Order field set correctly — tiers display in the intended sequence.
  • Service Level Mode set on the Package and all relevant Service Levels selected.
  • Every Component Option has pricing configured for its assigned service level.
  • Price totals differ between tiers as expected.
  • Package appears in search results with correct tier pricing.
  • Booking created with the selected service level recorded.
  • For API integrations:
    • Search requests include service_level_ids parameter.
    • Package does not appear in search when service_level_ids is omitted.
    • Upsell flow displays tiers with correct names, prices, and deltas.

Common Issues and Solutions

IssueLikely CauseSolution
Package not appearing in searchservice_level_ids parameter missing from search requestAdd the parameter with the correct service level IDs
Package appears but with wrong priceSearch request includes wrong service level IDVerify the IDs match the assigned service levels
Tier shows $0 price deltaComponent pricing is identical across tiersReview and update component prices for each tier
”No pricing found” error at bookingA Service Price Category is missing pricing for the selected tierCreate pricing on the Service Price Category for the missing tier
Only one tier showing in upsellFront-end only passing one service_level_idUpdate front-end to pass all assigned tier IDs
Tier order is wrongOrder field values are incorrect or duplicatedUpdate the Order field on each Service Level record
Package disappeared after adding service levelsService levels assigned but service_level_ids not added to searchUpdate all search integration points to include the parameter
ObjectPurposeKey Fields
ServiceLevel__cDefines a pricing tierName, API_Name__c, Order__c
Package__cThe bookable product; Service Level Mode and selected Service Levels are set directly hereName, Status__c, DepartureType__c, ServiceLevelMode__c, ServiceLevels__c
ComponentOption__cStores the service level assignment; per-tier pricing is set on the associated Service Price CategoryComponent__c, ServiceLevel__c

See Also

Back to Gallery