Aller au contenu

Le modèle économique

Kaiho est gratuit à l’installation et propose un abonnement premium qui débloque l’essentiel du contenu. La logique : laisser goûter gratuitement, puis débloquer le reste.

Un seul niveau payant, géré par un droit d’accès (« entitlement ») unique appelé premium. Y être abonné débloque, d’un coup :

  • les clés 1 à 7 + la clé secrète du programme,
  • tous les déclencheurs et activités d’aide à l’envie,
  • les 50 moments d’accompagnement,
  • toutes les vidéos de rechute,
  • les deux livres.

Le détail gratuit vs premium est dans la table d’accès du produit.

  • Deux formules : mensuelle (~9,99 €) et annuelle (~49,99 €) — tarifs de référence zone euro.
  • Les prix et identifiants de produits sont gérés dans RevenueCat (et les stores Apple / Google) — rien n’est codé en dur dans l’app. RevenueCat est la source de vérité du revenu (les prix varient selon les territoires).
  • Pas d’essai gratuit : l’abonnement est payant dès le départ (choix de Vincent, pas d’intro offer). Confirmé côté données : aucun event d’essai n’existe.
  • Le bouton « Restaurer mes achats » est disponible (profil) pour retrouver son abonnement sur un nouvel appareil.

Un achat est facturé par le store au compte Apple / Google, alors que l’entitlement premium est attaché au compte Kaiho (l’app user ID RevenueCat). Quand les deux se désalignent — réinscription avec une autre adresse, réinstallation, compte supprimé puis recréé — l’utilisateur paie sans être premium.

Trois garde-fous existent :

  • Resynchronisation automatique. À la fin de chaque création de compte, l’app demande au store de renvoyer ses achats ; le comportement RevenueCat du projet (« Transfer to new App User ID ») rattache alors l’abonnement au nouveau compte. Si cet appel échoue (réseau coupé, store en erreur), il n’est plus perdu : il reste en attente et chaque démarrage réessaie, trois fois au maximum.
  • Restauration manuelle, via le bouton du profil, qui produit le même transfert.
  • Identification vérifiée avant chaque paywall (publié en 1.12.0). Pour rattacher un achat au bon compte, l’app doit d’abord présenter la personne à RevenueCat. Jusqu’ici, si cette présentation échouait à la connexion (réseau), l’app ne réessayait qu’au démarrage suivant, et un achat fait entre-temps partait sous un identifiant anonyme. Désormais elle revérifie juste avant d’ouvrir le paywall (3 secondes au plus : la vente n’est jamais bloquée) et à chaque retour dans l’app.

Chaque tentative est mesurée par l’event purchase_sync_result — voir Événements. Il faut que le store de l’appareil soit connecté au compte qui a payé : un achat fait depuis un autre compte Apple / Google ne peut être retrouvé sur aucun appareil.

Jusqu’au 10 août 2026, seule l’app savait qui était abonné. La base de données, elle, ne le savait pas — et comme les livres complets sont des fichiers qu’on télécharge, n’importe quel compte gratuit pouvait les demander directement et les obtenir. Depuis, la base garde une copie du droit d’accès (une ligne par compte, user_entitlements) et le téléchargement d’un livre complet la consulte : l’extrait reste ouvert à tous, le livre entier est réservé aux abonnés.

RevenueCat reste la source de vérité. Cette copie est tenue à jour par les notifications que RevenueCat envoie à chaque achat, renouvellement ou expiration.

Conséquence à connaître : si la copie se désynchronise, un abonné reste premium dans l’app (elle interroge RevenueCat directement) mais le livre complet refuse de se télécharger. Le symptôme est une erreur de chargement, jamais un message d’abonnement — c’est le seul endroit où les deux peuvent diverger.

Les trois causes ci-dessus sont corrigées, mais rien ne garantit qu’il n’y en aura pas une quatrième. Plutôt que de parier là-dessus, trois filets rattrapent une copie désynchronisée quelle qu’en soit la cause :

  • Réparation à l’ouverture du livre (publié en 1.12.0). Quand un livre complet refuse de se télécharger, l’app demande au serveur de revérifier la personne auprès de RevenueCat. Si RevenueCat confirme l’abonnement, le serveur corrige la copie et l’app relance le téléchargement : le livre s’ouvre après un court délai, sans message ni action de la personne. Si RevenueCat ne confirme pas, rien ne change et l’erreur habituelle s’affiche.
  • Vérification continue. Le serveur revérifie aussi chaque compte auprès de RevenueCat, en tâche de fond (un tour complet tous les quelques jours). C’est ce qui rattrape un abonné qui n’a pas encore ouvert de livre.
  • Alarme. Le cockpit passe à l’orange si cette vérification continue s’arrête plus de 3 heures, ou si elle tourne sans que RevenueCat réponde. Et chaque abonné rattrapé par l’un des deux premiers filets déclenche un message Slack avec son identifiant : maintenant que les causes connues sont corrigées, chaque message signale une désynchronisation à comprendre, et c’est comme ça que la prochaine cause inconnue apparaîtra.

Les deux premiers filets ne peuvent qu’accorder un accès oublié, jamais en retirer : c’est RevenueCat qui signale les fins d’abonnement. Le 3 septembre 2026, une première version de la vérification continue qui avait aussi le droit de retirer a coupé par erreur l’accès de ~300 abonnés pendant deux jours.

Depuis le 2 juillet 2026, les prix sont réduits de −70 % dans 41 pays d’Afrique, sur les quatre produits (standard et comeback) :

Produit Référence zone euro Afrique (−70 %)
Annuel 49,99 € 14,99
Mensuel 9,99 € 2,99
Comeback annuel 34,99 € 10,49
Comeback mensuel 6,99 € 2,09

Pourquoi. L’Afrique est le 2ᵉ continent en installs (~10 %), quasi 100 % francophone. Les utilisateurs y atteignent le paywall autant qu’en Europe (82 % vs 78 %) mais convertissent ~3,7× moins (2,9 % vs 10,6 % au paywall) : exposition égale + conversion effondrée = signal de prix, pas de produit. La baisse teste si le prix est le vrai blocage.

Ce qu’il faut savoir.

  • iOS : appliqué territoire par territoire dans App Store Connect (les mêmes points de prix Apple, équilibrés en devise locale). Effet 2 juillet 2026.
  • Android : appliqué dans Play Console (prix régionaux par pays), avec en plus la Réunion, Mayotte, le Togo et la Guinée — impossibles sur iOS (Réunion/Mayotte = boutique France, Togo/Guinée = pas de vente Apple).
  • Limite : l’achat App Store exige une carte bancaire, alors que le mobile money (Orange Money, Wave, MTN) domine en Afrique francophone et n’est pas pris par Apple. Aucune baisse ne débloque ceux qui n’ont pas de carte — ça plafonne l’effet attendu.
  • Mesure : par cohorte avant/après (pas d’A/B au niveau store). Baseline à battre = 2,9 % de conversion au paywall.
  • Le statut premium est réactif : dès que l’abonnement change (achat, expiration), l’app se met à jour sans redémarrage.
  • Il est mis en cache localement pour un démarrage instantané, puis revérifié auprès de RevenueCat en arrière-plan.
  • Le paywall est le template géré dans RevenueCat : on peut changer son visuel sans publier une mise à jour de l’app. Voir Le paywall.