name: matomo-api description: Matomo (Piwik) analytics platform API. Use for web analytics, tracking implementation, reporting API integration, plugin development, PHP/JavaScript tracking clients, and database schema understanding.
Matomo API Skill
Comprehensive API reference for Matomo (formerly Piwik), the open-source web analytics platform. Covers tracking APIs, reporting APIs, JavaScript/PHP clients, and database schema.
When to Use This Skill
This skill should be triggered when:
- Implementing Matomo tracking on websites or applications
- Building integrations with Matomo's Reporting API
- Querying analytics data programmatically
- Setting up event tracking, goal conversions, or ecommerce tracking
- Working with Matomo's JavaScript or PHP tracking clients
- Understanding Matomo's database structure for custom queries
- Implementing consent management and privacy controls
- Debugging Matomo tracking issues
Quick Reference
Tracking HTTP API Endpoint
https://your-matomo-domain.example/matomo.php
Required Parameters:
idsite- Website ID being trackedrec=1- Required to enable tracking
Common Parameters:
action_name- Page title for pageviewsurl- Full URL of the current action_id- 16-character hexadecimal visitor IDrand- Random value to prevent cachingapiv=1- API version
Event Tracking Parameters
e_c- Event categorye_a- Event actione_n- Event namee_v- Event value (numeric)
Goal Conversion
idgoal- Goal ID to trigger conversionrevenue- Monetary value for conversion
Ecommerce Parameters
ec_id- Order IDec_items- JSON array of itemsrevenue- Total order valueec_st- Subtotalec_tx- Taxec_sh- Shippingec_dt- Discount
Reporting API Endpoint
https://your-matomo-domain.example/index.php?module=API&method=MODULE.METHOD&format=FORMAT
Standard Parameters:
| Parameter | Values | Purpose |
|---|---|---|
idSite | Integer or comma-separated | Website ID(s) |
period | day, week, month, year, range | Time period |
date | YYYY-MM-DD or magic keywords | Specific date |
format | xml, json, csv, tsv, html, rss | Output format |
token_auth | Your API token | Authentication |
Date Magic Keywords:
today,yesterdaylastWeek,lastMonth,lastYearlastX(e.g.,last7)previousX(e.g.,previous30)
JavaScript Tracking
// Page view
_paq.push(['trackPageView', 'Custom Page Title']);
// Event
_paq.push(['trackEvent', 'Category', 'Action', 'Name', Value]);
// Goal conversion
_paq.push(['trackGoal', goalId, customRevenue]);
// Site search
_paq.push(['trackSiteSearch', 'keyword', 'category', resultsCount]);
// Ecommerce order
_paq.push(['trackEcommerceOrder', orderId, grandTotal, subTotal, tax, shipping, discount]);
PHP Tracking
use MatomoTracker;
$tracker = new MatomoTracker($idSite, 'https://matomo.example.com/');
$tracker->setTokenAuth($token);
$tracker->setUserId($userId);
$tracker->doTrackPageView('Page Title');
$tracker->doTrackEvent('Category', 'Action', 'Name', $value);
$tracker->doTrackGoal($idGoal, $revenue);
Consent Management (JavaScript)
// Require consent before tracking
_paq.push(['requireConsent']);
// When user gives consent
_paq.push(['setConsentGiven']);
// Cookie-specific consent
_paq.push(['requireCookieConsent']);
_paq.push(['rememberCookieConsentGiven', hoursToExpire]);
// Opt-out
_paq.push(['optUserOut']);
Reference Files
This skill includes comprehensive documentation in references/:
- tracking-http-api.md - HTTP Tracking API specification
- reporting-api.md - Reporting API methods and parameters
- javascript-client.md - JavaScript Tracking Client reference
- php-client.md - PHP Tracking Client reference
- database-schema.md - Database tables and relationships
Common Patterns
Bulk Tracking (HTTP)
POST https://matomo.example.com/matomo.php
{
"requests": [
"?idsite=1&rec=1&url=https://example.org/page1",
"?idsite=1&rec=1&url=https://example.org/page2"
],
"token_auth": "your_token_here"
}
Bulk API Requests (Reporting)
?module=API&method=API.getBulkRequest
&urls[0]=method%3DVisitsSummary.get%26idSite%3D1%26period%3Dday%26date%3Dtoday
&urls[1]=method%3DActions.getPageUrls%26idSite%3D1%26period%3Dday%26date%3Dtoday
Segmentation
# Visits from mobile devices in United States
&segment=deviceType==smartphone;countryCode==us
# Visits with specific event
&segment=eventCategory==Video;eventAction==Play
PHP Bulk Tracking
$tracker->enableBulkTracking();
$tracker->doTrackPageView('Page 1');
$tracker->doTrackPageView('Page 2');
$tracker->doTrackEvent('Category', 'Action');
$tracker->doBulkTrack(); // Send all at once
Key API Modules
Visitor Analytics
VisitsSummary- Overall visit metricsUserCountry- Geographic dataDevicesDetection- Device and browser infoUserLanguage- Language preferences
Actions & Content
Actions- Pages, downloads, outlinksEvents- Custom event trackingContents- Content impression tracking
Conversions
Goals- Goal conversions and revenueEcommerce- Ecommerce transactions
Traffic Sources
Referrers- Traffic source analysisMarketingCampaignsReporting- Campaign tracking
Real-time
Live- Real-time visitor dataLive.getLastVisitsDetails- Recent visitor details
Core Metrics
| Metric | Description |
|---|---|
nb_uniq_visitors | Unique visitors |
nb_visits | Total visits (30-min session) |
nb_actions | Page views, downloads, outlinks |
bounce_rate | Single-page visit percentage |
avg_time_on_page | Average page duration |
revenue | Goal/ecommerce revenue |
conversion_rate | Goal achievement ratio |
Database Tables
Log Data (Raw)
log_visit- Individual visitslog_link_visit_action- Actions within visitslog_action- Action definitions (URLs, titles)log_conversion- Goal conversionslog_conversion_item- Ecommerce items
Archive Data (Aggregated)
archive_numeric_YYYY_MM- Numeric metricsarchive_blob_YYYY_MM- Report data (compressed)
Configuration
site- Website configurationgoal- Goal definitionssegment- Saved segmentsuser- User accountsaccess- User permissions
Authentication
Token Authentication
&token_auth=YOUR_TOKEN_HERE
- Create tokens in: Administration > Personal > Security > Auth tokens
- Never share URLs containing tokens publicly
- Use POST requests with token in body for enhanced security
Features Requiring Auth
- IP address override (
cip) - Custom timestamp (
cdt) - Geolocation override (
country,region,city,lat,long)
Performance Tips
- Use Bulk Tracking - Batch multiple tracking calls
- Cache API Responses - Set appropriate cache headers
- Use Segments Sparingly - Complex segments impact performance
- Archive Data - Query archive tables for historical reports
- Limit Results - Use
filter_limitto restrict row counts
Resources
- Official API Documentation
- Tracking HTTP API
- Reporting API
- JavaScript Client
- PHP Client
- Database Schema
Notes
- Matomo was formerly known as Piwik
- API supports both Matomo 4.x and 5.x versions
- Session timeout default is 30 minutes
- Visitor ID is 16-character hexadecimal
- All tracking requests should include
rec=1parameter