Nigel is a small, light, respectful Online Personalisation Engine.
On-line Personalisation is a technique for displaying different page content (messages, images, adverts etc.) to visitors based upon their behaviour on a web site.
Most on-line personalisation engines follow the same model: Collect every scrap of a visitor’s data in a big central database, process it on the server and send the results back to the visitor. While this may be technically efficient (I don’t necessarily think it is), recent years have highlighted how these large databases of data are open to abuse by surveillance agencies and regularly targeted by criminal hackers.
Nigel is different.
Unlike every other behaviour driven engine out there, Nigel does not store your data in a central database where it can be abused/stolen. Visitor data is only ever collected in the browser’s local storage, never anywhere else.
This is safer for everyone involved.
With Nigel, personalisation is composed of three parts:
- Segments — Site visitors may be assigned to none, one or more Segments depending upon their behaviour on the site
- Content — The Content to display
- Placeholders — Sections of the page that may display different Content to visitors in different Segments
Segments are defined by specifying a name and a test function. If the test function returns true, the visitor is assigned to the segment, if false they are not. The complete set of visitor data is passed to the test function, so we can define segments against it.
Content is regular mark-up defined within script tags. It remains “hidden” until displayed in a placeholder.
Placeholders are defined by specifying the id of an element in the page and an ordered array of mappings between segments and content. If a visitor if assigned to a segment, the corresponding content is displayed in the placeholder. If a visitor is assigned to multiple segments, the content corresponding to the first matching segment is displayed. If a visitor is assigned to no matching segments the existing content in the placeholder is displayed by default.