Un produit 101 Studios

Les liens courtsde vos campagnes.

Pulse ajoute à vos applications des liens courts rangés par campagne et par volet, une variante par canal, et ce que chacun rapporte. Un clic ne nomme personne, et les données restent sur vos serveurs.

Démo interactive

Tout tourne dans votre navigateur : rien n'est envoyé, rien n'est gardé après votre visite.

  • Une variante par canal

    Radio, réseaux, QR code : une URL chacun, une seule destination, les clics de chaque canal.

  • Des URL qui tiennent

    Un code ne passe jamais à un autre lien. Un lien déjà cliqué s'éteint, il ne se supprime pas.

  • Des chiffres honnêtes

    Des clics, jamais des « visiteurs » ; les robots à part ; la période et son fuseau toujours écrits.

  • Trois langues

    Français, anglais et allemand.

01Rangés par campagne

Une campagne pour un client, un projet ou un événement ; des volets pour ses étapes ; dans chaque volet, les liens et leurs variantes. Les résultats se lisent à chaque niveau, et leur somme fait le total.

  • Un lien en un geste

    Collez une adresse, appuyez sur Entrée : l'URL courte est là, prête à copier.

  • Les clics restent où ils ont eu lieu

    Déplacer un lien vers un autre volet ne réécrit pas les résultats passés.

  • Un historique en phrases

    Qui a changé quoi et quand, sans compter les clics.

  • Le suivi peut tomber

    Si l'écriture des clics échoue, les liens répondent toujours ; les clics perdus sont signalés.

02Vos données restent chez vous

Pulse s'installe dans votre application, sur votre base de données. Rien ne passe par 101 Studios, et vous pouvez dire à tout moment où vont les données et qui les voit.

  • Sur vos serveurs

    Les tables de Pulse vivent dans votre base Postgres, à côté des vôtres.

  • Un clic ne nomme personne

    Ni adresse IP, ni navigateur, ni provenance, ni cookie : la date, le lien, la variante, et s'il s'agit d'un robot connu.

  • 25 mois, puis effacés

    Les clics sont gardés 25 mois par défaut, puis supprimés par la maintenance de nuit.

  • Vos règles d'accès

    Qui voit quoi suit les droits de votre application : lecture, écriture, gestion. Le reste n'existe pas pour lui.

  • Un rapport de partage

    Pour chaque espace : chaque URL qui répond, où elle mène, qui l'a créée, qui y a accès.

  • Export et effacement

    Les données d'une personne s'exportent, et s'effacent à sa demande ; un espace se purge en une opération.

03Intégré à votre application

Un serveur et son adaptateur AdonisJS, un client, des composants React. Les couleurs suivent vos variables CSS, et la documentation couvre chaque étape.

Côté serveur
// config/pulse.ts
export default defineConfig({
  user: (ctx) => ({ id: String(ctx.auth.user.id), name: ctx.auth.user.fullName }),
  access: (person, owner) => accessTo(person.id, owner),
  publicBase: "https://go.example.com/",
  timeZone: "Europe/Luxembourg",
})

// start/routes.ts
router.group(() => pulseRoutes()).prefix("/pulse").use(middleware.auth())
router.group(() => pulsePublicRoutes()).domain("go.example.com").use(middleware.throttle())
Côté interface
const service = createHttpService({
  baseUrl: "/pulse",
  headers: () => ({ "X-XSRF-TOKEN": xsrfToken() }),
})

<PulseProvider service={service} user={me} lang="fr">
  <QuickLink owner="resource:42" onOpen={(link) => navigate(link.id)} />
  <CampaignView id={campaignId} onOpenLink={(link) => navigate(link.id)} />
</PulseProvider>