https://github.com/wonism/redux-segment-node
Redux middleware for segment on several platforms(`react` and `react-native`)
https://github.com/wonism/redux-segment-node
redux redux-middleware redux-segment-node segment
Last synced: 6 months ago
JSON representation
Redux middleware for segment on several platforms(`react` and `react-native`)
- Host: GitHub
- URL: https://github.com/wonism/redux-segment-node
- Owner: wonism
- License: mit
- Created: 2018-05-16T09:33:05.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-11-23T16:12:36.000Z (over 6 years ago)
- Last Synced: 2024-11-01T14:18:33.473Z (6 months ago)
- Topics: redux, redux-middleware, redux-segment-node, segment
- Language: JavaScript
- Homepage:
- Size: 278 KB
- Stars: 10
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Redux Segment Node
> Redux middleware for [segment](https://segment.com/). This library was
> created with reference to
> [analytics-react-native](https://github.com/neiker/analytics-react-native).[](https://badge.fury.io/js/redux-segment-node)
[](https://travis-ci.org/wonism/redux-segment-node)## Installation
```
$ npm i -S redux-segment-node
```## Demo
```
# replace the `key` with your `Segment API key` in `config.json`
$ npm run dev
# and visit localhost:7777
```## Usage
```js
// import { applyMiddleware, createStore } from 'redux';
import createSegmentTracker from 'redux-segment-node';const segmentMiddleware = createSegmentTracker({
key: 'API_KEY',
flushAfter: 1000,
});const middleware = applyMiddleware(segmentMiddleware);
// const store = createStore(/* ... */);
// identify (recommended: pass `userId` in `eventPayload`)
store.dispatch({
type: 'SIGN_IN',
analytics: {
eventType: 'identify',
eventPayload: {
userId: 'UUID',
},
},
});// track (required: pass `event` in `eventPayload`)
// If you pass the `signout` or `logout` as an `event` in `track` type,
// The `userId` will be removed.
store.dispatch({
type: 'CLICK_CTA_BUTTON',
analytics: {
eventType: 'track',
eventPayload: {
event: 'Click CTA Button',
},
},
});// page (recommended: pass `name` in `eventPayload`)
// screen (similar with `page`)
store.dispatch({
type: 'VIEW_PAGE',
analytics: {
eventType: 'page', // or 'screen'
eventPayload: {
name: 'LANDING_PAGE',
},
},
});// group (required: pass `groupId` in `eventPayload`)
store.dispatch({
type: 'GROUP',
analytics: {
eventType: 'group',
eventPayload: {
groupId: 'UUID',
},
},
});// alias (required: pass `userId` in `eventPayload`)
store.dispatch({
type: 'ALIAS_USER',
analytics: {
eventType: 'alias',
eventPayload: {
userId: 'NEW_UUID',
},
},
});
```## Configuration
> createSegmentTracker arguments| property | type | remark |
|:-----------|:-----------------|:-------|
| key | string(required) | |
| platform | string(optional) | one of [`android`, `ios`] or `undefined` |
| host | string(optional) | Host where reports will be sent. Useful for debug. |
| flushAt | number(optional) | The number of messages to enqueue before flushing. |
| flushAfter | number(optional) | The number of milliseconds to wait before flushing the queue automatically. |## Event Types (Segment API Specification)
- [`identify`](https://segment.com/docs/spec/identify/): Can tie an user to their action and record traits about them.
- [`track`](https://segment.com/docs/spec/track/): Can track any actions that users perform.
- [`page`](https://segment.com/docs/spec/page/): Can record the page that users are stay in.
- [`screen`](https://segment.com/docs/spec/screen/): Can record the screen that users are stay in. (for the mobile application)
- [`group`](https://segment.com/docs/spec/group/): Can associate the individual users with a group.
- [`alias`](https://segment.com/docs/spec/alias/): Can merge two user identities.## Documentation for Segment
https://segment.com/libraries/node