Integrations Hub — Complete Reference
Dashboard Location: Sidebar → Integrations
Navigation Sort: 50
Access: All authenticated users (navigation registration controlled separately)
Overview
The Integrations Hub is the central page for managing all third-party service connections in CaptiFi. It displays every integration as a card in a responsive grid layout (1 column on mobile, 2 on tablet, 3 on desktop). The page header shows a gradient banner with the count of integrations available on the user's current plan.
Each integration card follows one of three visual states:
| State | Appearance | Interaction |
|---|---|---|
| Available & Connected | Full-colour card, green "Connected" badge with pulsing dot | Clickable → opens integration config page |
| Available & Not Connected | Full-colour card, grey "Not Connected" badge | Clickable → opens integration config page |
| Locked (plan upgrade needed) | Greyed-out card (75% opacity), lock icon "Upgrade Required" badge | Not clickable; shows "Upgrade to {plan}" email link |
| Coming Soon | Greyed-out card (60% opacity), grayscale logo, purple clock "Coming Soon" badge | Not clickable; shows "Notify me when available" text |
Card Anatomy
Every integration card displays:
- Logo — Brand logo image in a white rounded container (64×64px), centered in a gradient header area (160px tall)
- Name — Integration name as card title (e.g., "Google Reviews")
- Description — One-line summary of what the integration does
- Status Badge — Top-right corner badge showing connection state, plan requirement, or coming soon
- Features List — 3 bullet points with green checkmark icons (grey when locked/coming soon)
- Action Footer — Bottom section separated by a border, showing contextual action text:
- Connected: "Manage Integration →"
- Not Connected: "Connect Now →"
- Locked: "Upgrade to Busy Venue" (links to support email)
- Coming Soon: "Notify me when available" (bell icon)
Integration Count Display
The header shows: {count} integration(s) available on your plan
This count is computed by getAvailableIntegrationsCount(), which counts integrations where available = true and comingSoon is not set.
Live Integrations
1. Google Reviews
| Property | Value |
|---|---|
| Slug | google-reviews |
| Brand Colour | #4285F4 |
| Gradient | from-white to-gray-100 |
| Logo | images/integrations/google-logo.jpeg |
| Required Plan | Busy Venue (£59/month) |
| Access Check | $user->hasGoogleReviewsAccessFromPlan() or admin |
| Config Page | GoogleReviewsIntegration |
| Nav Group | Integrations |
| Nav Sort | 51 |
Features displayed on card:
- Automated review requests
- Rating tracking
- Feedback management
Connection Status Logic:
Connected = user has at least one site with google_place_id NOT NULL
Label = "Connected" or "Not Connected"Google Reviews Configuration Page
Page Title: Google Reviews Integration
Back Link: ← Back to Integrations (links to IntegrationsHub)
Site Selector:
- Dropdown shown when user has multiple sites
- Auto-selects first site when user has only one site
- Loads site settings on selection change
Settings Fields:
| Field | Type | Description |
|---|---|---|
| Google Reviews Enabled | Toggle (header) | Master on/off switch. Displays "Active" or "Inactive" label. Cannot be enabled if site email is not verified. |
| Google Business Name | Text input with autocomplete | Type-ahead search using Google Places API. Minimum 3 characters to trigger search. Selecting a result auto-fetches the Google review URL and saves settings. |
| Google Review URL | Auto-populated | Displayed in a green info box when found. Shows the direct Google review link. |
| Send Review Request After | Number + Unit select | Two-field row: delay value (number, min 1) and unit dropdown (Minutes / Hours / Days). Default: 24 hours. Auto-saves on change. |
| Minimum Stars for Google Review | Star rating selector (1–5) | Visual 5-star picker. Default: 4. Ratings at or above threshold direct guests to Google Reviews. Lower ratings show a private feedback form. |
| Feedback Email Address | Email input | Where low-rating feedback notifications are sent. Placeholder: feedback@yourdomain.com. |
| Review Emails Sent From | Read-only display | Shows the site's verified email address and name. If not verified, shows a red warning box with "Set Up Email Now" button linking to Email Setup page. |
| Send Test Email | Email input + button | Enter an email address and send a test review request email. Creates an EmailLog entry with is_test = true. |
Save Action: Saves all settings to the Site model. If Google Reviews are enabled and a business name is provided without a review URL, it auto-searches Google Places to fetch place_id and review_url.
Prerequisites:
- Site must have a verified custom email address (email domain verification)
- Without verified email, the toggle will refuse to enable and show an error message
How It Works (displayed on page):
- After a guest connects to WiFi, they receive a branded email with star ratings
- High ratings (threshold+ stars) are directed to your Google Reviews page
- Low ratings show a private feedback form instead
- All activity is tracked in your dashboard
2. Mailchimp
| Property | Value |
|---|---|
| Slug | mailchimp |
| Brand Colour | #FFE01B |
| Gradient | from-yellow-400 to-yellow-600 |
| Logo | images/integrations/mailchimp-logo.webp |
| Required Plan | Busy Venue (£59/month) |
| Access Check | $user->isOnBusyVenuePlanOrHigher() or admin |
| Config Page | MailchimpIntegration |
| Nav Group | Integrations |
| Nav Sort | 2 |
| Nav Visibility | Always shown in Integrations group for customers |
Features displayed on card:
- Automatic sync
- Audience segmentation
- Campaign triggers
Connection Status Logic:
Connected = user's mailchimp_api_key is not empty
Label = "Connected" or "Not Connected"Mailchimp Configuration Page
Page Title: Mailchimp Integration
Back Link: None (navigated from sidebar Integrations group)
Site Selector:
- Dropdown shown when user has multiple sites
- Auto-selects first site when user has only one site
- Loads per-site Mailchimp settings on selection change
Settings Fields:
| Field | Type | Description |
|---|---|---|
| Mailchimp Enabled | Toggle (header) | Master on/off switch in the yellow header bar. Shows "Active" or "Inactive". Auto-saves on toggle. |
| Mailchimp API Key | Text input (monospace) | Required. Format: xxxxx-us19 (key + datacenter suffix). Placeholder: e.g. abc123def456-us19. Help text: "Find this in your Mailchimp account under Account → Extras → API Keys" |
| Audience ID | Text input (monospace) | Required. The Mailchimp list/audience ID. Placeholder: e.g. a1b2c3d4e5. Help text: "Find this in Audience → Settings → Audience name and defaults" |
Test Connection Button:
- Validates API key format (must contain exactly one hyphen to extract datacenter)
- Calls Mailchimp API
GET https://{datacenter}.api.mailchimp.com/3.0/with Bearer token - On success: shows account name
- If Audience ID also provided: validates list by calling
GET .../3.0/lists/{listId} - Displays connection result with success/warning/error styling
Save Action: Saves mailchimp_enabled, mailchimp_api_key, and mailchimp_list_id to the Site model.
Per-Site Configuration: Each site has its own Mailchimp settings stored on the sites table:
mailchimp_enabled— booleanmailchimp_api_key— stringmailchimp_list_id— string
How It Works (displayed on page):
- When guests connect to your WiFi and provide their email, they're automatically added to your Mailchimp audience
- Guest names and email addresses sync seamlessly
- Guests can opt-out at any time using Mailchimp's unsubscribe links
- Perfect for building your marketing list and staying in touch with customers
Setup Steps:
- Navigate to Integrations → Mailchimp
- Select your site/location
- Enter your Mailchimp API key (found in Account → Extras → API Keys)
- Enter your Audience/List ID (found in Audience → Settings → Audience name and defaults)
- Click "Test Connection" to verify credentials
- Toggle the integration to "Active"
- Click "Save Settings"
New guests who connect to WiFi and provide an email will be automatically synced to your Mailchimp audience, respecting their marketing opt-in status.
3. Revinate
| Property | Value |
|---|---|
| Slug | revinate |
| Brand Colour | #00B4D8 |
| Gradient | from-cyan-500 to-teal-600 |
| Logo | images/integrations/revinate-logo.png |
| Required Plan | Busy Venue (£59/month) |
| Access Check | $user->isOnBusyVenuePlanOrHigher() or admin |
| Config Page | RevinateIntegration |
| Nav Group | Integrations |
| Nav Sort | 52 |
| Nav Label | Revinate Export |
| Special Badge | isNew: true (shown on IntegrationsHub card) |
Features displayed on card:
- Multi-site reviews
- Sentiment analysis
- TripAdvisor data
Connection Status Logic:
Connected = user has at least one site with revinate_access_token NOT NULL AND revinate_enabled = true
Label (connected) = "{count} Site(s) Connected"
Label (not connected) = "Not Connected"For admins, the count includes ALL sites across all users. For customers, only their own sites are counted.
"New" Badge: The integration is flagged with isNew: true. The hub page has a LAUNCH_DATE constant (2026-01-28) and a NEW_BADGE_DAYS constant (7 days), used by isFeatureNew() to determine if the "New" badge should be prominently displayed.
Revinate Configuration Page
Page Title: Revinate Export
Back Link: ← Back to Integrations (links to IntegrationsHub)
Stats Overview (top of page):
| Stat | Description |
|---|---|
| Connected Sites | Count of sites with revinate_access_token set |
| Active Exports | Count of sites with token set AND revinate_enabled = true |
Add/Configure Site Connection Section:
| Field | Type | Description |
|---|---|---|
| Select Site | Dropdown | Lists all user's sites (admins see all sites with owner name). Triggers loadSiteSettings() on change. |
| Access Token | Text input (monospace) | The Revinate API access token. Placeholder: 9617d668-8a9b-466f-aa0b-d5f046299611. Help text: "Your Revinate token can be found in the Revinate admin portal under API settings." |
| Export opted-in guests only | Toggle | Default: ON. When enabled, only guests who opted into marketing are exported. |
| Enable automatic export | Toggle | Default: OFF. When enabled, new guests are exported to Revinate automatically. |
Action Buttons:
- Save Settings — Saves
revinate_access_token,revinate_export_opted_in_only, andrevinate_enabledto the Site model. Reloads connected sites list and resets form.
Connected Sites Table:
Displays all sites that have a Revinate access token configured. Each entry shows:
| Column | Description |
|---|---|
| Site Name | With Active/Paused status badge |
| Owner | (Admin view only) User who owns the site |
| Token Preview | First 8 chars + "..." + last 4 chars of the access token |
| Last Export | Relative time (e.g., "2 hours ago") from revinate_last_export_at, or "Never" |
| Guest Filter | "Opted-in guests only" or "All guests" |
Per-Site Actions:
| Button | Action |
|---|---|
| Edit | Opens inline edit panel with access token, opted-in toggle, and auto-export toggle. Save/Cancel buttons. |
| Pause / Enable | Toggles revinate_enabled on the site. |
| Remove | Disconnects site from Revinate (clears token, disables export, clears last export timestamp). Requires confirmation dialog. |
Per-Site Database Fields:
revinate_access_token— string (nullable)revinate_enabled— booleanrevinate_export_opted_in_only— boolean (default: true)revinate_last_export_at— timestamp (nullable)
How It Works: When enabled, CaptiFi automatically exports new WiFi guest data to your Revinate account. This includes guest names, email addresses, and marketing preferences. Use the "Export Now" button to manually sync all existing guests.
Coming Soon Integrations
These integrations are displayed on the Integrations Hub with reduced opacity (60%), greyscale logos, a purple "Coming Soon" clock badge, and a "Notify me when available" footer. They are not clickable.
4. Facebook
| Property | Value |
|---|---|
| Slug | facebook |
| Brand Colour | #1877F2 |
| Gradient | from-blue-600 to-blue-800 |
| Logo | images/integrations/facebook-logo.png |
| Description | Connect with customers through Facebook and Instagram marketing |
Planned Features:
- Social WiFi login
- Check-in prompts
- Audience targeting
5. Twilio
| Property | Value |
|---|---|
| Slug | twilio |
| Brand Colour | #F22F46 |
| Gradient | from-red-500 to-red-700 |
| Logo | images/integrations/twilio-logo.png |
| Description | Send SMS notifications and two-way messaging to guests |
Planned Features:
- SMS campaigns
- Two-way messaging
- Delivery tracking
6. Airship
| Property | Value |
|---|---|
| Slug | airship |
| Brand Colour | #00C7B7 |
| Gradient | from-teal-500 to-teal-700 |
| Logo | images/integrations/airship-logo.png |
| Description | Push notifications and mobile engagement for your guests |
Planned Features:
- Push notifications
- Mobile engagement
- In-app messaging
7. Gmail / Google Workspace
| Property | Value |
|---|---|
| Slug | gmail |
| Brand Colour | #EA4335 |
| Gradient | from-red-400 to-orange-500 |
| Logo | images/integrations/gmail-logo.png |
| Description | Send emails through your Google Workspace account |
Planned Features:
- Google Workspace
- Domain sending
- Email tracking
8. ChatGPT / AI Assistant
| Property | Value |
|---|---|
| Slug | chatgpt |
| Brand Colour | #10A37F |
| Gradient | from-emerald-500 to-green-600 |
| Logo | images/integrations/openai-logo.png |
| Description | AI-powered guest support and content generation |
Planned Features:
- AI chatbot
- Content generation
- Smart responses
9. Zapier
| Property | Value |
|---|---|
| Slug | zapier |
| Brand Colour | #FF4A00 |
| Gradient | from-orange-500 to-orange-700 |
| Logo | images/integrations/zapier-logo.png |
| Description | Connect CaptiFi to 5,000+ apps with automated workflows |
Planned Features:
- 5,000+ app integrations
- Automated workflows
- Custom triggers
10. Slack
| Property | Value |
|---|---|
| Slug | slack |
| Brand Colour | #4A154B |
| Gradient | from-purple-600 to-purple-800 |
| Logo | images/integrations/slack-logo.png |
| Description | Get real-time notifications and updates in Slack |
Planned Features:
- Real-time alerts
- Guest notifications
- Team updates
11. HubSpot
| Property | Value |
|---|---|
| Slug | hubspot |
| Brand Colour | #FF7A59 |
| Gradient | from-orange-400 to-red-500 |
| Logo | images/integrations/hubspot-logo.png |
| Description | Sync guest data to HubSpot CRM for sales and marketing |
Planned Features:
- CRM sync
- Contact management
- Marketing automation
Access Control Summary
| Integration | Required Plan | Access Method |
|---|---|---|
| Google Reviews | Busy Venue (£59+) | hasGoogleReviewsAccessFromPlan() |
| Mailchimp | Busy Venue (£59+) | isOnBusyVenuePlanOrHigher() |
| Revinate | Busy Venue (£59+) | isOnBusyVenuePlanOrHigher() |
| All Coming Soon | N/A | Not accessible (display only) |
Admins bypass all plan restrictions and can access/configure all integrations.
Users on lower plans see locked integration cards with greyed-out logos, a lock badge reading "Upgrade Required", and a footer link to email support@captifi.io with a pre-filled upgrade request subject line.
Help Section
The bottom of the Integrations Hub page displays a blue info box:
Need help setting up integrations?
Our support team can help you connect your services. Contact us at support@captifi.io or check our documentation for step-by-step guides.
Related Files
| File | Purpose |
|---|