Brancher n8n, Zapier, Make sur PV-Express

Exemples de workflows automation déclenchés par les webhooks PV-Express.

Mis à jour le 1 mai 2026

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.