Piwik PRO integration
Piwik PRO Analytics Suite: run Analytics report, raw event and session queries (also on Real-time data), manage goals, custom dimensions and annotations, apps (websites), meta sites, users, user groups and their permissions, Tag Manager tags, triggers, variables and versions (draft, publish, restore, export), container and tracker settings, the audit log, and Data Activation audiences, activations, profile attributes and webhook imports. Left out: deprecated routes, login and password change, the tracking and inbound webhook endpoints, streaming tracker logs, file import, debug links, module access, Google Ads lookups, the full visitor profile read (it returns visitor IP addresses and geolocation) and the activation full update, and activation webhook URLs and request headers are cut from every answer. Authentication is OAuth2 client credentials: create an API key (Client ID and Client secret) in Piwik PRO under your profile, API keys, and give your account name (example for example.piwik.pro); tokens last 30 minutes and are renewed with the same keys.
Say what should happen.
The workflow builds itself.
What you can do with Piwik PRO
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
User, 12 operations
add_users_to_user_groupAdd users to user groupPOSTAdd users to a user group; they gain its permissions. user_group_id from list_user_groups, user ids from list_users.create_annotationCreate annotationPOSTAdd a user annotation (a note on a date) to a website's Analytics charts.delete_annotationDelete annotationDELETEDelete a user annotation for good. id from list_annotations, website_id from list_apps.delete_userDelete userDELETERemove a user from the account for good. userId from list_users.get_annotationGet annotationGETGet one user annotation. id from list_annotations, website_id from list_apps.get_userGet userGETGet one user: email, role, language and when added. userId from list_users.list_annotationsList annotationsGETList the user annotations of a website (notes pinned to dates on Analytics charts). website_id from list_apps is required; filter by date range.list_app_user_permissionsList app user permissionsGETList the users (owners excluded) of an app (website) and their permission on it, explicit or inherited from user groups. app_id from list_apps. Paged with limit and offset; search matches an email or user id.list_meta_site_user_permissionsList meta site user permissionsGETList the users (owners excluded) of a meta site and their permission on it, explicit or inherited from user groups. meta_site_id from list_meta_sites. Paged with limit and offset.list_user_group_usersList user group usersGETList the members of a user group. user_group_id from list_user_groups.list_usersList usersGETList the users of the account with their email, role and language. Paged with limit and offset; search by email or id.remove_users_from_user_groupRemove users from user groupDELETERemove users from a user group; they lose the permissions it gave them. user_group_id from list_user_groups.
App, 8 operations
add_apps_to_meta_siteAdd apps to meta sitePOSTAdd up to 1000 apps to a meta site in one call. meta_site_id from list_meta_sites, app ids from list_apps.create_appCreate appPOSTCreate an app (a website or SharePoint app to track) with its name and URLs. Returns the new app with its id.delete_appDelete appDELETEDelete an app (website) and stop tracking it. Irreversible. app_id from list_apps.get_appGet appGETGet an app's full settings: URLs, timezone, currency, privacy and tracking options. app_id from list_apps.get_app_tracker_settingsGet app tracker settingsGETGet an app's tracker settings (its own values merged with the global ones). app_id from list_apps.list_appsList appsGETList the apps (websites and SharePoint apps) of the account. Their ids are the app_id and website_id other tools take. Paged with limit and offset; search by name or id; sort by name or addedAt.list_meta_site_appsList meta site appsGETList the apps that belong to a meta site. meta_site_id from list_meta_sites.remove_apps_from_meta_siteRemove apps from meta siteDELETERemove up to 1000 apps from a meta site in one call. meta_site_id from list_meta_sites, app ids from list_meta_site_apps.
Tag, 6 operations
create_tagCreate tagPOSTCreate a Tag Manager tag in an app's draft from a template (custom code, Piwik PRO, Meta pixel, Google Ads...). It goes live only once the draft is published.delete_tagDelete tagDELETEDelete a tag from an app's draft. tag_id from list_tags.get_tagGet tagGETGet one tag with its template options, code, triggers and variables. tag_id from list_tags.list_tagsList tagsGETList the Tag Manager tags of an app's draft, with filters (name, template, consent type, active) and sort. app_id from list_apps. Paged with page[limit] and page[offset].list_trigger_tagsList trigger tagsGETList the tags a trigger fires. trigger_id from list_triggers. Paged with page[limit] and page[offset].list_variable_tagsList variable tagsGETList the tags that use a variable. variable_id from list_variables. Paged with page[limit] and page[offset].
User group, 6 operations
create_user_groupCreate user groupPOSTCreate a user group with a unique name. Add members with add_users_to_user_group.delete_user_groupDelete user groupDELETEDelete a user group for good; its members lose the permissions it gave them. user_group_id from list_user_groups.get_user_groupGet user groupGETGet one user group. user_group_id from list_user_groups.list_app_user_group_permissionsList app user group permissionsGETList the user groups and their permission on an app (website). app_id from list_apps. Paged with limit and offset.list_meta_site_user_group_permissionsList meta site user group permissionsGETList the user groups and their permission on a meta site. meta_site_id from list_meta_sites. Paged with limit and offset.list_user_groupsList user groupsGETList the user groups of the account. Paged with limit and offset; search by name.
Activation, 5 operations
create_activationCreate activationPOSTCreate an activation that sends profiles of an audience to a webhook or Google Ads when they join or leave it. With status active it starts sending at once.delete_activationDelete activationDELETEDelete an activation for good; it stops sending profiles. id from list_activations.get_activationGet activationGETGet one activation: audience, trigger, consents, type and Google Ads settings. id from list_activations. The webhook URL is not returned.list_activation_logsList activation logsGETList the sends of an activation in the last 30 days, newest first: profile, status, error and response status. activation_id from list_activations. Paged with offset and limit.list_activationsList activationsGETList the activations of an app (actions sent to a webhook or Google Ads when a profile joins or leaves an audience). Filter by audience_id. app_id from list_apps.
Audience, 5 operations
create_audienceCreate audiencePOSTCreate an audience (a segment of profiles defined by conditions). Profiles that match join it, and activations attached to it can then fire.delete_audienceDelete audienceDELETEDelete an audience for good. id from list_audiences.get_audienceGet audienceGETGet one audience with its definition, membership duration and version. id from list_audiences.list_audiencesList audiencesGETList the audiences (profile segments) of an app. app_id from list_apps.list_profile_audiencesList profile audiencesGETList the audiences a visitor profile belongs to, by its cookie_id (the visitor ID stored in the browser cookie).
Settings, 5 operations
get_app_container_settingGet app container settingGETGet one container setting of an app. app_id from list_apps, setting_name from list_app_container_settings.get_organization_container_settingGet organization container settingGETGet one organization-wide container setting. setting_name from list_organization_container_settings.list_app_container_settingsList app container settingsGETList an app's container (Tag Manager script) settings. app_id from list_apps.list_organization_container_settingsList organization container settingsGETList the organization-wide container settings. organization is the account name.reset_app_container_settingReset app container settingDELETERemove an app's custom value of a container setting, so it inherits the organization value again. app_id from list_apps.
Trigger, 5 operations
create_triggerCreate triggerPOSTCreate a Tag Manager trigger (page view, click, form submission, event, scroll...) with its conditions in an app's draft.delete_triggerDelete triggerDELETEDelete a trigger from an app's draft. trigger_id from list_triggers.get_triggerGet triggerGETGet one trigger with its conditions and the tags it fires. trigger_id from list_triggers.list_tag_triggersList tag triggersGETList the triggers of a tag. tag_id from list_tags. Paged with page[limit] and page[offset].list_triggersList triggersGETList the Tag Manager triggers of an app's draft, with filters and sort. app_id from list_apps. Paged with page[limit] and page[offset].
Variable, 5 operations
create_variableCreate variablePOSTCreate a Tag Manager variable (constant, cookie, data layer, DOM element, custom JavaScript, lookup table...) in an app's draft.delete_variableDelete variableDELETEDelete a variable from an app's draft. variable_id from list_variables.get_variableGet variableGETGet one variable with its value, options and where it is used. variable_id from list_variables.list_tag_variablesList tag variablesGETList the variables a tag uses. tag_id from list_tags. Paged with page[limit] and page[offset].list_variablesList variablesGETList the Tag Manager variables of an app's draft, with filters and sort. app_id from list_apps. Paged with page[limit] and page[offset].
Goal, 4 operations
create_goalCreate goalPOSTCreate a goal on a website: what triggers it (url, title, event, file, external website or manually), the pattern and the revenue.delete_goalDelete goalDELETEDelete a goal for good. id from list_goals, website_id from list_apps.get_goalGet goalGETGet one goal. id from list_goals, website_id from list_apps.list_goalsList goalsGETList the goals of a website. website_id from list_apps. Paged with limit and offset.
Meta site, 4 operations
create_meta_siteCreate meta sitePOSTCreate a meta site (a group of apps reported together). Add apps to it with add_apps_to_meta_site.delete_meta_siteDelete meta siteDELETEDelete a meta site for good; its apps are kept. meta_site_id from list_meta_sites.get_meta_siteGet meta siteGETGet one meta site. meta_site_id from list_meta_sites.list_meta_sitesList meta sitesGETList the meta sites (groups of apps reported together). Paged with limit and offset; search by name.
Webhook import, 4 operations
create_webhook_importCreate webhook importPOSTCreate a webhook import definition that maps incoming webhook keys to profile identifiers and event data. The id is generated when left out.get_webhook_importGet webhook importGETGet one webhook import definition. id from list_webhook_imports.list_webhook_import_logsList webhook import logsGETList the requests a webhook import received in the last 30 days, newest first, with their status and error. webhook_import_id from list_webhook_imports. Paged with offset and limit.list_webhook_importsList webhook importsGETList the webhook imports of an app (inbound webhooks that write events into profiles). app_id from list_apps.
Copy, 3 operations
copy_tagCopy tagPOSTCopy a tag, in the same app or into another app. Returns an operation (data.relationships.operation.data.id); poll get_tag_manager_operation until its status is completed or failed.copy_triggerCopy triggerPOSTCopy a trigger, in the same app or into another app. Returns an operation (data.relationships.operation.data.id); poll get_tag_manager_operation until its status is completed or failed.copy_variableCopy variablePOSTCopy a variable, in the same app or into another app. Returns an operation (data.relationships.operation.data.id); poll get_tag_manager_operation until its status is completed or failed.
Custom dimension, 3 operations
create_custom_dimensionCreate custom dimensionPOSTCreate a custom dimension (session or event scope) for a website. data_type and formatting cannot be changed later.get_custom_dimensionGet custom dimensionGETGet one custom dimension. id from list_custom_dimensions, website_id from list_apps.list_custom_dimensionsList custom dimensionsGETList the custom dimensions (session or event scope) configured for a website. website_id from list_apps.
Product custom dimension, 3 operations
create_product_custom_dimensionCreate product custom dimensionPOSTCreate a product custom dimension (an ecommerce product attribute) in a free slot of a website.get_product_custom_dimensionGet product custom dimensionGETGet one product custom dimension. id from list_product_custom_dimensions, website_id from list_apps.list_product_custom_dimensionsList product custom dimensionsGETList the product custom dimensions (ecommerce product attributes) of a website. website_id from list_apps.
Activate, 2 operations
activate_activationActivate activationPOSTSet an activation to active, so it starts sending profiles of its audience. id from list_activations.activate_webhook_importActivate webhook importPOSTSet a webhook import to active, so its incoming requests are written to profiles. id from list_webhook_imports.
Attribute, 2 operations
create_attributeCreate attributePOSTCreate a custom profile attribute in Data Activation, fed from an event data key.list_attributesList attributesGETList the profile attributes available in Data Activation for an app, predefined and custom, with their types. app_id from list_apps.
Export file, 2 operations
create_version_export_fileCreate version export filePOSTExport a version to a JSON file. Returns an operation (data.relationships.operation.data.id); poll get_tag_manager_operation until its status is completed or failed. Then read the file with get_version_export_file.get_version_export_fileGet version export fileGETGet an exported version file; its JSON is in data.attributes.content. export_file_id from create_version_export_file once the operation is completed.
Profile, 2 operations
delete_profileDelete profileDELETEDelete a visitor profile and all its data for good, by id, cookie_id or user_id. Requires manage permission.list_audience_version_profilesList audience version profilesGETList the profiles in a version of an audience, newest members first, with their identifier and dates. Paged with offset and limit; q matches part of an identifier.
Publish, 2 operations
publish_draft_versionPublish draft versionPOSTPublish the app's Tag Manager draft to the live website. Changes what runs on the site. Returns an operation (data.relationships.operation.data.id); poll get_tag_manager_operation until its status is completed or failed.publish_versionPublish versionPOSTPublish a version to the live website. Changes what runs on the site. version_id from list_versions. Returns an operation (data.relationships.operation.data.id); poll get_tag_manager_operation until its status is completed or failed.
Stats, 2 operations
get_activation_statsGet activation statsGETActivation statistics for the last 30 days: totals and a time series of success, on hold and error. activation_id from list_activations.get_webhook_import_statsGet webhook import statsGETWebhook import request statistics for the last 30 days: totals and a time series of success and error. webhook_import_id from list_webhook_imports.
Version, 2 operations
get_versionGet versionGETGet one Tag Manager version. version_id from list_versions.list_versionsList versionsGETList the Tag Manager versions of an app (draft, published, snapshots), with filters and sort. app_id from list_apps.
Apps with meta site, 1 operation
list_apps_and_meta_sitesList apps and meta sitesGETList apps and meta sites together, filtered by the action you may perform on them (for example view or edit). Paged with limit and offset.
Bulk, 1 operation
create_attributes_bulkCreate attributes bulkPOSTCreate several custom profile attributes in Data Activation in one call.
Change role, 1 operation
change_user_roleChange user rolePATCHChange a user's role in the account (OWNER or USER), which changes what they can do. userId from list_users.
Changelog, 1 operation
get_version_changelogGet version changelogGETList the changes in a version (added, edited, deleted tags, triggers and variables), with author and before/after content. Paged with page[limit] and page[offset].
Default settings, 1 operation
list_app_default_container_settingsList app default container settingsGETList the default container (Tag Manager script) settings an app inherits. app_id from list_apps.
Draft, 1 operation
get_draft_versionGet draft versionGETGet the current draft version of an app's Tag Manager container. app_id from list_apps.
Entry, 1 operation
list_audit_log_entriesList audit log entriesGETList audit log entries (who changed what in the account). Filter with filter (type, dates, author), sort, page with limit and offset.
Enum, 1 operation
list_cdp_enumsList cdp enumsGETList the allowed values of a Data Activation enum (today only event_type); search narrows them. Needs no permission.
Event, 1 operation
query_eventsQuery eventsPOSTFetch raw tracked events of a website or meta site for a date range, with the extra columns you name (timestamp and identifiers always come first). Filter, page with limit and offset.
Global, 1 operation
get_global_tracker_settingsGet global tracker settingsGETGet the global tracker settings apps inherit: IP anonymization, excluded IPs and parameters, campaign parameters, session rules.
Installation code, 1 operation
get_installation_codeGet installation codeGETGet the HTML installation code of an app's container (the snippet to paste on the website). app_id from list_apps.
Invite, 1 operation
invite_userInvite userPOSTInvite a person to the account by email; Piwik PRO sends them an invitation email.
Me, 1 operation
get_current_userGet current userGETGet the user the API credentials belong to: id, email, role and language.
Operation, 1 operation
get_tag_manager_operationGet tag manager operationGETGet the status of an asynchronous Tag Manager operation (copy, publish, restore, snapshot, export): created, started, completed or failed.
Opt out code, 1 operation
get_opt_out_codeGet opt out codeGETGet the organization's HTML opt-out code (lets visitors opt out of tracking). organization is the account name.
Overview, 1 operation
get_version_overviewGet version overviewGETGet an overview of a version with counts of tags, triggers and variables. version_id from list_versions.
Permission, 1 operation
list_user_group_app_permissionsList user group app permissionsGETList the apps a user group has a permission on, with that permission. user_group_id from list_user_groups.
Public attribute, 1 operation
get_profile_public_attributesGet profile public attributesGETGet the attributes marked as public of a visitor profile, by its cookie_id.
Published, 1 operation
get_published_versionGet published versionGETGet the version currently published on an app's website. app_id from list_apps.
Query, 1 operation
query_analyticsQuery analyticsPOSTRun an Analytics report query on a website or meta site: dimensions and metrics as columns, a date range, filters, sorting, paging. Rows come back in data, in the order of columns. Results are cached 10 minutes.
Real time event, 1 operation
query_real_time_eventsQuery real time eventsPOSTFetch raw events from the Real-time database, kept for about one hour and possibly a few minutes late. Same body as query_events.
Real time query, 1 operation
query_real_time_analyticsQuery real time analyticsPOSTRun an Analytics query on the Real-time database (about the last hour of data). Same body as query_analytics.
Session, 1 operation
query_sessionsQuery sessionsPOSTFetch raw sessions (no event-level data) of a website or meta site for a date range, with the extra columns you name. Filter, page with limit and offset.
Slot, 1 operation
get_custom_dimension_slotsGet custom dimension slotsGETCount the custom dimension slots of a website: available, used and left, per scope. website_id from list_apps.
Snapshot, 1 operation
create_draft_snapshotCreate draft snapshotPOSTSave the current draft as a named snapshot version. Returns an operation (data.relationships.operation.data.id); poll get_tag_manager_operation until its status is completed or failed.
System, 1 operation
list_system_annotationsList system annotationsGETList the system annotations (product and data notices) shown on Analytics charts for a website. website_id from list_apps is required.
Url, 1 operation
get_tracker_settings_by_urlGet tracker settings by urlGETGet the tracker settings of the first app whose URLs match a given URL.
Usage, 1 operation
get_profile_usageGet profile usageGETActivation usage of the account: the number of activations executed this month.
Showing the first 120 of 152 endpoints. The rest are in the product, searchable from the workflow builder and from chat.
Use Piwik PRO from Claude Code, Cursor or Codex
Connect Piwik PRO in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Piwik PRO operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Piwik PRO
- Create your workspace
Sign up free. Nothing to install.
- Connect Piwik PRO once
Add your Piwik PRO connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Piwik PRO integration FAQ
What can you do with the Piwik PRO integration?
LiveContext exposes 152 operations on Piwik PRO, covering user, app, tag and user group.
