Brancher n8n, Zapier, Make sur PV-Express
Exemples de workflows automation déclenchés par les webhooks PV-Express.
Les webhooks sortants HMAC de PV-Express se branchent en quelques minutes sur les principaux outils no-code du marché. Voici trois recettes concrètes utilisées en production par nos cabinets pilotes. La latence de delivery est en moyenne < 1 seconde entre l'événement métier et la réception côté outil.
Recette 1 — n8n : alerter Slack quand un PV est signé
Cas d'usage : prévenir le client (et le collaborateur en charge) en temps réel dès que toutes les signatures sont collectées sur Yousign.
Étape 1 — Créer le webhook côté n8n
Dans n8n, ajoutez un node Webhook :
- HTTP Method :
POST - Path :
/pv-express/signature-completed - Response Mode :
Immediately - Authentication :
None(la signature HMAC suffit)
Récupérez l'URL générée (ex. https://n8n.cabinet.fr/webhook/pv-express/signature-completed).
Étape 2 — Déclarer l'endpoint dans PV-Express
Settings → Intégrations → Webhooks sortants → Ajouter un endpoint :
- URL : l'URL n8n copiée
- Événements souscrits : cochez
signature.completed - Description :
n8n prod - Slack notif signatures
Stockez le secret HMAC affiché dans n8n via Credentials → Generic Credential Type.
Étape 3 — Vérifier la signature dans n8n
Ajoutez un node Code (JavaScript) juste après le webhook :
const crypto = require("crypto");
const secret = $credentials.pvExpressSecret;
const sigHeader = $input.first().headers["x-pvexpress-signature"];
const rawBody = JSON.stringify($input.first().body);
const { t, v1 } = Object.fromEntries(
sigHeader.split(",").map((kv) => kv.split("="))
);
const computed = crypto
.createHmac("sha256", secret)
.update(`${t}.${rawBody}`)
.digest("hex");
if (computed !== v1) throw new Error("Signature HMAC invalide");
return $input.all();
Étape 4 — Poster sur Slack
Branchez ensuite un node Slack → Send Message sur le channel de votre choix avec un template :
Le PV {{ $json.body.dossier.company_name }} vient d'etre signe par tous les associes.
Pochette : {{ $json.body.dossier.pochette_url }}
Recette 2 — Zapier : log Google Sheets à chaque dossier créé
Cas d'usage : tracker la production AGOA hebdomadaire dans une feuille partagée avec les associés du cabinet, sans toucher à la DB PV-Express.
Étape 1 — Trigger Zapier "Webhooks by Zapier"
Dans Zapier : Create Zap → Trigger : Webhooks by Zapier → Catch Raw Hook.
Récupérez l'URL fournie (ex. https://hooks.zapier.com/hooks/catch/123/abc/).
Étape 2 — Configurer côté PV-Express
Settings → Intégrations → Webhooks → Ajouter :
- URL : l'URL Zapier
- Événement :
dossier.created
Étape 3 — Vérifier la signature en Code by Zapier
Ajoutez une étape Code by Zapier (Run JavaScript) :
const crypto = require("crypto");
const secret = "VOTRE_SECRET_HMAC";
const sig = inputData.x_pvexpress_signature;
const body = inputData.rawBody;
const { t, v1 } = Object.fromEntries(
sig.split(",").map((kv) => kv.split("="))
);
const computed = crypto
.createHmac("sha256", secret)
.update(`${t}.${body}`)
.digest("hex");
if (computed !== v1) throw new Error("Signature invalide");
return JSON.parse(body);
Étape 4 — Action Google Sheets
Ajoutez l'action Google Sheets → Create Spreadsheet Row avec le mapping :
- Date :
{{ created_at }} - Société :
{{ company_name }} - SIREN :
{{ company_siren }} - Forme :
{{ company_form }} - Collaborateur :
{{ created_by_email }}
Recette 3 — Make.com : créer une tâche ClickUp à chaque PV généré
Cas d'usage : assigner automatiquement la relecture du PV à un collaborateur dans le PMS interne (ClickUp, Asana, Notion, Trello...).
Étape 1 — Module Webhooks dans Make
Dans Make : Add module → Webhooks → Custom webhook. Récupérez l'URL
unique (ex. https://hook.eu1.make.com/xxxxxxx).
Étape 2 — Côté PV-Express
Settings → Intégrations → Webhooks → événement dossier.pv_generated,
URL Make collée.
Étape 3 — Vérification HMAC
Make permet d'ajouter un module Tools → Set multiple variables suivi d'une fonction inline :
hmac("sha256"; concat(t; "."; rawBody); SECRET_HMAC)
Comparez la valeur calculée avec v1 extrait du header. Si différent,
arrêtez le scénario via un module Tools → Stop.
Étape 4 — Action ClickUp
Module ClickUp → Create a Task avec :
- List ID : votre liste "Relecture PV"
- Name :
Relire PV {{ company_name }} - Assignee : ID du collaborateur référent (récupérable via Membres équipe)
- Due date : J+2 ouvré
Structure du payload JSON
Tous les événements partagent une enveloppe commune :
{
"event_id": "evt_01HX2Z9K3M4N5P6Q",
"event_type": "dossier.pv_generated",
"occurred_at": "2026-05-01T14:32:11.428Z",
"cabinet_id": "cab_01HV...",
"data": {
"dossier_id": "dos_01HX...",
"company_name": "ACME SAS",
"company_siren": "812345678",
"company_form": "SAS",
"pv_url": "https://app.pv-express.fr/dossiers/.../pv.pdf",
"pochette_url": "https://app.pv-express.fr/dossiers/.../pochette.zip",
"created_by_email": "[email protected]"
}
}
Le contenu de data varie selon le event_type — référez-vous au schéma
JSON complet dans Settings → Intégrations → Documentation payload.
Cas d'usage cabinet réels
- Alerter le client dès que son PV est signé (Slack, email, SMS via Twilio)
- Créer une tâche PMS quand un dossier est créé pour assigner la production
- Archiver dans Google Drive chaque pochette ZIP sur un Drive partagé client (compliance interne)
- Mettre à jour le CRM (HubSpot, Pipedrive) à chaque
company.created - Déclencher facturation dans le logiciel de gestion à chaque
dossier.pochette_generated
Pour aller plus loin avec un accès programmatique en écriture (créer des dossiers depuis votre code), voir Clés API et accès programmatique.