SDK Node

Pacchetto zero-dependency per Node 18+. Permette assignment e tracking server-side, utile per SSR, edge functions, webhook handlers.

Installazione

bash
npm install @lvbl/sdk-node
# oppure
pnpm add @lvbl/sdk-node
bun add @lvbl/sdk-node

Inizializzazione

ts
import { LvblClient } from "@lvbl/sdk-node";

const lvbl = new LvblClient({
  projectId: "YOUR_PROJECT_ID",
  baseUrl: "https://project--YOUR_PROJECT.lovable.app",
});

Assignment

ts
// Assegna o recupera la variante per un utente
const assignment = await lvbl.assign({
  experimentId: "EXPERIMENT_ID",
  userId: "user-123",
});

if (assignment.variant === "treatment") {
  // ...
}

Tracking conversioni

ts
// Traccia una conversione
await lvbl.track({
  experimentId: "EXPERIMENT_ID",
  userId: "user-123",
  event: "purchase",
  value: 49.00,
  currency: "EUR",
});

Esempio Express

ts
import express from "express";
import { LvblClient } from "@lvbl/sdk-node";

const app = express();
const lvbl = new LvblClient({ projectId: process.env.LVBL_PROJECT_ID! });

app.get("/pricing", async (req, res) => {
  const userId = req.cookies.uid || crypto.randomUUID();
  const { variant } = await lvbl.assign({
    experimentId: "pricing-test",
    userId,
  });
  res.cookie("uid", userId, { httpOnly: true });
  res.render(variant === "B" ? "pricing-b" : "pricing-a");
});

API

  • client.assign({ experimentId, userId }) โ€” ritorna { variant, payload }
  • client.getVariant(id, userId) โ€” solo il nome della variante
  • client.track({ experimentId, userId, event, value?, currency? })