Overview
Content in Kaptio is managed through a centralized Content Archive (Content__c) with Content Assignments that link content to packages, services, locations, images, videos, and other records. This separation means one piece of content can be reused across multiple contexts, and content can be maintained independently from product setup.
This guide covers how content works, how to create and assign it, how media is managed, and how content interacts with departure variations in Fixed packages.
Prerequisites
- Packages and services are created (Package Fundamentals, Supplier & Service Setup)
- Content Editor access in Kaptio
Part 1: The Content Archive
Understanding Content Records
Every piece of content — a description, an itinerary narrative, a destination overview — is stored as a Content__c record. Each record belongs to a record type that determines the editing context:
| Content Record Type | Used For |
|---|---|
| Package | Package-level descriptions, overviews, marketing copy |
| Item | Service-level descriptions (hotel details, activity descriptions, transfer notes) |
| Destination | Location and destination overviews |
| Agenda | Day-by-day agenda content (structured blocks) |
| Ship | Vessel descriptions (cruise products) |
| CabinType | Cabin category descriptions |
| Generic | General-purpose content not tied to a specific context |
When creating content from a package, the record type is automatically set to Package. When creating from a service record, it is set to Item. The record type controls which fields and field sets are available in the content editor.
Key Content Fields
| Field | Purpose |
|---|---|
| Title | Headline for the content block |
| Subtitle | Secondary heading |
| Body | Rich text body content |
| Featured Image | Primary image for the content |
| Language | Content language for multi-language setups |
| Tags | Tagging for search and filtering |
Content records support structured block formats (JSON) for agenda-style content, where each block represents a day or segment with its own title, body, and media.
Part 2: Content Assignments
How Assignments Work
A Content Assignment (ContentAssignment__c) is the link between a content record and the entity it describes. Assignments are children of Content__c (master-detail) and point to one target record via lookup fields.
Rule: Each assignment can link to only one target entity, with two exceptions:
- A Service (
Item__c) + Price Category combination is allowed - A Service (
Item__c) + Add-on combination is allowed
This rule is enforced in the platform and prevents ambiguous content mappings.
Assignment Targets
Content can be assigned to any of these entities:
| Target | Field on Assignment | Example Use |
|---|---|---|
| Package | Package__c | Package overview, marketing description |
| Service | Item__c | Hotel description, activity details |
| Package Day | PackageDay__c | Day-specific itinerary narrative |
| Image | Image__c | Linking a content block to a photo |
| Video | Video__c | Linking a content block to a video |
| Location | Location__c | Destination description |
| Price Category | PriceCategory__c | Room type or fare class description |
| Add-on | Addon__c | Add-on description |
| Tag | Tag__c | Tag-based content grouping |
Creating Assignments
- Navigate to the content record (or create one from the package/service context)
- In the Assignments related list, click New
- Select the target entity (e.g., a specific package or service)
- Save
The content is now linked. When an itinerary is built from that package or includes that service, the content engine can pull the assigned content for document generation.
Part 3: Package-Level Content
Setting Up Package Content
Package content describes the overall product — the marketing overview, the trip summary, the highlights.
- Open the package record
- Navigate to the Content section
- Click New Content (or link to an existing content record)
- The content record type is automatically set to Package
- Enter the title, body, and any media
- Save — the content assignment linking this content to the package is created automatically
Content Per Package Day
For day-by-day itinerary content, use Package Day assignments:
- Ensure Package Days are configured on the package
- Create content records for each day
- Assign each content record to the corresponding Package Day via
PackageDay__con the assignment
This produces structured day-by-day narratives that flow into itinerary documents.
Part 4: Service-Level Content
Setting Up Service Content
Service content describes individual supplier offerings — hotel details, activity descriptions, transfer logistics.
- Open the service record
- Navigate to the Content section
- Click New Content
- The content record type is automatically set to Item
- Enter the content
- Save
Content by Price Category
For services with multiple price categories (e.g., Standard Room vs Deluxe Suite), content can be scoped to a specific price category:
- Create a content record
- On the assignment, set both
Item__c(the service) andPriceCategory__c(the room type) - This is one of the two permitted dual-target assignment patterns
The system will use price-category-specific content when available, falling back to the general service content if no category-specific content exists.
Content by Record Type
Different service record types (Accommodation, Activity, Rail, Transfer, etc.) may need different content structures. The content editor adapts based on the Content__c record type and the associated field sets:
- Accommodation services typically need room descriptions, amenity lists, and check-in information
- Activity services need itinerary details, duration, and what’s included
- Rail services need route information, class descriptions, and timetable notes
- Transfer services need pickup/dropoff details and vehicle information
The field sets displayed in the content editor are determined by the Content__c record type, which is set automatically based on the context where content is created.
Part 5: Media Management
Images and Videos
Media in Kaptio is managed through dedicated objects:
| Object | Purpose |
|---|---|
Image__c | Photo assets with S3 URLs |
Video__c | Video assets |
Media is linked to content through Content Assignments. The Image Library provides a UI for browsing and selecting images in different contexts:
- Service media — images and videos for a specific service
- Package media — images and videos for a package
- Content editor — media selection while editing content
Adding Media to Content
- Open the content record in the editor
- Use the Image Library to browse or upload images
- Select images to attach — this creates Content Assignments linking the content to
Image__crecords - Featured images can be set on the content record directly via the
FeaturedImage__cfield
The
Featured_Image__cfield on the Service object (Item__c) is deprecated. Use the Content Archive approach (content + image assignments) for all new media setup.
Media Integrations
For organizations using external media services, the Content Integrations module (IntegrationsService, ContentSearchController) supports importing images and videos from third-party providers into the Kaptio Image and Video libraries.
Part 6: Content and Departure Variations
How Departure Variations Affect Content
For Fixed departure packages, components can be configured to apply to all departures or selected departures via the DepartureMode__c field on the component. This is managed through ComponentDepartureAssignment__c records that link specific components to specific departures.
When components vary by departure, the content attached to those components may need to vary as well. For example:
- A summer departure uses Hotel A (with Hotel A’s content)
- A winter departure uses Hotel B (with Hotel B’s content)
Since content is assigned to services (not to departures directly), the variation happens naturally: when the component option changes per departure, the content follows the assigned service.
Where it gets complex:
- Package-level content (overview descriptions) may need to account for departure-specific differences
- Day-by-day content may need different narratives for different departure variations
- Marketing copy may need to highlight seasonal features that vary by departure
For these cases, consider:
- Using generic package-level content that works across all departures
- Creating departure-specific Package Day content where the itinerary narrative truly differs
- Keeping service-level content accurate for each service variant — the right content will flow through automatically when the correct service is selected
Part 7: Itinerary Content
From Content Archive to Customer Documents
When an itinerary is created from a package, the content engine pulls assigned content and renders it into customer-facing documents:
- Content selection — the system reads content assignments for the package, its services, and package days
- Content rendering —
ContentFactoryandGlobalContentServiceprocess the content blocks (including agenda JSON, rich text, media references) - Document output — rendered content flows into
ItineraryContent__crecords, which are the published customer documents
The ItineraryContent__c object holds the final rendered content with fields for templates, stages, status, and banner images.
Content Override at Itinerary Level
Once an itinerary is created, content can be edited at the itinerary level without affecting the source content archive:
- Open the itinerary
- Navigate to the Content section
- Edit the content — changes are stored on the
ItineraryContent__c/ItineraryContentLineItem__crecords - Changes do not flow back to the source
Content__crecord
This allows per-booking customization (adding a personal note, adjusting descriptions for a specific guest) without affecting the master content.
Validation Checklist
Before publishing content:
Package Content
- Package has a content record with the Package record type
- Title and body are populated with customer-ready text
- Featured image is set
- Package Day content exists for each day of the itinerary
- Content assignments link to the correct package
Service Content
- Each service has a content record with the Item record type
- Price-category-specific content exists where room types or fare classes have distinct descriptions
- Media (images, videos) is attached via content assignments
- Content is appropriate for the service record type (accommodation, activity, rail, etc.)
Media
- Images are uploaded to the Image Library (
Image__c) - Featured images are set on content records
- No broken media references (S3 URLs are valid)
Common Issues and Solutions
| Issue | Likely Cause | Solution |
|---|---|---|
| Content not appearing on itinerary | Content assignment is missing or links to the wrong package/service | Verify the assignment record; check that the correct entity is in the lookup field |
| Wrong content showing for a service | Multiple content records assigned; wrong one is prioritized | Review all assignments for the service; remove duplicates |
| Media not displaying | Image record exists but S3 URL is broken or expired | Re-upload the image; verify S3_Url__c on the Image__c record |
| Content editor showing wrong fields | Content record type doesn’t match the context | Verify the Content__c record type; re-create the content from the correct context if needed |
| Changes to content not appearing on existing itineraries | Itinerary content is a snapshot — changes to the archive don’t flow to existing itineraries | Edit the ItineraryContent__c record directly, or regenerate the itinerary content |
Related Schema Objects
| Object | API Name | Purpose |
|---|---|---|
| Content | KaptioTravel__Content__c | The Content Archive — stores descriptions, narratives, and structured content |
| Content Assignment | KaptioTravel__ContentAssignment__c | Links content to packages, services, locations, media, and other entities |
| Image | KaptioTravel__Image__c | Photo assets in the media library |
| Video | KaptioTravel__Video__c | Video assets in the media library |
| Itinerary Content | KaptioTravel__ItineraryContent__c | Published content on a customer itinerary |
| Itinerary Content Line Item | KaptioTravel__ItineraryContentLineItem__c | Line-level structure within itinerary content |
| Package Day | KaptioTravel__PackageDay__c | Day records within a package for day-by-day content |
See Also
- Package Fundamentals — shared package structure that content describes
- Supplier & Service Setup — creating the services that content is attached to
- Fixed Departure Management — departure variations that affect content selection