Skip to content

Klaviyo integration for the Solidus eCommerce platform.

License

Notifications You must be signed in to change notification settings

mrshahsuvie/solidus_klaviyo

 
 

Repository files navigation

solidus_klaviyo

CircleCI

This extension allows you to integrate your Solidus store with Klaviyo via solidus_tracking.

Installation

Add solidus_tracking and solidus_klaviyo to your Gemfile:

gem 'solidus_tracking', github: 'solidusio-contrib/solidus_tracking'
gem 'solidus_klaviyo', github: 'solidusio-contrib/solidus_klaviyo'

Bundle your dependencies and run the installation generator:

$ bundle
$ bundle exec rails g solidus_klaviyo:install

The generator will create an initializer at config/initializers/solidus_klaviyo.rb with the default configuration. Take a look at the file and customize it to fit your environment.

Usage

Tracking standard events

In order to track all standard events in Klaviyo, add the following to your solidus_tracking configuration:

SolidusTracking.configure do |config|
  config.trackers << SolidusKlaviyo::Tracker.from_config
end

That's it! Your events will be automatically sent to Klaviyo.

Subscribing users to lists

If you want to subscribe a user to a Klaviyo list, the extension provides a handy Ruby API to do that:

SolidusKlaviyo.subscribe_now('YOUR_LIST_ID', 'jdoe@example.com', custom_property: 'value') 

We recommend using the built-in background job to subscribe users, in order to avoid blocking your web workers and slowing down the customer:

SolidusKlaviyo.subscribe_later('YOUR_LIST_ID', 'jdoe@example.com', custom_property: 'value')

Subscribing all users upon signup

If you want to subscribe all users when they sign up, you can just set the default_list configuration option:

# config/initializers/solidus_klaviyo.rb
SolidusKlaviyo.configure do |config|
  # ...
  config.default_list = 'klaviyoListId'
end

Now, all users will be subscribed to the configured list automatically when their account is created.

Updating users on your lists

Updating an existing user on a list is just as easy as adding them.

SolidusKlaviyo.update_now('YOUR_LIST_ID', 'jdoe@example.com', custom_property: 'value') 

Just like with subscribing, we recommend using the built-in background job to update users, in order to avoid blocking your web workers and slowing down the customer:

SolidusKlaviyo.update_later('YOUR_LIST_ID', 'jdoe@example.com', custom_property: 'value')

Updating in bulk is also possible using the bulk_update_now and bulk_update_later methods. For bulk updates, you'll want to provide the emails and custom properties in a single object, like so:

SolidusKlaviyo.bulk_update_later('YOUR_LIST_ID', [{email: 'jdoe@example.com', custom_property: 'value'}])

Development

Testing the extension

First bundle your dependencies, then run bin/rake. bin/rake will default to building the dummy app if it does not exist, then it will run specs. The dummy app can be regenerated by using bin/rake extension:test_app.

$ bundle
$ bin/rake

To run Rubocop static code analysis run

$ bundle exec rubocop

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

require 'solidus_klaviyo/factories'

Running the sandbox

To run this extension in a sandboxed Solidus application, you can run bin/sandbox. The path for the sandbox app is ./sandbox and bin/rails will forward any Rails commands to sandbox/bin/rails.

Here's an example:

$ bin/rails server
=> Booting Puma
=> Rails 6.0.2.1 application starting in development
* Listening on tcp://127.0.0.1:3000
Use Ctrl-C to stop

Releasing new versions

Your new extension version can be released using gem-release like this:

$ bundle exec gem bump -v VERSION --tag --push --remote upstream && gem release

License

Copyright (c) 2020 Nebulab Srls, released under the New BSD License.

About

Klaviyo integration for the Solidus eCommerce platform.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 91.2%
  • Shell 6.7%
  • CSS 1.1%
  • JavaScript 1.0%