Référence du script JavaScript
Chaque appel de window.firstmrr : mesurer, déclarer une conversion, lire la provenance, tester une variante.
Installation
Ajoute cette ligne une fois, dans le <head> de toutes les pages, avec ta clé publique :
<script async src="https://firstmrr.app/app/t.js" data-key="pk_0123456789abcdef01234567"></script>Le script envoie un pageview au chargement et à chaque navigation côté client (pushState, replaceState, retour arrière). Garde toujours ?. devant les appels : rien ne casse si le script ne se charge pas ou est bloqué.
track(event, options)
// Account created
window.firstmrr?.track("signup")
// First time the user does the main action of your product
window.firstmrr?.track("activation")
// Free trial started
window.firstmrr?.track("trial")
// Payment confirmed: amount in major units, the order or subscription id counts it once
window.firstmrr?.track("payment", { amount: 19.99, currency: "EUR", id: "in_1PqXyZ" })
// Subscription cancelled
window.firstmrr?.track("cancel", { id: "sub_1PqXyZ" })
// Answer to "Where did you hear about us?"
window.firstmrr?.track("source", { answer: "tiktok", account: "@oscar.wft" })
// Any other step: lower-case letters, digits and _
window.firstmrr?.track("invite_sent")| Champ | Type | Requis | Description |
|---|---|---|---|
amount | number | Optionnel | payment : le montant en unités (19.99), moins de 100 000. |
currency | string | Optionnel | payment : code ISO à 3 lettres ; EUR par défaut. |
id | string | Optionnel | Identifiant de la commande, de l'abonnement ou de l'utilisateur : une conversion avec un id n'est comptée qu'une fois, pour toujours. Sans id, elle est comptée une fois par onglet et par page. |
answer | string | Optionnel | source : parmi tiktok, instagram, youtube, x, threads, facebook, linkedin, snapchat, pinterest, google, app_store, friend, press, other ; toute autre valeur devient other. |
account | string | Optionnel | source : le compte cité par la personne, 60 caractères au plus. |
source()
Renvoie la première provenance de l'onglet, ou null : { method, at, platform?, ref? }, avec method parmi link, utm, in_app, referrer. Seules les clés qui ont une valeur sont présentes. Enregistre-la sur l'utilisateur à l'inscription, puis recopie-la sur son paiement.
const origin = window.firstmrr?.source()
// { method: "link", ref: "tiktok-oscar-3f9a", at: "2026-10-12T14:00:00Z" }visitorId()
Renvoie l'identifiant aléatoire de l'onglet (gardé dans sessionStorage, effacé à la fermeture de l'onglet), ou null si la personne a refusé la mesure. Envoie-le à ton serveur avec l'inscription ou le paiement, puis passe-le en visitor_id à l'API serveur : l'événement serveur rejoint ce visiteur.
await fetch("/api/checkout", {
method: "POST",
body: JSON.stringify({ plan: "pro", fm_visitor: window.firstmrr?.visitorId() ?? null }),
})variant(test, variant)
Déclare la variante A/B montrée au visiteur, avant de l'afficher. La première fois pour cet onglet, le script envoie l'événement ab:exposure ; ensuite, chaque événement porte les affectations (4 tests au plus). Voir Tests A/B.
window.firstmrr?.variant("pricing_page", "b")optOut() / optIn()
optOut() arrête la mesure dans ce navigateur (gardé dans localStorage) et efface la provenance, les variantes et l'identifiant de l'onglet ; optIn() la rétablit. Le script respecte aussi Global Privacy Control et Do Not Track. Mets un lien qui appelle optOut() dans ta politique de confidentialité.
Pas d'identify, par choix
Il n'y a pas d'appel identify et aucun champ pour un e-mail, un nom ou un identifiant de compte : FirstMRR mesure des visites et des conversions, pas des personnes. Un visiteur est une empreinte qui change chaque jour. Pour relier un paiement à une vidéo, c'est la provenance écrite sur le paiement qui sert, pas l'identité du client.