Opera Cloud

Bloomreach integrates with Oracle's Opera Cloud to automatically import guest reservations, customer profiles, and consent data into your project. You can use this data to trigger campaigns based on reservation status. For example, sending a pre-arrival email when a guest checks in or a win-back offer after checkout.

📘

Oracle Partner Network

Bloomreach is an official member of the Oracle Partner Network.

How the integration works

Once connected, the integration syncs 3 types of data:

  • Reservation events: During the initial setup, the integration imports your full reservation history. After that, a delta sync runs daily at 12:00 UTC and picks up newly created reservations. Status changes and other updates on existing reservations aren't emitted as new events (see Limitations).
  • Customer profiles: Updated with each sync.
  • Consent events: Email and SMS opt-in status, emitted per reservation processed.

Customer matching and data behavior

  • The integration uses 2 hard IDs to match incoming Opera data to existing customer profiles:
    opera_id: Opera's profile ID; always present and used as the primary identifier.
  • email_id: The guest's primary email from Opera; may be empty if the guest has no email on file.

When a match is found, the existing profile is enriched with the Opera data. When there's no match, a new profile is created.

📘

Important

If a guest has no email address, the integration still creates or updates their profile (matched via opera_id), but no reservation event is tracked. Reservation events are only generated for guests with an email address.

How data updates work

Each sync sends the full set of customer properties from Opera:

  • Reservation and consent events are added as new events on the matched profile. They don't overwrite previous events.
  • Customer properties (name, phone, city, and so on) are updated to reflect the current values from Opera. Standard identity resolution and customer update logic applies.

Synced fields

Reservation events

Each synced reservation creates an event reservation.

FieldDescription
created_atReservation creation timestamp
expected_arrival_timeExpected arrival date and time
expected_departure_timeExpected departure date and time
hotel_domainHotel domain (if available)
hotel_idOpera hotel identifier
hotel_nameHotel name
integration_idIntegration ID
integration_nameIntegration name
integration_typeIntegration type identifier
originSource of sale type
person_countNumber of guests (accompanying guests + 1)
reservation_idOpera reservation ID
reservation_numberSame as reservation_id
statusComputed status — for example, Reserved, CheckedIn, CheckedOut, Canceled
typeGuest type
updated_atLast modification timestamp
📘

Note

These OHIP API fields aren't currently synced: adult_count, balance, booking_channel_code, child_count, guarantee_code, market_code, number_of_rooms, rate_amount, rate_code, room_type.

Customer profile properties

Each sync updates the following properties on the matched profile.

FieldDescription
birth_dateDate of birth
cityCity from the first address on file
created_atProfile creation timestamp
emailPrimary email address
first_nameGiven name
last_nameSurname
nationalityGuest nationality
phoneFirst phone number on profile
statusProfile status code
updated_atLast modification timestamp
📘

Note

These OHIP API fields aren't currently synced: country, full_address, gender, postal_code.

Consent events

Two consent events are tracked per sync—one for email and one for SMS. For each reservation, the integration tracks 2 consent events—one for email (category=email) and one for SMS (category=sms). On initial historical import, this fires once per historical reservation, so a guest with N past reservations gets 2×N consent events on day one.

FieldDescription
actionaccept or reject, based on Opera optInEmail or optInSms
categoryemail or sms
hotel_idOpera hotel identifier
integration_idIntegration ID
integration_nameIntegration name
integration_typeIntegration type identifier
valid_untilAlways set to unlimited
📘

Note

The OHIP API has 13 privacy flags in total. Only optInEmail and optInSms are mapped to consent events.

Set up the integration

Prerequisites

Before connecting Opera Cloud, make sure these Hard IDs are set up in your project:

  • email_id : Hard ID, lowercase, trim; the primary identifier for customers.
  • opera_id: Hard ID; maps to profile_id in Opera Cloud.

Open the integration

Go to Account > Data & Assets > Integrations and search for Opera Cloud.

Get your credentials

Contact your Customer Success Manager (CSM) to get your credentials. As an official Oracle integration partner, Bloomreach creates these on your behalf.

  • Chain code
  • Region
  • Enterprise ID (optional)

Connect and save

Enter the credentials you received from your CSM, then click Save. The integration activates and starts the initial historical import.

Migrate from manual imports

If you're importing Opera data via CSV or SFTP, the integration replaces that workflow. Before you switch over:

  1. Activate the integration and verify data is flowing correctly.
  2. Check that both sources use the same customer identifiers (email_id, opera_id) to avoid duplicate profiles.
  3. Stop manual imports only once you've confirmed the integration is working.
🚧

Important

One environment should be linked to only one integration.

If possible, use your lower environments to validate the approach and data quality before making changes to your production systems.

Use case examples

  • Pre- and post-arrival communication: Trigger emails or SMS messages based on reservation status, such as check-in confirmations or post-stay follow-ups.
  • Cross-sell promotions: Offer additional services, such as breakfast packages or excursions, to guests with upcoming reservations.
  • Upgrade campaigns: Target guests booked at lower-tier properties with offers for higher-tier options.

Limitations

  • Reservation updates: Only newly created reservations are tracked. Updates to existing reservations aren't supported. Status transitions or any other change on an existing reservation (for example, Reserved → CheckedIn → CheckedOut → Canceled, date changes, guest count changes) aren't emitted as new events. Customer profile properties are refreshed on every sync—only the reservation event stream is new-only.
  • Customer removal: If a guest is deleted from Opera Cloud, you must manually remove them from your project.
  • Consent events: Consent events are reservation-scoped, not delta-scoped: 2 consent events (email + SMS) are emitted for every reservation processed, even if the guest's opt-in status hasn't changed. Volume scales with reservation count, not with guest count or sync count.
  • No email, no reservation event: If a guest has no email address on file in Opera Cloud, their reservation event isn't tracked. Only guests with an email generate reservation events.
  • One integration per environment: Linking more than one integration to the same environment isn't supported.

© Bloomreach, Inc. All rights reserved.