devhelp/piwik-api
Laravel package to integrate with the Piwik/Matomo API. Provides a simple PHP client wrapper and configuration to query analytics data (sites, visits, events, reports) from your application without dealing with low-level HTTP calls.
devhelp/piwik-api package provides a thin abstraction over Piwik (now Matomo) API calls, making it suitable for applications requiring analytics integration without deep Piwik API expertise. It fits well in:
AnalyticsService, ReportingFacade).getVisits, getActions) simplify common use cases but may lack flexibility for edge cases (e.g., custom Piwik segments or real-time tracking)..env or Vault).Illuminate\Support\Facades\Http for resilience).Mockery or Vcr for HTTP interactions).| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| Deprecated Piwik API | High | Validate compatibility with Matomo v4+; consider forking or wrapping raw HTTP calls. |
| No Active Maintenance | Medium | Monitor for breaking changes; plan for fallback to direct API calls if needed. |
| Laravel Version Support | Low | Test with Laravel 10+; use ^ constraints in composer.json. |
| Performance Overhead | Low | Benchmark API calls; cache responses (e.g., Laravel Cache) for frequent queries. |
| Security Risks | Medium | Sanitize inputs; restrict API token scope; use Laravel’s config/cache for sensitive data. |
Actions.getPageUrl, UserLogin.getLogins)?AppServiceProvider with config binding.
$this->app->singleton(PiwikApi::class, function ($app) {
return new PiwikApi(config('piwik.token'), config('piwik.site_id'));
});
Piwik facade for cleaner syntax (e.g., Piwik::getVisits()).Http client for retries/timeouts if the package lacks resilience.analytics_events) for offline analysis or caching.piwik:fetch-reports) to avoid timeouts.AnalyticsInterface).$analytics = config('analytics.use_package') ? new PiwikApi(...) : new DirectPiwikClient(...);
API.get → Actions.get*).composer require devhelp/piwik-api)..env:
PIWIK_TOKEN=your_token
PIWIK_SITE_ID=1
PIWIK_URL=https://your-piwik-instance.com
config/app.php and create a facade.PiwikService to handle business logic (e.g., "get daily active users").README or ADR (Architecture Decision Record).Cache::remember('piwik_daily_metrics', now()->addDay(), fn() => Piwik::getVisits())).spatie/laravel-queue-retries).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Piwik API downtime | Analytics unavailability | Fallback to cached data or direct HTTP calls. |
| Invalid API token | All queries fail | Validate token on startup; rotate tokens. |
| Rate limiting | Throttled requests | Implement exponential backoff; queue retries. |
| Package deprecation | Broken functionality | Fork the package or switch to Matomo SDK. |
| Data inconsistency | Stale metrics | Implement checksums or reconciliation jobs. |
Piwik::getVisits($date), Piwik::getPageViews()).PiwikService class..env requirements and token rotationHow can I help you explore Laravel packages today?