PHPackages                             wy/neos-abtesting - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. wy/neos-abtesting

AbandonedArchivedNeos-plugin

wy/neos-abtesting
=================

A/B Testing for Neos

3.2.1(2y ago)152.0k↓100%4[2 PRs](https://github.com/wysiwyg-software-design/Wysiwyg.ABTesting/pulls)MITPHPPHP ^8.1CI failing

Since Sep 4Pushed 9mo ago7 watchersCompare

[ Source](https://github.com/wysiwyg-software-design/Wysiwyg.ABTesting)[ Packagist](https://packagist.org/packages/wy/neos-abtesting)[ RSS](/packages/wy-neos-abtesting/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (9)Dependencies (1)Versions (17)Used By (0)

Caution

This repository is deprecated and will be removed in September 2025

wysiwyg\* - Neos A/B Testing
============================

[](#wysiwyg---neos-ab-testing)

[![Neos Package](https://camo.githubusercontent.com/0237b5eec0385abd5cdd56971baff0b0c282222335da6b808c091a19ed89c981/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e656f732d5061636b6167652d626c75652e737667 "Neos Package")](https://camo.githubusercontent.com/0237b5eec0385abd5cdd56971baff0b0c282222335da6b808c091a19ed89c981/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e656f732d5061636b6167652d626c75652e737667)[![Neos Project](https://camo.githubusercontent.com/a690c2b4b6648a47e364c7b040ff38e424ccf3522cfa32447c784276544f5468/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e656f732d2532302533453d253230382e302532302d626c75652e737667 "Neos Project")](https://camo.githubusercontent.com/a690c2b4b6648a47e364c7b040ff38e424ccf3522cfa32447c784276544f5468/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e656f732d2532302533453d253230382e302532302d626c75652e737667)[![PHP 7.1 and above](https://camo.githubusercontent.com/45c3846c72749f842445ee3f52d8a7f086119fedc8838e7f1d8a06b1c767d84b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d2532302533453d253230382e312532302d626c75652e737667 "PHP >= 8.1")](https://camo.githubusercontent.com/45c3846c72749f842445ee3f52d8a7f086119fedc8838e7f1d8a06b1c767d84b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d2532302533453d253230382e312532302d626c75652e737667)

This package provides a simple to use backend module and frontend container to run A/B tests in Neos.

Installation
------------

[](#installation)

Run these commands to install the package and update the database schema.

```
composer require wy/neos-abtesting

./flow flow:doctrine:migrate
```

Usage
-----

[](#usage)

[![ demo image](Documentation/ab-testing-container.jpg "Adding a A/B container in backend")](Documentation/ab-testing-container.jpg)

[![ demo image](Documentation/ab-testing-frontend.jpg "Frontend displays one version")](Documentation/ab-testing-frontend.jpg)

This package offers a node container for displaying two different nodes for two different decisions (A or B).

You can add the A/B testing container to your constraints: `Wysiwyg.ABTesting:ABTestingContainer`

The container has three contentCollections:

- itemsa
- itemsb
- itemsc

By default these collections accept all content nodes. This can be changed by overriding the respective node configuration in your own NodeTypes.yaml file. An editor has to put one or more nodes in each content collection.

**IMPORTANT**
Both versions will always be rendered in the Neos backend. Per default version A will be displayed in the frontend if no feature has been configured and selected.

You can find an option group "A / B Testing" in each ABTestingContainer. This group provides a dropdown menu to choose which feature will be used for the container.

#### Preview Different Versions

[](#preview-different-versions)

Sometimes it is necessary to view a different version of the feature.
For viewing a different version add the "forceABVersion" GET-parameter into the url and assign the desired version as the value.

Example:
Show Version A `https://example.com/greatFeature.html?forceABVersion=a`Show Version B `https://example.com/greatFeature.html?forceABVersion=b`Show Version C `https://example.com/greatFeature.html?forceABVersion=c`

This parameter will not override the cookie value.

### Backend-Module Usage

[](#backend-module-usage)

You will find a new "A/B Testing" menu item in the main menu of the Neos backend. The module "Features" will offer all necessary functions to manage A/B testing features. In the A/B testing dashboard you will find the following options:

- "Create Feature": Add a new A/B test feature
- "Feature List": Shows a list of all A/B test features

**Feature List**
[![ demo image](Documentation/feature-list.jpg "Neos Module which shows all features and options to change")](Documentation/feature-list.jpg)

Settings
--------

[](#settings)

This package uses default values for creating a cookie.
There are several settings which can be modified for your own implementation.

```
Wysiwyg:
  ABTesting:
    cookie:
      name: "WYSIWYG_AB_TESTING"
      lifetime: "+2 years"
```

Per default the cookie has a lifetime of 2 years. Please consider that [strtotime()](https://www.php.net/manual/de/function.strtotime.php) is used to evaluate the lifetime setting's value if you need to adjust it.

Regarding Privacy (i.e. GDPR)
-----------------------------

[](#regarding-privacy-ie-gdpr)

Please note that all A/B testing decisions will be saved in a cookie that by default is named "WYSIWYG\_AB\_TESTING" and has a lifetime of 2 years. This cookie will be created whenever a user opens the webpage for the first time.
It contains a raw JSON string which includes all names of the features and their decision (a or b).
Whenever a user enters the page and already has the cookie, it will be made sure that all active features are saved with a decision. If there are new features they will be added to the cookie and a new JSON string will be saved with all decisions.

Contributing
------------

[](#contributing)

Pull requests are welcome. For major changes please open an issue first to discuss what you would like to change.

Planned Features
----------------

[](#planned-features)

We want to enhance the A/B testing with more solid features.

- Decider-Chaining
    Right now it's only possible to add one decision to a feature.
    We want to make it possible to add a chaining of deciders for example DimensionDecision AND Percentage.

Authors
-------

[](#authors)

[Sven Wütherich](https://github.com/svwu)
[Alexander Schulte](https://github.com/Alex-Schulte)
[Eva-Maria Müller](https://github.com/emmue)
[Marvin Kuhn](https://github.com/breadlesscode)

License
-------

[](#license)

This package is released under the MIT License (MIT). Please see [License File](LICENSE) for more information.

###  Health Score

43

—

FairBetter than 91% of packages

Maintenance40

Moderate activity, may be stable

Popularity26

Limited adoption so far

Community18

Small or concentrated contributor base

Maturity75

Established project with proven stability

 Bus Factor1

Top contributor holds 56.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~161 days

Recently: every ~196 days

Total

11

Last Release

822d ago

Major Versions

1.1.1 → 2.0.02020-01-13

2.0.0 → 3.0.02021-12-14

PHP version history (2 changes)1.0.0PHP &gt;=7.1

3.1.0PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/9e1cef5bdb4c46b4a3538272c36ff37e4de6ac71270e07e17e38b28f4d416341?d=identicon)[wy-packagist](/maintainers/wy-packagist)

---

Top Contributors

[![svwu](https://avatars.githubusercontent.com/u/12981671?v=4)](https://github.com/svwu "svwu (26 commits)")[![Alex-Schulte](https://avatars.githubusercontent.com/u/32269904?v=4)](https://github.com/Alex-Schulte "Alex-Schulte (10 commits)")[![mficzel](https://avatars.githubusercontent.com/u/1309380?v=4)](https://github.com/mficzel "mficzel (4 commits)")[![jonnitto](https://avatars.githubusercontent.com/u/4510166?v=4)](https://github.com/jonnitto "jonnitto (3 commits)")[![mariofischer](https://avatars.githubusercontent.com/u/166842?v=4)](https://github.com/mariofischer "mariofischer (1 commits)")[![grebaldi](https://avatars.githubusercontent.com/u/2522299?v=4)](https://github.com/grebaldi "grebaldi (1 commits)")[![emmue](https://avatars.githubusercontent.com/u/48093028?v=4)](https://github.com/emmue "emmue (1 commits)")

---

Tags

a-b-testingab-testingabtestingneosneos-pluginneoscmsoptimize-content

### Embed Badge

![Health badge](/badges/wy-neos-abtesting/health.svg)

```
[![Health](https://phpackages.com/badges/wy-neos-abtesting/health.svg)](https://phpackages.com/packages/wy-neos-abtesting)
```

###  Alternatives

[neos/neos-ui

Neos CMS UI written in React

2661.0M104](/packages/neos-neos-ui)[neos/form-builder

Flow Form Framework integration into Neos CMS

19347.1k18](/packages/neos-form-builder)[neos/demo

Site package for the Neos Demo Site

18181.0k6](/packages/neos-demo)[flowpack/media-ui

This module allows managing media assets including pictures, videos, audio and documents.

2184.5k2](/packages/flowpack-media-ui)[kaufmanndigital/gdpr-cookieconsent

A ready-to-run package, that integrates an advanced cookie consent banner into your Neos CMS site.

2540.7k](/packages/kaufmanndigital-gdpr-cookieconsent)[flowpack/neos-matomo

Track visits of your Neos site with the Matomo Open Analytics Platform!

2337.6k](/packages/flowpack-neos-matomo)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
