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 :
| Étape | Effet |
|---|---|
create schema provenio | un schéma à part, qui ne contiendra que les deux vues |
create role provenio_reader … connection limit 2 | le 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_hourly | le nombre de comptes créés par heure, d'après auth.users |
vue provenio.actions_hourly | le nombre de lignes de votre table d'action par heure (seulement si vous l'avez choisie) |
grant select sur les deux vues | le 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 :
postgresql://provenio_reader.<référence du projet>:<mot de passe>@aws-0-<région>.pooler.supabase.com:5432/postgresL'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 exemplepublic.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 :
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
| Message | Cause | Que faire |
|---|---|---|
| Connexion refusée | mot de passe changé, ou rôle supprimé | Remplacer l'accès : Provenio génère un nouveau script |
| Vue introuvable | une des deux vues manque | relancez le script |
| Supabase injoignable | base en pause, ou panne | rien : nouvel essai plus tard. Un projet Supabase gratuit se met en pause après une semaine sans activité |
| Adresse refusée | ce n'est pas le Session pooler | reprenez 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 :
drop schema provenio cascade;
drop role provenio_reader;