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: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.
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.
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'
end
Now, 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/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'
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
Your new extension version can be released using gem-release
like this:
$ bundle exec gem bump -v VERSION --tag --push --remote upstream && gem release
Copyright (c) 2020 Nebulab Srls, released under the New BSD License.