Giter VIP home page Giter VIP logo

solidus_klaviyo's Introduction

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', '[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')

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', '[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'}])

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.

solidus_klaviyo's People

Contributors

aldesantis avatar seand7565 avatar kennyadsl avatar cpfergus1 avatar waiting-for-dev avatar

Forkers

mrshahsuvie

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.