{{ __('workspace') }}

{{ __('More features') }}

{{ __("Tools that don't need to live in the main header — automations, history, integrations, and the bits that keep your workspace humming in the background.") }}

Sorted by usage
@php $s = $stats ?? []; $deviceHealthCls = match ($s['deviceHealth'] ?? 'healthy') { 'healthy' => 'text-wa-deep', 'partial' => 'text-accent-amber', 'offline' => 'text-accent-coral', default => 'text-ink-500', }; @endphp
{{ __('Active rules') }} {{ ($s['activeRulesNew'] ?? 0) > 0 ? '+' . $s['activeRulesNew'] . ' this week' : 'no new' }}
{{ number_format($s['activeRules'] ?? 0) }} {{ __('across all tools') }}
{{ __('Queued') }} {{ $s['nextScheduled'] ?? '—' }}
{{ number_format($s['scheduledQueued'] ?? 0) }} {{ __('scheduled sends') }}
{{ __('Connected') }} {{ $s['deviceHealth'] ?? 'healthy' }}
{{ $s['deviceActive'] ?? 0 }} / {{ $s['deviceTotal'] ?? 0 }} {{ __('devices live') }}
{{ __('Notifications') }} {{ __('unread') }}
{{ number_format($s['notifActive'] ?? 0) }} {{ __('awaiting attention') }}

{{ __('All tools') }}

NEW · TEAM FEATURE

{{ __('Team Inbox') }}

{{ __('A shared WhatsApp inbox for your whole team — assign conversations, leave private internal notes, snooze, tag, and resolve together. Built for sales + support working side by side.') }}

{{ number_format($s['inboxOpen'] ?? 0) }} {{ __('open') }} {{ number_format($s['inboxUnassigned'] ?? 0) }} {{ __('unassigned') }} {{ number_format($s['agentsOnline'] ?? 0) }} {{ __('agents online') }}
{{ __('Open inbox') }}
{{-- Chat — the 1:1 WhatsApp inbox. Moved here from the main header nav to keep the top bar compact; it stays one click away. --}}
C0

{{ __('Chat') }}

{{ __('Your live WhatsApp inbox — reply to conversations one-to-one, send media, and pick up where customers left off.') }}

{{ number_format($s['inboxOpen'] ?? 0) }} {{ __('open') }} {{ __('Open chat') }}
A1

{{ __('Account') }}

{{ __('Profile, photo, password, order history, wallet, affiliate, and support tickets — all in one place.') }}

{{ ucfirst($s['planLabel'] ?? 'Free') }} · {{ number_format($s['walletCredits'] ?? 0) }} {{ __('credits') }} {{ __('Open') }}
A2

{{ __('Pricing & plans') }}

{{ __('Compare Starter, Growth, Pro and Enterprise. Switch any time — we prorate to the day.') }}

{{ $stats['pricingSubtitle'] ?? __('Free plan · upgrade to unlock') }} {{ __('View plans') }}
06

{{ __('Analytics') }}

{{ __('Delivery, read, and conversion charts across campaigns and devices.') }}

{{ number_format($stats['analytics7d'] ?? 0) }} {{ __('msgs · last 7d') }} {{ __('Open') }}
07

{{ __('Attributes') }}

{{ __('Variables for WhatsApp templates. Built-ins like') }} {{ __('first_name') }} + your custom ones ({{ __('order_id') }}, etc.). Type / in any message to insert.

{{ number_format($stats['attributesTotal'] ?? 0) }} {{ __('saved') }} {{ __('Open') }}
08

{{ __('Contacts') }}

{{ __('All your contacts and groups in one place. Import from CSV, tag, segment, and search.') }}

{{ $s['contactsTotal'] ?? 0 }} people / {{ $s['groupsTotal'] ?? 0 }} groups / {{ $s['tagsTotal'] ?? 0 }} {{ __('tags') }} {{ __('Open') }}
08

{{ __('Broadcasts') }}

{{ __('Template broadcasts to selected contacts with send, delivery, read, failed, and queued tracking.') }}

{{ $s['broadcastQueued'] ?? 0 }} queued{{ $s['broadcastPct'] !== null ? ' / ' . $s['broadcastPct'] . '% delivered' : '' }} {{ __('Open') }}
01

{{ __('Auto Reply') }}

{{ __('Trigger replies on keywords, business hours, or when an agent is away.') }}

{{ $s['autoReplyCount'] ?? 0 }} rules{{ $s['autoReplyMatchPct'] !== null ? ' / ' . $s['autoReplyMatchPct'] . '% match' : '' }} {{ __('Open') }}
02

{{ __('Scheduled Messages') }}

{{ __('Queue sends for the right moment — by timezone, segment, or trigger.') }}

{{ $s['scheduledQueued'] ?? 0 }} queued / next {{ $s['nextScheduled'] ?? '—' }} {{ __('Open') }}
03

{{ __('Message History') }}

{{ __('Searchable archive of every message in and out — exportable to CSV.') }}

{{ $s['messageHistoryHuman'] ?? '0' }} {{ __('records') }} {{ __('Open') }}
04

{{ __('Notifications') }}

{{ __('Route alerts to email, Slack, or in-app — set quiet hours per channel.') }}

{{ $s['notifActive'] ?? 0 }} {{ __('unread') }} {{ __('Open') }}
05

{{ __('Integrations') }}

{{ __('Connect Shopify, HubSpot, Zapier, and more — sync contacts and orders.') }}

{{ $s['integrationsConnected'] ?? 0 }} connected / {{ $s['integrationsAvailable'] ?? 0 }} {{ __('available') }} {{ __('Open') }}
{{-- Google account — central place to connect/disconnect the workspace Google. The same OAuth tokens are used by the BookAppointment node, the Google Meet flow node, and the team-inbox composer's "Send Meet link" button. --}} @php // Safe nested-array access — `?->appointment_settings` may // be null on a fresh workspace, and `null['key']` raises a // PHP 8 warning. data_get() handles the chain. $googleConnected = (bool) data_get( \Illuminate\Support\Facades\Auth::user()?->currentWorkspace, 'appointment_settings.google_oauth.access_token', false, ); @endphp
06

{{ __('Google account') }}

{{ __('Connect once — powers Calendar, Meet links in flows, and the inbox "Send Meet link" composer button.') }}

{{ $googleConnected ? 'connected' : 'not connected' }} {{ $googleConnected ? 'Manage' : 'Connect' }}
{{-- AI Call Assistant — voice-AI agent that answers phone calls. Config wizard lives here; the actual real-time call loop runs in the Node bridge. --}} @php $assistantsCount = (int) \App\Models\AiCallAssistant::where( 'workspace_id', \Illuminate\Support\Facades\Auth::user()?->current_workspace_id ?? 0, )->count(); $assistantsLive = (int) \App\Models\AiCallAssistant::where( 'workspace_id', \Illuminate\Support\Facades\Auth::user()?->current_workspace_id ?? 0, ) ->where('status', 'live') ->count(); @endphp
07

{{ __('AI Call Assistant') }}

{{ __('Voice AI that answers phone calls — Gemini brain, ElevenLabs voice, your own tools mid-call.') }}

{{ $assistantsCount }} configured / {{ $assistantsLive }} {{ __('live') }} {{ __('Open') }}
{{-- Call Logs — every voice call's transcript + recording + tool calls + cost. Read-only; writes come from Node's Twilio webhook handler. --}} @php $callLogsCount = (int) \App\Models\AiCallLog::where( 'workspace_id', \Illuminate\Support\Facades\Auth::user()?->current_workspace_id ?? 0, ) ->where('started_at', '>=', now()->subDay()) ->count(); $callLogsMins = (int) (\App\Models\AiCallLog::where( 'workspace_id', \Illuminate\Support\Facades\Auth::user()?->current_workspace_id ?? 0, ) ->where('started_at', '>=', now()->subDay()) ->sum('duration_seconds') / 60); @endphp
08

{{ __('Call Logs') }}

{{ __('Transcripts, recordings, and tool-call timelines for every voice call the AI handled.') }}

{{ $callLogsCount }} calls / {{ $callLogsMins }} min · 24h {{ __('Open') }}
{{-- WhatsApp Forms — Meta-native interactive forms. ONLY shown when the workspace is on the WABA engine. Flows are a Meta Cloud API exclusive feature: publishing a form requires uploading the schema to Graph API and getting back a meta_flow_id; sending uses the interactive type "flow" message Baileys + Twilio don't support. Hiding the card prevents Baileys/Twilio operators from opening the builder, only to fail at publish time with "No WABA provider configured." --}} @php $_wsId = \Illuminate\Support\Facades\Auth::user()?->current_workspace_id ?? 0; $_engine = $_wsId ? \App\Services\WorkspaceEngine::for($_wsId) : ''; $_showForms = $_engine === 'waba'; if ($_showForms) { $formsCount = (int) \App\Models\WaForm::where('workspace_id', $_wsId)->count(); $formsLive = (int) \App\Models\WaForm::where('workspace_id', $_wsId) ->where('status', 'published') ->count(); } @endphp @if ($_showForms)
09

{{ __('Forms') }}

{{ __('Native WhatsApp interactive forms — collect leads, surveys, and bookings inside the chat.') }}

{{ $formsCount }} drafted / {{ $formsLive }} {{ __('live') }} {{ __('Open') }}
@endif {{-- WhatsApp Link Generator — trackable wa.me deep-links with a custom short-slug and click analytics. Plain wa.me use case (landing pages, Instagram bios, business cards) — separate from the chatbot widget (which runs a real chat surface) and wa-forms (Meta Flows). --}} @php $wsForWcl = \Illuminate\Support\Facades\Auth::user()?->current_workspace_id ?? 0; $wclCount = (int) \App\Models\WaChatLink::where('workspace_id', $wsForWcl)->count(); $wclClicks = (int) \App\Models\WaChatLink::where('workspace_id', $wsForWcl)->sum('click_count'); @endphp
12

{{ __('WhatsApp Link Generator') }}

{{ __('Mint trackable wa.me short links with a custom slug, pre-typed message, QR code, and click analytics. Drop it on a bio, landing page, or business card.') }}

{{ $wclCount }} links / {{ number_format($wclClicks) }} {{ __('clicks') }} {{ __('Open') }}
{{-- Chatbot Widget — embeddable floating chat bubble for the operator's own site. Each widget can be backed by an AI assistant; conversations land in Team Inbox. --}} @php $wsForCards = \Illuminate\Support\Facades\Auth::user()?->current_workspace_id ?? 0; $widgetsCount = (int) \App\Models\ChatbotWidget::where('workspace_id', $wsForCards)->count(); $widgetsLive = (int) \App\Models\ChatbotWidget::where('workspace_id', $wsForCards) ->where('status', 'active') ->count(); @endphp
10

{{ __('Chatbot Widget') }}

{{ __('Embed a floating chat bubble on your site. AI replies in-browser, hands off to Team Inbox when needed.') }}

{{ $widgetsCount }} built / {{ $widgetsLive }} {{ __('active') }} {{ __('Open') }}
{{-- AI Training — chat assistants + their knowledge sources. Powers the chatbot widget (and future text channels). --}} @php $aitAssistants = (int) \App\Models\AiChatAssistant::where('workspace_id', $wsForCards)->count(); $aitSources = (int) \App\Models\AiTrainingSource::where('workspace_id', $wsForCards) ->where('status', 'ready') ->count(); @endphp
11

{{ __('AI Training') }}

{{ __('Train chat assistants on your own content — URLs, text snippets, Q&A pairs, plain-text files.') }}

{{ $aitAssistants }} assistants / {{ $aitSources }} {{ __('sources') }} {{ __('Open') }}
10

{{ __('Webhooks') }}

{{ __('Push delivery, read, and reply events to any HTTPS endpoint in real time.') }}

{{ $s['webhookEndpoints'] ?? 0 }} endpoints{{ $s['webhookUptimePct'] !== null ? ' / ' . $s['webhookUptimePct'] . '% up' : '' }} {{ __('Open') }}
07

{{ __('Support') }}

{{ __('Talk to a human, browse known issues, or check service status.') }}

{{ $s['supportTotal'] ?? 0 }} tickets / {{ $s['supportOpen'] ?? 0 }} {{ __('open') }} {{ __('Open') }}
08

{{ __('Activity Log') }}

{{ __('Every sign-in, workspace switch, inbox action, and admin change — attributed to user, IP, and time.') }}

{{ number_format($stats['activity24h'] ?? 0) }} {{ __('events · 24h') }} {{ __('Open') }}
09

{{ __('Guidebook') }}

{{ __('Step-by-step playbooks — from first send to advanced segmentation.') }}

{{ number_format($stats['guidebookArticles'] ?? 0) }} {{ __('articles') }} {{ __('Open') }}
10

{{ __('Devices') }}

{{ __('Pair WhatsApp numbers, monitor session health, and rotate devices per workspace.') }}

{{ $s['deviceActive'] ?? 0 }} / {{ $s['deviceTotal'] ?? 0 }} {{ __('live') }} {{ __('Open') }}
11

{{ __('Team members') }}

{{ __('Invite teammates, assign roles (owner / admin / member), and scope access per workspace.') }}

{{ $s['planSeats'] ?? 1 }} seat{{ ($s['planSeats'] ?? 1) === 1 ? '' : 's' }} {{ __('active') }} {{ __('Open') }}
{{-- Affiliate history card was moved into the right-aside hero slot below "Verify HMAC every time" — see further down in this view. --}}
{{ __('Shortcuts') }}

{{ __('Jump into common tasks') }}