UNPKG

analytics-plugin-customerio

Version:

Customer.io integration for 'analytics' module

77 lines (66 loc) 2.05 kB
'use strict'; var CustomerIO; { CustomerIO = require('customerio-node'); } /** * Customer.io analytics server side integration. Uses https://github.com/customerio/customerio-node * @link https://getanalytics.io/plugins/customerio/ * @link https://customer.io/docs/api/ * @param {object} pluginConfig - Plugin settings * @param {string} pluginConfig.siteId - Customer.io site Id for server side tracking * @param {string} pluginConfig.apiKey - Customer.io API key for server side tracking * @return {object} Analytics plugin * * @example * * customerIOPlugin({ * siteId: '123-xyz', * apiKey: '9876543' * }) */ function customerIOPlugin() { var pluginConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; // Allow for userland overides of base methods if (!pluginConfig.siteId) { throw new Error('customer.io siteId missing'); } if (!pluginConfig.apiKey) { throw new Error('customer.io apiKey missing'); } var client = new CustomerIO(pluginConfig.siteId, pluginConfig.apiKey); return { NAMESPACE: 'customerio', config: pluginConfig, // page view page: function page(_ref) { var payload = _ref.payload; var userId = payload.userId, properties = payload.properties; if (!userId) return false; client.trackPageView(userId, properties.url); }, // track event track: function track(_ref2) { var payload = _ref2.payload; var userId = payload.userId, event = payload.event, properties = payload.properties; if (!userId) return false; client.track(userId, { name: event, data: properties }); }, // identify user identify: function identify(_ref3) { var payload = _ref3.payload; var userId = payload.userId, traits = payload.traits; client.identify(userId, traits); } }; } /* This module will shake out unused code and work in browser and node 🎉 */ var index = customerIOPlugin; module.exports = index;