Identify your users, track their cost, conversations and more.

The strict minimum to enable user tracking is to report a userId, however you can report any property you’d like such as an email or name using an userProps object.

Tracking users with the backend SDK

Identify OpenAI calls

The easiest way to get started tracking users is to send user data with your OpenAI API call.

const res = await openai.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: "Hello" }],
  user: "user123",
  userProps: { name: "John" },
})

If you’re using LangChain, you can similarly pass user data as metadata.

const chat = new ChatOpenAI({
  callbacks: [new LunaryHandler()],
});

const res = await chat.call([new HumanMessage("Hello!")], {
metadata: {
userId: "123",
userProps: { name: "John" },
},
});

Advanced: Inject user into context

When tracking traces, you can inject user data into the context using the identify methods. This will cascade down to all the child runs.

async function TranslatorAgent(input) {
  // Some AI queries
  // Everything done in this context will be tracked with the user
}

// Wrap the agent with the monitor
const translate = lunary.wrapAgent(TranslatorAgent)

// Using identify to inject the user into the context
const res = await translate(`Hello, what's your name?`)
.identify("user123", { email: "email@example.org" })

Identifying users on the frontend

If you are tracking chat messages or feedback on the frontend, you can use the identify method to identify the user there.

lunary.identify("user123", {
  email: "test@example.org",
});

Identifying Threads

If you are using threads to track conversations, you can pass userId and userProps to the openThread method.

const thread = await lunary.openThread({
  userId: "user123",
  userProps: { name: "John" },
});

User Properties

While you can track any property you’d like, we recommend using the following ones:

PropertyDescription
nameName of the user
emailEmail of the user
avatarURL to an avatar
groupGroup or company ID the user belongs to