Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Project Idea: Create Content Personalisation and Targeting module

Author: Sigurd Magnusson,

Websites work best when visitors find material that is relevant to them. But that relevant content varies from one visitor to the next, and is usually a small potion of the overall website content. Attributes of visitors like their geographical location, entrance path, pages they browse, browser/OS/device, search queries they enter can be inspected and provide ideas on the content they are seeking. A module can be built that lets content authors tag pieces of content, inspects attributes of visitors, and attempts to match content relevant to an individual visitor dynamically.

For example, a homepage could be set up with 5 large graphical banners. One of them could be tagged “New York” and another “organic gardening”, with the other three untagged. The module could be configured to show visitors with a location proximate to New York that banner, visitors who came in via a Google Query for “organic” or “gardening” another banner, and all other visitors would get any one of the remaining three banners at random.

The module would provide a base level of code functionality and CMS user interface, but each implementation would be expected (at a code level) to require customisation to define the matching logic; as no two websites are likely to want their content personalisation and targeting done the same.

Finally, some manner of reporting and/or logging of the performance of the personalisation is desired. The system should give information as to whether people are being given personalised content, and whether they show a higher rate of clicking a given banner. This may be done directly via SilverStripe or, perhaps better, achieved via third-party tools like Google Analytics.


  • Allow a homepage to contain an area for an image banner and a written content item, and enable a CMS content author to enter in multiple banner and content item options, and give them various tags like “Audience Type A”, “Audience Type B”, etc. This homepage provides a useful out of the box demo functionality that would likely be changed when used on an actual site.
  • Creating extensible ‘matching logic’ functions that enables developers to easily write code to identify visitors and group them into a “Audience Type A/B/C”, based on;
    • Geographical location (e.g. New York, London, Wellington, etc.)
    • Inbound search query referrer link (e.g. They typed a phrase into Google and then came to this site.)
    • On-site browsing activity. (E.g. a visitor on a clothing store only looking at pants pages could be advertised pants rather than shoes.)
    • On-site search activity (E.g. a visitor typing ‘pants’ into the on-site search)
    • Browser, OS, Device (E.g. a Mac user or an smartphone user can be given content different to a Windows or desktop user)
  • It is expected that the module provide the basics for the above, but that each implementation would, at a code level, extend and refine exactly how a visitor is deemed to be “Audience Type A”, “Audience Type B”, etc. You may have other ideas for visitor attributes, too!
  • Use cookies to remember Audience Type when a visitor returns to the website within a moderate time period (e.g. 30 days). Relevant only an attribute isn’t automatically available again (e.g. use for On-site Browsing, but not for location/browser/OS).
  • Some form of analytics on usage, both for debugging, and for measuring the performance of the match logic and thereby enabling refinement.


  • Intermediate PHP skills in order to write the module
  • Beginner frontend skills (HTML+CSS), to create a simple GUI for the upgrade checker


Something went wrong with that request. Please try again.