
Recherche avancée
Autres articles (48)
-
Supporting all media types
13 avril 2011, par kent1Unlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)
-
Contribute to translation
13 avril 2011You can help us to improve the language used in the software interface to make MediaSPIP more accessible and user-friendly. You can also translate the interface into any language that allows it to spread to new linguistic communities.
To do this, we use the translation interface of SPIP where the all the language modules of MediaSPIP are available. Just subscribe to the mailing list and request further informantion on translation.
MediaSPIP is currently available in French and English (...) -
Selection of projects using MediaSPIP
2 mai 2011, par kent1The examples below are representative elements of MediaSPIP specific uses for specific projects.
MediaSPIP farm @ Infini
The non profit organizationInfini develops hospitality activities, internet access point, training, realizing innovative projects in the field of information and communication technologies and Communication, and hosting of websites. It plays a unique and prominent role in the Brest (France) area, at the national level, among the half-dozen such association. Its members (...)
Sur d’autres sites (5013)
-
Matomo analytics for wordpress
15 octobre 2019, par Matomo Core Team — CommunitySelf-hosting web analytics got a whole lot easier ! Introducing Matomo for WordPress
Be the first to try it out ! Your feedback is much needed and appreciated
Get a fully functioning Matomo (which is comparable to Google Analytics) in seconds ! How ? With the new Matomo Analytics for WordPress plugin.
Web analytics in WordPress has never been easier to get, or more powerful. Matomo Analytics for WordPress is the one-stop problem solver. It’ll save you time, money and give you the insights to help your website or business succeed.
Best of all, we get to further the goal of decentralising the internet. Our hope is for Matomo Analytics for WordPress to spread far and wide. We’re so excited that more and more people can now get their hands on this powerful, free, open-source analytics platform, in a few clicks !
Download now and check it out !
What do you get ?
- No more signing up to third party analytics service (like Google)
- No more sending away your valuable data to a third party service (like Google)
- Easy setup – install with a few clicks, no tracking code installation or developer knowledge needed
- 100% accurate data – no data sampling and no data limits
- Full data ownership – all data is stored on your servers and no one else can see your data
- Privacy protection / GDPR compliance
- Ecommerce tracking out-of-the-box (Woocommerce, Easy Digital Downloads, and MemberPress) and we’re keen to add many more over time
- Powerful features – segmenting, comparing reports, different visualisations, real-time reports, visit logs and visitor profiles, Matomo Tag Manager, dashboards, data export, APIs, and many more
- Compared to other WordPress solutions we don’t charge you extra for basic features that should work out-of-the-box
- Just like Matomo On-Premise, Matomo Analytics for WordPress is free
We need your feedback !
We all know and love the versatility of WordPress – with over 55,000 plugins and all the different ways of hosting it. However, with this great versatility comes the potential for things to be missed, so we’re keen to hear your feedback.
- Is our plugin breaking anything on your WordPress, or, not compatible with something ? Please create an issue on our repository.
- Is something not working ? If so, what ? Please create an issue on our repository.
- How does running Matomo impact the performance of your WordPress server ? Also, if you have any other feedback for us – whether good or bad – please email us at wordpress@matomo.org. We’d love to hear what you think !
- Can you perform a security review of the plugin ? Security issues are best reported to security@matomo.org
- Do you have any questions ? Questions are best asked in our forum
Thank you ! We really appreciate your help on this ❤️
How do you get Matomo Analytics for WordPress ?
You can then upload it in your WordPress by going to “Plugins => Add New”. During the upload, if you get an error like “Are you sure you want to do this ?”, we recommend you upload the extracted zip file on to your server and into your ‘wp-content/plugins’ folder manually using ftp or ssh. Make sure the plugin name is ‘matomo’.
All you need is at least WordPress 4.8 and PHP 7.0 or later. MySQL 5.1+ is recommended.
The source code is available at : https://github.com/matomo-org/wp-matomo/.
In perfect harmony : Matomo and WordPress
The idea for this started two years ago when we realised the similarities between the Matomo and WordPress project.
Not only from a technological point of view – where both are based on PHP and MySQL and can be extended using plugins – but also from a philosophical, license and values point of view. We both believe in privacy, security, data ownership, openness, transparency, having things working out-of-the-box, simplicity etc.
WordPress is currently used on approximately 30% of all websites. Many of them use the self-hosted open-source WordPress version. Giving everyone in this market the opportunity to easily get a powerful web analytics platform for free, means a lot to us. We believe WordPress users get a real choice besides the standard solution of Google Analytics, and it furthers our effort and goal of decentralising the internet.
We’re hoping more people will be empowered to protect user privacy, have access to a great free and open-source tool, and keep control of data in their own hands.
We hope you feel the same. Help us spread the word to your friends and get them in on this awesome new project !
Share on facebookShare on twitterShare on linkedinFAQs
Isn’t there already a WP-Matomo plugin for WordPress available ?
Yes, the existing WP-Matomo (WP-Piwik) plugin is an awesome plugin to connect your existing Matomo On-Premise or Matomo Cloud account with WordPress. The difference is that this new plugin installs Matomo Analytics fully in your WordPress. So you get the convenience of having a powerful analytics platform within your WordPress.
We highly recommend you install this new plugin if you use WordPress and are not running Matomo yet.
If you are already using Matomo on our Cloud or On-Premise, we’d still highly recommend you use WP-Matomo (WP-Piwik). So that you get an easier way of inserting the tracking code into your WordPress site and get insights faster.
I have a high traffic website, will it be an issue ?
If you have a lot of traffic, we’d advise you to install Matomo On-Premise separately. There’s no specific traffic threshold we can give you on when it’s better to use Matomo On-Premise. It really depends on your server.
We reckon if you have more than 500,000 page views a month, you may want to think about using Matomo On-Premise with WP-Matomo instead, but this is just an estimate. In general, if the load on your server is already quite high, then it might be better to install Matomo on a separate server. See also recommended server sizing for running Matomo.
How do I report a bug or request a new feature in Matomo for WordPress ?
Please create an issue, on our repository whenever you find a bug or if you have any suggestion or ideas of improvement. We want to build an outstanding analytics experience for WordPress !
Have another question you’re dying to ask ? The Matomo for WordPress FAQ page might have the answer you need.
Matomo Analytics for WordPress newsletter
Get ahead of the crowd – signup to our exclusive Matomo for WordPress newsletter to get the latest updates on this exciting new project.
<script type="text/javascript"><br />
(function(global) {<br />
function serialize(form){if(!form||form.nodeName!=="FORM"){return }var i,j,q=[];for(i=form.elements.length-1;i>=0;i=i-1){if(form.elements[i].name===""){continue}switch(form.elements[i].nodeName){case"INPUT":switch(form.elements[i].type){case"text":case"hidden":case"password":case"button":case"reset":case"submit":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"checkbox":case"radio":if(form.elements[i].checked){q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value))}break;case"file":break}break;case"TEXTAREA":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"SELECT":switch(form.elements[i].type){case"select-one":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"select-multiple":for(j=form.elements[i].options.length-1;j>=0;j=j-1){if(form.elements[i].options[j].selected){q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].options[j].value))}}break}break;case"BUTTON":switch(form.elements[i].type){case"reset":case"submit":case"button":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break}break}}return q.join("&")};<br />
<br />
<br />
function extend(destination, source) {<br />
for (var prop in source) {<br />
destination[prop] = source[prop];<br />
}<br />
}<br />
<br />
if (!Mimi) var Mimi = {};<br />
if (!Mimi.Signups) Mimi.Signups = {};<br />
<br />
Mimi.Signups.EmbedValidation = function() {<br />
this.initialize();<br />
<br />
var _this = this;<br />
if (document.addEventListener) {<br />
this.form.addEventListener('submit', function(e){<br />
_this.onFormSubmit(e);<br />
});<br />
} else {<br />
this.form.attachEvent('onsubmit', function(e){<br />
_this.onFormSubmit(e);<br />
});<br />
}<br />
};<br />
<br />
extend(Mimi.Signups.EmbedValidation.prototype, {<br />
initialize: function() {<br />
this.form = document.getElementById('ema_signup_form');<br />
this.submit = document.getElementById('webform_submit_button');<br />
this.callbackName = 'jsonp_callback_' + Math.round(100000 * Math.random());<br />
this.validEmail = /.+@.+\..+/<br />
},<br />
<br />
onFormSubmit: function(e) {<br />
e.preventDefault();<br />
<br />
this.validate();<br />
if (this.isValid) {<br />
this.submitForm();<br />
} else {<br />
this.revalidateOnChange();<br />
}<br />
},<br />
<br />
validate: function() {<br />
this.isValid = true;<br />
this.emailValidation();<br />
this.fieldAndListValidation();<br />
this.updateFormAfterValidation();<br />
},<br />
<br />
emailValidation: function() {<br />
var email = document.getElementById('signup_email');<br />
<br />
if (this.validEmail.test(email.value)) {<br />
this.removeTextFieldError(email);<br />
} else {<br />
this.textFieldError(email);<br />
this.isValid = false;<br />
}<br />
},<br />
<br />
fieldAndListValidation: function() {<br />
var fields = this.form.querySelectorAll('.mimi_field.required');<br />
<br />
for (var i = 0; i < fields.length; ++i) {<br />
var field = fields[i],<br />
type = this.fieldType(field);<br />
if (type === 'checkboxes' || type === 'radio_buttons' || type === 'age_check') {<br />
this.checkboxAndRadioValidation(field);<br />
} else {<br />
this.textAndDropdownValidation(field, type);<br />
}<br />
}<br />
},<br />
<br />
fieldType: function(field) {<br />
var type = field.querySelectorAll('.field_type');<br />
<br />
if (type.length) {<br />
return type[0].getAttribute('data-field-type');<br />
} else if (field.className.indexOf('checkgroup') >= 0) {<br />
return 'checkboxes';<br />
} else {<br />
return 'text_field';<br />
}<br />
},<br />
<br />
checkboxAndRadioValidation: function(field) {<br />
var inputs = field.getElementsByTagName('input'),<br />
selected = false;<br />
<br />
for (var i = 0; i < inputs.length; ++i) {<br />
var input = inputs[i];<br />
if((input.type === 'checkbox' || input.type === 'radio') && input.checked) {<br />
selected = true;<br />
}<br />
}<br />
<br />
if (selected) {<br />
field.className = field.className.replace(/ invalid/g, '');<br />
} else {<br />
if (field.className.indexOf('invalid') === -1) {<br />
field.className += ' invalid';<br />
}<br />
<br />
this.isValid = false;<br />
}<br />
},<br />
<br />
textAndDropdownValidation: function(field, type) {<br />
var inputs = field.getElementsByTagName('input');<br />
<br />
for (var i = 0; i < inputs.length; ++i) {<br />
var input = inputs[i];<br />
if (input.name.indexOf('signup') >= 0) {<br />
if (type === 'text_field') {<br />
this.textValidation(input);<br />
} else {<br />
this.dropdownValidation(field, input);<br />
}<br />
}<br />
}<br />
this.htmlEmbedDropdownValidation(field);<br />
},<br />
<br />
textValidation: function(input) {<br />
if (input.id === 'signup_email') return;<br />
<br />
if (input.value) {<br />
this.removeTextFieldError(input);<br />
} else {<br />
this.textFieldError(input);<br />
this.isValid = false;<br />
}<br />
},<br />
<br />
dropdownValidation: function(field, input) {<br />
if (input.value) {<br />
field.className = field.className.replace(/ invalid/g, '');<br />
} else {<br />
if (field.className.indexOf('invalid') === -1) field.className += ' invalid';<br />
this.onSelectCallback(input);<br />
this.isValid = false;<br />
}<br />
},<br />
<br />
htmlEmbedDropdownValidation: function(field) {<br />
var dropdowns = field.querySelectorAll('.mimi_html_dropdown');<br />
var _this = this;<br />
<br />
for (var i = 0; i < dropdowns.length; ++i) {<br />
var dropdown = dropdowns[i];<br />
<br />
if (dropdown.value) {<br />
field.className = field.className.replace(/ invalid/g, '');<br />
} else {<br />
if (field.className.indexOf('invalid') === -1) field.className += ' invalid';<br />
this.isValid = false;<br />
dropdown.onchange = (function(){ _this.validate(); });<br />
}<br />
}<br />
},<br />
<br />
textFieldError: function(input) {<br />
input.className = 'required invalid';<br />
input.placeholder = input.getAttribute('data-required-field');<br />
},<br />
<br />
removeTextFieldError: function(input) {<br />
input.className = 'required';<br />
input.placeholder = '';<br />
},<br />
<br />
onSelectCallback: function(input) {<br />
if (typeof Widget === 'undefined' || !Widget.BasicDropdown) return;<br />
<br />
var dropdownEl = input.parentNode,<br />
instances = Widget.BasicDropdown.instances,<br />
_this = this;<br />
<br />
for (var i = 0; i < instances.length; ++i) {<br />
var instance = instances[i];<br />
if (instance.wrapperEl === dropdownEl) {<br />
instance.onSelect = function(){ _this.validate() };<br />
}<br />
}<br />
},<br />
<br />
updateFormAfterValidation: function() {<br />
this.form.className = this.setFormClassName();<br />
this.submit.value = this.submitButtonText();<br />
this.submit.disabled = !this.isValid;<br />
this.submit.className = this.isValid ? 'submit' : 'disabled';<br />
},<br />
<br />
setFormClassName: function() {<br />
var name = this.form.className;<br />
<br />
if (this.isValid) {<br />
return name.replace(/\s?mimi_invalid/, '');<br />
} else {<br />
if (name.indexOf('mimi_invalid') === -1) {<br />
return name += ' mimi_invalid';<br />
} else {<br />
return name;<br />
}<br />
}<br />
},<br />
<br />
submitButtonText: function() {<br />
var invalidFields = document.querySelectorAll('.invalid'),<br />
text;<br />
<br />
if (this.isValid || !invalidFields) {<br />
text = this.submit.getAttribute('data-default-text');<br />
} else {<br />
if (invalidFields.length || invalidFields[0].className.indexOf('checkgroup') === -1) {<br />
text = this.submit.getAttribute('data-invalid-text');<br />
} else {<br />
text = this.submit.getAttribute('data-choose-list');<br />
}<br />
}<br />
return text;<br />
},<br />
<br />
submitForm: function() {<br />
this.formSubmitting();<br />
<br />
var _this = this;<br />
window[this.callbackName] = function(response) {<br />
delete window[this.callbackName];<br />
document.body.removeChild(script);<br />
_this.onSubmitCallback(response);<br />
};<br />
<br />
var script = document.createElement('script');<br />
script.src = this.formUrl('json');<br />
document.body.appendChild(script);<br />
},<br />
<br />
formUrl: function(format) {<br />
var action = this.form.action;<br />
if (format === 'json') action += '.json';<br />
return action + '?callback=' + this.callbackName + '&' + serialize(this.form);<br />
},<br />
<br />
formSubmitting: function() {<br />
this.form.className += ' mimi_submitting';<br />
this.submit.value = this.submit.getAttribute('data-submitting-text');<br />
this.submit.disabled = true;<br />
this.submit.className = 'disabled';<br />
},<br />
<br />
onSubmitCallback: function(response) {<br />
if (response.success) {<br />
this.onSubmitSuccess(response.result);<br />
} else {<br />
top.location.href = this.formUrl('html');<br />
}<br />
},<br />
<br />
onSubmitSuccess: function(result) {<br />
if (result.has_redirect) {<br />
top.location.href = result.redirect;<br />
} else if(result.single_opt_in || !result.confirmation_html) {<br />
this.disableForm();<br />
this.updateSubmitButtonText(this.submit.getAttribute('data-thanks'));<br />
} else {<br />
this.showConfirmationText(result.confirmation_html);<br />
}<br />
},<br />
<br />
showConfirmationText: function(html) {<br />
var fields = this.form.querySelectorAll('.mimi_field');<br />
<br />
for (var i = 0; i < fields.length; ++i) {<br />
fields[i].style['display'] = 'none';<br />
}<br />
<br />
(this.form.querySelectorAll('fieldset')[0] || this.form).innerHTML = html;<br />
},<br />
<br />
disableForm: function() {<br />
var elements = this.form.elements;<br />
for (var i = 0; i < elements.length; ++i) {<br />
elements[i].disabled = true;<br />
}<br />
},<br />
<br />
updateSubmitButtonText: function(text) {<br />
this.submit.value = text;<br />
},<br />
<br />
revalidateOnChange: function() {<br />
var fields = this.form.querySelectorAll(".mimi_field.required"),<br />
_this = this;<br />
<br />
var onTextFieldChange = function() {<br />
if (this.getAttribute('name') === 'signup[email]') {<br />
if (_this.validEmail.test(this.value)) _this.validate();<br />
} else {<br />
if (this.value.length === 1) _this.validate();<br />
}<br />
}<br />
<br />
for (var i = 0; i < fields.length; ++i) {<br />
var inputs = fields[i].getElementsByTagName('input');<br />
for (var j = 0; j < inputs.length; ++j) {<br />
if (this.fieldType(fields[i]) === 'text_field') {<br />
inputs[j].onkeyup = onTextFieldChange;<br />
inputs[j].onchange = onTextFieldChange; <br />
} else {<br />
inputs[j].onchange = function(){ _this.validate() };<br />
}<br />
}<br />
}<br />
}<br />
});<br />
<br />
if (document.addEventListener) {<br />
document.addEventListener("DOMContentLoaded", function() {<br />
new Mimi.Signups.EmbedValidation();<br />
});<br />
}<br />
else {<br />
window.attachEvent('onload', function() {<br />
new Mimi.Signups.EmbedValidation();<br />
});<br />
}<br />
})(this);<br />
</script> -
A Guide to GDPR Sensitive Personal Data
13 mai 2024, par ErinThe General Data Protection Regulation (GDPR) is one of the world’s most stringent data protection laws. It provides a legal framework for collection and processing of the personal data of EU individuals.
The GDPR distinguishes between “special categories of personal data” (also referred to as “sensitive”) and other personal data and imposes stricter requirements on collection and processing of sensitive data. Understanding these differences will help your company comply with the requirements and avoid heavy penalties.
In this article, we’ll explain what personal data is considered “sensitive” according to the GDPR. We’ll also examine how a web analytics solution like Matomo can help you maintain compliance.
What is sensitive personal data ?
The following categories of data are treated as sensitive :
-
- Personal data revealing :
- Racial or ethnic origin ;
- Political opinions ;
- Religious or philosophical beliefs ;
- Trade union membership ;
- Genetic and biometric data ;
- Data concerning a person’s :
- Health ; or
- Sex life or sexual orientation.
- Personal data revealing :
Sensitive vs. non-sensitive personal data : What’s the difference ?
While both categories include information about an individual, sensitive data is seen as more private, or requiring a greater protection.
Sensitive data often carries a higher degree of risk and harm to the data subject, if the data is exposed. For example, a data breach exposing health records could lead to discrimination for the individuals involved. An insurance company could use the information to increase premiums or deny coverage.
In contrast, personal data like name or gender is considered less sensitive because it doesn’t carry the same degree of harm as sensitive data.
Unauthorised access to someone’s name alone is less likely to harm them or infringe on their fundamental rights and freedoms than an unauthorised access to their health records or biometric data. Note that financial information (e.g. credit card details) does not fall into the special categories of data.
Legality of processing
Under the GDPR, both sensitive and nonsensitive personal data are protected. However, the rules and conditions for processing sensitive data are more stringent.
Article 6 deals with processing of non-sensitive data and it states that processing is lawful if one of the six lawful bases for processing applies.
In contrast, Art. 9 of the GDPR states that processing of sensitive data is prohibited as a rule, but provides ten exceptions.
It is important to note that the lawful bases in Art. 6 are not the same as exceptions in Art. 9. For example, while performance of a contract or legitimate interest of the controller are a lawful basis for processing non-sensitive personal data, they are not included as an exception in Art. 9. What follows is that controllers are not permitted to process sensitive data on the basis of contract or legitimate interest.
The exceptions where processing of sensitive personal data is permitted (subject to additional requirements) are :
- Explicit consent : The individual has given explicit consent to processing their sensitive personal data for specified purpose(s), except where an EU member state prohibits such consent. See below for more information about explicit consent.
- Employment, social security or social protection : Processing sensitive data is necessary to perform tasks under employment, social security or social protection law.
- Vital interests : Processing sensitive data is necessary to protect the interests of a data subject or if the individual is physically or legally incapable of consenting.
- Non-for-profit bodies : Foundations, associations or nonprofits with a political, philosophical, religious or trade union aim may process the sensitive data of their members or those they are in regular contact with, in connection with their purposes (and no disclosure of the data is permitted outside the organisation, without the data subject’s consent).
- Made public : In some cases, it may be permissible to process the sensitive data of a data subject if the individual has already made it public and accessible.
- Legal claims : Processing sensitive data is necessary to establish, exercise or defend legal claims, including legal or in court proceedings.
- Public interest : Processing is necessary for reasons of substantial public interest, like preventing unlawful acts or protecting the public.
- Health or social care : Processing special category data is necessary for : preventative or occupational medicine, providing health and social care, medical diagnosis or managing healthcare systems.
- Public health : It is permissible to process sensitive data for public health reasons, like protecting against cross-border threats to health or ensuring the safety of medicinal products or medical devices.
- Archiving, research and statistics : You may process sensitive data if it’s done for archiving purposes in the public interest, scientific or historical research purposes or statistical purposes.
In addition, you must adhere to all data handling requirements set by the GDPR.
Important : Note that for any data sent that you are processing, you always need to identify a lawful basis under Art. 6. In addition, if the data sent contains sensitive data, you must comply with Art. 9.
Explicit consent
While consent is a valid lawful basis for processing non-sensitive personal data, controllers are permitted to process sensitive data only with an “explicit consent” of the data subject.
The GDPR does not define “explicit” consent, but it is accepted that it must meet all Art. 7 conditions for consent, at a higher threshold. To be “explicit” a consent requires a clear statement (oral or written) of the data subject. Consent inferred from the data subject’s actions does not meet the threshold.
The controller must retain records of the explicit consent and provide appropriate consent withdrawal method to allow the data subject to exercise their rights.
Examples of compliant and non-compliant sensitive data processing
Here are examples of when you can and can’t process sensitive data :
- When you can process sensitive data : A doctor logs sensitive data about a patient, including their name, symptoms and medicine prescribed. The hospital can process this data to provide appropriate medical care to their patients. An IoT device and software manufacturer processes their customers’ health data based on explicit consent of each customer.
- When you can’t process sensitive data : One example is when you don’t have explicit consent from a data subject. Another is when there’s no lawful basis for processing it or you are collecting personal data you simply do not need. For example, you don’t need your customer’s ethnic origin to fulfil an online order.
Other implications of processing sensitive data
If you process sensitive data, especially on a large scale, GDPR imposes additional requirements, such as having Data Privacy Impact Assessments, appointing Data Protection Officers and EU Representatives, if you are a controller based outside the EU.
Penalties for GDPR non-compliance
Mishandling sensitive data (or processing it when you’re not allowed to) can result in huge penalties. There are two tiers of GDPR fines :
- €10 million or 2% of a company’s annual revenue for less severe infringements
- €20 million or 4% of a company’s annual revenue for more severe infringements
In the first half of 2023 alone, fines imposed in the EU due to GDPR violations exceeded €1.6 billion, up from €73 million in 2019.
Examples of high-profile violations in the last few years include :
- Amazon : The Luxembourg National Commission fined the retail giant with a massive $887 million fine in 2021 for not processing personal data per the GDPR.
- Google : The National Data Protection Commission (CNIL) fined Google €50 million for not getting proper consent to display personalised ads.
- H&M : The Hamburg Commissioner for Data Protection and Freedom of Information hit the multinational clothing company with a €35.3 million fine in 2020 for unlawfully gathering and storing employees’ data in its service centre.
One of the criteria that affects the severity of a fine is “data category” — the type of personal data being processed. Companies need to take extra precautions with sensitive data, or they risk receiving more severe penalties.
What’s more, GDPR violations can negatively affect your brand’s reputation and cause you to lose business opportunities from consumers concerned about your data practices. 76% of consumers indicated they wouldn’t buy from companies they don’t trust with their personal data.
Organisations should lay out their data practices in simple terms and make this information easily accessible so customers know how their data is being handled.
Get started with GDPR-compliant web analytics
The GDPR offers a framework for securing and protecting personal data. But it also distinguishes between sensitive and non-sensitive data. Understanding these differences and applying the lawful basis for processing this data type will help ensure compliance.
Looking for a GDPR-compliant web analytics solution ?
At Matomo, we take data privacy seriously.
Our platform ensures 100% data ownership, putting you in complete control of your data. Unlike other web analytics solutions, your data remains solely yours and isn’t sold or auctioned off to advertisers.
Additionally, with Matomo, you can be confident in the accuracy of the insights you receive, as we provide reliable, unsampled data.
Matomo also fully complies with GDPR and other data privacy laws like CCPA, LGPD and more.
Start your 21-day free trial today ; no credit card required.
Disclaimer
We are not lawyers and don’t claim to be. The information provided here is to help give an introduction to GDPR. We encourage every business and website to take data privacy seriously and discuss these issues with your lawyer if you have any concerns.
Try Matomo for Free
21 day free trial. No credit card required.
-
-
What Are Website KPIs (10 KPIs and Best Ways to Track Them)
3 mai 2024, par ErinTrying to improve your website’s performance ?
Have you ever heard the phrase, “What gets measured gets managed ?”
To improve, you need to start crunching your numbers.
The question is, what numbers are you supposed to track ?
If you want to improve your conversions, then you need to track your website KPIs.
In this guide, we’ll break down the top website KPIs you need to be tracking and how you can track them so you can double down on what’s working with your website (and ditch what’s not).
Let’s begin.
What are website KPIs ?
Before we dive into website KPIs, let’s define “KPI.”
A KPI is a key performance indicator.
You can use this measurable metric to track progress toward a specific objective.
A website KPI is a metric to track progress towards a specific website performance objective.
Website KPIs help your business identify strengths and weaknesses on your website, activities you’re doing well (and those you’re struggling with).
Web KPIs can give you and your team a target to reach with simple checkpoints to show you whether you’re on the right track toward your goals.
By tracking website KPIs regularly, you can ensure your organisation performs consistently at a high level.
Whether you’re looking to improve your traffic, leads or revenue, keeping a close eye on your website KPIs can help you reach your goals.
10 Website KPIs to track
If you want to improve your site’s performance, you need to track the right KPIs.
While there are plenty of web analytics solutions on the market today, below we’ll cover KPIs that are automatically tracked in Matomo (and don’t require any configuration).
Here are the top 10 website KPIs you need to track to improve site performance and grow your brand :
1. Pageviews
Website pageviews are one of the most important KPIs to track.
What is it exactly ?
It’s simply the number of times a specific web page has been viewed on your site in a specific time period.
For example, your homepage might have had 327 pageviews last month, and only 252 this month.
This is a drop of 23%.
A drop in pageviews could mean your search engine optimisation or traffic campaigns are weakening. Alternatively, if you see pageviews rise, it could mean your marketing initiatives are performing well.
High or low pageviews could also indicate potential issues on specific pages. For example, your visitors might have trouble finding specific pages if you have poor website structure.
2. Average time on page
Now that you understand pageviews, let’s talk about average time on page.
This is simple : it’s the average amount of time your visitors spend on a particular web page on your site.
This isn’t the average time they spend on your website but on a specific page.
If you’re finding that you’re getting steady traffic to a specific web page, but the average time on the page is low, it may mean the content on the page needs to be updated or optimised.
Tracking your average time on page is important, as the longer someone stays on a page, the better the experience.
This isn’t a hard and fast rule, though. For specific types of content like knowledge base articles, you may want a shorter period of time on page to ensure someone gets their answer quickly.
3. Bounce rate
Bounce rate sounds fun, right ?
Well, it’s not usually a good thing for your website.
A bounce rate is how many users entered your website but “bounced” away without clicking through to another page.
Your bounce rate is a key KPI that helps you determine the quality of your content and the user experience on individual pages.
You could be getting plenty of traffic to your site, but if the majority are bouncing out before heading to new pages, it could mean that your content isn’t engaging enough for your visitors.
Remember, like average time on page, your bounce rate isn’t a black-and-white KPI.
A higher bounce rate may mean your site visitors got exactly what they needed and are pleased.
But, if you have a high bounce rate on a product page or a landing page, that is a sign you need to optimise the page.
4. Exit rate
Bounce rate is the percentage of people who left the website after visiting one page.
Exit rate, on the other hand, is the percentage of website visits that ended on a specific page.
For example, you may find that a blog post you wrote has a 19% exit rate and received 1,000 visits that month. This means out of the 1,000 people who viewed this page, 190 exited after visiting it.
On the other hand, you may find that a second blog post has 1,000 pageviews, but a 10% exit rate, with only 100 people leaving the site after visiting this page.
What could this mean ?
This means the second page did a better job keeping the person on your website longer. This could be because :
- It had more engaging content, keeping the visitors’ interest high
- It had better internal links to other relevant pieces of content
- It had a better call to action, taking someone to another web page
If you’re an e-commerce store and notice that your exit rate is higher on your product, cart or checkout pages, you may need to adjust those pages for better conversions.
5. Average page load time
Want to know another reason you may have a high exit rate or bounce rate on a page ?
Your page load time.
The average page load time is the average time it takes (in seconds) from the moment you click through to a page until it has fully rendered within your browser.
In other words, it’s the time it takes after you click on a page for it to be fully functional.
Your average load time is a crucial website KPI because it significantly impacts page performance and the user experience.
How important is your page load time ?
Nearly 53% of website visitors expect e-commerce pages to load in 3 seconds or less.
You will likely lose visitors if your pages take too long to load.
You could have the best content on a web page, but if it takes too long to load, your visitors will bounce, exit, or simply be frustrated.
6. Conversions
Conversions.
It’s one of the most popular words in digital marketing circles.
But what does it mean ?
A conversion is simply the number of times someone takes a specific action on your website.
For example, it could be wanting someone to :
- Read a blog post
- Click an external link
- Download a PDF guide
- Sign up to your email list
- Comment on your blog post
- Watch a new video you uploaded
- Purchase a limited-edition product
- Sign up for a free trial of your software
To start tracking conversions, you need to first decide what your business goals are for your website.
With Matomo, you can set up conversions easily through the Goals feature. Simply set up your website goals, and Matomo will automatically track the conversions towards that objective (as a goal completion).
Simply choose what conversion you want to track, and you can analyse when conversions occur through the Matomo platform.
7. Conversion rate
Now that you know what a conversion is, it’s time to talk about conversion rate.
This key website KPI will help you analyse your performance towards your goals.
Conversion rate is simply the percentage of visitors who take a desired action, like completing a purchase, signing up for a newsletter, or filling out a form, out of the total number of visitors to your website or landing page.
Understanding this percentage can help you plan your marketing strategy to improve your website and business performance.
For instance, let’s say that 2% of your website visitors purchase a product on your digital storefront.
Knowing this, you could tweak different levers to increase your sales.
If your average order value is $50 and you get 100,000 visits monthly, you make about $100,000.
Let’s say you want to increase your revenue.
One option is to increase your traffic by implementing campaigns to increase different traffic sources, such as social media ads, search ads, organic social traffic, and SEO.
If you can get your traffic to 120,000 visitors monthly, you can increase your revenue to $120,000 — an additional $20,000 monthly for the extra 20,000 visits.
Or, if you wanted to increase revenue, you could ignore traffic growth and simply improve your website with conversion rate optimisation (CRO).
CRO is the practice of making changes to your website or landing page to encourage more visitors to take the desired action.
If you can get your conversion rate up to 2.5%, the calculation looks like this :
100,000 visits x $50 average order value x 2.5% = $125,000/month.
8. Average time spent on forms
If you want more conversions, you need to analyse forms.
Why ?
Form analysis is crucial because it helps you pinpoint where users might be facing obstacles.
By identifying these pain points, you can refine the form’s layout and fields to enhance the user experience, leading to higher conversion rates.
In particular, you should track the average time spent on your forms to understand which ones might be causing frustration or confusion.
The average time a visitor spends on a form is calculated by measuring the duration between their first interaction with a form field (such as when they focus on it) and their final interaction.
Find out how Concrete CMS tripled their leads using Form Analytics.
9. Play rate
One often overlooked website KPI you need to be tracking is play rate.
What is it exactly ?
The percentage of visitors who click “play” on a video or audio media format on a specific web page.
For example, if you have a video on your homepage, and 50 people watched it out of the 1,000 people who visited your website today, you have a play rate of 5%.
Play rate lets you track whenever someone consumes a particular piece of audio or video content on your website, like a video, podcast, or audiobook.
Not all web analytics solutions offer media analytics. However, Matomo lets you track your media like audio and video without the need for configuration, saving you time and upkeep.
10. Actions per visit
Another crucial website KPI is actions per visit.
This is the average number of interactions a visitor has with your website during a single visit.
For example, someone may visit your website, resulting in a variety of actions :
- Downloading content
- Clicking external links
- Visiting a number of pages
- Conducting specific site searches
Actions per visit is a core KPI that indicates how engaging your website and content are.
The higher the actions per visit, the more engaged your visitors typically are, which can help them stay longer and eventually convert to paying customers.
Track your website KPIs with Matomo today
Running a website is no easy task.
There are dozens of factors to consider and manage :
- Copy
- Design
- Performance
- Tech integrations
- And more
But, to improve your website and grow your business, you must also dive into your web analytics by tracking key website KPIs.
Managing these metrics can be challenging, but Matomo simplifies the process by consolidating all your core KPIs into one easy-to-use platform.
As a privacy-friendly and GDPR-compliant web analytics solution, Matomo tracks 20-40% more data than other solutions. So you gain access to 100% accurate, unsampled insights, enabling confident decision-making.
Join over 1 million websites that trust Matomo as their web analytics solution. Try it free for 21 days — no credit card required.
Try Matomo for Free
21 day free trial. No credit card required.