Skip to main content

Understand and manage reservation bulk import

In this article we will cover how to import reservation data into the CRM using the reservation bulk import function.

M
Written by Michelle Normoyle
Updated over a week ago

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.

Shape

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

Email

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.

  1. From the left navigation menu, click Profile Management.

  2. Click Bulk Import.

  3. Click the tab labeled Reservation Bulk Import.

  4. Click the button labeled Reservation Bulk Import to start a new import.

  5. Click Upload File and select your CSV file.

  6. Review the file name to confirm it uploaded correctly.

  7. 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.

  8. Select a Segment to associate imported reservations with a specific segment for tracking or reporting purposes, this is optional.

  9. Enter a Tag to identify this import in future reporting or filtering, this is optional.

  10. Map your source columns to CRM reservation fields:

    1. Fields that matched automatically appear in the mapping interface.

    2. Required fields appear in red and must be mapped before processing.

    3. Drag any unmatched columns from your CSV to their correct CRM fields.

  11. Review all field mappings for accuracy, paying special attention to date fields and required fields.

  12. 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.

  1. From the left navigation menu, click Profile Management.

  2. Click Bulk Import.

  3. Click the tab labeled Reservation Bulk Import.

  4. 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.

  5. 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.

Did this answer your question?