Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Personalisation of content using Matomo custom segments #13553

Closed
mattab opened this issue Oct 7, 2018 · 6 comments
Closed

Personalisation of content using Matomo custom segments #13553

mattab opened this issue Oct 7, 2018 · 6 comments
Labels
Enhancement For new feature suggestions that enhance Matomo's capabilities or add a new report, new API etc. RFC Indicates the issue is a request for comments where the author is looking for feedback. wontfix If you can reproduce this issue, please reopen the issue or create a new one describing it.

Comments

@mattab
Copy link
Member

mattab commented Oct 7, 2018

What is personalization?

Definition from wikipedia

Personalization, broadly known as customization, consists of tailoring a service or a product to accommodate specific individuals, sometimes tied to groups or segments of individuals. A wide variety of organizations use personalization to improve customer satisfaction, digital sales conversion, marketing results, branding, and improved website metrics as well as for advertising. Personalization is a key element in social media and recommender systems.
[...]
Technically, web personalization can be achieved by associating a visitor segment with a predefined action. Customizing the user experience based on behavioural, contextual and technical data is proven to have a positive impact on conversion rate optimization efforts. Associated actions can range from changing the content of a webpage, presenting a modal display, presenting interstitials, triggering a personalized email or even automating a phone call to the user.

Why personalization matters?

Personalisation can help companies improve their websites, increase conversion rates, increase average order value, customer lifetime value, improve marketing ROI, and deliver a better user experience.

There are a few tools that offer personalization but none that are open source and give you full control over your data. And a good personalization tool will need to collect heaps of data about users (so we can create these "visitor segments"), and have complex interface to let users define the "predefined actions".

And with Matomo Analytics and Tag Manager we're in a unique position to offer personalization as a service since we already have a whole platform dedicated to measuring users and creating segments (Matomo Analytics), and a product to let people define complex actions and triggers (Matomo Tag Manager).

How would personalization work in Matomo?

Using Matomo stack personalization could work in the following way:

  • User create visitor segments using Matomo segment editor: https://matomo.org/docs/segmentation/. With Matomo segments are very powerful and you can match on 85+ dimensions and metrics like Location, Behavior on pages/clicks/downloads/videos/forms interactions, User journey, Conversions, Purchases, Time of visit, and much more. See the list here: https://developer.matomo.org/api-reference/reporting-api-segmentation#list-of-segments
  • Matomo would then compile the list of segments matched by all known visitors, so that we have a list { visitorid -> [visitorid1 segments matched ], visitorid2 -> [visitorid2 segments matched], ... } `. If we do it right, it could even be almost real-time as the list could be lazy updated every hour or more often.
  • User creates a tag, using a personalisation trigger or so, that lets user select one of the visitor segments (eg. "User has visited the website more than 10 times so far"), and then define an action (popover, message, offering special offer, etc.).
  • When a visitor browses the site, Matomo Tag Manager executes and when there's a personalization trigger, the tag manager will look up the current visitorid and checks if it matches the segment. If it does, then the tag executes and the personalised content is displayed.

This personalization would need to be an extremely fast service, as easy to use as possible, work cross-devices on the web (ie. this will be the case when using User ID instead of Visitor ID), it would eventually be possible to combine it with A/B Testing and run tests to ensure that personalised content performs better.

@mattab mattab added Major Indicates the severity or impact or benefit of an issue is much higher than normal but not critical. Enhancement For new feature suggestions that enhance Matomo's capabilities or add a new report, new API etc. labels Oct 7, 2018
@tsteur
Copy link
Member

tsteur commented Oct 8, 2018

One file per visitor in one directory could "kill" / slow down your filesystem and expose potentially lots of information as eg a 16 string unique id might not be too unique. It would also not work for first time visitors etc. Plus it doesn't really work for things like country. There are likely some better ways to do this that I had in mind a while ago where couple of them are performed in JS directly and couple bit differently.

@tsteur tsteur added the RFC Indicates the issue is a request for comments where the author is looking for feedback. label Mar 17, 2019
@shynes
Copy link

shynes commented Jul 19, 2019

Hello, is there any new code published to make this easier? @tsteur , I think he presumed it would be in JS anyway, I don't think he was suggesting one File be created , unless you are saying the logs are the files.

In terms of this, "list of segments matched by all known visitors, " I think he one file will be created.

@tsteur
Copy link
Member

tsteur commented Jul 20, 2019

@shynes there isn't any new code published to make this easier. Having this in one file be problematic potentially as well since you would have a lot of information about many visitors in one file publicly available and big loading time etc. There are heaps of problems / challenges with the suggested solution and it wouldn't really work unfortunately.

@shynes
Copy link

shynes commented Jul 20, 2019

@tsteur, thank you so much for the response. What did you have in mind as a better way?

Maybe not storing them in a file, but maybe doing a query against the segment database on maybe some low overhead environmental variables of the visitor? Once they login, we can store many variables in the database.

@tsteur
Copy link
Member

tsteur commented Jul 21, 2019

@shynes you would need a new endpoint for personalisation and start step by step in what can be targeted. Eg Location, IP, etc. Some other things could be possibly resolved in JS directly, eg if personalising only based on user agent, local time, ... without needing to fetch any data server side. Ideally it wouldn't hit the DB as it may be too slow for personalisation unless maybe #14119 is implemented for faster visitor lookup. It's a complex feature so hard to summarise in a few sentences :)

@mattab mattab removed the Major Indicates the severity or impact or benefit of an issue is much higher than normal but not critical. label Oct 21, 2019
@mattab
Copy link
Member Author

mattab commented May 15, 2023

Thank you for your suggestion!

Unfortunately as we won't implement this ourselves, I will close this issue now. (note that if someone really needed this improvement and contributed a working Pull Request, we would consider likely consider to review, please comment here to discuss further with the team).

@mattab mattab closed this as not planned Won't fix, can't repro, duplicate, stale May 15, 2023
@sgiehl sgiehl added the wontfix If you can reproduce this issue, please reopen the issue or create a new one describing it. label May 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement For new feature suggestions that enhance Matomo's capabilities or add a new report, new API etc. RFC Indicates the issue is a request for comments where the author is looking for feedback. wontfix If you can reproduce this issue, please reopen the issue or create a new one describing it.
Projects
None yet
Development

No branches or pull requests

4 participants