All Projects → ben182 → laravel-ab

ben182 / laravel-ab

Licence: MIT license
Laravel A/B experiment testing tool

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to laravel-ab

voyager-portfolio
A Portfolio Module for Laravel Voyager 💋
Stars: ✭ 15 (-86.11%)
Mutual labels:  laravel-package, laravel-5-package
Voyager Frontend
The Missing Front-end for The Missing Laravel Admin 🔥
Stars: ✭ 200 (+85.19%)
Mutual labels:  laravel-package, laravel-5-package
Laravel Page Speed
Package to optimize your site automatically which results in a 35%+ optimization
Stars: ✭ 2,097 (+1841.67%)
Mutual labels:  laravel-package, laravel-5-package
Pagination
🎁 Laravel 5 Custom Pagination Presenter
Stars: ✭ 119 (+10.19%)
Mutual labels:  laravel-package, laravel-5-package
Laravel Gitscrum
GitScrum is a Project Management Tool, developed to help entrepreneurs, freelancers, managers, and teams Skyrocket their Productivity with the Agile methodology and Gamification.
Stars: ✭ 2,686 (+2387.04%)
Mutual labels:  laravel-package, laravel-5-package
Laravel Auto Translate
Automatically translate your language files using a translator service
Stars: ✭ 153 (+41.67%)
Mutual labels:  laravel-package, laravel-5-package
Voyager Hooks
Hooks system integrated into Voyager.
Stars: ✭ 200 (+85.19%)
Mutual labels:  laravel-package, laravel-5-package
Laravel Pdf
A Simple package for easily generating PDF documents from HTML. This package is specially for laravel but you can use this without laravel.
Stars: ✭ 79 (-26.85%)
Mutual labels:  laravel-package, laravel-5-package
Auth Tests
Always-current tests for Laravel's authentication system. Curated by the community.
Stars: ✭ 230 (+112.96%)
Mutual labels:  laravel-package, laravel-5-package
Sneaker
An easy way to send emails whenever an exception occurs on server.
Stars: ✭ 223 (+106.48%)
Mutual labels:  laravel-package, laravel-5-package
Eye
Eyewitness.io package for Laravel 5 applications
Stars: ✭ 114 (+5.56%)
Mutual labels:  laravel-package, laravel-5-package
flash
An easy way for Laravel flash notifications.
Stars: ✭ 14 (-87.04%)
Mutual labels:  laravel-package, laravel-5-package
Laravel Excel
🚀 Supercharged Excel exports and imports in Laravel
Stars: ✭ 10,417 (+9545.37%)
Mutual labels:  laravel-package, laravel-5-package
Telegram Bot Sdk
🤖 Telegram Bot API PHP SDK. Lets you build Telegram Bots easily! Supports Laravel out of the box.
Stars: ✭ 2,212 (+1948.15%)
Mutual labels:  laravel-package, laravel-5-package
Larabug
Laravel error reporting tool
Stars: ✭ 84 (-22.22%)
Mutual labels:  laravel-package, laravel-5-package
Blogetc
Easily add a full Laravel blog (with built in admin panel and public views) to your laravel project with this simple package.
Stars: ✭ 198 (+83.33%)
Mutual labels:  laravel-package, laravel-5-package
Laravel Remember Uploads
Laravel Middleware and helper for remembering file uploads during validation redirects
Stars: ✭ 67 (-37.96%)
Mutual labels:  laravel-package, laravel-5-package
Laraupdater
Enable Laravel App Self-Update. Allow your Laravel Application to auto-update itself.
Stars: ✭ 75 (-30.56%)
Mutual labels:  laravel-package, laravel-5-package
Hooks
Hooks is a extension system for your Laravel application.
Stars: ✭ 202 (+87.04%)
Mutual labels:  laravel-package, laravel-5-package
laravel-two-factor-authentication
A two-factor authentication package for Laravel >= 8
Stars: ✭ 37 (-65.74%)
Mutual labels:  laravel-package, laravel-5-package

Latest Version Build Status Quality Score Code Coverage

This package helps you to find out which content works on your site and which doesn't.

It allows you to create experiments and goals. The visitor will receive randomly the next experiment and you can customize your site to that experiment. The view and the goal conversion will be tracked and you can view the results in a report.

Installation

This package can be used in Laravel 5.6 or higher.

You can install the package via composer:

composer require ben182/laravel-ab

Config

After installation publish the config file:

php artisan vendor:publish --provider="Ben182\AbTesting\AbTestingServiceProvider"

You can define your experiments and goals in there.

Finally, run the newly added migration

php artisan migrate

Two new migrations should be added.

Usage

Experiments

@if (AbTesting::isExperiment('logo-big'))

    <div class="logo-big"></div>

@elseif (AbTesting::isExperiment('logo-grayscale'))

    <div class="logo-greyscale"></div>

@elseif (AbTesting::isExperiment('brand-name'))

    <h1>Brand name</h1>

@endif

That's the most basic usage of the package. You don't have to initialize anything. The package handles everything for you if you call isExperiment

Alternatively you can use a custom blade if statement:

@ab('logo-big')

    <div class="logo-big"></div>

@elseab('logo-grayscale')

    <div class="logo-greyscale"></div>

@elseab('brand-name')

    <h1>Brand name</h1>

@endab

This will work exactly the same way.

If you don't want to make any continual rendering you can call

AbTesting::pageView()

directly and trigger a new page view with a random experiment. This function will also be called from isExperiment.

Under the hood a new session item will keep track of the current experiment. A session will only get one experiment and only trigger one page view.

You can grab the current experiment with:

// get the underlying model
AbTesting::getExperiment()

// get the experiment name
AbTesting::getExperiment()->name

// get the visitor count
AbTesting::getExperiment()->visitors

Alternatively there is a request helper for you:

public function index(Request $request) {
    // the same as 'AbTesting::getExperiment()'
    $request->abExperiment()
}

Goals

To complete a goal simply call:

AbTesting::completeGoal('signup')

The function will increment the conversion of the goal assigned to the active experiment. If there isn't an active experiment running for the session one will be created. You can only trigger a goal conversion once per session. This will be prevented with another session item. The function returns the underlying goal model.

To get all completed goals for the current session:

AbTesting::getCompletedGoals()

Bots and crawlers

The package can try to ignore bots and crawlers from registering pageviews. Just enable the ignore_crawlers option in the config.

Report

To get a report of the page views, completed goals and conversion call the report command:

php artisan ab:report

This prints something like this:

+---------------+----------+-------------+
| Experiment    | Visitors | Goal signup |
+---------------+----------+-------------+
| big-logo      | 2        | 1 (50%)     |
| small-buttons | 1        | 0 (0%)      |
+---------------+----------+-------------+

Reset

To reset all your visitors and goal completions call the reset command:

php artisan ab:reset

Events

In addition you can hook into two events:

  • ExperimentNewVisitor gets triggered once an experiment gets assigned to a new visitor. You can grab the experiment as a property of the event.
  • GoalCompleted gets triggered once a goal is completed. You can grab the goal as a property of the event.

Testing

composer test

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

Laravel Package Boilerplate

This package was generated using the Laravel Package Boilerplate.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].