HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityDoc feedbackLog In
GitHubNuGetDev CommunityDoc feedback


(Thanks to [Ted & Gustaf](🔗) for this example.)

One usage scenario could be to check for a cookie that says that the visitor has previously completed a purchase on the website; that is, is a returning customer.

## Create the settings and criterion classes

All visitor group criteria require a `settings` class and a `criterion` class.

  • The `settings` class is used to persist any settings available to editors when creating new visitor groups.

  • The `criterion` class contains the logic to determine whether or not a visitor belongs to the visitor group.

You should create the two classes in a suitable folder structure:



## Implement the settings class

The only setting required for this visitor group criterion is the cookie name you should look for.

  1. First, make the `CookieExistsCriterionSettings` class inherit the `CriterionModelBase` class:

    
  2. Add a public property to let editors specify the cookie name:

    
  3. If you need custom validation logic when a criterion is saved, you can make your settings class implement the `IValidateCriterionModel` interface (this is optional). By implementing that interface’s `Validate` method, you can customize how settings are validated before saving a criterion for a visitor group.

    The abstract `CriterionModelBase` class requires you to implement the `Copy()` method. Because you are not using complex reference types, you can implement it by returning a shallow copy as shown (see [Create custom visitor group criteria](🔗)):



This is the complete `CookieExistsCriterionSettings` class:



## Implement the criterion class

  1. Make the `CookieExistsCriterionclass` inherit the abstract `CriterionBaseclass` with the settings class as the type parameter:

    
  2. Add a `VisitorGroupCriterion` attribute to set the category, name, and description of our criterion (for more available `VisitorGroupCriterion` properties, see [Create custom visitor group criteria](🔗):


  1. The abstract `CriterionBase` class requires you to implement an `IsMatch()` method which determines whether the current user matches this visitor group criterion. You should check if a specific cookie exists based on the criterion settings:



The criterion class appears as follows:



Note

You access the criterion settings instance through the Modelproperty.

## Test the new criterion

To test the criterion, create a new visitor group using the new cookie criterion.

  1. Set the cookie name to **.EPiServerLogin**, the name of the cookie created when a user logs in:

1233


If you are on CMS version 10 or 11, it will look like this:

451

  1. Select some content in the editor that should only be displayed to users currently logged in to Episerver.

1127

  1. Click **Personalized Content** and select the new **Episerver User** visitor group.

268


This content is now only displayed to users logged into Episerver:



After publishing the page, you see this:



However, if you log out, you no longer see the personalized content.