Full manual ↗

Set up your hotel in one afternoon

Three parts: connect WhatsApp through Meta, customise everything to your hotel's preferences, then run the front desk day to day. Follow the steps in order — each one takes minutes.

Part 1

Connect WhatsApp with Meta

The AI receptionist and all guest messaging run on the official WhatsApp Business Cloud API. You'll create a free Meta developer app, copy four credentials into StayChat, and point Meta's webhook at your hotel.

1

Create the Meta app

  1. Log in at developers.facebook.com with the Facebook account that owns your business.
  2. Click My Apps → Create App.
  3. Choose Business as the app type, give it a name (e.g. Grand Resort Reception). Use the default case-sensitive ID.
  4. On the app dashboard, find WhatsApp in the products list and click Set up. Meta adds the product and shows the WhatsApp → Quickstart page.
Note: this is the official Meta Cloud API — not WhatsApp Web, not a gateway. Unofficial gateways get numbers banned; the Cloud API is what Meta supports for businesses.
2

Copy the four credentials

From Meta's WhatsApp → Quickstart / API Setup page, gather:

CredentialWhere in Meta
Phone Number IDAPI Setup → "From" — the number that will message guests. Click "Show" on the ID.
Access Token (permanent)Business Settings → Users → System Users → generate token with whatsapp_business_messaging + whatsapp_business_management permissions. Temporary tokens expire in 24h — always use a permanent System User token.
App SecretApp Settings → Basic → "Show" in the App Secret field.
Webhook Verify TokenAnything you pick yourself — a random string you invent. StayChat will echo it back to Meta during verification.

In StayChat, open Settings → WhatsApp and paste all four values. The page shows your exact webhook URL (/api/webhooks/whatsapp/<your-subdomain>) — copy it now.

3

Point Meta's webhook at StayChat

  1. Back in Meta: WhatsApp → Configuration (in the developer app), click Edit on Callback URL.
  2. Paste the webhook URL from StayChat's settings page and your verify token, then click Verify and save. Meta calls your URL; StayChat answers with the token and the field turns verified.
  3. On the same page under Webhook fields, click Subscribe for the messages field. Nothing arrives in your inbox until this subscription is on.
  4. If your guest-facing number is still a test number, add real recipient phone numbers under "To" for testing — or move the app through App Review / Business Verification with Meta to message any guest live.
Production tip: for live guests you'll need Meta Business Verification and, once past the 1,000-unique-user free-service tier, Meta's per-message pricing. Configuration inside StayChat never changes — only Meta's side moves.
4

Run the built-in connection test

In Settings → WhatsApp, click Test Connection. StayChat runs two real probes and tells you exactly which half is broken:

  • Inbound — self-checks your webhook endpoint: the verify-token handshake Meta will perform, plus a signed empty delivery through the real signature gate.
  • Outbound — an authenticated live probe of Meta's Graph API confirming your token actually owns the Phone Number ID.

Both green → guests can start messaging your number right now.

5

Give the AI receptionist a personality

In Settings → AI Receptionist: pick a tone (Professional, Friendly…), switch the AI on, and choose what it can answer — bookings by tender code, Wi-Fi, facilities, room service. Add your own API key (Anthropic / OpenAI / OpenRouter) or use the platform key if one is configured. Without any key it falls back to a built-in keyword assistant — the inbox never breaks.

What the AI can do: a guest can literally send their booking code (e.g. BE-7K2M9QX4) on WhatsApp and the receptionist replies with live status, room and total — pulled from your database in real time, tied to the same conversation your desk sees in the shared inbox.
Part 2

Customise the whole system to your preferences

Everything your guests and staff touch is configurable from Settings — no code, no developer.

1

Hotel profile

Settings → Hotel: name, country, email, phone, timezone, check-in/check-out times, currency, POS tax & service percentages, pool capacity. The timezone drives every report and end-of-day boundary; the currency sets what the folio charges.

2

Rooms & rates

Rooms → Add: number, floor, type, view, capacity, nightly rate. Then Room Setup → Categories for tiered pricing — separate weekday / weekend / holiday rates per category, with discount percentages. Your rate card is what the public booking engine quotes — no manual pricing on the phone with guests.

3

Floors & facilities

Room Setup → Floors to mirror your building. Facilities: add halls (day or hourly rate) and pools (price per person per hour) — each appears automatically on your public booking page with a Facilities tab and live time-slot conflict rejection.

4

Accepted payment methods & gateways

Settings → Payment Methods: tick what the hotel accepts (cash, card, transfer…). For online links, store your Paystack or Stripe keys — credentials are encrypted AES-256-GCM at rest, and both gateways' webhooks are signature-verified and idempotent (a repeated webhook never double-charges).

5

Staff accounts & permissions

Users → Add: reception, cashier, barman, accountant, auditor, housekeeping. Every role lands with sensible defaults — front desk can check guests in but cannot alter prices, void ledgers or refund; that's manager territory. Fine-tune anyone with per-user capability toggles. Every sensitive action lands in the audit log with who-did-what.

6

Your public booking page

Settings → Booking Engine: turn the engine on, drop a welcome notice (e.g. high-season policies), and the page at /book.html?hotel=your-subdomain goes live — priced from your real rate card, "reserve now, pay at the hotel". Guests pick rooms or facilities, leave name + phone, and receive a tender code like BE-7K2M9QX4 on WhatsApp. Your desk gets a WhatsApp within seconds of every submission.

7

Link your ISP / router for easy Wi-Fi management

Connect the internet line you already pay for to StayChat, and guest Wi-Fi runs itself for every stay.

  • Connect — put the ISP modem in bridge mode (or place a supported controller behind it), then add the controller in Settings → Integrations → Internet. Supported: UniFi, MikroTik, TP-Link Omada, Cisco Meraki, Ruckus — via cloud API or local LAN address. Paste the API key/host, enable, and run Test Connection: an authenticated live probe, not a stub.
  • Tag the guest network — StayChat picks up your SSIDs/VLANs; mark the guest SSID so only guests are provisioned there and your staff/office network stays untouched.
  • Management on autopilot — check-in provisions the guest session at room-tier speed and delivers credentials by WhatsApp automatically; checkout revokes it. The Guest Wi-Fi page lists who's online; the desk can extend for late checkout. Guests self-serve at /wifi.html.
  • Maintenance — nightly health sweeps ping every controller and the WAN gateway; anything unreachable shows a dashboard banner. ISP goes down? Session state lives locally, so nobody gets knocked off and provisioning catches up when the line returns. Running two providers / LTE failover? Register the second uplink in the same list — tests verify both and the banner shows which is live. New ISP or new router IP — update the host and re-test; credentials and speed tiers are preserved.
One rule of thumb: StayChat never manages your ISP contract — it manages everyone ON the network. Keep the modem + controller running, and the guest access layer is automated from there.
8

In-room & infrastructure integrations (optional, Pro plan)

Settings → Integrations: door locks, IPTV, room automation, cameras — 49 services. Every service has docs links, encrypted credential storage, and a live Test Connection probe.

9

Multi-currency for your guests

Guests from other countries visiting your booking page automatically see prices in their currency (detected by the edge server from the visitor's country), converted at today's live rate — while the folio still charges your hotel currency. Refresh rates any time in Settings → Exchange Rates (or let the daily auto-refresh handle it). Guests can also pick a currency manually from the selector on the booking page.

Part 3

Day-to-day operations

The rhythm of a normal day in StayChat — what each person does, in the order they do it.

1

Morning — the dashboard handshake

Reception opens StayChat (install it from the browser: 📲 Install app, works from the home screen). The dashboard shows last night's occupancy, today's arrivals and departures, and any pending tasks. Housekeeping sees rooms left dirty by checkout and the day's ready-list with SLA timers.

2

When an online booking arrives

The submission lands in Booking Engine → Submissions with the guest's tender code up top; a WhatsApp notification hits the team simultaneously. One click Confirm holds the room, bumps availability, and the guest instantly gets their printable QR confirmation slip. Ignore a submission and the spam cap re-frees the inventory — no arma-squatting.

3

Check-in

Rooms → Check in: pick the guest from the booking (every check-in is tied to a real Guest record — walk-ins create one first: name, phone, ID type/number, next-of-kin), take any deposit as real money (it posts to the ledger, not "marked paid"), and confirm. Wi-Fi credentials pop on the same screen; the guest's WhatsApp gets a welcome with the details. Group bookings check in as one folio with one balance.

4

During the stay — the guest spends

  • POS (cashier/barman): restaurant and bar tickets charge the room folio or settle cash instantly — with a live receipt.
  • Orders: room service and miscellaneous requests route to the right station.
  • Pool / Halls: facility bookings and sessions, conflict-checked live.
  • Guest Messaging: anything a guest WhatsApps lands in the shared inbox — AI answers instantly; staff can take over with one click.
  • Maintenance: report a leaky tap; the right technician gets it with SLA timing.
5

Checkout & settlement — the money moment

Rooms → Check out on a guest with a balance shows an Outstanding Balance dialog with the exact amount and a Go to Pay button that opens the Settle modal pre-filled. Type the cash collected — the input is a real amount field with change-due live (₦ all day, $ if you prefer) — confirm, and the settlement receipt pops with auto-print. Behind the receipt the room auto-checks-out, the balance zeroes, the double-entry ledger posts room-revenue vs. cash, and the room flips to dirty for housekeeping. Nothing is hand-waved: card and cash both clear to real ledger entries.

6

End of day

EOD: each department (POS, pool, halls, room service) closes its own day — totals snap to the ledger. The Accounting view is double-entry; the trial balance always balances because every posting on the system came through the same path. Print your (CSV or paper) transaction report — Payments → Export CSV hands you the exact file of everything that ran today.

7

Weekly — keep it tight

  • Analytics: occupancy, ADR, booking-engine funnel (submissions → confirmations → revenue). Spot the channel paying off.
  • Reports: every report downloads a real CSV — transactions, charges, discounts, purchasing, housekeeping activity.
  • Billing & Plan (owner): check subscription, upgrade if the room count grew.
  • Audit Log: every user action on your system, timestamped — accountability by default.