Provenio

Guides

Connecter votre base Supabase

Si votre produit tourne sur Supabase, votre base connaît deux chiffres qu'aucun outil d'analyse ne voit : combien de comptes sont créés, et combien de fois vos utilisateurs font l'action qui compte pour vous (un projet créé, une réservation, une commande). Provenio peut les lire chaque nuit, pour fermer le funnel sur des chiffres exacts.

La carte Supabase arrive bientôt dans Intégrations : ce guide décrit la connexion telle qu'elle s'ouvrira.

Le principe

Provenio ne demande jamais votre clé service_role, ni un accès à votre compte Supabase : l'une comme l'autre permettent de tout lire et de tout modifier. À la place, vous créez dans votre base un rôle à part, provenio_reader, qui ne voit que deux vues : des totaux par heure, sans aucune ligne d'utilisateur.

Pas à pas

1. Choisir l'action métier (facultatif)

Dans Provenio, Intégrations › Supabase, choisissez la table de votre action métier et sa colonne de date (par exemple public.projects et created_at). Sans action métier, Provenio ne lira que les inscriptions.

2. Exécuter le script

Provenio génère un script SQL propre à votre espace, avec un mot de passe tiré au hasard pour le rôle. Copiez-le, puis, dans Supabase, SQL Editor › New query : collez et exécutez.

Le mot de passe n'est affiché qu'une fois. Vous n'avez pas à le noter : Provenio l'a déjà, chiffré.

Ce que fait le script, ligne par ligne :

ÉtapeEffet
create schema provenioun schéma à part, qui ne contiendra que les deux vues
create role provenio_reader … connection limit 2le rôle de Provenio, avec 2 connexions au plus
default_transaction_read_only = on, statement_timeout = '15s'lecture seule, et aucune requête de plus de 15 secondes
vue provenio.signups_hourlyle nombre de comptes créés par heure, d'après auth.users
vue provenio.actions_hourlyle nombre de lignes de votre table d'action par heure (seulement si vous l'avez choisie)
grant select sur les deux vuesle seul droit de lecture du rôle

Le linter de Supabase signalera les deux vues comme « security definer view ». C'est attendu : c'est ce qui permet au rôle de lire des totaux tirés de auth.users, sans avoir le droit de lire auth.users lui-même.

3. Donner l'adresse du Session pooler

Dans Supabase, Connect, prenez la chaîne du Session pooler (port 5432). Elle a cette forme :

code
postgresql://provenio_reader.<référence du projet>:<mot de passe>@aws-0-<région>.pooler.supabase.com:5432/postgres

L'hôte commence par aws-0- ou aws-1- selon l'âge de votre projet (les récents sont sur aws-1-) : gardez celui que Supabase affiche.

Collez-la dans Provenio, puis Vérifier. Provenio n'en retient que la référence du projet, la région et le préfixe aws-0/aws-1. Aucun n'est secret, et le mot de passe, il l'a déjà.

Provenio n'accepte que les adresses *.pooler.supabase.com, sur le port 5432. Pas la connexion directe (db.<référence>.supabase.co) et pas le Transaction pooler (port 6543).

4. Vérifier

Provenio se connecte en tant que provenio_reader et contrôle, avant de lire quoi que ce soit, que le rôle ne peut rien faire d'autre que lire les deux vues. Si tout va bien, la carte affiche les deux vues et leurs totaux sur 30 jours, et la première collecte a lieu la nuit suivante.

5. Brancher le funnel

Dans Paramètres › Étapes du funnel, les étapes « Compte créé » et « Action métier » proposent désormais Supabase · inscriptions et Supabase · action métier, à côté de vos événements. Une seule source par étape.

Ce que Provenio lit

En lecture seule, chaque nuit :

  • le nombre de comptes créés par heure ;
  • le nombre d'actions métier par heure, si vous l'avez choisie.

Provenio ramène ces heures au jour de votre espace, et rattrape les 7 derniers jours à la connexion. Il relit les 2 derniers jours chaque nuit, pour tenir compte des comptes supprimés.

Ce que Provenio ne lit jamais

  • Aucune ligne d'utilisateur : ni e-mail, ni identifiant, ni nom, ni métadonnée.
  • Aucune autre table, aucune autre vue, aucun autre schéma.
  • Rien en écriture : le rôle est en lecture seule, et Provenio n'exécute que ses deux requêtes fixes.
  • Ni la clé service_role, ni la clé anon, ni l'accès à votre compte Supabase.

« Accès trop large »

À chaque Vérifier et au début de chaque collecte, Provenio contrôle que le rôle ne voit que ses deux vues. Il échoue si provenio_reader :

  • a un pouvoir d'administration (super-utilisateur, contournement des règles RLS, création de rôles ou de bases, réplication) ;
  • est membre d'un autre rôle, dont il hériterait les droits ;
  • peut lire une table ou une vue hors du schéma provenio (par exemple public.profiles) ;
  • peut écrire dans provenio, ou y trouve autre chose que les deux vues.

Dans ce cas, la carte passe en « Accès trop large » et Provenio ne lit rien. C'est souvent le signe d'un grant large donné à tous les rôles, par exemple grant select on all tables in schema public to public. Retirez ce droit, ou relancez le script, puis Vérifier.

Ce que le contrôle ne voit pas : par défaut, Postgres laisse n'importe quel rôle exécuter les fonctions. provenio_reader pourrait donc appeler vos fonctions SQL. Provenio ne le fait jamais, mais si vous voulez fermer cette porte aussi :

sql
revoke execute on all functions in schema public from public;

Vérifiez d'abord que vos rôles anon et authenticated gardent les droits dont votre app a besoin : ils les tiennent souvent de public.

Si la connexion échoue

MessageCauseQue faire
Connexion refuséemot de passe changé, ou rôle suppriméRemplacer l'accès : Provenio génère un nouveau script
Vue introuvableune des deux vues manquerelancez le script
Supabase injoignablebase en pause, ou pannerien : nouvel essai plus tard. Un projet Supabase gratuit se met en pause après une semaine sans activité
Adresse refuséece n'est pas le Session poolerreprenez la chaîne du Session pooler, port 5432

Les chiffres déjà lus restent dans Provenio.

Bon à savoir

  • Deux façons de compter les comptes. Si votre site ou votre app envoie aussi sign_up (événements first-party), les deux chiffres peuvent différer : la base compte aussi les comptes créés sans passer par le site ni l'app (import, invitation, back-office). C'est normal.
  • La base ne sait pas d'où vient l'inscrit. Avec Supabase comme source d'une étape, le funnel montre ce chiffre dans la ligne Total seulement. Les lignes par source affichent « — ».
  • Déconnecter efface l'accès chez Provenio. Pour tout retirer aussi de votre base, exécutez ceci dans le SQL Editor :
sql
drop schema provenio cascade;
drop role provenio_reader;
Revenir à l'accueil