Cette page t'a-t-elle aidé ?
Cette page t'a-t-elle aidé ?
Guide
Forwarde un mail à Gilbert avec ton intent en une ligne, il te renvoie un brouillon prêt à envoyer.
Dernière mise à jour : 1er septembre 2026
Cette page s'adresse à l'équipe IT qui déploie Gilbert pour des collègues opérationnels (commerciaux, gestionnaires, support client). L'utilisateur final n'a presque rien à apprendre. Toi, tu configures une fois la forward address au niveau du workspace, tu autorises les membres à l'utiliser, et chaque membre forwarde depuis sa boîte habituelle.
Si tu cherches plutôt à embarquer Gilbert comme un chatbot dans ton produit, lis Embed iframe. Pour des tâches LLM planifiées par cron (briefing matinal, code review hebdo), lis Routines.
C'est le point à comprendre avant de configurer quoi que ce soit. Le forward email est multi-tenant par design :
solve-ai--acme-direction@solveholding.com), la signature template, le mode de sortie (réponse directe ou brouillon Gmail), le rate cap, et la clé LLM (BYOLLM).Conséquence concrète : une même adresse de forward peut servir 5 membres d'une même équipe. Marie forwarde, Gilbert répond avec le style de Marie ; Pierre forwarde, Gilbert répond avec le style de Pierre. Les deux signent avec la signature de l'équipe.
Trois minutes, à faire une seule fois par workspace. Pré-requis : être admin du workspace.
/console/workspaces/<id>/mails. Le hero affiche l'adresse de forward dérivée du nom de l'assistant et du slug du workspace, par exemple solve-ai--acme-direction@solveholding.com pour un assistant par défaut sur le slug acme-direction (le préfixe suit le nom si l'assistant est personnalisé en marque blanche). Si la row gilbert.forward_addresses n'existe pas encore, un admin peut la provisionner depuis la page : Gilbert crée alors la vraie adresse que le webhook Postmark saura résoudre.direct_reply : Gilbert répond par mail au sender, en te mettant en copie. Idéal V1 pour démarrer (pas besoin d'OAuth Gmail).gmail_draft : Gilbert crée un brouillon dans ton Gmail (OAuth Gmail du membre requis via /console/me/integrations). Tu le retrouves dans Brouillons, adressé à toi-même en V1. Corrige le champ À : vers l'expéditeur original avant d'envoyer. Si le membre n'a pas connecté Gmail, le run est marqué skipped:no_gmail_oauth et rien n'est livré.both : Gilbert envoie la réponse email via Postmark et crée un brouillon Gmail (OAuth requis). Utile pour garder une trace dans la boîte du membre.can_forward. Coche les membres concernés.forward_alias_email côté membership. Cet alias s'ajoute : l'adresse du compte continue de fonctionner.Si tu préfères piloter en SQL (admin avancé / Supabase Studio) :
-- Cas A : tu forwardes depuis l'adresse de ton compte,
-- ou depuis une adresse par laquelle tu te connectes (Google, GitHub...).
-- Rien à faire de plus que d'autoriser le forward.
UPDATE gilbert.workspace_members
SET can_forward = true
WHERE workspace_id = '<workspace-uuid>'
AND user_id = '<user-uuid>';
-- Cas B : tu forwardes depuis une TROISIÈME adresse, qui n'est ni celle
-- de ton compte ni une de tes adresses de connexion (boîte partagée,
-- alias de service). Déclare-la ici.
-- L'alias s'AJOUTE : ton adresse de compte continue de fonctionner.
UPDATE gilbert.workspace_members
SET can_forward = true,
forward_alias_email = '<email-pro>'
WHERE workspace_id = '<workspace-uuid>'
AND user_id = '<user-uuid>';Côté membre, c'est 60 secondes :
/console connecté./console/me/integrations. Sans ça, Gilbert répond par mail (mode direct_reply). Avec ça, Gilbert peut drafter dans son Gmail directement.L'ergonomie tient en un geste. Tu reçois un mail, tu cliques « Transférer », destinataire = solve-ai--<workspace>@solveholding.com, et tu écris en haut du corps du mail ce que tu veux répondre. Exemple :
À : solve-ai--acme-direction@solveholding.com
De : marie@acme-immo.fr
Sujet : Tr: Demande de visite · 12 rue de Lyon
Réponds-lui qu'on peut faire jeudi 14h ou vendredi 10h, et qu'on a besoin
de sa pièce d'identité avant la visite.
--- Forwarded message ---
De : Sophie L. <sophie.l@gmail.com>
À : marie@acme-immo.fr
Sujet : Demande de visite · 12 rue de Lyon
Bonjour,
J'ai vu votre annonce sur SeLoger pour le T3 rue de Lyon.
Possible de visiter cette semaine ?
SophieTu envoies. Sous 90 secondes, Gilbert te renvoie un brouillon pro polish. En mode direct_reply, il arrive par mail dans ta boîte. En mode gmail_draft, il apparaît directement dans tes brouillons Gmail (OAuth Gmail requis).
Pour les curieux et les IT qui auditent. Le chemin d'un forward du moment où il quitte ta boîte jusqu'au brouillon reçu :
solveholding.com route l'adresse de forward vers Postmark, qui dépose le mail dans son endpoint inbound./api/webhooks/email/inbound avec une signature qu'on vérifie côté serveur. Replay window de 5 minutes.gilbert.lookup_forwarding_user(workspace_id, from_email) résout le From du forward vers l'user_id du membre, du plus prouvé au moins prouvé : l'adresse du compte (auth.users.email), puis les adresses des identités vérifiées du membre (auth.identities, avec email_verified), puis l'alias déclaré (forward_alias_email). L'ordre est délibéré : l'alias est la seule des trois adresses dont personne n'a prouvé la possession, donc il passe en dernier et ne peut primer ni sur l'adresse de compte ni sur l'adresse d'identité d'un autre membre. Si deux membres ont vérifié la même adresse, le forward est refusé plutôt qu'attribué au hasard. Si aucune branche ne résout, le forward est rejeté et une notification part, à l'expéditeur quand son adresse est prouvée sur ce workspace et que DKIM et SPF sont tous deux positifs, à l'administrateur du workspace sinon.gilbert-email-inbound-polish (3 retries avec backoff exponentiel pour les 5xx Anthropic / Postmark intermittents). Idempotency via Message-ID dans forward_processed_ids.getLLMClient(supabase, workspaceId, { tier: "smart" }) pour respecter la config LLM du workspace. Un workspace sur Google Gemini paie Google ; un workspace sur Anthropic paie Anthropic. Pas de bypass silencieux vers la clé centrale Gilbert.direct_reply, la réponse est envoyée via Postmark (EmailReplyTransport). En mode gmail_draft, le transport fonctionne en capture-only (pas d'envoi Postmark) et gmailCreateDraft (Gmail API) crée le brouillon dans le compte Gmail du membre (OAuth Gmail connecté obligatoire). Le To est adressé à toi-même (V1). En mode both, Postmark envoie la réponse ET un brouillon est créé dans Gmail. Le run est loggé dans gilbert.forward_runs.Trois choses à savoir si ton service achats ou ton DSI te pose la question :
gilbert.forward_runs n'est lisible que par executing_user_id = auth.uid() (le membre qui a forwardé) ou par un admin du workspace. Un autre membre du même workspace ne voit pas tes forwards.forward_runs (subject_enc, intent_excerpt_enc, draft_preview_enc) sont chiffrées en DB sous FORWARD_ENC_KEY. Un dump de la base sans la clé n'est pas lisible. Le from_email reste en clair (nécessaire pour le lookup).gmail_draft, les tokens Google du membre sont chiffrés sous GOOGLE_TOKEN_KEY et scopés à son user, jamais partagés avec d'autres membres du workspace.Plus de détails sur la posture sécurité globale (CASA Tier 2 ASVS 64/86 ✅) sur le changelog 28 mai 2026.
La V1 fait volontairement moins que ce qui est possible : on déploie progressivement pour éviter les surprises.
| Capacité | V1 (aujourd'hui) | À surveiller |
|---|---|---|
| Mode de sortie | direct_reply, gmail_draft ou both | Affinage UX |
| OAuth Gmail | Optionnel, requis pour gmail_draft | Reconnexion si scopes incomplets |
| Rate cap | 10 / heure / membre | Configurable |
| Style apprenant | Profil global per-user (« Former mon Gilbert ») | Idem, étendu aux 100 derniers Sent |
| Multi-membres | Oui (workspace = contexte) | Idem |
| Anti-patterns | Le persona reject les mails contentieux / RH / paie | Classification configurable par workspace |
/console/workspaces/<id>/mails : la timeline affiche received, polishing, delivered, error avec le message. From du forward ne matche aucun membre du workspace avec can_forward = true. Tes adresses de connexion vérifiées (Google, GitHub) sont reconnues automatiquement, sans réglage. Si tu forwardes depuis une adresse totalement étrangère à ton compte, déclare-la dans forward_alias_email sur ta membership (voir Setup admin). Depuis septembre 2026, ce refus n'est plus silencieux : tu reçois un message qui t'en explique la raison, ou ton administrateur le reçoit à ta place si ton adresse n'est rattachée à aucun membre de cet espace.