Campaign Score
One score for clean campaign data: Campaign Score finds spelling variants, unusual mediums and missing values.
Overview
One score for your campaign data
Campaigns only arrive cleanly in Matomo when everybody in the team writes their campaign links (UTM or mtm parameters) the same way. In practice "Newsletter", "newsletter" and "news_letter" end up as three campaigns in the report, mediums like "Facebook Ads" fit no channel, and some links lack a source. Campaign Score sums this up in one number: the share of campaign visits with clean values, always shown with its basis, for example "650 of 800 campaign visits with clean values".
What keeps the score down
Below the score, a table lists every problem with the visits it affects and a suggestion:
- Spelling variants: values that only differ in case, spaces, underscores, hyphens or full stops. The suggestion is the most visited clean variant.
- Format: values with capital letters, spaces or other characters, such as "Black Friday 2026", with the clean form as suggestion.
- Unusual medium: a medium that is not in your list of usual mediums.
- Missing value: campaign visits without a campaign name, source or medium.
Source and medium with Marketing Campaigns Reporting
On its own, Campaign Score checks the campaign name and keyword from Matomo's campaign report. With the free plugin Marketing Campaigns Reporting active, it also checks source and medium, together with the name: a visit only counts as clean when all three values are.
Dashboard and settings
A dashboard widget shows the score and the three largest problems with a link to the full report. You adjust the list of usual mediums in the general settings. The default list holds the mediums that Channel Grouping assigns to a channel, so both plugins agree on what a clean medium is. To make new links clean from the start, the UTM builder Feinwerk Campaigns gives your team a naming convention.
Read only, nothing sent
Campaign Score only reads the campaign reports Matomo has already archived. It creates no tables, stores nothing and changes no data. No data about your websites or visitors leaves your server.
Use cases
- One number instead of many rows: See at a glance what share of your campaign visits has clean values, with its basis.
- Concrete suggestions: For every spelling variant and every unclean value, Campaign Score names the spelling to use from now on.
- Source and medium covered: With Marketing Campaigns Reporting the plugin checks name, source and medium together and finds missing values.
- Fits your channels: The list of usual mediums matches Feinwerk Channel Grouping and can be adapted to your convention.
- Light and safe: It only reads archived reports: no tables of its own, no extra archiving work, no visitor data leaving your server.
Campaign Score shows in one number how clean your campaign data is: the share of campaign visits whose campaign values are written consistently. Below it, a table lists every problem with the visits it affects and a suggestion, such as "Newsletter", "newsletter" and "news_letter" as three spellings of the same campaign. Campaign Score only reads reports Matomo has already archived and changes no data.
Setup step by step
How to install and activate Campaign Score is described under Installing plugins. It needs Matomo 5.0 or later with PHP 8.1 or later. We recommend the free plugin Marketing Campaigns Reporting from the Matomo Marketplace: only with it does Campaign Score also check source and medium.
1. Open the report
Under Acquisition → Campaign Score, right after Campaigns, you see the score for the selected website, period and segment. It always comes with its basis, for example "650 of 800 campaign visits with clean values". From 90 % the score counts as good, from 70 % as fair, below that as poor.
2. Work through the findings
The table below the score has the columns Value, Problem, Field, Visits and Suggestion. There are four kinds of problems:
- Spelling variants: values that only differ in case, spaces, underscores, hyphens or full stops. The suggestion is the most visited clean variant, and only that one counts as clean.
- Format: values with capital letters, spaces or other characters, such as "Black Friday 2026". The suggestion is the clean form.
- Unusual medium: a medium that is not in your list of usual mediums.
- Missing value: campaign visits without a campaign name, source or medium.
Correct the links where they are made, for example in your newsletter tool or your ad accounts. Campaign Score does not change past visits: new visits with the corrected links raise the score from then on.
3. Widget on the dashboard
Under Dashboard → Add a widget → Acquisition → Campaign Score you put the score with the three largest problems on your dashboard. A link leads to the full report.
4. Adjust the usual mediums
Under Administration → System → General settings → Feinwerk Campaign Score (FeinwerkCampaignScore), super users set in the field Usual mediums which mediums count as clean, one medium per line. If the field is empty, the default list applies: affiliate, app, audio, banner, cpa, cpc, cpm, cpv, display, e-mail, e_mail, email, expandable, interstitial, link, mobile, newsletter, notification, organic, paid, ppc, push, referral, retargeting, sm, sms, social, social-media, social-network and video. These are the mediums that the default grouping of Channel Grouping assigns to a channel, so both plugins agree on what a clean medium is.
What counts as clean
- The value is lowercase and only uses
atoz,0to9, underscore, hyphen and full stop. - It is no deviating spelling of another value. Values that are equal after lowercasing and removing spaces, underscores, hyphens and full stops form a group. Only the suggested, most visited clean spelling in it counts as clean.
- A medium is also in the list of usual mediums.
On its own, Campaign Score checks the campaign name from Matomo's campaign report. With Marketing Campaigns Reporting it checks name, source and medium together: a visit only counts as clean when all three values are clean. For keywords, Campaign Score only shows spelling variants, since they often hold search terms with spaces. Keywords do not count in the score.
What cannot be checked
Some campaign visits are not part of the basis. The report lists them as "could not be checked":
- Rows under "Others": Matomo groups rare rows of large reports, by default after 1,000 rows and after 50 campaign names per source and medium. Their values are unknown.
- Masked values: values hidden by Matomo's privacy setting for campaign parameters.
- Visits before Marketing Campaigns Reporting: for visits from before the plugin was active, it has no source and no medium.
Good to know
- Upper and lower case: without Marketing Campaigns Reporting, Matomo writes campaign names and keywords in lowercase. Also, the database groups values that only differ in case into one row per day. Campaign Score therefore shows pure case variants only across several days.
- Performance: Campaign Score queries no log tables, creates no archives or tables of its own and does nothing at archiving time. When you open the report, it reads Matomo's Channel Type and Campaigns reports, or with Marketing Campaigns Reporting its five campaign reports. That is a fixed number of requests, whatever the amount of data.
- API:
FeinwerkCampaignScore.getScorereturns the score,FeinwerkCampaignScore.getFindingsthe findings. Both need view access to the website. - Feedback and support: below the report and in the widget you can tell us whether Campaign Score is helpful (thumbs up or down). Your Matomo server sends the answer with the plugin and Matomo version, the browser family and version and Matomo's language to Feinwerk, nothing about you, your website or your visitors.
feedback = 0in the[FeinwerkCampaignScore]section ofconfig/config.ini.phpswitches the question off,promotions = 0there the tips about other Feinwerk offers.promotions = 0in the[FeinwerkMarketplaceConnector]section applies to all Feinwerk plugins. "Support" opens Feinwerk's contact form in a new tab. - No changes to Matomo: Campaign Score changes neither Matomo itself nor other plugins and therefore survives Matomo updates.
- Clean links from the start: to make new campaign links arrive clean, your team builds them with Feinwerk Campaigns following one shared naming convention.
Technical reference
| Property | Value |
|---|---|
| Technical name | FeinwerkCampaignScore |
| Current version | 5.0.0 |
| Matomo | ≥ 5.0.0, < 6.0.0-b1 |
| PHP | ≥ 8.1.0 |
| License | free |
| Database changes | none in the current version |
FAQ
What is a clean value?
A value in lowercase that only uses a to z, 0 to 9, underscore, hyphen and full stop, is no deviating spelling of another value, and, for the medium, is in the list of usual mediums.
Do I need Marketing Campaigns Reporting?
No. Without it, Campaign Score checks the campaign name and keyword. With the free plugin, source and medium are added.
Why do keywords not count in the score?
Keywords often hold search terms with spaces. For keywords, Campaign Score only shows spelling variants.
What does "could not be checked" mean?
Matomo groups rare rows of large reports as "Others". Their values are unknown and do not count in the basis. The same applies to masked values and to visits from before Marketing Campaigns Reporting was activated.
Why do I see few differences in capitalisation?
Without Marketing Campaigns Reporting, Matomo writes names and keywords in lowercase. Also, the database groups values that only differ in case into one row per day.
Does the plugin slow down my Matomo?
No. It reads the existing campaign reports when you open the report and creates no archives of its own.
Is any data sent?
No. Only when you click thumbs up or down below the report does your Matomo server send that answer with the plugin and Matomo version to Feinwerk, without data about you, your website or your visitors. Switch it off with feedback = 0 in the [FeinwerkCampaignScore] section of config/config.ini.php.