Qu'est-ce que PostHog ?

PostHog est actuellement la plateforme d'analyse produit et d'observabilité IA open source la plus populaire sur GitHub (⭐ plus de 19 000 stars). Contrairement aux outils fermés comme Google Analytics, PostHog combine analyse produit, suivi du comportement utilisateur, expérimentations A/B, feature flags et suivi d'erreurs dans une seule plateforme open source unifiée. Vos données restent entièrement sous votre contrôle.

Pourquoi les développeurs choisissent PostHog ?

Dimension Google Analytics Mixpanel PostHog
Open source / self-hosted ❌ ❌ ✅ MIT License
Propriété des données Appartient à Google Appartient à Mixpanel Vous appartient
Session Replay ❌ ✅ Payant ✅ Intégré
Feature Flags ❌ ❌ ✅ Intégré
Tests A/B ❌ ✅ Payant ✅ Intégré
Observabilité IA ❌ ❌ ✅ Suivi des appels LLM
Quota gratuit Illimité (mais échantillonnage) 1M événements/mois 1M événements/mois
Tarification Version entreprise coûteuse Selon le volume Après quota, au volume

Le positionnement central de PostHog est d'aider les équipes produit et les développeurs à comprendre le comportement des utilisateurs pour piloter les décisions produit. Voici ce qui le différencie :

  • Plateforme All-in-One : un seul outil pour l'analyse produit, l'analyse web, le session replay, les feature flags, les expérimentations, le suivi d'erreurs, les logs et les sondages
  • Observabilité IA : suivi de la latence, du coût et du contenu généré par les appels LLM — un atout différenciant en 2026
  • Intégration MCP : connexion aux outils de codage IA comme Claude Code ou Cursor via le protocole MCP, pour consulter les données directement dans l'éditeur
  • Mode Self-driving : détection automatique des rage clicks, erreurs et requêtes échouées, avec génération de rapports d'analyse et de PR

Différences d'architecture entre PostHog et les autres solutions

┌─────────────────────────────────────────────────┐
│                   PostHog                        │
├──────────┬──────────┬──────────┬────────────────┤
│ Analyse  │ Replay   │ Feature  │ Observabilité  │
│ produit  │ sessions │ Flags    │ IA (LLM)       │
│ (Events) │ (Replay) │ (Flags)  │ (LLM Traces)   │
├──────────┴──────────┴──────────┴────────────────┤
│         Moteur de données ClickHouse unifié       │
├──────────────────────────────────────────────────┤
│        SDK Frontend | SDK Backend | API | MCP    │
└──────────────────────────────────────────────────┘

Déployer PostHog en self-hosted

Option 1 : PostHog Cloud (recommandé)

Le moyen le plus rapide de commencer, sans aucune maintenance :

Le quota gratuit mensuel inclut : 1 million d'événements, 5 000 recordings, 1 million de requêtes Flag, 10 000 exceptions.

Option 2 : Déploiement Docker en une commande (self-hosted)

Si vous voulez un contrôle total sur vos données, PostHog propose un plan Hobby extrêmement simple à déployer.

Prérequis : - Serveur Linux - Au moins 4 Go de RAM - Docker + Docker Compose

Déploiement en une ligne :

BASH
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/posthog/posthog/HEAD/bin/deploy-hobby)"

Une fois le déploiement terminé, accédez à http://localhost:8000 pour voir l'interface d'administration PostHog.

Option 3 : Déploiement manuel avec Docker Compose

Si vous avez besoin d'un contrôle plus fin :

YAML
# docker-compose.yml
version: '3.8'

services:
  posthog:
    image: posthog/posthog:latest
    ports:
      - "8000:8000"
    environment:
      - DATABASE_URL=postgres://posthog:posthog@db:5432/posthog
      - REDIS_URL=redis://redis:6379/
    depends_on:
      - db
      - redis

  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: posthog
    volumes:
      - pgdata:/var/lib/postgresql/data

  redis:
    image: redis:7

volumes:
  pgdata:
BASH
# Lancer les services
docker-compose up -d

# Voir les logs
docker-compose logs -f posthog

⚠️ Note : Pour la version open source en self-hosted, il est recommandé de rester sous 100 000 événements/mois. Au-delà, migrez vers PostHog Cloud.


Prise en main rapide : connecter votre première application

Connexion avec le SDK JavaScript (Frontend)

Installez le SDK :

BASH
npm install posthog-js

Initialisez-le dans votre point d'entrée :

JAVASCRIPT
import posthog from 'posthog-js';

posthog.init('VOTRE_CLE_API_POSTHOG', {
  api_host: 'https://us.posthog.com',  // Pour le self-hosted : http://votre-serveur:8000
  autocapture: true,  // Capture automatique de tous les clics, pages vues, etc.
});

// Envoyer manuellement un événement personnalisé
posthog.capture('user_signed_up', {
  method: 'email',
  plan: 'free',
});

// Définir l'identité de l'utilisateur (à appeler lors de la connexion)
posthog.identify('user-unique-id-123', {
  email: 'developer@example.com',
  name: 'Zhang San',
});

Avec autocapture: true, vous n'avez besoin d'ajouter aucun code de tracking — tous les clics sur les boutons, les liens et les soumissions de formulaire sont enregistrés automatiquement.

Connexion avec le SDK Python (Backend)

Pour les événements côté serveur (paiement réussi, commande créée) :

BASH
pip install posthog
PYTHON
from posthog import Posthog

# Initialisation (stockez la clé API dans une variable d'environnement)
posthog = Posthog(
    project_api_key='VOTRE_CLE_API_PROJET',
    host='https://us.posthog.com'
)

# Capturer un événement
posthog.capture(
    distinct_id='user-unique-id-123',
    event='payment_completed',
    properties={
        'amount': 99.00,
        'currency': 'USD',
        'payment_method': 'stripe',
    }
)

# Définir les attributs utilisateur
posthog.identify(
    distinct_id='user-unique-id-123',
    properties={
        'email': 'developer@example.com',
        'plan': 'pro',
        'company': 'TechCorp',
    }
)

# Fermer le client (à la fermeture de l'application)
posthog.shutdown()

Connexion dans un projet Next.js (Full-stack)

BASH
npm install posthog-js posthog-node
TSX
// components/PostHogProvider.tsx
import { PostHogProvider as PHProvider } from 'posthog-js/react';
import { useEffect, useState } from 'react';
import posthog from 'posthog-js';

export function PostHogProvider({ children }: { children: React.ReactNode }) {
  const [clientReady, setClientReady] = useState(false);

  useEffect(() => {
    posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY!, {
      api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST || 'https://us.posthog.com',
      person_profiles: 'identified_only',
    });
    setClientReady(true);
  }, []);

  if (!clientReady) return null;
  return <PHProvider client={posthog}>{children}</PHProvider>;
}
TSX
// app/layout.tsx
import { PostHogProvider } from '@/components/PostHogProvider';

export default function RootLayout({ children }) {
  return (
    <html lang="fr">
      <body>
        <PostHogProvider>{children}</PostHogProvider>
      </body>
    </html>
  );
}
TSX
// app/page.tsx
'use client';
import { usePostHog } from 'posthog-js/react';

export default function HomePage() {
  const posthog = usePostHog();

  return (
    <button onClick={() => {
      posthog.capture('cta_clicked', {
        cta_text: 'Essai gratuit',
        page: 'homepage',
      });
    }}>
      Commencer l'essai gratuit
    </button>
  );
}

Fonctionnalités clés en pratique

1. Analyse produit : comprendre le comportement des utilisateurs

Une fois les données connectées, PostHog génère automatiquement des graphiques de tendances, des analyses de funnel et des courbes de rétention.

Exemple de funnel : Inscription → Activation → Paiement

SQL
-- PostHog permet des requêtes SQL directes (ClickHouse)
SELECT
    event,
    COUNT(DISTINCT distinct_id) as users
FROM events
WHERE event IN ('user_signed_up', 'feature_activated', 'payment_completed')
  AND timestamp > now() - INTERVAL 30 DAY
GROUP BY event
ORDER BY timestamp

Dans l'interface PostHog : 1. Allez dans Product Analytics → Funnels 2. Ajoutez les étapes : user_signed_up → feature_activated → payment_completed 3. Consultez le taux de conversion à chaque étape

Analyse de rétention : 1. Allez dans Product Analytics → Retention 2. Sélectionnez l'événement initial (ex. user_signed_up) et l'événement de retour (ex. pageview) 3. Consultez les courbes de rétention J1/J7/J30

2. Session Replay : voir les actions réelles des utilisateurs

Le Session Replay vous montre les enregistrements des sessions utilisateurs : mouvements de souris, scroll, clics.

Configuration :

JAVASCRIPT
posthog.init('VOTRE_CLE_API', {
  api_host: 'https://us.posthog.com',
  session_recording: {
    maskAllInputs: false,  // Ne masque pas le contenu des champs (mettre true pour les scénarios sensibles à la vie privée)
    recordCrossOriginIframes: true,
  },
});

Identifier les Rage Clicks (clics de frustration) :

JAVASCRIPT
// Quand un utilisateur clique rapidement sur le même élément plus de 5 fois, un événement rage click est déclenché
posthog.onFeatureFlags(() => {
  posthog.capture('rageclick', {
    element: document.activeElement.tagName,
    page: window.location.pathname,
  });
});

Dans le dashboard PostHog, vous pouvez : 1. Filtrer toutes les sessions contenant un rage click 2. Regarder directement le replay pour identifier le problème d'interface qui frustre les utilisateurs 3. Créer un Issue et l'assigner à l'équipe de développement en un clic

3. Feature Flags : déploiement progressif en toute sécurité

Les Feature Flags vous permettent de contrôler l'activation des fonctionnalités sans déployer de code :

JAVASCRIPT
// Vérifier si une fonctionnalité est accessible à un utilisateur
posthog.onFeatureFlags(() => {
  const newDashboard = posthog.getFeatureFlag('new-dashboard');

  if (newDashboard) {
    // Afficher le nouveau dashboard
    renderNewDashboard();
  } else {
    // Garder l'ancienne version
    renderOldDashboard();
  }
});

Créer un déploiement expérimental :

JAVASCRIPT
// Ciblage selon les attributs utilisateur
posthog.capture('feature_viewed', {
  $feature_flag: 'beta-search',
  $feature_flag_response: true,
});

Dans l'interface PostHog : 1. Allez dans Feature Flags → Create Flag 2. Définissez le nom beta-search 3. Choisissez la stratégie de déploiement : - Déploiement complet (100% des utilisateurs) - Déploiement partiel (ex. 10% des utilisateurs) - Déploiement ciblé (par domaine email, groupe d'utilisateurs) 4. Après sauvegarde, le SDK applique automatiquement les changements, sans redéploiement

4. Tests A/B : décisions pilotées par les données

Les tests A/B vous permettent de valider statistiquement l'impact de vos modifications.

JAVASCRIPT
// Code d'expérimentation
posthog.onFeatureFlags(() => {
  const experiment = posthog.getFeatureFlag('landing-page-test');

  if (experiment === 'variant-a') {
    showVariantA();
  } else if (experiment === 'variant-b') {
    showVariantB();
  }

  // Enregistrer l'exposition à l'expérience
  posthog.capture('experiment_exposure', {
    $feature_flag: 'landing-page-test',
    variant: experiment,
  });
});

Créer une expérience dans PostHog : 1. Allez dans Experiments → Create Experiment 2. Sélectionnez le Feature Flag correspondant 3. Définissez la métrique cible (ex. l'événement payment_completed) 4. Fixez le niveau de significativité (généralement 95%) 5. Lancez l'expérience et attendez un résultat statistiquement significatif

PostHog calcule automatiquement la valeur p, l'intervalle de confiance et la probabilité de victoire.

5. Suivi d'erreurs : capture automatique des exceptions frontend

JAVASCRIPT
import posthog from 'posthog-js';

posthog.init('VOTRE_CLE_API', {
  api_host: 'https://us.posthog.com',
  capture_performance: true,
});

// Capture automatique des erreurs non interceptées
window.addEventListener('error', (event) => {
  posthog.capture('frontend_error', {
    error_message: event.message,
    error_url: event.filename,
    error_line: event.lineno,
    error_col: event.colno,
    stack: event.error?.stack,
  });
});

// Capture des rejets de promesses non gérés
window.addEventListener('unhandledrejection', (event) => {
  posthog.capture('promise_rejection', {
    error_message: event.reason?.message || String(event.reason),
  });
});

Dans la page Error Tracking de PostHog, vous pouvez : - Voir la tendance de fréquence des erreurs - Associer les erreurs aux recordings de session concernés - Configurer des alertes (ex. notification Slack si plus de 100 erreurs en une journée)

6. Observabilité IA : suivre les appels LLM

C'est la fonctionnalité phare de PostHog en 2026, conçue spécialement pour les développeurs d'applications IA.

Suivre les appels OpenAI avec le SDK Python :

BASH
pip install posthog openai
PYTHON
from posthog import Posthog
import openai

posthog = Posthog('VOTRE_CLE_API', host='https://us.posthog.com')

def generate_with_tracking(user_id: str, prompt: str):
    import time
    start = time.time()

    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )

    latency = time.time() - start
    tokens_used = response.usage.total_tokens

    # Suivi de l'appel LLM
    posthog.capture(
        distinct_id=user_id,
        event='llm_call_completed',
        properties={
            'model': 'gpt-4',
            'prompt_length': len(prompt),
            'response_length': len(response.choices[0].message.content),
            'tokens_used': tokens_used,
            'latency_ms': latency * 1000,
            'success': True,
        }
    )

    return response

Suivre avec LangChain :

PYTHON
from langchain.callbacks import PostHogCallbackHandler

handler = PostHogCallbackHandler(
    api_key='VOTRE_CLE_API',
    host='https://us.posthog.com',
    distinct_id='user-123',
)

# Utiliser dans une chain
chain = LLMChain(llm=llm, prompt=prompt, callbacks=[handler])
result = chain.run("Bonjour, peux-tu me présenter PostHog ?")

Dans le dashboard PostHog, vous pouvez voir : - La distribution de latence de chaque appel LLM - La consommation de tokens et les statistiques de coût - Les causes d'erreur des requêtes échouées - Les modèles d'appel groupés par utilisateur


Intégration MCP : consulter les données dans l'éditeur

PostHog prend en charge le protocole MCP. Vous pouvez interroger directement vos données produit depuis Claude Code, Cursor et d'autres outils.

Configuration MCP (Claude Code) :

JSON
// .mcp.json
{
  "mcpServers": {
    "posthog": {
      "command": "npx",
      "args": ["-y", "@posthog/mcp"],
      "env": {
        "POSTHOG_API_KEY": "phc_votre_cle_api",
        "POSTHOG_PERSONAL_API_KEY": "phx_votre_cle_personnelle",
        "POSTHOG_PROJECT_ID": "12345",
        "POSTHOG_API_HOST": "https://us.posthog.com"
      }
    }
  }
}

Une fois configuré, vous pouvez poser des questions directement dans Claude Code :

> Combien d'utilisateurs se sont inscrits ces 7 derniers jours ?
> Montre-moi le funnel de conversion pour la page /dashboard
> Quelle page a eu le plus de rage clicks hier ?

Questions fréquentes

La version gratuite de PostHog est-elle suffisante ?

Pour la plupart des développeurs indépendants et des petites équipes : 1 million d'événements + 5 000 recordings par mois, c'est largement suffisant. Pour un site SaaS classique, 1 million d'événements correspond à environ 50 000 à 100 000 utilisateurs mensuels actifs.

Quelle différence entre Cloud et self-hosted ?

Cloud Self-hosted
Maintenance Aucune Nécessite Docker + gestion de la base de données
Localisation des données Serveurs PostHog Votre propre serveur
Exhaustivité des fonctionnalités Toutes Certaines fonctionnalités entreprise indisponibles
Échelle adaptée Toute taille ≤ 100 000 événements/mois
Prix Quota gratuit + au volume Coût du serveur

PostHog a-t-il un impact important sur les performances ?

Le SDK JavaScript se charge de manière asynchrone et n'affecte pas le rendu de la page. Le SDK backend utilise une file d'attente avec envoi par lots, sans impact sur la logique métier.

PostHog est-il compatible avec la vie privée (RGPD/PIPL) ?

Oui. L'instance PostHog EU est conforme au RGPD. Pour le marché chinois, vous pouvez utiliser maskAllInputs et des règles de filtrage de données personnalisées pour vous conformer au PIPL.


Résumé

PostHog est la plateforme d'analyse produit open source la plus complète actuellement. Un seul outil remplace la combinaison Google Analytics + Hotjar + LaunchDarkly + Optimizely + Sentry. Pour les développeurs et les équipes produit, le contrôle total des données et l'expérience tout-en-un constituent la plus grande valeur ajoutée.

Ressources clés : - Site officiel PostHog - Repository GitHub ⭐ 19 000+ - Centre de documentation - Guide de déploiement - Manuel de l'entreprise (open source)

Si cet article vous a été utile, n'hésitez pas à le partager avec d'autres développeurs !