Skip to main content

Integrate Klaviyo with Hotelia

Connect Hotelia to Klaviyo to automatically sync guest profiles and booking events into your marketing automation workflows. Once connected, every booking, check-in, and checkout pushes data to Klaviyo in real time, no manual exports, no CSVs.

Written by Jamie Frausto

What Gets Synced

When Klaviyo is connected, Hotelia automatically pushes the following to your Klaviyo account:

Guest Profiles:

A profile is created or updated in Klaviyo whenever a guest:

  • Books a room (via the website widget or staff-entered reservation)

  • Checks in at the front desk

  • Checks out

  • Profile fields synced: email, first name, last name, phone number, booking source, last stay date, and total stays.

Events:

Three event types are pushed to Klaviyo's metric timeline:

Event Name

When It Fires

Source

Booking Created

A reservation is confirmed (widget or manual)

Server-side (widget) + client-side (dashboard)

Checked In

Front-desk check-in completes

Dashboard

Checked Out

Checkout is finalized

Dashboard

Each event includes these properties: confirmation_number, room_type, check_in_date, check_out_date, nights, total_amount, booking_source.

You can use these events to trigger Klaviyo flows: welcome emails, mid-stay upsells, post-stay reviews, win-back campaigns, and more.


Setup steps

1. Generate a Klaviyo Private API Key

  1. Log in to your Klaviyo account.

  2. Click your account name (bottom-left) → Settings → API keys.

  3. Click Create Private API Key.

  4. Give it a name (e.g. "Hotelia Integration").

  5. Under Scopes, select:

  6. Profiles: Full Access

  7. Events: Full Access

  8. Lists: Full Access (optional, for future list sync)

Click Create and copy the key (it starts with pk_…).

⚠️ Keep this key private. It grants write access to your Klaviyo account.


2. Connect Klaviyo in Hotelia

  1. In Hotelia, go to Settings → Integrations.

  2. Find the Klaviyo card and click Connect.

  3. Paste your Private API Key into the field.

  4. Click Connect.

Hotelia will:

  • Validate the key against Klaviyo's API

  • Encrypt and store it securely

  • Fetch and display your Klaviyo account name

  • Mark the integration as Connected

3. You're done

That's it. From this point on, every booking, check-in, and checkout will push to Klaviyo automatically. No further configuration needed in Hotelia.


Disconnecting

To disconnect Klaviyo, go to Settings → Integrations → Klaviyo and click Disconnect. The encrypted API key is removed, and event syncing stops immediately. Existing data in your Klaviyo account is unaffected.


Building flows in Klaviyo

Now that events are flowing in, you can build automated marketing flows in Klaviyo using the synced metrics:

  • Booking Confirmation Flow: trigger on Booking Created, send a branded confirmation, pre-arrival upsells, or local recommendations.

  • Welcome / Arrival Flow: trigger on Checked In, send Wi-Fi info, room service menus, or in-stay offers.

  • Post-Stay Flow: trigger on Checked Out, send thank-you emails, review requests, or loyalty offers.

  • Win-Back Flow: segment guests where total_stays >= 2 and last_stay_date is more than 90 days ago.

You can use these events to trigger Klaviyo flows such as welcome emails, mid-stay upsells, post-stay reviews, win-back campaigns, and more.



Troubleshooting

  1. Events aren't appearing in Klaviyo

  • Confirm the integration shows Connected in Settings → Integrations.

  • Check that your API key has Profiles and Events scopes enabled.

  • New events can take 1–2 minutes to appear in Klaviyo's metric timeline.

2. Invalid API Key" error on connect

  • Make sure you copied the Private key (starts with pk_), not the Public key.

  • Regenerate the key in Klaviyo if it was previously revoked.

3. Profile fields look incomplete

Profile data reflects what was collected at the moment of the event. If a guest booked without a phone number, that field will be blank until they provide it (e.g. at check-in, when the profile is updated).

Did this answer your question?