{{VirgilHandovers.length ? 'Human takeover requested (' + VirgilHandovers.length + ')' : VirgilUnread.length ? VirgilUnread.length + ' unread live chat(s)' : 'Live Chat alerts ready'}} {{VirgilHandovers[0].name}} is asking to speak with your team. {{VirgilUnread[0].name}} has a new conversation or message.
Waiting for a team member to take over. {{VirgilAlertError}}

{{VirgilAccessError || "Live Chat access is not available."}}

🧍

Visitors

{{TotalVisitors}}

🧍

Deliveries

{{TotalDeliveries}}

🧑‍🤝‍🧑

Customers

{{TotalPaidCustomers}}

✅

Paying Customers

{{PayingCustomers}}

🏢

Paid Locations

{{TotalPaidLocations}}

🤔

Trial Accounts

{{TrialCustomers}}

🆓

Basic Accounts

{{BasicCustomers}}

🇦🇺

{{AULocs}}

Locations

🇺🇸

{{USLocs}}

Locations

🇪🇺

{{EULocs}}

Locations

📈

Most Customers in One Month

{{MaxCustomers}} in {{MaxCustomersMonth}}

📍

Most Locations in One Month

{{MaxLocations}} in {{MaxLocationsMonth}}

📉

FY{{CurrentFYNumber}} Churn Rate

(FY{{LastFYNumber}}: {{LastFYChurnRate}}% - {{LastFYChurnCount}} lost)

{{CurrentFYChurnRate}}%

{{CurrentFYChurnRate}}%

{{CurrentFYChurnCount}} lost - Target < 7%
📉

{{CurrentQuarterName}} Churn Rate

({{LastQuarterName}}: {{LastQuarterChurnRate}}% - {{LastQuarterChurnCount}} lost)

{{CurrentQuarterChurnRate}}%

{{CurrentQuarterChurnRate}}%

{{CurrentQuarterChurnCount}} lost - Target < 1.75%
📉

{{CurrentMonthName}} Churn Rate

({{LastMonthName}}: {{LastMonthChurnRate}}% - {{LastMonthChurnCount}} lost)

{{CurrentMonthChurnRate}}%

{{CurrentMonthChurnRate}}%

{{CurrentMonthChurnCount}} lost - Target < 0.58%
📅

FY{{LatestFYStat.year.slice(2)}} Demo Conversion

(FY{{PreviousFYStat.year.slice(2)}}: {{PreviousFYStat.conversionRate}}% - {{PreviousFYStat.saleCount}} of {{PreviousFYStat.demoCount}})

{{LatestFYStat.conversionRate}}%

{{LatestFYStat.conversionRate}}%

{{LatestFYStat.saleCount}} of {{LatestFYStat.demoCount}} - Target 35%
📆

{{LatestQuarterStat.quarter}} Demo Conversion

({{PreviousQuarterStat.quarter}}: {{PreviousQuarterStat.conversionRate}}% - {{PreviousQuarterStat.saleCount}} of {{PreviousQuarterStat.demoCount}})

{{LatestQuarterStat.conversionRate}}%

{{LatestQuarterStat.conversionRate}}%

{{LatestQuarterStat.saleCount}} of {{LatestQuarterStat.demoCount}} - Target 35%
🧼

{{CurrentQuarterCleanliness.quarter}} Leads DB Cleanliness Score

({{PreviousQuarterCleanliness.quarter}}: {{PreviousQuarterCleanliness.cleanRate}}% - {{PreviousQuarterCleanliness.unattended}} of {{PreviousQuarterCleanliness.total}})

{{CurrentQuarterCleanliness.cleanRate}}%

{{CurrentQuarterCleanliness.cleanRate}}%

{{CurrentQuarterCleanliness.unattended}} of {{CurrentQuarterCleanliness.total}} - Target 90%
👤

Self Generated Leads

({{PreviousQuarterCleanliness.quarter}}: {{SelfGeneratedLastQuarter}} leads)

{{SelfGeneratedThisQuarter}}

Target is 50 per quarter
📲

Trial / Basic Usage

Accounts that have signed in a visitor at least once

{{TriedIT}}%

{{Tried}} of {{Tried+ NotTried}} - Target 80%

Conversions

New Customers

Modules Overview

A layered operations view from footprint and adoption to module health, industry mix, and regional momentum.

Core Metrics

Total Paid Modules
--
Only Core Modules
--
Paid Customers
--
0.00%
Avg. Enabled Modules per Location
--
Excludes core and trial

North Star

Overall locations: --
Evacuation Share
Strategic
--
-- locations
Percentage compare with overall locations
Notifications Share
Strategic
--
-- locations
Percentage compare with overall locations
Reporting Share
Strategic
--
-- locations
Percentage compare with overall locations

Module Performance

Status and usage by module

Legacy: customers before 2026-03-18
Compliance
---- ----
--
-- --
(--)
Deliveries
---- ----
--
-- --
(--)
Evacuation
---- ----
--
-- --
(--)
Notifications
---- ----
--
-- --
(--)
Reporting
---- ----
--
-- --
(--)
Pre-registration
---- ----
--
-- --
(--)
Safety
---- ----
--
-- --
(--)
Security
---- ----
--
-- --
(--)
Integrations
---- ----
--
-- --
(--)
TOTALS ? -- -- -- -- Avg: --

Industry Leaderboard

Top 8 industries by lead share with each segment's top 3 active modules.

Regional Distribution

Compare current module footprint by region to guide localization and expansion focus.

--
Total

Accounts - {{UniqueCustomers}} Customer Report Accounts Report Basic Account Free Trial

Paid customers to date (including expired) {{TotalPayingCustomers}}
Current active total paying customers {{PayingCustomers}}




Company Locations Paid Trial Valid Until Last Signed In
{{x.CustomerName}} {{getAccountLocationCount(x)}} {{getAccountPaidModuleCount(x)}} {{getAccountTrialModuleCount(x)}}

{{x.Subscription}}

{{x.Subscription}}

{{x.AccountValid}} {{x.LastSignedIn}}
Loading settings…

{{BookDemoSettingsType == 'training' ? 'Training' : 'Demo'}} Booking Settings

Manage the global settings used by the public {{BookDemoSettingsType == 'training' ? 'Book a Training' : 'Book a Demo'}} page. The Azure booking API reads the same global record from the `bookdemosettings` table.

Unsaved changes
Blank = applies immediately
Saves as a scheduled change, current settings stay live until then
These settings automatically load from the global Book Demo configuration account used by the Azure booking API.
A change is scheduled to take effect {{BookDemoPendingChange.effective_date | date:'d MMM yyyy'}}. Current settings stay live until then.

Duration & timing

Availability

Selected: {{BookDemoSettings.workdays || 'None'}}

Notifications

Excluded windows

Day
Start
End
Configure blocked day/time ranges without manually typing the raw settings string.

Blocked dates

Date
A full calendar day that's completely closed for booking regardless of workdays/hours — e.g. a public holiday. Unlike excluded windows, each entry here is a specific one-off date, not a recurring weekly pattern.
Unsaved changes

Leads - {{TotalLeads}}

Customer Expansion - {{getVisibleCustomerExpansionRows().length}}

Filters
  • Name:{{x.Name}}
    Status: {{x.Status || 'None'}} Subscription: {{x.Subscription || 'Unknown plan'}} Region: 🇦🇺 🇺🇸 🇪🇺 {{x.Country || 'NA'}} Hot Trigger: {{getHotTriggerLabel(x)}}
    Contact / Profile
    Company
    {{x.Company}}
    Job Title
    Email
    Phone
    {{x.Phone}}
    Date
    {{x.Date}}
    Source
    Start Date
    {{x.StartDate}}
    Last sign in
    {{x.LastSignedIn}}
    Industry
    Sales & Status
    Assigned Sales
    {{x.SalesName || 'Product'}}
    Trial Date
    {{x.TrialDate || '-'}}
    Demo Date
    Comms Status
    Lead Status
    Hot Trigger Record
    {{getHotTriggerLabel(x)}}
    Reason: {{x.HotTriggerReason}} Reason: Not recorded | {{x.HotTriggerAt}}
    Quick Notes & Task
{{row.Company || '-'}} Customer ID: {{row.CustomerID || '-'}}
{{row.Priority || '-'}}
{{row.Headquarters || '-'}}
{{row.Industry || '-'}}
{{row.ParentCompany || '-'}}
{{row.SisterCompanies || '-'}}
{{row.AustralianSubsidiaries || '-'}}
{{row.GlobalLocations || 0}}
{{row.AustralianLocations || 0}}
{{row.ContactEmails || '-'}}
{{row.ClassificationReason || '-'}}
Saving... Saved
Saving... Saved
Success
No fit
No customer expansion rows found.
Oops

Cody, are you sure this one is not a fit for expansion right now?

🔥 Hot Leads - {{HotTotalLeads}}

Leads so ready, they’re basically asking for a demo.

Filters
  • Name: {{x.Name}}

    Company: {{x.Company}}

    Email: {{x.Email}}

    Phone: {{x.Phone}}

    Date: {{x.Date}}

    Start Date: {{x.StartDate}}

    Last sign in: {{x.LastSignedIn}}

    Subscription: {{x.Subscription}}

    Trial Date: {{x.TrialDate}}

    Quote: {{x.QuoteNumber}}

    Invoice: {{x.InvoiceNumber}}

    General Notes

    Quick Notes

    Task Date

New / Expiring

Review expiring and recently created customers by segment instead of one long table.

Includes all expiry dates in {{GetExpiredRangeLabel()}}.
No expired accounts found in this range.
Includes all expiry dates in {{GetExpiringRangeLabel()}}.
No expiring accounts found in this range.
Includes all new customers created in {{GetNewCustomerRangeLabel()}}.
No new customers found in this range.

Account Deletion Queue

Review at day 28. Follow up or process eligible accounts from day 42.

Shield pauses inactivity emails and automatic deletion
{{DeleteQueueVisibleCount()}} accounts shown Demo dates and notes from Leads
{{DeleteQueueSelectedRows().length}} selected Select all applies to eligible accounts in the current filter.
Confirm: permanently delete {{DeleteQueueBulk.deleteCount}} account(s) and dismiss {{DeleteQueueBulk.dismissCount}} missing-account request(s).

Manual deletion happens now, even when an account is awaiting its automatic-deletion notice period. Dismiss only resolves a pending request.

  • {{row.customer_name || row.customer_id}} · {{row.region | uppercase}} · {{row.action === 'dismiss' ? 'Dismiss request' : 'Delete account'}}
Processing {{DeleteQueueBulk.completed}} / {{DeleteQueueBulk.rows.length}} · {{DeleteQueueBulk.current}}. Keep this page open.
Deleted: {{DeleteQueueBulk.deleted}} · Dismissed: {{DeleteQueueBulk.dismissed}} · Failed or unconfirmed: {{DeleteQueueBulk.errors.length}} · Not processed: {{DeleteQueueBulk.remaining}}
  • {{error.name}} · {{error.region | uppercase}}: {{error.message}}
Company Activity Demo date Notes Reminders Status Actions
{{x.customer_name || 'Unnamed account'}} {{x.customer_name || 'Unknown account'}}
{{x.region | uppercase}}{{x.system_request === undefined ? 'Awaiting update' : (x.system_request ? x.track : 'Customer request')}}{{x.customer_id}}
{{x.subscription || '—'}}{{DeleteQueueDate(x.account_created)}} {{x.days_inactive !== null && x.days_inactive !== undefined ? x.days_inactive + ' days' : '—'}}{{x.last_sign_in ? DeleteQueueDate(x.last_sign_in) : (x.data_complete ? 'No sign-ins' : 'Unavailable')}} {{x.visitors !== null && x.visitors !== undefined ? x.visitors : '—'}} {{DeleteQueueDate(date)}}{{x.demo_date ? DeleteQueueDate(x.demo_date) : (x.demo_booked ? 'Date unavailable' : (x.data_complete ? '—' : 'Unavailable'))}}
{{x.notes}}
{{x.notes}}
—
21{{DeleteQueueReceipt(x.reminder_21, x.protected, x.account_found && x.data_complete)}}
28{{DeleteQueueReceipt(x.reminder_28, x.protected, x.account_found && x.data_complete)}}
42{{DeleteQueueReceipt(x.reminder_42, x.protected, x.account_found && x.data_complete)}}
Customer request
{{x.request_origin.label || 'Source unknown'}}
{{DeleteQueueEventTime(x.request_origin.at || x.requested_at)}}
{{DeleteQueueStatus(x).label}}{{DeleteQueueStatus(x).detail}}Earliest: {{DeleteQueueDate(x.scheduled_delete_date)}}
Details
{{event.action === 'shield_added' ? 'Shield added by' : 'Shield removed by'}} {{event.actor}}
{{DeleteQueueEventTime(event.at)}}
{{x.shield_history_unavailable ? 'Shield history unavailable' : 'No recorded shield changes'}}
{{DeleteQueueEventTime(x.requested_at)}}
No accounts match this view.
Loading accounts…

Automatically deleted

Completed automatic deletions across AU, US and EU. Manual deletions are excluded.

Only visible to you
Total automatically deleted{{AutoDeletionHistorySummary().total}}All recorded history
Last 30 days{{AutoDeletionHistorySummary().recent}}By deletion date · Sydney time
By region
AU{{AutoDeletionHistorySummary().au}}US{{AutoDeletionHistorySummary().us}}EU{{AutoDeletionHistorySummary().eu}}
{{AutoDeletionHistoryFiltered().length}} records shown Newest first · all timestamps in Sydney time
CompanyDeleted atTrackVisitorsDays inactive28-day noticeFinal notice
{{x.customer_name || 'Name unavailable'}}
{{x.region | uppercase}} Automatically deleted{{x.customer_id}}
{{AutoDeletionHistoryTime(x.deleted_at)}}{{x.track}}{{x.visitors}}{{x.days_inactive !== null ? x.days_inactive + ' days' : '—'}}{{AutoDeletionHistoryTime(x.notice_28_at)}}{{AutoDeletionHistoryTime(x.final_notice_at)}}
Page {{AutoDeletionHistoryPage}} of {{AutoDeletionHistoryPages()}} · 25 per page
Loading deletion history…
{{AutoDeletionHistoryError ? 'History is incomplete. Refresh to retry unavailable regions.' : (AutoDeletionHistory.length ? 'No deleted accounts match these filters.' : 'No completed automatic deletions have been recorded yet.')}}

Only confirmed automatic deletions recorded by the 42-day flow appear here. Earlier deletions without an automatic-deletion record cannot be classified.

Update your account details

Company

Contact name

Contact email

Contact phone

Address

ABN

Website


Update

Manual bank payments

{{BankTransactionsError}}



Select Description Date Status Amount
Loading bank transactions...
{{x.description || x.merchant_name || 'Bank credit'}} {{FormatSydneyDateTime(x.posted_at_utc || x.transaction_at_utc)}} {{x.status === 'posted' ? 'Posted' : 'Pending'}} {{FormatBankAmount(x.amount_minor)}}
No unallocated credits are available.

Open Stripe invoices

{{StripeOpenInvoicesError}}
More than 1,000 open invoices matched. Apply one filter to narrow the result.
Select Invoice Customer Generated Amount due
Loading open Stripe invoices...
{{x.invoice_number || x.stripe_invoice_id}}
{{x.stripe_invoice_id}}
{{x.customer_name || x.customer_email || x.stripe_customer_id}}
{{x.customer_email}} | {{x.customer_id}}
{{FormatSydneyDateTime(x.created_at_utc)}} {{FormatInvoiceAmount(x.amount_minor, x.currency)}}
No matching open Stripe invoices.

Completed allocations

{{CompletedBankAllocationsError}}
Stripe invoice Customer Bank description AUD received Completed
Loading completed allocations...
{{x.StripeInvoiceID}} {{x.CustomerID}}
{{x.TargetDomain}}
{{x.BankDescription}} {{FormatBankAmount(x.SettlementAmountMinor)}} {{FormatSydneyDateTime(x.CompletedAt)}}
No completed allocations.
Showing {{CompletedBankAllocationsPagination.from}}–{{CompletedBankAllocationsPagination.to}} of {{CompletedBankAllocationsPagination.total}}
  • Conversions

  • Conversion %

  • Source Breakdown

    Filtered by {{ WebStatsStartDate }} to {{ WebStatsEndDate }} | {{ StatsCountry=='All' ? 'All Countries' : StatsCountry }} | Confirmed conversions

    {{ x.sourceLabel }}
    {{ x.confirms }} {{ x.confirms == 1 ? 'conversion' : 'conversions' }}
    No conversions in this window
    {{ x.sourceLabel }} · 0
    No source attribution data in this window.
  • Top Pages
    Page Conversions
    {{ p.url }} {{ p.confirms }}/{{ p.count }}
  • Detailed Source Attribution
    Source Attempts Conversions Rate Basic Demo Quote
    {{ x.sourceLabel }} {{ x.attempts }} {{ x.confirms }} {{ x.conversionRate | number:1 }}% {{ x.basicConfirms }}/{{ x.basicAttempts }} {{ x.demoConfirms }}/{{ x.demoAttempts }} {{ x.quoteConfirms }}/{{ x.quoteAttempts }}
    No source attribution data in this window.
  • Industries

  • Leads by Industry (Range)
    Leads by Industry (Total)
  • Demos

  • Avg per month

    {{DemoTrialStats.AverageDemosPerMonth}}

    This Month

    {{DemoTrialStats.DemosThisMonth}}

    Avg per week

    {{DemoTrialStats.AverageDemosPerWeek}}

    Last Week

    {{DemoTrialStats.DemosLastWeek}}

    {{DemoTrialStats.DemosLastWeek}}

    This Week

    {{DemoTrialStats.DemosThisWeek}}

    {{DemoTrialStats.DemosThisWeek}}

    Next Week

    {{DemoTrialStats.DemosNextWeek}}

    Updating
  • Basics

  • Avg per month

    {{BasicAccountsStats.AveragePerMonth}}

    This Month

    {{BasicAccountsStats.ThisMonth}}

    Avg per week

    {{BasicAccountsStats.AveragePerWeek}}

    Last Week

    {{BasicAccountsStats.LastWeek}}

    {{BasicAccountsStats.LastWeek}}

    This Week

    {{BasicAccountsStats.ThisWeek}}

    {{BasicAccountsStats.ThisWeek}}

    Updating
  • Phone calls

  • Last Month

    {{CallStats.CallsLastMonth}}

    This Month

    {{CallStats.CallsThisMonth}}

    Avg per week

    {{CallStats.AverageCallsPerWeek}}

    Last week

    {{CallStats.CallsLastWeek}}

    This week

    {{CallStats.CallsThisWeek}}

    Updating
  • Types of calls in the last two months

  • Last months performance compared to the 6 month average

  • Impressions

    {{LatestGoogleSearchConsole.TotalImpressions}}

    {{LatestGoogleSearchConsole.TotalImpressions}}

    Clicks

    {{LatestGoogleSearchConsole.TotalClicks}}

    {{LatestGoogleSearchConsole.TotalClicks}}

    Keywords in the top 20

    {{LatestGoogleSearchConsole.KeywordsUnder20}}

    {{LatestGoogleSearchConsole.KeywordsUnder20}}

    Keywords on the first page

    {{LatestGoogleSearchConsole.KeywordsUnder8}}

    {{LatestGoogleSearchConsole.KeywordsUnder8}}

    Keywords in the top 3

    {{LatestGoogleSearchConsole.KeywordsUnder3}}

    {{LatestGoogleSearchConsole.KeywordsUnder3}}

Ads Performance

API Snapshot

{{GetAdsPerformanceAsOfLabel()}}

to
Loading ads performance...
{{AdsPerformanceError}}
{{AdsPerformancePlatformLabel(platformKey)}}
As of {{GetAdsPerformancePlatform(platformKey).as_of || 'No data yet'}}
{{GetAdsPerformancePlatform(platformKey).windows.selected.label || 'Selected range'}}
Spend
${{GetAdsPerformancePlatform(platformKey).kpis.spend || 0}}
Clicks
{{GetAdsPerformancePlatform(platformKey).kpis.clicks || 0}}
Conversions
{{GetAdsPerformancePlatform(platformKey).kpis.conversions || 0}}
CPA
${{GetAdsPerformancePlatform(platformKey).kpis.cpa || 0}}
MTD Spend
${{GetAdsPerformancePlatform(platformKey).budgetPacing.mtdSpend || 0}}
Projected Month End
${{GetAdsPerformancePlatform(platformKey).budgetPacing.projectedMonthEndSpend || 0}}
Spend
${{AdsPerformance.kpis.spend || 0}}
Clicks
{{AdsPerformance.kpis.clicks || 0}}
Conversions
{{AdsPerformance.kpis.conversions || 0}}
CPA
${{AdsPerformance.kpis.cpa || 0}}
MTD Spend
${{AdsPerformance.budgetPacing.mtdSpend || 0}}
Projected Month End
${{AdsPerformance.budgetPacing.projectedMonthEndSpend || 0}}
Window
{{AdsPerformance.windows.selected.label || 'Selected range'}}
{{AdsPerformance.windows.selected.start}} to {{AdsPerformance.windows.selected.end}}
Daily Spend Trend
{{AdsPerformancePlatformLabel(platformKey)}} {{AdsPerformancePlatformLabel(platformKey)}}
{{AdsPerformancePlatformLabel(AdsPerformanceFilters.Channel)}} {{AdsPerformancePlatformLabel(AdsPerformanceFilters.Channel)}}

LEADS ATTRIBUTED TO ADS

Window: {{AdsLeadPerformance.window.label || 'Loading'}} • {{AdsLeadPerformance.window.start}} to {{AdsLeadPerformance.window.end}}
Loading attributed leads...
{{AdsLeadPerformanceError}}
Attributed leads
{{AdsLeadPerformance.totals.leadCount || 0}}
With customer ID
{{AdsLeadPerformance.totals.customerCount || 0}}
Still lead only
{{AdsLeadPerformance.totals.noCustomerCount || 0}}
Capture mode
{{AdsLeadPerformance.mode == 'last30' ? 'Backfill' : 'Daily sync'}}
By source
{{x.sourceLabel}}
{{x.customerCount}} with customer ID • {{x.noCustomerCount}} still lead only
{{x.leadCount}}
No Google Ads or LinkedIn leads in this window.
Daily matched customers
{{x.metric_date}} {{x.sourceLabel}}
{{x.leadCount}} leads • {{x.customerCount}} customers created
{{x.customerCount}}
No attributed lead activity in this window.
Attributed lead rows
Date Source Lead Status Customer ID Action
{{x.Date}} {{x.SourceLabel}}
{{x.Company || x.Name || 'Lead'}}
{{x.Email || x.Name}}
{{x.Status || 'Unknown'}}
Trial {{x.TrialDate}}
{{x.CustomerID}} Not yet
No attributed leads found for this window.

VISUAL SUMMARY

Spend mix
Where budget went in the selected period.
Google Ads LinkedIn
Conversion path
How attention moves from view to click to outcome.
Campaign spend map
Top campaigns by spend, with conversions beside the spend pattern.

WHAT CHANGED ({{AdsPerformance.windows.selected.label || 'SELECTED RANGE'}} VS PREVIOUS PERIOD)

{{x.badge}} {{x.platformLabel}}
{{x.campaign_name}}
{{x.summary}}
NOW
{{x.nowDisplay}}
BEFORE
{{x.beforeDisplay}}
CHANGE
{{x.changeDisplay}}
No campaign changes to compare yet for this range.

WHERE SPEND IS CONCENTRATED ({{AdsPerformance.windows.selected.label || 'SELECTED RANGE'}})

{{x.campaign_name}}
{{x.campaign_status || 'UNKNOWN'}} {{x.platformLabel}}
{{x.share}}% of selected campaign spend
SPEND
${{x.spend}}
CLICKS
{{x.clicks}}
CONV.
{{x.conversions}}
CPA
{{x.cpaDisplay}}
No campaign concentration data for this range.
Latest Sync
{{x.platform}} • {{x.status}}
{{x.started_at}} → {{x.finished_at}}
Rows written: {{x.rows_written}}
Show error details
{{x.error_message}}

Recurring Bundles

Manage independently purchasable bundles. Updating a bundle's catalogue values publishes a replacement version. Updating only its popup content edits the active row in place. Existing subscriptions and generated pre-billing remain unchanged.

Included modules

Account-level modules, SMS and hardware are not eligible.

No eligible modules are available.
Monthly
Yearly
2y {{BundleForm.PriceAUD_Yearly * 2 | number:2}}; 3y {{BundleForm.PriceAUD_Yearly * 3 | number:2}}
2y {{BundleForm.PriceUSD_Yearly * 2 | number:2}}; 3y {{BundleForm.PriceUSD_Yearly * 3 | number:2}}
2y {{BundleForm.PriceGBP_Yearly * 2 | number:2}}; 3y {{BundleForm.PriceGBP_Yearly * 3 | number:2}}
2y {{BundleForm.PriceEUR_Yearly * 2 | number:2}}; 3y {{BundleForm.PriceEUR_Yearly * 3 | number:2}}

Loading bundles...

Name Modules Monthly Yearly Updated Action
AUD USD GBP EUR AUD USD GBP EUR
{{b.Name}}
  • {{m.Name}}
None
${{b.PriceAUD_Monthly | number:2}} ${{b.PriceUSD_Monthly | number:2}} £{{b.PriceGBP_Monthly | number:2}} €{{b.PriceEUR_Monthly | number:2}} ${{b.PriceAUD_Yearly | number:2}} ${{b.PriceUSD_Yearly | number:2}} £{{b.PriceGBP_Yearly | number:2}} €{{b.PriceEUR_Yearly | number:2}} {{b.UpdatedAt || b.CreatedAt}}

No recurring bundles found.

Modular Pricing

Manage the module catalogue and monthly pricing. Select a row to edit, or insert a new module below.

Monthly
Yearly

Loading modules...

Name Monthly Yearly Updated Action
AUD USD GBP EUR AUD USD GBP EUR
{{m.Name}} ${{m.PriceAUD_Monthly | number:2}} ${{m.PriceUSD_Monthly | number:2}} £{{m.PriceGBP_Monthly | number:2}} €{{m.PriceEUR_Monthly | number:2}} ${{m.PriceAUD_Yearly | number:2}} ${{m.PriceUSD_Yearly | number:2}} £{{m.PriceGBP_Yearly | number:2}} €{{m.PriceEUR_Yearly | number:2}} {{m.UpdatedAt || m.CreatedAt}}

No modules found.


SMS Bundles

Manage SMS bundle catalogue and pricing. Each bundle is a one-off purchase with multi-currency options.

Loading SMS bundles...

Bundle (SMS) Price AUD Price USD Price GBP Price EUR Updated Action
{{s.Amount | number:0}} ${{s.PriceAUD | number:2}} ${{s.PriceUSD | number:2}} £{{s.PriceGBP | number:2}} €{{s.PriceEUR | number:2}} {{s.UpdatedAt || s.CreatedAt}}

No SMS bundles found.


Hardware

Manage one-off hardware catalogue pricing. Use -1 for a currency to mark it as unavailable for purchase.

Loading hardware pricing...

Name Price AUD Price USD Price GBP Price EUR Updated Action
{{h.Name}} ${{h.PriceAUD | number:2}} Unavailable ${{h.PriceUSD | number:2}} Unavailable £{{h.PriceGBP | number:2}} Unavailable €{{h.PriceEUR | number:2}} Unavailable {{h.UpdatedAt || h.CreatedAt}}

No hardware pricing found.

Automation Logs

View automation runs by region with customer-level outcomes and detailed logs.

Last updated: {{FormatAutomationLogTimestamp(AutomationLogsLastUpdatedAt)}}

Loading automation logs...

{{AutomationLogsError}}

No automation logs matched the selected filters.

{{region.flag}} {{region.label}} Execution Hierarchy: {{ AutomationLogsActiveCron === "account_and_modules_check" ? "Run \u2192 Customer \u2192 Location" : "Run \u2192 Customer" }}

{{region.runs.length}} execution(s)
{{region.error}}
No executions found.
{{run.customers.length}} customer(s) • {{run.entries_count}} log line(s)
Customer Status Log Lines
{{customer.customer_name || ('Customer ' + customer.customer_id)}} ({{customer.customer_id}}) {{customer.status_label}} {{customer.entries.length}}
{{customer.customer_name || ('Customer ' + customer.customer_id)}} ({{customer.customer_id}}) {{customer.status_label}}
Timestamp Level Message
{{entry.ts || '-'}} {{entry.level || '-'}}
{{entry.message || entry.raw}}
{{entry.details_text}}
Customer Scope Events
Timestamp Level Message
{{entry.ts || '-'}} {{entry.level || '-'}}
{{entry.message || entry.raw}}
{{entry.details_text}}
Location Details
Location Status Log Lines
{{loc.location_name || ('Location ' + loc.location_id)}} (ID: {{loc.location_id}}) {{loc.status_label}} {{loc.entries.length}}
{{loc.location_name || ('Location ' + loc.location_id)}} - {{loc.status_label}}
Timestamp Level Message
{{entry.ts || '-'}} {{entry.level || '-'}}
{{entry.message || entry.raw}}
{{entry.details_text}}
No customer rows for this execution.