This extension allows you to integrate your Solidus store with Klaviyo via solidus_tracking.
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:installThe 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.
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
endThat's it! Your events will be automatically sent to Klaviyo.
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', '[email protected]', 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', '[email protected]', custom_property: 'value')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'
endNow, all users will be subscribed to the configured list automatically when their account is created.
Updating an existing user on a list is just as easy as adding them.
SolidusKlaviyo.update_now('YOUR_LIST_ID', '[email protected]', 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', '[email protected]', 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: '[email protected]', custom_property: 'value'}])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/rakeTo run Rubocop static code analysis run
$ bundle exec rubocopWhen 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'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 stopYour new extension version can be released using gem-release like this:
$ bundle exec gem bump -v VERSION --tag --push --remote upstream && gem releaseCopyright (c) 2020 Nebulab Srls, released under the New BSD License.