FirstMRRCentre d'aide
Développeurs

Référence du script JavaScript

Chaque appel de window.firstmrr : mesurer, déclarer une conversion, lire la provenance, tester une variante.

2 min de lecture

Installation

Ajoute cette ligne une fois, dans le <head> de toutes les pages, avec ta clé publique :

html
<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)

javascript
// 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")
ChampTypeRequisDescription
amountnumberOptionnelpayment : le montant en unités (19.99), moins de 100 000.
currencystringOptionnelpayment : code ISO à 3 lettres ; EUR par défaut.
idstringOptionnelIdentifiant 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.
answerstringOptionnelsource : parmi tiktok, instagram, youtube, x, threads, facebook, linkedin, snapchat, pinterest, google, app_store, friend, press, other ; toute autre valeur devient other.
accountstringOptionnelsource : 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.

javascript
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.

javascript
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.

javascript
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.