Package Information
Documentation
@staylio/n8n-nodes-staylio
This is an n8n community node package for Staylio. It lets you use the Staylio API and respond to Staylio callbacks from your n8n workflows.
Staylio is a guest-experience app for vacation rental managers. This package provides:
- Staylio — an action node for the Staylio REST API v1 (guests, hosts, properties, reservations, notifications, offers, statistics).
- Staylio Trigger — starts a workflow when Staylio sends a callback event.
- Staylio Respond to Callback — builds the response body a synchronous ("fetch") callback expects.
Installation · Credentials · Private vs public VRMs · Nodes · Callbacks · Resources
Installation
Follow the n8n community node installation guide.
In n8n: Settings → Community Nodes → Install, then enter @staylio/n8n-nodes-staylio.
To install manually for local development:
npm install
npm run build
# link the package into your n8n custom extensions directory (~/.n8n/custom)
Run the unit tests with npm test, and the linter with npm run lint. Both run automatically on npm publish.
Credentials
Create a Staylio API credential with:
| Field | Description |
|---|---|
| API Key | Your Staylio API key, sent as the X-API-KEY header on outbound API calls. |
| Base URL | Your Staylio instance URL. Defaults to https://app.staylio.com. |
| Callback API Key | Optional. The Staylio Trigger discovers each host's callback key from the API on its own, so this can normally be left empty. Set it only if your API key cannot read hosts, or to accept an additional secret (comma-separated for several). See Callback keys. |
Private vs public VRMs
Staylio has two kinds of integration, and a few of this package's behaviours follow from which one your API key belongs to. Both use the same credential; nothing here needs configuring.
| Private VRM | Public VRM | |
|---|---|---|
| Who it is for | A single property manager integrating their own system | A platform serving many hosts |
| Hosts | Exactly one, created with the integration | Many, each connecting from the Staylio host portal |
| Host ID on Reservation → Create | Leave empty; Staylio resolves the host and discards anything sent | Required |
| Host ID option on Notification → Send | Not needed | Set it so recipients that do not resolve stay visible to the Host IDs filter |
| Host write operations | Not permitted (see below) | Permitted |
| Callback signing keys | One | One per host |
Host operations
Private integrations have read-only access to the hosts endpoint. Create, Create Many, Update, Delete, Update App Settings and Update Company Information all require a public VRM; the node reports this rather than surfacing a bare 403. A private integration manages its app settings, company information and callback API key in the Staylio host portal instead.
Get, Get Many, Get App Settings and Get Company Information work for both. Every other resource — guests, reservations, properties, notifications, offers, statistics — behaves identically either way.
Callback keys
Staylio signs each callback with the key of the host the event belongs to, so a public VRM's single webhook receives requests signed with many different keys, and new ones appear whenever a host connects.
The trigger handles this for you: it reads each host's key from the API, caches them in memory for a few minutes, and refreshes once if a signature does not verify — which is what a newly connected host or a rotated key looks like. Each callback names its host, so only that host's key is checked. Set Callback API Key on the credential only if your API key cannot read hosts, or to accept an extra secret.
Nodes
Staylio (action node)
Interact with the Staylio API v1. Supported resources and operations:
| Resource | Operations |
|---|---|
| Guest | Get, Get Many (search / id / host / install-status filters), Update |
| Host | Create, Create Many (bulk), Get, Get Many, Update, Delete, Get/Update App Settings, Get/Update Company Information |
| Notification | Get, Get Many, Send (to reservations or guests) |
| Offer | Create, Get, Get Many, Update, Delete |
| Property | Get, Get Many, Update |
| Reservation | Create, Get, Get Many, Update, Delete, Send Message, Send Typing, Get Share Link |
| Statistic | Get Daily Install Count |
List operations support pagination; enable Return All to fetch every page (limit/offset, max 100 per page). A Limit above 100 is capped by the API.
The choice lists on Update App Settings (timezone, date format, time format, secure rental information) are loaded from the host's own settings, so fill in Host ID first for the dropdowns to populate; you can always supply a value with an expression instead.
Staylio Trigger
Receives Staylio callbacks over a webhook and starts your workflow. Configure:
- Path — a unique path segment for this workflow's webhook URL. Give each workflow a distinct path so their URLs do not collide.
- Event — the callback event to listen for, or All Events. The event list is loaded live from your Staylio instance.
- Response Format — Single Object for most events, or Array for events whose response is a list (Fetch Messages, Fetch Custom Forms).
Incoming requests are authenticated by verifying the X-STAYLIO-SIGNATURE HMAC (SHA-256 of the raw body, keyed by the Callback API Key), falling back to a plain X-API-KEY match. Requests that fail both are rejected with 401. A request for an event this trigger is not listening for is answered with 404.
The trigger outputs event, timestamp, test, host_id, context, and data. When test is true the request is a Staylio connection test / dry-run — your workflow should short-circuit and avoid real side effects. host_id is lifted out of context for convenience: on a public VRM one webhook serves every host, so workflows usually branch on it.
Staylio Respond to Callback
Some callbacks are synchronous: Staylio expects a JSON response body in a specific shape. Place this node as the last node in the workflow (so its output becomes the webhook response) and select the event. Simple events (rental agreement, guest verification, payment details, office hours, complete payment) have form fields; nested or array-shaped events (guest reviews, custom forms, transaction history, prepare payment, travel insurance, messages) take raw JSON. Fetch the exact schema for any event from GET /api/v1/callbacks/schema/.
For array events, remember to set the Trigger's Response Format to Array.
Working with callbacks
Staylio callbacks are configured in the Staylio host portal, not through this node. After activating your workflow:
- Copy the Production URL from the Staylio Trigger node.
- In the Staylio host portal, register that URL as the callback endpoint for the event(s) you want, using the same Callback API Key as your credential.
A typical synchronous-callback workflow is:
Staylio Trigger (event: Fetch Rental Agreement)
→ (your logic: look up the agreement)
→ Staylio Respond to Callback (event: Fetch Rental Agreement)
Resources
- Staylio API documentation — the live callback schema is at
/api/v1/callbacks/schema/. - n8n community nodes documentation