@thrivehive/segment

1.3.1 • Public • Published

@thrivehive/segment

npm version License: MIT

Implements Segment.io identify, page, and track methods, and adds a setup function to inject the segment script into your page with your write key.

Also removes the need to paste the segment JS snippet into <head>.

A Vue directive is also included to make event tracking easier.

Installation

npm install @thrivehive/segment

Setup

Inject the official segment.js script into the page with your write key:

import { setup } from '@thrivehive/segment';

setup('<YOUR WRITE KEY>');

Tracking methods

identity

Wrapper for analytics.identity:

// Foo.vue
import { identify } from '@thrivehive/segment';

const user = {
  name: 'Jane Doe',
  active: true
}

export default {
  mounted() {
    identify(user.name, {
      active: user.active
    });
  }
}

trackEvent

Wrapper for analytics.track:

// Foo.vue
import { trackEvent } from '@thrivehive/segment';

export default {
  methods: {
    foo() {
      trackEvent('Button clicked', properties);
    }
  }
}

trackPageView

Wrapper for analytics.page:

// router.js
import Vue from 'vue';
import Router from 'vue-router';
import { trackPageView } from '@thrivehive/segment';

Vue.use(Router);

const router = new Router({
  mode: 'history',
  routes: [
    {
      path: '/',
      name: 'search',
      component: Search
    }
  ]
});

router.afterEach((to) => {
  trackPageView(to.name, to.query);
});

Vue plugin

@thrivehive/segment also includes a Vue plugin. The plugin will handle the setup function for you, and adds a Vue directive for easy event tracking. More info about Vue directives.

Setup Vue plugin

Setup the plugin:

import Vue from 'vue';
import { VueSegment } from '@thrivehive/segment';

Vue.use(VueSegment, {
  key: '<YOUR WRITE KEY>'
});

Argument

The directive accepts a single argument, the eventName to listen for. By default, this is a Vue event listener, not native.

Example using button:

<template>
  <button v-segment:click="'User clicked button'">
    Click me
  </button>
</template>

Value

The expression passed to the directive may one of the following:

  • <string>
    • description: Message to send to segment.io
  • <object>
    • message
      • type: <string>
      • description: Message to send to segment.io
    • data
      • type: <object>
      • description: Data to send to segment.io, must be an object, data that may change should be a reference to a computed property that returns an object.

Example usage with message only:

<template>
  <div v-segment:mouseenter="'User hovered over div'"></div>
</template>

Example usage with verbose syntax:

<template>
  <div>
    <form
      v-segment:submit="{
        message: 'User submitted form',
        data: trackingInfo
      }"
    >
      <input type="text" v-model="value" />
    </form>
  </div>
</template>

<script>
export default {
  data: () => ({
    value: null
  }),
  computed: {
    trackingInfo() {
      return {
        value: this.value
      }
    }
  }
}
</script>

Modifier

It is also possible to listen to a native event instead of a Vue event. Just like with normal Vue event listeners, you can use the .native modifier to use the native event listener:

<template>
  <button v-segment:click.native="'User clicked button'">
    Click me
  </button>
</template>

Readme

Keywords

none

Package Sidebar

Install

npm i @thrivehive/segment

Weekly Downloads

11

Version

1.3.1

License

MIT

Unpacked Size

8.45 kB

Total Files

7

Last publish

Collaborators

  • dhardy
  • nick-thrivehive
  • alithrivehive
  • jvindingthrivehive
  • martinez6481
  • miketalley
  • chrisknepper