NAME

    Dancer2::Plugin::Sixpack - Dancer2's plugin for WWW::Sixpack

DESCRIPTION

    This plugin gives you the ability to do A/B testing within Dancer2
    easily, using http://sixpack.seatgeek.com/.

    It handles the client_id transparantly through Dancer2's Session
    plugin.

SYNOPSIS

        use Dancer2;
        use Dancer2::Plugin::Sixpack;
    
        get '/route' => sub {
            my $variant = experiment 'decimal_dot_comma', [ 'comma', 'dot' ];
    
            $price =~ s/\.(?=[0-9]{2})$/,/
               if( $variant eq 'comma' );
            # ...
        };
    
        get '/some_click' => sub {
            convert 'decimal_dot_comma', 'click';
            redirect $somewhere;
        };
    
        get '/confirmation' => sub {
            convert 'decimal_dot_comma';
            # ...
        };

CONFIGURATION

    There are no mandatory settings.

        plugins:
          Sixpack:
            host: http://localhost:5000
            experiments:
              decimal_dot_comma:
                - comma
                - dot
              beer:
                - duvel
                - budweiser

    The experiments can be generated on the fly without defining them. See
    below for more information.

KEYWORDS

 experiment

    Fetch the alternative used for the experiment name passed in.

    The experiment and its' alternatives may be defined in the
    configuration. If they're not defined, the experiment will be created
    (if you provided the alternatives arrayref).

    Examples:

        # experiment defined in config:
        my $variant = exeriment 'known-experiment';
    
        # experiment not defined
        my $variant = experiment 'on-the-fly', [ 'alt-1', 'alt-2' ];

    The client_id will be fetched from session, or generated if needed.

    The client's IP address and user agent string are automatically added
    to the request for bot detection.

    Alternatives can be forced by params like
    "sixpack-force-$experiment=$alt"

    Returns the alternative name chosen.

 convert

    Convert a user.

    Provide the experiment and (optional) a KPI to track conversion on. If
    the KPI doesn't exist yet, it will be created.

    When no experiment name is given, we try to fetch the experiments from
    the user's session and convert on all of the found experiments.

    Returns a hashref with { 'experiment' => 'status' }

 get_sixpack

    Internal method to construct the WWW::Sixpack object.

AUTHOR

    Menno Blom, <blom at cpan.org>

BUGS

    Please report any bugs or feature requests to
    bug-dancer2-plugin-sixpack at rt.cpan.org, or through the web interface
    at
    http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Dancer2-Plugin-Sixpack.
    I will be notified, and then you'll automatically be notified of
    progress on your bug as I make changes.

COPYRIGHT

    Copyright 2014- Menno Blom

LICENSE

    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

