0.0
No commit activity in last 3 years
No release in over 3 years
Spree/Mixpanel integration
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 2.3.0
 Project Readme

SpreeMixpanel (master is not implemented yet. See 2-1-stable or 2-2-stable branches)

Spree integration with Mixpanel

Installation

Add spree_mixpanel to your Gemfile:

gem 'spree_mixpanel', git: 'git@github.com:marcosteixeira/spree_mixpanel.git', branch: '2-1-stable'

Bundle your dependencies and run the installation generator:

bundle
bundle exec rails g spree_mixpanel:install

Sidekiq (Optional)

In order to upload data to mixpanel in background you can use Sidekiq gem.

Run your redis server

redis-server

Execute Sidekiq

bundle exec sidekiq

Usage

Add your Mixpanel credentials to config/initializers/mixpanel.rb:

Spree::Mixpanel::Config.configure do |config|
  config.connection_token = "YOUR TOKEN"
end

Storing user profiles

@user.mixpanel_track_user

By default, we send first_name, last_name, and email from user. You can override user mixpanel_personal_fields and return personalized fields.

User.class_eval do
  def mixpanel_personal_fields
    { 
      'My Field' => 'FIELD',
      'Total sales' => self.total_sales # personalized method in your user model
    }
  end
end

Sending orders to mixpanel

@order.mixpanel_track_order

By default, we send number, total, state, email and payment_state from order. You can override order mixpanel_personal_fields and return personalized fields.

Order.class_eval do
  def mixpanel_personal_fields
    {
      'My Field' => 'FIELD',
      'Personal amount' => self.personal_amount
    }
  end
end

Tracking order revenue

@order.mixpanel_track_charges

By default paid orders revenue are automatically sent to mixpanel.

You can change this behaviour changing push_order_charges configuration.

# config/initializers/mixpanel.rb
Spree::Mixpanel::Config.configure do |config|
  config.push_order_charges = false # true by default
end

You can override mixpanel_total.

Order.class_eval do
  def mixpanel_total
    100 # personalized total
  end
end

In order to send personalized fields you can override mixpanel_charge_fields

Order.class_eval do
  def mixpanel_charge_fields
    {'User name' => user_name } # personalized field
  end
end

Testing

Be sure to bundle your dependencies and then create a dummy test app for the specs to run against.

bundle
bundle exec rake test_app
bundle exec rspec spec

When testing your applications integration with this extension you may use it's factories. Simply add this require statement to your spec_helper:

require 'spree_mixpanel/factories'

Copyright (c) 2014, released under the New BSD License