identify(options: IdentifyOptions): Identify user traits.
setUserId(userId: string | null): Set the user id for the current user. If the user is not logged in, pass null.
clearUserId(): Clear the user id for the current user.
setDebug(flag: boolean = true): Set debug mode for logging.
Usage:
"use client";import { useLogSnag } from'@logsnag/next';exportfunctionComponent() {// Get the hooksconst { setUserId,track,identify } =useLogSnag();// Set the user id when user logs insetUserId('user-123');// Track an eventtrack({ channel:"payments", event:"New Subscription", user_id:"user-123",// optional when set using setUserId icon:"💰", notify:true, tags: { plan:"premium", cycle:"monthly", trial:false } });// Identify user traits (e.g., name, email, plan, etc.)identify({ user_id:"user-123",// optional when set using setUserId properties: { name:"John Doe", email:"john@doe.com", plan:"premium", } });// Rest of your component}
These hooks have the same usage as their counterparts in the @logsnag/react package.
Tracking Events
You can also track events directly from HTML elements using data attributes:
<buttondata-event="Upgraded Plan"data-user-id="user-123"// optional (optional when set using setUserId)data-channel="billing"// optional (defaults to "events")data-icon=":moneybag:"// optionaldata-tag-plan="Pro"// optionaldata-tag-period="Monthly"// optionaldata-tag-price="9.99"// optional> Upgrade to Pro</button>
In this example, when the button is clicked, an event named "Upgraded Plan" will be tracked with the specified tags.
Server-side Usage with Next
For server-side usage, you can use LogSnag from @logsnag/next/server It behaves similarly to @logsnag/node
Use a different token for server-side usage and set its scope to private in the LogSnag dashboard.
import { LogSnag } from'@logsnag/next/server';// Initialize LogSnagServerconstlogsnag=newLogSnag({ token:'<TOKEN>', project:'<PROJECT_NAME>',});// Use it in your server-side code// Track an eventawaitlogsnag.track({ channel:"payments", event:"New Subscription", user_id:"user-123", icon:"💰", notify:true, tags: { plan:"premium", cycle:"monthly", trial:false }});// Identify a userawaitlogsnag.identify({ user_id:"user-123", properties: { name:"John Doe", email:"john@doe.com", plan:"premium", }});// Track an insightawaitlogsnag.insight.track({ title:"User Count", value:"100", icon:"👨",});// Increment an insight valueawaitlogsnag.insight.increment({ title:"User Count", value:1, icon:"👨",});