Node.js
Starting from 2.3.0
, @jitsu/sdk-js
is an isomorphic package. It means the package
can work both on frontend (in browser) and on backend (Node.js).
Getting Started#
To add the package to your project, please follow installation instructions.
- For yarn:
yarn add @jitsu/sdk-js
- For npm:
npm install --save @jitsu/sdk-js
API#
Package API for Node.js is very similar to the one for browser (please, read this page first). However, there are some differences. This page highlights the difference
Gathering page information#
On frontend, the easiest way to send data to Jitsu is calling jitsu.track('<event_name>')
. The call will
collect all necessary data points information about page: url, user agent etc.
Currently, it works for express Express:
app.get('<url>', async (req, res) => {
await jitsu.track('page_view', {env: envs.express(req, res)});
})
And for NextJS getServerSideProps()
,
API Middleware, but not for Page Middleware
(page middleware using different Request/Response API; support is coming soon, so far please set all parameters manually)
export async function getServerSideProps(context) {
return jitsu.track("server_page", { env: envs.nextjsApi(context.req, context.res) })
}
or
async function apiMiddleware(req, res) {
await jitsu.track('api_call', {env: envs.nextjsApi(req, res)})
}
export default apiMiddleware
envs.express(req, res)
or envs.nextjsApi(req, res)
tells Jitsu to use Express (or NextJs) request and response objects:
- Following standard fields will be inferred from request and response:
doc_host
,doc_path
,doc_search
,url
,user_agent
,utm
,click_id
,source_ip
- Following fields won't be available due to its frontend-only nature:
vp_size
,page_title
,screen_resolution
.
However, it's possible to set non-detected fields (and overwrite others):
await jitsu.track('api_call', {
env: envs.nextjsApi(req, res),
page_title: 'Page Title',
doc_host: 'overwrite_host'
})
Also, jitsu.track()
will set user.anonymous_id based on cookies. The cookie handler respects cookie_name
,
cookie_domain
and cookie_policy
settings
Custom parameters#
If envs.express(req, res)
or envs.nextjsApi(req, res)
can't be used by any reason, you can set all parameters manually.
Jitsu is not opinionated about data schema, so you can use any names. However, to be compatible with data collected on
frontend, following parameters are recommended to be set:
await jitsu.track('api_call', {
doc_encoding: '',
doc_host: '',
doc_path: '',
doc_search: '',
page_title: '',
referer: '',
url: '',
user_agent: '',
user_language: ''
})
Identifying users#
jitsu.id({email, id}, true)
should be called if the identity of the user is known. Please note the last parameter (doNotSendEvent
).
It's recommended to set it to true
, otherwise a separate identify event will be sent which is usually not required for server-side tracking