Provenance des paiements
Les clés à écrire sur chaque paiement pour relier un client payant à sa plateforme, son lien ou sa vidéo, outil par outil.
Le principe
À l'inscription, enregistre firstmrr.source() sur l'utilisateur. Quand tu crées son paiement, recopie-la dans les métadonnées avec les clés ci-dessous. Chaque nuit, FirstMRR lit ces clés par ta connexion en lecture seule à ton outil de paiement, et rien d'autre : toute autre clé est ignorée.
| Champ | Type | Requis | Description |
|---|---|---|---|
fm_platform | string | Optionnel | La plateforme : source().platform (tiktok, instagram…). |
fm_method | string | Optionnel | Comment elle a été repérée : source().method (link, utm, in_app, referrer). |
fm_ref | string | Optionnel | Le lien suivi (slug /go) ou l'hôte référent : source().ref. Dans une app, la valeur du paramètre fm du lien d'ouverture. |
fm_answer | string | Optionnel | Apps : la réponse à « Où nous as-tu connus ? », parmi tiktok, instagram, youtube, x, threads, facebook, linkedin, snapchat, pinterest, google, app_store, friend, press, other. |
fm_account | string | Optionnel | Apps : le compte cité, seulement si la personne l'a donné. |
fm_variant | string | Optionnel | Les variantes A/B : "test:variante", plusieurs séparées par une virgule, 4 au plus. |
fm_at | string | Optionnel | L'heure d'arrivée, source().at : pour tes propres relevés, FirstMRR date le client par son paiement. |
// acquisition_source: what firstmrr.source() returned at signup, saved on the user
const origin = user.acquisition_source ?? {};
const fm = Object.fromEntries(
Object.entries({
fm_platform: origin.platform,
fm_method: origin.method,
fm_ref: origin.ref,
fm_at: origin.at,
fm_variant: user.ab_variants, // "pricing_page:b" (optional)
}).filter(([, value]) => value != null), // never send a null value
);Où les écrire, outil par outil
await stripe.checkout.sessions.create({
mode: "subscription",
line_items: [{ price: "price_123", quantity: 1 }],
metadata: fm, // one-off payments
subscription_data: { metadata: fm }, // subscriptions
success_url: "https://example.com/success",
});- Stripe :
metadatade la session Checkout etsubscription_data.metadatapour un abonnement. FirstMRR lit l'abonnement, la session, puis le premier paiement. - Paddle :
custom_data(customData dans Paddle.js), sur la transaction et l'abonnement. - Polar :
metadatadu checkout, recopiée sur la commande ; celle de l'abonnement ou du client est lue aussi. - Whop :
metadatade la configuration de checkout, héritée par les paiements et les abonnements. - Superwall : attributs utilisateur (
setUserAttributes), mêmes clés. - RevenueCat : attributs (
setAttributes), mêmes clés. La clé en lecture seule de RevenueCat ne donne que des totaux : FirstMRR ne lit pas encore ces attributs, écris-les quand même pour la suite.