{{ error }}
Overview
Accounts, properties, devices and plan mix across the platform.
Active properties
{{ fmtNum(stats.properties?.total) }}
north star
Devices online now
{{ fmtNum(stats.devices?.online) }} / {{ fmtNum(stats.devices?.total) }}
{{ onlinePct }}% online (last hour)
Accounts
{{ fmtNum(stats.accounts?.total) }}
{{ fmtNum(stats.accounts?.onboarded) }} onboarded
New users (24h)
{{ fmtNum(stats.users?.registered_24h) }}
{{ fmtNum(stats.users?.total) }} total users
Plan mix
- {{ tierLabel(t.tier) }} {{ t.pct }}% ({{ t.count }})
Recent signups
View all
| Account | Plan | Properties | Devices | Signed up | Status |
|---|---|---|---|---|---|
{{ a.name }} {{ a.owner?.email }} |
{{ tierLabel(accountTier(a)) }} | {{ a.property_count }} | {{ a.device_count }} | {{ fmtDate(a.date_created) }} | {{ statusLabel(a.subscription_status) }} |
| No accounts yet | |||||
Accounts
Host accounts, plans and deployment usage.
{{ fmtNum(accountsPagination.total) }} accounts
| Account | Owner | Plan | Status | Properties | Devices | Onboarded | Created | |
|---|---|---|---|---|---|---|---|---|
|
{{ a.name || '(unnamed)' }}
{{ [a.city, a.state].filter(Boolean).join(', ') }}
|
{{ a.owner?.name || '—' }}
{{ a.owner?.email }}
|
{{ tierLabel(accountTier(a)) }} | {{ statusLabel(a.subscription_status) }} | {{ a.property_count }} | {{ a.device_count }} | {{ fmtDate(a.date_created) }} | ||
No accounts match these filters. |
||||||||
{{ account.name || '(unnamed account)' }}
Properties
{{ account.properties?.length ?? account.num_properties ?? 0 }} / {{ limitLabel(account.max_properties) }}
Devices
{{ account.devices?.length ?? 0 }} / {{ limitLabel(account.max_devices) }}
Users
{{ account.users?.length ?? 0 }} / {{ limitLabel(account.max_users) }}
Devices
| Platform | Identifier | Property | Last seen | |
|---|---|---|---|---|
{{ d.device_identifier }} |
{{ d.property_name }} | {{ fmtRelative(d.last_seen_at) }} | ||
No devices paired yet. | ||||
Account snapshot
- Plan
- {{ tierLabel(accountTier(account)) }}
- Status
- {{ statusLabel(account.subscription_status) }}
- Created
- {{ fmtDate(account.date_created) }}
- Onboarded
- {{ account.onboarded ? 'Yes' : 'No' }}
- Trial end
- {{ account.trial_end ? fmtDate(account.trial_end) : '—' }}
- Period end
- {{ account.current_period_end ? fmtDate(account.current_period_end) : '—' }}
- Cancel at end
- {{ account.cancel_at_period_end ? 'Yes' : 'No' }}
- Payment
- {{ account.payment_method_brand ? account.payment_method_brand + ' ····' + account.payment_method_last4 : '—' }}
- Lifetime
- {{ tierLabel(account.lifetime_tier) }} · ${{ account.lifetime_purchase_price }} · {{ fmtDate(account.lifetime_purchased_at) }}
- Contact
- {{ account.email || '—' }}
{{ account.phone || '' }} - Address
- {{ [account.address_line1, account.address_line2, account.city, account.state, account.zip].filter(Boolean).join(', ') || '—' }}
- ID
{{ account.id }}
| Property | Location | |
|---|---|---|
| {{ p.name }} | {{ [p.city, p.state].filter(Boolean).join(', ') }} | |
No properties yet. | ||
| Name | Role | ||
|---|---|---|---|
| {{ u.firstname }} {{ u.lastname }} | {{ u.email }} | {{ u.is_owner ? 'Owner' : 'Member' }} |
- Provider
- {{ account.payment_provider || '—' }}
- Customer ID
{{ account.payment_customer_id || '—' }}- Subscription ID
{{ account.payment_subscription_id || '—' }}- Period
- {{ fmtDate(account.current_period_start) }} → {{ fmtDate(account.current_period_end) }}
- Has used trial
- {{ account.has_used_trial ? 'Yes' : 'No' }}
- Trial end
- {{ account.trial_end ? fmtDate(account.trial_end) : '—' }}
- Cancel at period end
- {{ account.cancel_at_period_end ? 'Yes' : 'No' }}
Admin actions on this account
- {{ fmtDateTime(e.created_at) }} {{ e.admin_email || e.admin_user_id }} {{ e.action }}
No admin actions recorded.
Properties
Every property on the platform, across all accounts.
{{ fmtNum(propertiesPagination.total) }} properties
| Property | Account | Owner | Type | Devices | Timezone | Created | |
|---|---|---|---|---|---|---|---|
|
{{ p.name || '(unnamed)' }}
{{ [p.address_line1, p.city, p.state].filter(Boolean).join(', ') }}
|
{{ p.account?.name || '—' }} | {{ p.owner?.email }} | {{ p.property_type || '—' }} · {{ p.bedrooms }}bd/{{ p.bathrooms }}ba | {{ p.device_count }} | {{ p.timezone || '—' }} | {{ fmtDate(p.created_at) }} | |
No properties match these filters. |
|||||||
{{ property.name || '(unnamed property)' }}
Devices ({{ property.devices?.length || 0 }})
| Platform | Identifier | Room | Theme | Last seen | |
|---|---|---|---|---|---|
{{ d.device_identifier }} |
{{ roomName(d.room_id) }} | {{ d.theme || 'default' }} | {{ fmtRelative(d.last_seen_at) }} | ||
No devices paired to this property. | |||||
Bookings ({{ property.bookings?.length || 0 }})
| Guest | Check-in | Check-out | Status |
|---|---|---|---|
| {{ b.guest_name || '—' }} | {{ fmtDateTime(b.check_in) }} | {{ fmtDateTime(b.check_out) }} | {{ b.status }} |
No bookings. | |||
Rooms ({{ property.rooms?.length || 0 }})
{{ r.name }}
No rooms defined.
Property details
- Type
- {{ property.property_type || '—' }}
- Beds / baths
- {{ property.bedrooms ?? '—' }} / {{ property.bathrooms ?? '—' }}
- Timezone
- {{ property.timezone || '—' }}
- Temp unit
- {{ property.temp_unit || '—' }}
- Check-in
- {{ property.default_checkin_time || '—' }}
- Check-out
- {{ property.default_checkout_time || '—' }}
- Theme
- {{ property.default_theme || 'default' }}
- Phone
- {{ property.phone || '—' }}
- WiFi
-
{{ property.wifi_ssid || '—' }}
{{ showWifi ? 'Hide' : 'Show' }} password
{{ property.wifi_password }} - Created
- {{ fmtDateTime(property.created_at) }}
- Updated
- {{ fmtDateTime(property.updated_at) }}
- ID
{{ property.id }}
Devices
Every paired TV across all accounts. Online = heartbeat in the last hour.
Online now
{{ fmtNum(stats.devices?.online) }}
{{ onlinePct }}% of {{ fmtNum(stats.devices?.total) }}
Offline
{{ fmtNum((stats.devices?.total || 0) - (stats.devices?.online || 0)) }}
no heartbeat in 1h
Platform mix (this page)
—
{{ fmtNum(devicesPagination.total) }} devices
| Device | Property | Account | Platform | Theme | Last heartbeat | Paired | ||
|---|---|---|---|---|---|---|---|---|
|
{{ d.name || platformLabel(d.platform) }}
{{ d.device_identifier }} |
{{ d.property?.name || '—' }}
{{ [d.property?.city, d.property?.state].filter(Boolean).join(', ') }}
|
{{ d.account?.name || '—' }} | {{ d.theme || 'default' }} | {{ fmtRelative(d.last_seen_at) }} | {{ fmtDate(d.created_at) }} | |||
No devices match these filters. |
||||||||
{{ device.name || platformLabel(device.platform) }}
Device token:
{{ device.device_token }} — viewing this is audited.
What the TV sees
Loading device view…
- Property
- {{ deviceInfo.property?.name }}
- Greeting
- {{ deviceInfo.greeting || deviceInfo.welcome_message || '—' }}
- Current guest
- {{ deviceInfo.booking?.guest_name || 'No active booking' }}
- WiFi
- {{ deviceInfo.wifi?.ssid || deviceInfo.property?.wifi_ssid || '—' }}
- Weather
- {{ deviceInfo.weather ? (deviceInfo.weather.temp + '° ' + (deviceInfo.weather.condition || '')) : '—' }}
- Theme
- {{ deviceInfo.theme || device.theme || 'default' }}
Raw /device/info response
{{ JSON.stringify(deviceInfo, null, 2) }}
Click "View as device" to load the TV's view.
Admin actions on this device
- {{ fmtDateTime(e.created_at) }} {{ e.admin_email || e.admin_user_id }} {{ e.action }}
No admin actions recorded.
Device details
- Property
-
{{ device.property?.name || '—' }}
{{ [device.property?.address, device.property?.city, device.property?.state].filter(Boolean).join(', ') }}
- Timezone
- {{ device.property?.timezone || '—' }}
- Platform
- {{ platformLabel(device.platform) }}
- Identifier
{{ device.device_identifier }}- Theme
- {{ device.theme || 'default' }}
- Last heartbeat
- {{ fmtRelative(device.last_seen_at) }}{{ fmtDateTime(device.last_seen_at) }}
- Paired
- {{ fmtDateTime(device.created_at) }}
- ID
{{ device.id }}
This page is not built yet.