Reservation imports are typically performed during onboarding, migration from a legacy system, or when adding historical reservation records from external sources. This import may also be used for ongoing operations when your property does not have CRS or PMS connectivity to SHR systems. All reservation imports should be performed in consultation with the support team.
Understand reservation bulk import
Reservation bulk import allows you to upload CSV files containing reservation and stay information. These imports:
Create or associate reservations with existing guest profiles.
Populate historical stay data for reporting and segmentation.
Ensure loyalty points, revenue details, and stay history are available for loyalty tracking.
Link guest demographic data to reservation records.
Must follow strict field formatting and date format requirements.
As reservations impact loyalty calculations and guest activity history, these imports require careful review before and after processing.
When to use reservation bulk import
Reservation bulk import are used in the following scenarios:
Initial onboarding – Loading historical reservation data when first implementing SHR CRM.
Legacy system migration – Transferring reservation records from a previous CRM or system.
Historical data import – Adding past reservation data that predates your current PMS integration.
Unconnected CRS, PMS systems – If your property uses a CRS or PMS that is not integrated with SHR systems and you need to manually import reservation data at regular intervals to keep the CRM updated with current stay information.
Do not use reservation bulk import
Outlined below are some scenarios when not to use the reservation bulk import tool.
Your PMS is actively connected to SHR CRM or other SHR products – reservation data flows automatically through the integration.
You need to update existing reservations – this import creates new records only and does not overwrite existing data.
Importing reservations while an active PMS integration exists can create duplicate records and data inconsistencies.
Key characteristics of the reservation bulk import tool
Outlined below are key characteristics of reservation bulk import tool.
Requires specific mandatory fields marked in red during mapping.
Creates reservation records in the CRM and links them to guest profiles.
Uses email address and name matching logic to associate reservations with existing profiles.
Creates new guest profiles if no match is found and sufficient demographic data is provided.
Processes reservations asynchronously through the CRM.ImportReservationSvc Windows service.
Stores reservation data in multiple tables including reservation details, guest information, and revenue breakdowns.
Sends email notifications upon completion with success count, error count, and link to error file if applicable.
Skips duplicate reservations if PMS Resv ID matches an existing record.
Does not overwrite existing reservation records.
Before you use the reservation bulk import tool
Outlined below are important factors to know before you can perform a reservation bulk import.
Contact the support team for review and guidance before importing.
Prepare a clean CSV file containing all required fields with no blank rows.
Remove duplicate reservation lines from your CSV.
Ensure all required fields are populated—DayIn, DayOut, RoomType, RateCode, ResStatus, and TotalCharge cannot be empty.
Confirm field formats, especially for dates and monetary amounts (no currency symbols).
Verify date fields match the date format you will select during import (e.g., MM/dd/yyyy, dd/MM/yyyy).
Ensure Hotel Code values match hotel codes configured in your CRM.
Remove placeholder or test data such as "NULL", "Test", or "None" from all fields.
Verify currency codes match the system currency list if included.
Confirm monetary values are numeric only—no commas, dollar signs, or other symbols.
⚠️Important: Incorrect or incomplete reservation data may affect tier calculations, loyalty earning, reporting accuracy, and guest value scoring. Always have the SHR support team review files prior to import.
File format requirements (CSV)
Your CSV file must meet the following requirements for reservation bulk import.
General CSV rules
Save your file in CSV (Comma delimited) format (.csv).
Each row must contain data, no blank rows are allowed.
Each field must be in its own column.
Column headers are recommended but the first row will be used for field mapping regardless of content.
Required fields will appear in red during the mapping step.
Required fields
The following fields are mandatory. The import will fail if any required field is blank or left unmapped.
Field | Description | Field Type | Limit / Values |
First Name | Guest's given name | Alphanumeric | 25 characters; accented characters allowed |
Last Name | Guest's surname | Alphanumeric | 25 characters; accented characters allowed |
PMS Resv ID | Unique reservation identifier from the Property Management System | Alphanumeric | 16 characters |
Day In | Check-in date | Date | Must match selected date format |
Day Out | Check-out date | Date | Must match selected date format |
Room Type | Room type code | Alphanumeric | 32 characters |
Rate Code | Rate plan code | Alphanumeric | 32 characters |
Res Status | Reservation status | Alphanumeric | R=Reserved, I=In-House, O=Checked-Out, C=Cancelled, N=No-Show |
Total Charge | Total reservation amount | Integer | Integer only (no decimals or currency symbols) |
Reservation status field formats
The reservation status field accepts multiple input formats that are automatically normalized to standard status codes. The system removes all spaces and converts text to uppercase before processing.
Status Code | Display Name | Accepted Input Formats |
R | Reserved | R |
I | In-House (Checked In) | I, CHECKEDIN, CHECKED IN |
O | Checked-Out | O, CHECKEDOUT, CHECKED OUT |
C | Cancelled | C, CANCELED, CANCELLED |
N | No-Show | N, NEW |
📌Notes:
Input is case-insensitive—"checked out", "Checked Out", and "CHECKED OUT" all convert to "O".
All spaces are removed before processing—"CHECKED OUT", "CHECKED OUT" (double space), or "C H E C K E D O U T" all normalize correctly.
If a Res Status value does not match any accepted format, the field will use the raw input value.
Optional fields
The following fields enrich the reservation record but are not required for import. Fields marked as stored in guest profile follow the character limits and validation rules defined in guest bulk import.
Field | Description | Field Type | Limit / Values |
Loyalty Member ID | Member ID for loyalty matching (stored in guest profile) | Alphanumeric | 32 characters |
Salutation | "Mr", "Mrs", "Ms" (stored in guest profile) | Alphanumeric | 5 characters; special characters may be removed; any characters outside of the 3 allowed will be ignored |
Middle Name | Middle initial (stored in guest profile) | Alphanumeric | 1 character; accented characters allowed |
Guest email (stored in guest profile) | Alphanumeric | 128 characters; valid email format | |
Address 1 | Primary address (stored in guest profile) | Alphanumeric | 256 characters; some special characters removed, # allowed |
Address 2 | Secondary address (stored in guest profile) | Alphanumeric | 256 characters; some special characters removed, # allowed |
City | City name (stored in guest profile) | Alphanumeric | 128 characters; some special characters removed |
Region/State | State/province (stored in guest profile) | Alphanumeric | 128 characters; some special characters removed |
Zip | Postal code (stored in guest profile) | Alphanumeric | 16 characters |
Country | Country code (stored in guest profile) | Alphanumeric | 16 characters |
Phone | Phone number (stored in guest profile) | Alphanumeric | 32 characters; can include country code; spaces, parentheses, hyphens, periods removed |
Mobile | Mobile number (stored in guest profile) | Alphanumeric | 32 characters; can include country code; spaces, parentheses, hyphens, periods removed |
Birthday | Date of birth (stored in guest profile) | Date | Must match date format |
Gender | Gender (stored in guest profile) | Alphanumeric | M/MALE or F/FEMALE |
Company | Company name | Alphanumeric | 64 characters |
Hotel Code | Property code | Alphanumeric | Must exist in system |
Hotel Name | Property name | Alphanumeric | Free text |
URL Hotel | Property URL | Alphanumeric | Free text |
Chain Code | Chain identifier | Alphanumeric | Free text |
Rooms | Number of rooms | Integer | Small integer (max 32,767) |
Package Code | Package identifier | Alphanumeric | 32 characters |
Group Code | Group booking code | Alphanumeric | 32 characters |
Adults | Number of adults | Integer | Small integer (defaults to 0 if invalid, max 32,767) |
Children | Number of children | Integer | Small integer (defaults to 0 if invalid, max 32,767) |
Currency Code | Currency | Alphanumeric | 2 characters; must exist in system currency list |
Book Time | Booking date/time | Date | Must match date format |
Cancel Time | Cancellation date/time | Date | Must match date format |
Amount Room | Room charges | Integer | Integer only (no decimals) |
Amount Service | Service charges | Integer | Integer only (no decimals) |
Tax Room | Room tax | Integer | Integer only (no decimals) |
Tax Service | Service tax | Integer | Integer only (no decimals) |
Language Code | Language preference (stored in guest profile) | Alphanumeric | 2 characters; must exist in system (2-char code or ISO 639 code) |
CRS Resv ID | Central reservation ID | Alphanumeric | 16 characters |
Channel Code | Booking channel | Alphanumeric | 8 characters |
Market Code | Market segment | Alphanumeric | 25 characters |
Create a reservation bulk import
Follow the steps below to complete a reservation bulk import.
From the left navigation menu, click Profile Management.
Click Bulk Import.
Click the tab labeled Reservation Bulk Import.
Click the button labeled Reservation Bulk Import to start a new import.
Click Upload File and select your CSV file.
Review the file name to confirm it uploaded correctly.
Select the Date Format from the dropdown that matches the date format in your CSV file for example MM/dd/yyyy, dd/MM/yyyy, yyyy-MM-dd.
Select a Segment to associate imported reservations with a specific segment for tracking or reporting purposes, this is optional.
Enter a Tag to identify this import in future reporting or filtering, this is optional.
Map your source columns to CRM reservation fields:
Fields that matched automatically appear in the mapping interface.
Required fields appear in red and must be mapped before processing.
Drag any unmatched columns from your CSV to their correct CRM fields.
Review all field mappings for accuracy, paying special attention to date fields and required fields.
Click Save and Close to begin processing.
The system displays a confirmation message when the import begins processing. You will receive an email notification when the import completes.
View reservation import results
Follow the steps below to view import progress or results.
From the left navigation menu, click Profile Management.
Click Bulk Import.
Click the tab labeled Reservation Bulk Import.
Check the Status column for your import:
Completed – Import finished successfully.
Processing – Import is currently running.
Failed – Import encountered an error and could not complete.
Review the completion email sent by the system, which includes:
Total number of successfully processed records.
Number of failed records.
Link to download an error file (if errors occurred) showing which rows failed and the specific error for each row.
How the CRM processes reservation bulk import records
When you submit a reservation bulk import, the system performs the following operations.
Validation and processing
For each row in the CSV file, the system:
Validates that all required fields contain data—rows with empty required fields fail immediately with a specific error message for example DayIn is empty! or RoomType is empty!.
Validates date fields match the selected date format—rows with incorrect date formats fail with error has incorrect date format.
Parses phone numbers starting with "+" to extract country codes.
Defaults numeric fields adults, children, amounts to 0 if invalid data is provided.
Validates currency codes against the system currency list.
Truncates Country field to 16 characters if longer.
Stores monetary amounts internally as cents multiplied by 100.
Guest profile matching and creation
The system attempts to match the reservation to an existing guest profile using the email address and name fields:
If a matching profile exists, the reservation is linked to that profile.
If no match is found and sufficient demographic data is provided such as first name, last name and email a new guest profile is created.
Guest demographic data from the CSV such as address, phone and birthday is used to enrich the profile.
Reservation record creation
The system creates reservation records including:
Reservation details (PMS Resv ID, arrival/departure dates, room type, rate code, status).
Revenue breakdown (room charges, service charges, taxes).
Booking information (booking date, channel code, market code).
Guest information linked to the profile.
Error handling
Error can be handled in the follow way:
Line-item failures: Invalid rows are collected in an error DataTable with an Error column describing the issue.
An error CSV file is generated with naming pattern: ReservationError_{ClientID}_{Timestamp}.csv.
Import-level failures: If the file cannot be read or the client account is not found, the import aborts and the error is logged.
Email notification: Upon completion, you receive an email with success count, error count, and path to the error file if errors exist.
Impact on loyalty
Reservation imports may trigger loyalty earning rules, affect tier calculations, and populate stay history used in reporting and segmentation.
Tips and best practices
Outlined below are tips and best practices for reservation bulk import.
Always have the SHR support team assist with and review reservation imports. Reservation data directly impacts loyalty calculations, tier assignments, and reporting accuracy. The SHR team can validate your file format, identify potential data quality issues, and ensure the import aligns with your system configuration before processing.
Do not perform reservation imports if your PMS is connected to any SHR system. If you have an active PMS integration with SHR CRM or other SHR products, reservation data flows automatically from your PMS. Importing reservations while an active PMS connection exists can create duplicate records and data inconsistencies. Manual reservation imports should only be used during initial onboarding, migration from a legacy system, for historical data that predates your PMS integration, or if you have an unconnected PMS system and need to manually import reservation data at regular intervals.
Always test with 5–10 reservations before uploading a full file to catch formatting issues early.
Ensure PMS Resv ID values are accurate and unique to prevent duplicate reservation records.
Verify dates are correct to avoid loyalty calculation errors and reporting inaccuracies.
Avoid artificial or test data—use real guest and reservation values only.
If importing historical data, confirm with the SHR support team whether revenue should be included and how it will affect loyalty calculations.
Ensure loyalty-related fields (Loyalty Member ID, Loyalty Program Code) align with your earning rules and tier structure.
Use consistent date formatting throughout your CSV—do not mix date formats in the same file.
Remove any header rows beyond the first row before importing.
Save your file with UTF-8 encoding if it contains special characters or international names.
Troubleshooting
Outlined below are common issues and their solutions for reservation bulk import.
Required fields appear in red during mapping
The CSV is missing mandatory fields or they are not mapped correctly. Check that your CSV contains columns for First Name, Last Name, PMS Resv ID, Day In, Day Out, Room Type, Rate Code, Res Status, and Total Charge. Ensure column names match CRM field names or manually map them.
Dates import incorrectly or fail validation
The date format in your CSV does not match the date format selected during import. Verify the Date Format dropdown selection matches your CSV. Confirm the CSV uses consistent date formatting in all date fields. Common formats include MM/dd/yyyy (US format), dd/MM/yyyy (European format), and yyyy-MM-dd (ISO format).
Reservations fail to associate with profiles
Possible causes include missing or mismatched email addresses, incomplete guest identity fields (First Name, Last Name), or email addresses that do not match any existing profiles. Verify email addresses are correctly formatted and match existing guest records if you expect associations.
Duplicate reservations created
The PMS Resv ID in your CSV may differ from the existing record in the system, or the CSV may contain duplicate reservation lines with the same PMS Resv ID. Check for duplicate rows in your CSV before importing.
Import fails entirely
Common causes include CSV formatting errors (file not saved as .csv), missing required fields, invalid characters in revenue or numeric fields, or excessively large files. For large files, split them into smaller batches of 1,000-5,000 reservations per file.
Numeric fields show zero or incorrect values
The CSV may contain non-numeric characters in fields expecting numbers (Adults, Children, monetary amounts). Remove commas, currency symbols, and any text from numeric fields. Ensure monetary values are numeric only.
Currency code validation fails
The Currency Code in your CSV does not match the system currency list. Verify the currency codes in your CSV match those configured in CRM Setup > System Languages. Common codes include USD, EUR, GBP, CAD.
Frequently asked questions
Outlined below are a list of frequently asked questions.
Should I perform a Reservation Bulk Import without SHR support?
No. The SHR support team should review reservation files before importing to ensure data quality and prevent issues with loyalty calculations and reporting.
Can I import reservations without creating guest profiles?
No. Reservation imports always link to existing profiles or create new profiles if no match is found. Reservations cannot exist without an associated guest profile.
Can Reservation Bulk Import overwrite existing reservations?
No. Existing reservations are not overwritten. If the PMS Resv ID in your CSV matches an existing reservation, that row is skipped.
Can I import loyalty information together with reservations?
Yes, but loyalty-related data (Loyalty Member ID, Loyalty Program Code) must match CRM program settings and tier configurations. Consult with the SHR support team to ensure loyalty fields are configured correctly.
What if revenue values do not match PMS totals?
Revenue values are stored as entered in your CSV. Verify that Total Charge, Amount Room, Amount Service, Tax Room, and Tax Service values are correct before importing. The system stores these amounts internally as cents (multiplied by 100).
What happens if my CSV contains reservations with different hotels?
The system processes multi-property imports as long as the Hotel Code values match hotels configured in your CRM. Verify Hotel Code values before importing.
Can I update existing reservations using this import?
No. This import creates new reservation records only. Existing reservations cannot be updated through bulk import.
How long does a Reservation Bulk Import take to process?
Processing time varies based on reservation volume and system load. Reservation imports process slower than guest imports due to additional validation and profile matching logic. For large imports (10,000+ reservations), expect processing to take several hours.
What date formats are supported?
The system supports multiple date formats including MM/dd/yyyy, dd/MM/yyyy, yyyy-MM-dd, M/d/yyyy, and others. You must select the correct format from the Date Format dropdown during import. All date fields in your CSV must use the same format.
