Ir al contenido

SDKs de servidor: quickstart

Todo lo de abajo usa tu write key secreta (configuración del proyecto → API keys). Guárdala en una variable de entorno; jamás debe llegar a un browser.

Terminal window
composer require kilden/kilden-php
$kilden = new Kilden\Client(getenv('KILDEN_SECRET_KEY'));
$kilden->track('user_42', 'order_completed', [
'revenue' => 99.9,
'currency' => 'CLP',
]);

Los eventos se encolan en memoria y se envían en batches. Llama a close() cuando tu proceso se apaga (en PHP lo cubren Laravel, FPM y los shutdown hooks; en Go usa defer client.Close()); lo que siga encolado pasado un deadline de 10 segundos se descarta en lugar de colgar tu proceso.

identify hace upsert de los traits de la persona. El distinct_id es explícito en cada llamada — los SDKs de servidor no guardan estado de identidad.

$kilden->identify('user_42', ['plan' => 'pro', 'email' => '[email protected]']);

La verificación de identidad necesita que tu backend firme un JWT de vida corta para el usuario logueado. IdentitySigner lo hace sin librería de JWT — y tu endpoint son tres líneas. Firma únicamente un id que tu backend haya autenticado: firmar un user id tomado del input del request permite que cualquiera se haga pasar por cualquiera, y encima con sello de “verificado”.

$signer = new Kilden\IdentitySigner(getenv('KILDEN_IDENTITY_SECRET'), ['kid' => 'k1']);
$token = $signer->sign($user->id, [
'traits' => ['plan' => $user->plan],
]);

¿Usas Laravel? kilden/laravel trae una ruta POST /kilden/identity publicable detrás de tu middleware de auth, y @kildenScript en tu layout de Blade renderiza el SDK web ya conectado a ella — sin escribir código de integración:

routes/web.php
Kilden\Laravel\KildenRoutes::identity();
{{-- resources/views/layouts/app.blade.php --}}
<head>
@kildenScript
</head>

La directiva lee KILDEN_PUBLIC_WRITE_KEY (la key pública wk_ — la secreta jamás llega a una vista) y resuelve la ruta de identidad por nombre (kilden.identity), así que un path custom como KildenRoutes::identity('/api/kilden-token') se toma automáticamente. También llama kilden.identify() para el usuario logueado.

El plugin de WordPress expone lo mismo en /wp-json/kilden/v1/identity, cache-safe por construcción.

isEnabled(flag_key, distinct_id, { person_properties?, default? })
getFeatureFlag(flag_key, distinct_id, { person_properties?, default? })

Los evalúa Kilden server-side, con cache in-process de 30 segundos por distinct_id, un intento con timeout duro y después tu default. La semántica completa está en la guía de feature flags.