artisanpack-ui/analytics
Laravel package adding an admin UI for analytics: configure tracking, view key metrics and reports, and manage dashboards from your application. Designed to integrate quickly with common Laravel stacks and provide a clean, configurable analytics panel.
ap.analytics.site_selector.query → ap.analytics.siteSelector.query to align with cross-package hooks convention. Old name registered as a deprecation alias. Alias removal deferred to next major.artisanpack-ui/hooks to ^1.3.PrivacyIntegration still subscribes to legacy privacy.* hook names. Those will be updated to ap.privacy.* after the privacy package's Wave 1 rename ships; aliases in that package keep the current subscriptions working in the meantime.Four opt-in AI features that plug into artisanpack-ui/ai to turn raw analytics into narrative insights. Every feature ships an Agent, Livewire component, React and Vue components, and API endpoint, and honors the shared FeatureRegistry toggle.
analytics.insight_summary): Streaming plain-language summary of what changed over a date range, returning {summary, highlights[], concerns[]}. Backed by InsightSummaryAgent.analytics.explain_anomaly): Generates ranked hypotheses for a traffic spike or drop with confidence scores, evidence, and recommended next steps. Backed by AnomalyExplanationAgent.analytics.segment_insight): Surfaces non-obvious patterns in a referrer, page, or time segment relative to a baseline, returning observations with significance and suggested actions. Backed by SegmentInsightAgent.analytics.digest_email): Composes opt-in weekly or monthly narrative digest emails. Extends the shared SummarizationAgent and ships with SendDigestEmailJob, DigestEmailMailable, a text-focused email template, an AnalyticsDigestPreference model, and per-user cadence preferences (off | weekly | monthly).<livewire:artisanpack-analytics::ai.insight-summary />, ai.anomaly-explanation, ai.segment-insight, and ai.digest-subscription components with disabled states when the corresponding feature is toggled off.InsightSummary, AnomalyExplanation, SegmentInsight, and DigestSubscription shipped for both frameworks, together with useAiAgent and useApi hooks/composables./api/analytics/ai/* for each agent, gated behind the analytics.ai.use ability. Ships with a permissive default gate (any authenticated user); override in your AuthServiceProvider for stricter policies.analytics:digests:dispatch artisan command queues SendDigestEmailJob for every subscribed user; wire it into the scheduler on your preferred cadence.aiFeatures() registration: AnalyticsServiceProvider::aiFeatures() registers all four features with the AI package's feature registry so admin UIs can list them.analytics_digest_preferences table for per-user digest cadence.illuminate/* constraints to ^11.0|^12.0|^13.0 and orchestra/testbench to ^9.0|^10.0|^11.0. No PHP-floor change for users staying on Laravel 11 or 12.illuminate/* constraints to ^11.0|^12.0|^13.0 and orchestra/testbench to ^9.0|^10.0|^11.0. No PHP-floor change for users staying on Laravel 11 or 12.A multi-layered system that keeps automated traffic — AI crawlers, SEO tools, scrapers, and headless browsers — out of reported analytics. Bot-flagged data is stored but excluded from dashboard and query results by default. Enabled by default.
DeviceDetector now matches 60+ known bots, including AI crawlers (GPTBot, ClaudeBot, CCBot, PerplexityBot), regional crawlers (ByteSpider, Baidu, Sogou, Yandex), SEO tools (SEMrush, Ahrefs, Majestic), and scraper/automation toolingis_bot, bot_score, and bot_detected_at added to the analytics_visitors tableexcludeBots(), includeBots()/withBots(), and onlyBots() modifiers on AnalyticsQuery, plus getTopBotAgents() and getBotStats(), with a dashboard toggle to view bot trafficanalytics:bots to list flagged visitors (with CSV export) and analytics:whitelist to manage runtime whitelist entriesBotWhitelistEntry model and analytics_bot_whitelist table supplementing the static config whitelistbot_detection config section for the threshold, whitelist, per-signal toggles, and analysis schedulesymfony/yaml CVE-2026-45133)dashboard_driver is set to 'inertia'dashboard_driver option ('livewire' or 'inertia') to select dashboard rendering strategyStatsData, TopPageItem, TrafficSourceItem, breakdown types, realtime types, consent types, and all Eloquent model interfaces--stack=react|vue, --force)docs/frontend/ section with 7 pages covering overview, installation, React/Vue components, consent components, hooks/composables, and TypeScript typesdocs/api/resources.md documenting all API resourcesregisterLivewireComponents() to use addNamespace API for Livewire 4, with fallback to individual component() calls for Livewire 3registerRoutes() now delegates dashboard routing to registerDashboardRoutes() based on the configured driverpublishReactComponents(), publishVueComponents(), and registerInertiaSharedData() methodsrelease/* branches to CI workflow triggers so PRs targeting release branches run lint and testsrelease.yml with Packagist update step; added Livewire 3.6/4.0 test matrixThis is the first stable release of ArtisanPack UI Analytics.
This is the first beta release of ArtisanPack UI Analytics, a privacy-first analytics package for Laravel applications built on Livewire 3.
How can I help you explore Laravel packages today?