Integrations
Connect external services to enhance your booking management workflow — Gmail for email, Google Sheets for data sync, and GST validation.
Gmail OAuth2 Setup
Send invoices, booking confirmations, and other emails directly from the application using your Gmail account.
Prerequisites
- A Gmail account (personal or Google Workspace)
- Gmail API enabled in your Google Cloud project
- OAuth2 credentials configured on the backend
Connecting Your Gmail Account
- Navigate to Settings → Integrations → Gmail
- Click Connect Gmail Account
- You are redirected to Google's OAuth2 consent screen
- Sign in to your Gmail account
- Grant the requested permissions:
- Send email on your behalf — required to send emails from the app
- Read email metadata — used to confirm delivery status
- You are redirected back to the application
- A success message confirms the connection
INFO
The application requests the minimum required Gmail scopes. Your emails are never read or stored — only the sending capability is used.
Connection Status
Once connected, the integration page shows:
| Field | Description |
|---|---|
| Status | Connected / Disconnected |
| Account | Connected Gmail address |
| Connected On | Date the account was linked |
| Last Used | Date of the most recent email sent |
Sending Emails via Gmail
With Gmail connected, you can send emails from various parts of the system:
- Invoices — Send invoice PDFs to guests
- Booking Confirmations — Send reservation confirmations
- Payment Receipts — Send payment acknowledgments
- Custom Emails — Send any email using your templates
Emails are sent using the Gmail API (not SMTP), ensuring reliable delivery and proper authentication.
Disconnecting Gmail
To disconnect your Gmail account:
- Navigate to Settings → Integrations → Gmail
- Click Disconnect
- Confirm the action
This revokes the OAuth2 tokens. You will need to reconnect to send emails again.
WARNING
Disconnecting Gmail means the system can no longer send emails on your behalf. Any automated email workflows will be paused until you reconnect.
Troubleshooting
| Issue | Solution |
|---|---|
| "Token expired" error | Reconnect your Gmail account to refresh tokens |
| Emails not being sent | Verify the Gmail account is still connected and active |
| "Insufficient permissions" | Disconnect and reconnect, ensuring all permissions are granted |
| Emails landing in spam | Set up SPF/DKIM records for your domain |
Google Sheets Sync
Synchronize booking data with Google Sheets for external reporting, collaboration, or integration with other tools.
How It Works
The Google Sheets integration uses Google Apps Script to sync booking data between the application and a designated Google Sheet:
- An Apps Script is deployed as a web app linked to your Google Sheet
- The application sends booking events (create, update, delete) to the script endpoint
- The script writes booking data to the spreadsheet in real-time
- Changes are reflected in the Google Sheet within seconds
Setup
Step 1: Create the Google Sheet
- Create a new Google Sheet in your Google Drive
- Name it (e.g., "Hotel Bookings — 2026")
- The sheet will be populated with headers automatically on first sync
Step 2: Deploy the Apps Script
- Open the Google Sheet
- Go to Extensions → Apps Script
- Replace the default code with the provided Apps Script code (available in the application under Settings → Integrations → Google Sheets → Script Code)
- Click Deploy → New Deployment
- Set type to Web App
- Set "Execute as" to Me
- Set "Who has access" to Anyone (the script validates requests using an API key)
- Click Deploy and copy the web app URL
Step 3: Configure in the Application
- Navigate to Settings → Integrations → Google Sheets
- Enter the Google Sheet Web App URL (from the deployment)
- Enter the Sheet Key (a secret key used to authenticate requests)
- Click Save & Test
- A test booking entry is sent to verify the connection
Synced Data
The following booking fields are synced to the Google Sheet:
| Column | Data |
|---|---|
| Booking Code | Unique booking reference |
| Guest Name | Guest's full name |
| Room | Room name/number |
| Room Type | Room type name |
| Check-in Date | Scheduled check-in |
| Check-out Date | Scheduled check-out |
| Status | Booking status |
| Total Amount | Booking total |
| Payment Status | Paid, Partial, Unpaid |
| Created At | Booking creation timestamp |
| Updated At | Last modification timestamp |
Sync Events
| Event | Trigger | Sheet Action |
|---|---|---|
| Booking Created | New booking is saved | New row added |
| Booking Updated | Booking details change | Existing row updated (matched by booking code) |
| Booking Deleted | Booking is cancelled/deleted | Row removed or marked as deleted |
Validation & Permissions
Access to the Google Sheets integration is controlled by a combination of:
- Sheet Key — a secret shared between the application and the Apps Script
- RBAC Permissions — only users with the Integrations module permission can configure the connection
TIP
The Google Sheet can be shared with team members who don't have system access, giving them read-only visibility into bookings without needing a login.
GST Number Validation
Verify guest or vendor GST Identification Numbers (GSTIN) directly within the application.
How It Works
When a GSTIN is entered (on a guest profile, vendor profile, or invoice), the system validates it against the GST API:
- Enter a 15-character GSTIN (e.g.,
27AABCU9603R1ZM) - The system sends a validation request to the GST verification API
- Results are returned and displayed immediately
Validation Response
A successful validation returns:
| Field | Description |
|---|---|
| Legal Name | Registered business name |
| Trade Name | Business trade name |
| Status | Active, Inactive, Cancelled |
| Registration Date | Date of GST registration |
| Business Type | Regular, Composition, etc. |
| State | State of registration |
| Address | Registered business address |
| Last Filing Date | Date of last GST return filed |
Auto-Fill
When validating a GSTIN on a guest or vendor profile, the system can auto-fill:
- Company/business name from the legal name
- State from the registration state
- Address from the registered address
This reduces manual entry and ensures accuracy.
Where GSTIN Validation Is Used
- Guest profiles — when adding a corporate guest's GST details
- Vendor profiles — when setting up a new vendor
- Invoices — validating the billed-to GSTIN before generating the invoice
Error Handling
| Error | Meaning |
|---|---|
| Invalid format | GSTIN doesn't match the 15-character format |
| Not found | GSTIN doesn't exist in the GST database |
| Inactive/Cancelled | GSTIN is no longer active |
| API unavailable | GST verification service is temporarily down |
WARNING
GST validation relies on external government APIs which may occasionally be slow or unavailable. Validation results are cached to reduce repeated lookups for the same GSTIN.
Integration Permissions
All integrations are controlled by the Integrations RBAC module:
| Permission | Access |
|---|---|
| View | View integration status and configuration |
| Create | Set up new integration connections |
| Update | Modify integration settings |
| Delete | Disconnect integrations |
| Manage | Full access to all integration operations |