Bulk Inventory Import
Overview
The Bulk Inventory Import feature allows you to update inventory data (rates, availability, restrictions) for multiple properties, room types, rate plans, and channels in a single upload.
Instead of making updates one at a time through the calendar or daily update screens, you can prepare all your changes in a CSV spreadsheet and upload them all at once.
This feature is especially useful for:
- Importing data when migrating from other systems
- Importing data from external tools or workflows
- Bulk availability changes
- Making seasonal rate adjustments
The workflow has two parts:
Export Template
Download a CSV template pre-populated with your property's room types, rate plans, and channels
Import Template Data
Upload your completed CSV file to create inventory update requests
Step 1: Build an Import Template
You can configure and download an empty example template to use for population, or you can build your own from scratch or via scripting.
Accessing the Bulk Inventory Template Download Page
Navigate to Admin > Settings > Bulk Inventory Import > Bulk Inventory Import Template (upper right-hand corner).
Configuring Your Template
- Select Date Range
- Choose the start and end dates for the period you want to update
- Use the month picker for quick month selection, or enter custom dates
- Select Room Types
- Check the room types you want to include in the template
- Click the "Room Types" header to toggle all on/off
- Each room type shows its ID number for reference
- Select Rate Plans (if applicable)
- If your property uses rate plans, check the ones to include
- Leave unchecked if you only want to update at the room type level
- Click the "Rate Plans" header to toggle all on/off
- Select Channels
- All Channels (ID: 0) - Updates will be sent to all configured channels
- Or select individual channels for targeted updates
- Selecting any individual channel automatically deselects "All Channels"
- Download
- Click Download Empty Template to generate your CSV file
- The file will contain one row per date, per room type/rate plan, per channel combination
CSV Format Requirements
Column Summary
- Required columns: Date, PropertyId, RoomTypeId, ChannelId
- Optional columns: RatePlanId, Rate, Allocation, StopSell, CTA, CTD, MinNights, MinNightsThrough, MaxNights, MaxNightsThrough, CutOffDays
- Date format: YYYY-MM-DD (e.g., 2025-01-15)
- Boolean values: true/false, 1/0, yes/no
- Empty cells: No change will be made for that field
- ChannelId = 0: Updates will be sent to all configured channels
Column Details
The downloaded CSV contains these columns:
Date
The stay date (YYYY-MM-DD format)
PropertyId
Your property's ID number
RoomTypeId
The room type ID
RatePlanId
The rate plan ID (if rate plans are selected)
ChannelId
The channel ID (0 = all channels)
Rate
Fill in your rate
Allocation
Available rooms
StopSell
true/false, 1/0, yes/no
CTA
Closed to Arrival
true/false, 1/0, yes/no
CTD
Closed to Departure
true/false, 1/0, yes/no
MinNights
Minimum nights requirement
MinNightsThrough
Minimum nights through requirement
MaxNights
Maximum nights limit
MaxNightsThrough
Maximum stay through limit
CutOffDays
Booking cut-off days
ID Reference Download
On the template download screen, you can also download the property, room type, rate plan, and channel IDs for just the active property, or all properties you have access to.
Step 2: Populate Your Data
Open the CSV file in your preferred spreadsheet application (Excel, Google Sheets, Numbers, etc.), or populate with data exported from another tool
Data Entry Rules
Empty Cells = No Change
- Leave a cell empty if you don't want to change that value
- Only cells with values will create update requests
Rates
- Enter the sell rate as a number (e.g., 199.99)
- Rates must be greater than zero
Allocation
- Enter the number of rooms available (e.g., 10)
- Use 0 to close out availability
- Must be a non-negative whole number
Boolean Fields (StopSell, CTA, CTD)
- Accepted values: true, false, 1, 0, yes, no
- Case insensitive
Restriction Fields (MinNights, MinNightsThrough, MaxNights, MaxNightsThrough, CutOffDays)
- Enter as whole numbers
Example Data
Date,PropertyId,RoomTypeId,ChannelId,Rate,Allocation,StopSell,CTA,CTD,MinNights
2025-01-15,2177,8739,0,199.99,10,false,false,false,2
2025-01-16,2177,8739,0,219.99,10,false,false,false,2
2025-01-17,2177,8739,0,249.99,5,false,false,false,3
2025-01-18,2177,8739,0,249.99,0,true,,,
In this example:
- Jan 15-16: Standard rates with 10 rooms, 2-night minimum
- Jan 17: Higher weekend rate, 5 rooms, 3-night minimum
- Jan 18: Sold out (allocation=0, stop sell=true)
Step 3: Import Your Data
Accessing the Import Page
Admin > Settings > Channel Manager > Bulk Inventory Import
Note: You can include multiple properties to update in a single upload.
Upload Process
- Select Your File
- Click Choose File and select your completed CSV
- Maximum file size: 10 MB
- Maximum rows: 100,000
- Validation
- Click Upload & Validate
- The system validates every row before processing
You'll see a summary showing:
- Total rows in file
- Valid rows ready to process
- Skipped rows (empty data)
- Error rows (with details)
- Review Errors
- If errors exist, review the error list
- Common errors include:
- Invalid date format
- Dates in the past
- Unknown PropertyId, RoomTypeId, or RatePlanId
- Channel not configured for inventory send
- Invalid boolean values
- Permission issues
- Process Valid Rows
- If you have valid rows, click Process [X] Valid Rows
- Invalid rows will be skipped
- Valid rows will create inventory send requests
- Confirmation
Upon processing completion, you'll receive a confirmation email.
Validation Rules
The import validates the following:
Date Format
Must be YYYY-MM-DD (e.g., 2025-01-15)
Future Dates
Dates must be today or in the future (based on property timezone)
PropertyId
Must exist and be in your organization, that you have access to
RoomTypeId
Must exist and belong to the specified property
RatePlanId
If provided, must exist and belong to the specified property
ChannelId
If not 0, must be configured for inventory send on the property
Rate
If provided, must be greater than zero
Allocation
If provided, must be non-negative
Boolean Values
Must be valid format (true/false/1/0/yes/no)
Permissions
Your user account must have the appropriate permissions for the update types
Permission Requirements
Update Type - Required Permission
Rate changes - Update Rates
Allocation changes - Update Availability
StopSell changes - Update Availability (or Update Close-Outs for close-outs only)
Restrictions (CTA, CTD, MinNights, etc.) - Update Restrictions
Import History
On the Bulk Inventory Import page you can view the status and history of all files uploaded for processing.
Tips & Best Practices
- Start Small
- Test with a small date range first to verify your data is correct
- Once comfortable, scale up to larger imports
- Use ChannelId = 0 for Efficiency
- Setting ChannelId to 0 sends updates to all configured channels
- This reduces the number of rows needed in your file
- Check Channel Configuration
- Ensure channels are configured for inventory send before importing
- Updates for unconfigured channels will be rejected or skipped
- Mind the Timezone
- Date validation uses your property's timezone
- A date that's "today" in your timezone may be "past" for the property
- Partial Updates Are OK
- You don't need to fill in every column
- Only include the data you want to change
- Review Before Processing
- Validation always happens before you confirm processing, review to learn which rows will not be processed and why.
- You can cancel and fix errors in your file before re-uploading
Frequently Asked Questions
Q: What happens if some rows have errors?
A: Valid rows will be processed; error rows are skipped. You'll see exactly which rows had errors and why.
Q: Can I update multiple properties in one file?
A: Yes! Include different PropertyId values in your CSV to update multiple properties at once.
Q: Can I undo an import?
A: There is no automatic undo. You would need to create a new import with the corrected values.
Q: What if I leave all data columns empty for a row?
A: Rows with no data values are skipped automatically (counted as "Skipped - empty data").
Q: Why was my file rejected?
A: Check that:
- The file is a .csv format
- The file is under 10 MB
- The file has fewer than 100,000 rows
- The file has the correct header row
Updated on: 09/06/2026
Thank you!
