Hello Hotel's Zapier/Webhooks integration lets you connect to thousands of apps — your PMS, CRM, booking platform, or any tool that supports webhooks. Use it to send automated text messages to guests, add and update contacts, and tag guests in Hello Hotel, triggered by events in your other systems.
This article covers connecting the integration, using the available endpoints, common use cases, and troubleshooting.
You'll need:
Admin access to your Hello Hotel organization (only admins can manage integrations)
A Zapier account (if using Zapier) or access to whatever tool will be sending webhooks — any platform that can make HTTP POST requests works
At least one phone number set up in your Hello Hotel organization (this is the number messages will be sent from, and it identifies your organization on every request)
In Hello Hotel, go to Settings → Integrations
Find Zapier/Webhooks and click Connect
Hello Hotel generates an API key for your organization. This key authenticates all incoming webhook requests.
Once connected, the integration page shows your API key, available phone numbers, and documentation for each endpoint.
Good to know: Your API key is unique to your organization. Don't share it publicly — anyone with the key can send messages through your Hello Hotel number. If you suspect it's been compromised, click Regenerate API Key at the bottom of the integration page. This immediately invalidates the old key.
Hello Hotel provides five webhook endpoints. All of them accept a JSON payload via POST, require your API key in the headers, and require fromPhoneNumber in the body — one of the Hello Hotel numbers listed on your integration page. That number identifies your organization, so every request needs it, not just the ones that send a message.
Headers (every endpoint):
x-api-key: Your API key
Content-Type: application/json
Use this endpoint to send an SMS to a guest from your Hello Hotel number.
Webhook URL: https://app.hellohotel.co/api/webhook/zapier/send-sms
Payload fields:
Field | Required | Description |
| Yes | Your Hello Hotel phone number (select from the list on the integration page). Include country code, e.g. |
| Yes | The guest's phone number, including country code. |
| Yes | The text message content to send. Up to 1,000 characters. |
| No | The guest's name. If provided and the contact doesn't exist yet, Hello Hotel creates a new contact with this name. |
| No | The guest's email address. Stored on the contact record if provided. |
| No |
|
Example payload:
{
"fromPhoneNumber": "+17192129981",
"guestPhoneNumber": "+15551234567",
"message": "Hi Sarah, your room is ready! Check-in is available anytime after 3 PM.",
"guestName": "Sarah Johnson",
"guestEmail": "[email protected]"
}The message is logged in the guest's conversation thread, so your team has full visibility into automated messages. By default the send is quiet: if the message starts a new conversation, that conversation is closed rather than shown as New — your team isn't asked to act on a text a system sent. If you want it to land in the inbox as New (say, for a message you expect the guest to reply to), pass "markConversationNew": true.
Use this endpoint to create a new guest contact, update an existing one, or add and remove tags on a guest. Hello Hotel matches contacts by phone number — if the number already exists, the contact is updated.
Webhook URL: https://app.hellohotel.co/api/webhook/zapier/update-contact
Payload fields:
Field | Required | Description |
| Yes | Your Hello Hotel phone number, including country code. Identifies your organization. |
| Yes | The guest's phone number, including country code. This is used to match existing contacts. |
| No | The guest's name. Creates or updates the contact name. |
| No | The guest's email address. Creates or updates the email on the contact record. |
| No | Whether the guest has consented to receive texts from you. Set it to |
| No | An array of tag names to add to the guest. Names are matched to your existing tags case-insensitively; a name that doesn't match is created as a new tag. Adding is additive — tags already on the contact stay. |
| No | An array of tag names to remove from the guest, matched case-insensitively. Names that don't match any tag are ignored. |
Example payload:
{
"fromPhoneNumber": "+17192129981",
"guestPhoneNumber": "+15551234567",
"guestName": "Sarah Johnson",
"guestEmail": "[email protected]",
"tagNames": ["VIP", "Wine Weekend 2026"]
}Tags added this way behave exactly like tags added by hand: a Guest Tag Added automation trigger fires for each tag the guest didn't already have. See Guest Tag Added Trigger.
Use this endpoint to fetch your organization's tags — handy for finding a tagId before updating a tag, or for checking a tag's exact name.
Webhook URL: https://app.hellohotel.co/api/webhook/zapier/list-tags
Payload fields:
Field | Required | Description |
| Yes | Your Hello Hotel phone number, including country code. |
Response: tags, an array of { id, name, color, description }, sorted by name.
Use this endpoint to create a new tag definition. (You don't need this just to tag a guest — an unknown name in tagNames on the contact endpoint creates the tag for you. Use it when you want to set a color or description up front.)
Webhook URL: https://app.hellohotel.co/api/webhook/zapier/create-tag
Payload fields:
Field | Required | Description |
| Yes | Your Hello Hotel phone number, including country code. |
| Yes | The tag name, up to 50 characters. |
| No | One of: |
| No | Up to 200 characters. |
Response: the new tag as { id, name, color, description }. Returns 409 if a tag with that name already exists (names are compared case-insensitively).
Use this endpoint to rename a tag or change its color or description. This edits the tag itself, everywhere it's used — it doesn't add or remove the tag on any guest.
Webhook URL: https://app.hellohotel.co/api/webhook/zapier/update-tag
Payload fields:
Field | Required | Description |
| Yes | Your Hello Hotel phone number, including country code. |
| Yes | The tag's ID, from the list-tags endpoint. |
| No | A new name, up to 50 characters. |
| No | One of: |
| No | Up to 200 characters. |
Response: the updated tag. Returns 404 if the tag doesn't belong to your organization, or 409 if the new name conflicts with an existing tag.
The integration accepts up to 100 requests per minute, counted across all five endpoints together. Beyond that, requests are rejected with a 429 status until the window resets; the response includes a Retry-After header with the number of seconds to wait, plus X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers on every response so you can see where you stand. For a bulk import, pace your requests or let your tool retry on 429.
If you're using Zapier:
Create a new Zap in Zapier
Set your trigger — this is the event in your other app that starts the workflow (e.g., "New Reservation" in your PMS, "New Row" in a spreadsheet, "New Deal" in your CRM)
Add a Webhooks by Zapier action step and select POST as the method
Enter the Hello Hotel webhook URL for the endpoint you want to use
Set the Headers: add x-api-key with your API key value
Set the Data payload type to JSON, then map the required fields from your trigger data to the payload fields listed above
Test the step — Zapier sends a test request and Hello Hotel returns a success or error response
Turn on the Zap
If you're using another tool (Make, n8n, a custom integration, or any system that supports outbound webhooks), the setup is similar: configure an HTTP POST request to the Hello Hotel webhook URL with the required headers and JSON payload.
Hello Hotel has direct, built-in integrations for some platforms (like Mews PMS). For everything else — your CRM, booking engine, spreadsheet, task manager, or any other tool in your tech stack — the Zapier/Webhooks integration is how you connect it to Hello Hotel. If we don't have a native integration for your system yet, this is the way to bridge the gap.
Any platform that can send an HTTP POST request can work with these endpoints, whether that's Zapier, Make, n8n, or a custom script your team builds.
Send a check-in reminder from your PMS. If your PMS doesn't have a direct Hello Hotel integration, use a Zap to trigger an SMS when a reservation's check-in date is approaching — include arrival instructions, door codes, or parking info.
Welcome message for new bookings. When a new reservation is created in your booking platform, automatically send a personalized welcome text from your hotel's number.
Tag guests from a booking engine or event. When a booking comes in through a particular channel, package, or event — a wedding block, a festival rate, a wine-weekend booking engine — tag the guest with the update-contact endpoint. The tag shows on the contact, filters your contact list, and can start a Guest Tag Added automation, so everyone on the "Wine Weekend 2026" list gets the schedule text without anyone building the list by hand.
Sync contacts from a spreadsheet or CRM. Bulk-import or keep guest contacts up to date by triggering the update-contact endpoint whenever a row is added or updated in your guest database.
Post-stay follow-up. When a guest checks out, trigger a thank-you message or a link to leave a review.
Alert guests about events or offers. Use a scheduled trigger in Zapier to send messages about local events, seasonal promotions, or property updates to a list of guest contacts.
The Zapier/Webhooks integration handles inbound webhooks — data coming into Hello Hotel from your other tools. Hello Hotel also supports outbound webhooks through its Automations feature, which sends data from Hello Hotel to external services when events happen in the app.
For example:
Create a task in your project management tool when a guest reports a maintenance issue via text — route it to Asana, Trello, or whatever your team uses so nothing falls through the cracks.
Log guest interactions to a spreadsheet or CRM — fire a webhook to Google Sheets or HubSpot whenever a conversation starts, so you have a record outside Hello Hotel.
Notify your team in Slack when a VIP guest messages or when a voicemail comes in after hours.
Update your PMS or booking system when a guest confirms a late checkout or early arrival via text.
The request body is a JSON template you write yourself, using the same variable picker as messages — guest and reservation fields, and, after a Guest question step, the Guest Answer variable — so a survey rating can be posted straight to a CRM or a spreadsheet. See Asking Guests a Question.
A few limits: the URL must be HTTPS; the method is POST or PUT; you can add custom headers; and a request that takes longer than 10 seconds fails.
Outbound webhook actions are configured in Automations → Actions → Webhook. For details, see Using Actions in the Automations section.
Check your API key. The most common issue is a missing or incorrect x-api-key header. Copy the key directly from the integration page in Hello Hotel.
Verify the URL. Make sure you're using the correct endpoint URL — send-sms for messages, update-contact for contacts and guest tags, list-tags, create-tag, and update-tag for tag definitions.
Check the payload format. The request body must be valid JSON with Content-Type: application/json. Missing or malformed JSON will be rejected.
Include required fields. fromPhoneNumber is required on every endpoint. send-sms also needs guestPhoneNumber and message; update-contact needs guestPhoneNumber; create-tag needs name; update-tag needs tagId.
Getting 429s? You've passed 100 requests in a minute. Wait the number of seconds in the Retry-After header and try again, or slow the job down.
Verify the fromPhoneNumber. It must be one of the phone numbers listed on your integration page. Using a number that isn't associated with your organization will fail.
Check the guest's phone number format. Include the country code (e.g., +1 for US numbers). Numbers without a country code may not route correctly.
Check the message length. Messages over 1,000 characters are rejected.
Check messaging compliance. If your organization hasn't completed 10DLC registration, outbound SMS may be restricted. See the Messaging Compliance section in the help center.
Sent, but not in the inbox? That's the quiet default — the message is in the guest's thread, but a new conversation it started is closed rather than surfaced. Pass "markConversationNew": true if you want it to show as New.
Both phone numbers are required. fromPhoneNumber identifies your organization and guestPhoneNumber identifies the guest. Without either, the request is rejected.
Duplicate detection is by phone number. If a contact with that phone number already exists, Hello Hotel updates the existing contact rather than creating a new one. This is by design.
A typo creates a new tag. Names in tagNames that don't match an existing tag are created, so "VIP Guest" and "VIP" become two tags. Use the list-tags endpoint to check exact names before a bulk run.
Removing an unknown tag does nothing. removeTagNames silently ignores names that don't match.
Tags are additive. Sending tagNames never removes tags already on the contact — use removeTagNames for that.
When you click Regenerate API Key, the old key is immediately invalidated. Update the x-api-key header in all your Zaps and webhook configurations with the new key.
Use the guestName field when sending messages. If the contact doesn't already exist in Hello Hotel, including the name creates a clean contact record alongside the first message. Without it, the conversation shows up under just the phone number.
Test with a real phone number first. Before rolling out a Zap to all guests, send a test message to your own phone to verify the content, formatting, and timing.
One phone number per use case. If you have multiple Hello Hotel numbers (e.g., front desk and concierge), use the appropriate fromPhoneNumber for each type of automated message so replies go to the right team.
Monitor automated messages in Conversations. All webhook-triggered messages appear in the guest's thread. Keep an eye on them initially to make sure the content and timing look right, and that guests are replying as expected.
Combine with Automations for two-way workflows. Use the inbound Zapier webhook to send a message, and set up an outbound Automation webhook to notify your other systems when the guest replies.