Hotel PMS Integration Guide: Mapping Your Data to Seam
Last updated
Overview
When integrating Seam into your hotel PMS, you need to map your existing resources (properties, rooms, bookings) to Seam's resources (Connected Accounts, Spaces, Access Grants). Seam makes this easy by allowing you to tag each Seam resource with your own internal IDs using resource keys.
This guide shows you how to map:
-
Hotel properties → Seam Connected Accounts (using
customer_key) -
Hotel rooms → Seam Spaces (using
space_key) -
Guest records → Seam User Identities (using
user_identity_key) -
Guest bookings → Seam Access Grants (using
access_grant_key)
Once mapped, you can retrieve Seam resources directly using your PMS IDs, making integration seamless.
Step 1: Map Hotel Properties to Seam Connected Accounts
Each hotel property in your PMS needs to connect their access control system to Seam. When you create a Connect Webview for a property, you tag it with your PMS property ID using customer_key. This creates a permanent link between your property and their Seam Connected Account.
How to Map Properties
When setting up a new hotel property in your system, create a Connect Webview tagged with your property ID:
Send this Connect Webview to the hotel. When they complete authentication, Seam automatically copies the customer_key to their Connected Account. Now you can always find their Seam account using your property ID.
Retrieving Mapped Properties
Retrieve all Connected Accounts for a specific property using your PMS property ID:
Then retrieve devices or access control systems depending on what the hotel connected:
For consumer smart locks (August, Yale, etc.):
For access control systems (Salto, ASSA ABLOY, etc.):
Step 2: Map Hotel Rooms to Seam Spaces
After a hotel connects their access control system, you need to map each room in your PMS to a Seam Space. A Space represents a physical location (like a hotel room) and can have one or more doors/entrances.
How to Map Rooms
For each room in your PMS, create a Space tagged with your room ID:
The space_key links the Seam Space to your room record. You can now reference this room using your existing room ID whenever you need to grant access.
For multi-door rooms (like suites), include multiple entrance IDs:
Retrieving Mapped Rooms
Retrieve a Space directly using your PMS room ID:
Step 3: Create User Identities for Guests
Before creating access grants, you need to create a User Identity for each guest. User Identities represent the people receiving access and are especially important for mobile keys, which need to be tied to a specific person.
How to Map Guest Records to User Identities
Create a User Identity tagged with your guest ID using user_identity_key:
Recommendation: Use your internal guest ID directly as the user_identity_key. This makes it simple to retrieve the User Identity later:
Mobile Keys vs. Physical Cards
For mobile keys: Always create a unique User Identity for each guest, as mobile keys are delivered to their personal device via email or SMS.
For plastic cards: We recommend:
- Reuse a generic User Identity for all guests in the same reservation (e.g., use your booking ID as the
user_identity_key)
Since plastic cards aren't tied to a device, the User Identity is primarily for record-keeping rather than credential delivery.
Step 4: Create Access Grants for Guest Bookings
When a guest checks in, you create Access Grants that grant them access to their room. A single booking can have multiple Access Grants - for example, one for a plastic card and another for a mobile key. Tag each Access Grant with your booking ID using reservation_key so you can retrieve all access grants for a booking.
How to Map Bookings
At check-in, create an Access Grant tagged with your booking ID:
The reservation_key links all Access Grants to your booking record. Access automatically expires at checkout time based on ends_at.
Retrieving All Access Grants for a Booking
Retrieve all Access Grants for a booking using your PMS booking ID:
How Resource Keys Work
When you create Seam resources, you tag them with your PMS IDs using resource keys. Seam stores these keys, allowing you to retrieve Seam resources directly using your existing identifiers.
What gets stored in Seam:
-
customer_key- Your property ID -
space_key- Your room ID -
user_identity_key- Your guest ID -
access_grant_key- Your booking ID
How to retrieve using your IDs:
Since Seam stores your IDs as resource keys, you don't need to maintain a separate mapping table. Just use your existing PMS IDs when calling Seam's API.
Complete Workflow Examples
Check-in with Physical Key (Encoder)
Check-in with Mobile Key
Early Check-out
Looking Up Guest Access During Stay
Best Practices for Resource Mapping
Use Your Internal IDs Directly
Use your existing PMS identifiers directly as resource keys:
-
customer_key: Your property ID (e.g.,"property-456") -
space_key: Your room ID (e.g.,"room-304") -
user_identity_key: Your guest ID (e.g.,"guest-12345") -
access_grant_key: Your booking ID (e.g.,"booking-78901")
This creates a direct mapping between your PMS identifiers and Seam resources.
Create Spaces Once, Reference Many Times
Map rooms to Spaces once when setting up a property:
Then reference the Space using space_key for every booking:
Handle Multi-Property Integrations
For PMS systems serving multiple hotel properties:
-
Create separate Connect Webviews for each property with unique
customer_key -
Always filter operations by
customer_keyto keep properties isolated -
Store the
customer_keytoproperty_idmapping in your database
Additional Resources
Need Help?
If you have questions about implementing this data model or need assistance with your specific use case, contact Seam support (support@seam.co) or your solutions engineer.