Intégration n8n : automatiser la génération de documents

Dernière mise à jour le 23 mars 2026

Le nœud PDFMonkey pour n8n vous permet de générer, récupérer, télécharger et supprimer des documents directement depuis vos workflows n8n. Si vous configurez PDFMonkey avec n8n pour la première fois, commencez par la section Premiers pas ci-dessous.

Premiers pas

n8n est une plateforme d’automatisation de workflows qui connecte différentes applications et services entre eux. C’est une alternative open-source à des outils comme Zapier et Make, proposant des options cloud et auto-hébergées.

Avant de commencer, assurez-vous d’avoir :

Pour le guide complet de création de compte et de configuration d’un modèle, consultez De zéro à votre premier document.

Configuration des identifiants

Avant d’utiliser le nœud PDFMonkey, vous devez configurer vos identifiants API :

  1. Dans votre workflow n8n, ajoutez un nœud PDFMonkey
  2. Cliquez sur Create New Credentials
  3. Saisissez votre clé API PDFMonkey (disponible dans votre tableau de bord PDFMonkey)
  4. Cliquez sur Save

Où trouver votre clé API

Votre clé API est disponible dans votre tableau de bord PDFMonkey sous Account puis API. Consultez Authentification pour plus de détails.

Votre premier workflow

Créons un workflow simple qui génère un document lorsqu’il est déclenché manuellement. Utilisez le modèle que vous avez créé dans De zéro à votre premier document, ou créez un modèle simple avec une variable de salutation.

Étape 1 : ajouter un Manual Trigger

  1. Créez un nouveau workflow dans n8n
  2. Le nœud Manual Trigger devrait déjà être présent
  3. Cela vous permettra de tester votre workflow manuellement

Étape 2 : ajouter le nœud PDFMonkey

  1. Cliquez sur le bouton + pour ajouter un nouveau nœud
  2. Recherchez PDFMonkey
  3. Sélectionnez le nœud PDFMonkey
  4. Choisissez Generate Document comme opération

Étape 3 : configurer l’opération Generate Document

Dans la configuration du nœud PDFMonkey :

  1. Sélectionnez vos identifiants PDFMonkey (ou créez-les si ce n’est pas déjà fait)
  2. Définissez l’identifiant de votre modèle PDFMonkey
  3. Réglez la Payload Input Method sur Key-Value Pairs
  4. Ajoutez les champs suivants :
    • Key : name → Value : Peter Parker
    • Key : favoriteNumber → Value : 8

Méthodes de payload

Vous pouvez choisir entre Key-Value Pairs (simple) ou JSON (pour les structures de données complexes). La méthode JSON est détaillée dans la section Générer un document ci-dessous.

Nommage des variables

Les noms de variables dans votre modèle doivent respecter des règles de formatage spécifiques. Consultez la référence sur le nommage des variables pour les formats corrects et incorrects.

Étape 4 : tester votre workflow

  1. Cliquez sur Execute Workflow (le bouton play en bas)
  2. Attendez quelques secondes que le document se génère
  3. Vous devriez voir les détails du document dans la sortie
  4. Le fichier est maintenant disponible à l’adresse download_url fournie

Étape 5 : télécharger le fichier (optionnel)

Si vous souhaitez télécharger le fichier généré en tant que données binaires dans n8n :

  1. Activez Download File dans les options du nœud PDFMonkey
  2. Le fichier sera disponible en tant que données binaires dans les nœuds suivants

Exemple : webhook vers document puis email

Créons un workflow plus pratique qui :

  1. Reçoit des données depuis un webhook
  2. Génère un document avec PDFMonkey
  3. Envoie le document par email

Structure du workflow

  1. Nœud Webhook : reçoit les données du formulaire
  2. Nœud PDFMonkey : génère le document
  3. Nœud Send Email : envoie le fichier en pièce jointe

Configuration

Nœud Webhook :

  • Méthode : POST
  • Chemin : /generate-document

Nœud PDFMonkey :

  • Opération : Generate Document
  • Sélectionnez votre modèle
  • Associez les données du webhook aux variables du modèle :
    • name{{ $json.name }}
    • favoriteNumber{{ $json.favoriteNumber }}
  • Activez l’option Download File

Nœud Send Email :

  • Utilisez Gmail, SendGrid ou tout service SMTP
  • Dans les pièces jointes, référencez les données binaires PDFMonkey :
    • Property Name : data
    • File Name : document.pdf

Tester les webhooks

Utilisez l’URL de test fournie par n8n pour envoyer des requêtes POST avec des données JSON comme :

{
  "name": "John Doe",
  "favoriteNumber": 42
}

Vous avez configuré avec succès votre premier workflow PDFMonkey dans n8n.

Générer un document

L’opération Generate Document crée un document à partir de l’un de vos modèles PDFMonkey. Vous fournissez un modèle et un payload de données dynamiques, et PDFMonkey génère le fichier.

Méthodes d’entrée du payload

Le nœud PDFMonkey propose deux façons d’envoyer des données à votre modèle.

Key-Value Pairs (mode simple) est la méthode la plus facile pour envoyer des structures de données simples. Vous ajoutez les champs un par un, chacun avec une clé (le nom de la variable dans votre modèle) et une valeur (statique ou dynamique provenant des nœuds précédents).

JSON Format (mode avancé) gère les structures de données complexes, les objets imbriqués ou les tableaux. Utilisez le JSON lorsque votre modèle attend des données structurées :

{
  "customer": {
    "name": "Acme Inc.",
    "email": "contact@acme.com",
    "address": {
      "street": "123 Main St",
      "city": "New York",
      "zip": "10001"
    }
  },
  "items": [
    {
      "product": "Widget",
      "quantity": 5,
      "price": 10.99
    },
    {
      "product": "Gadget",
      "quantity": 2,
      "price": 24.99
    }
  ],
  "total": 104.93
}

Dans votre modèle, accédez aux données imbriquées avec la notation par points :

<h2>Invoice for {{customer.name}}</h2>
<p>{{customer.address.street}}, {{customer.address.city}}</p>

{% for item in items %}
  <p>{{item.product}} x{{item.quantity}} = {{item.price}}</p>
{% endfor %}

Pour en savoir plus sur la structuration de vos données dynamiques, consultez Définir les données dynamiques.

Utilisation des expressions

Les expressions n8n vous permettent de référencer dynamiquement les données des nœuds précédents :

{{ $json.customerName }}              // Champ simple
{{ $node["Webhook"].json["email"] }}  // Depuis un nœud spécifique
{{ $json.items.length }}              // Longueur du tableau
{{ new Date().toISOString() }}        // Date actuelle

Vous pouvez utiliser les expressions dans les valeurs des paires Key-Value, les payloads JSON (comme valeurs de chaîne), le champ de nom de fichier personnalisé et les champs de métadonnées.

Nom de fichier personnalisé

Vous pouvez spécifier un nom personnalisé pour le fichier généré. Cela est utile lorsque vous stockez des fichiers dans Google Drive, Dropbox ou d’autres services de stockage.

Dans les options du nœud PDFMonkey :

  1. Développez Additional Options
  2. Définissez Custom Filename
  3. Utilisez un nom statique ou des expressions n8n :
Invoice-{{ $json.invoiceNumber }}.pdf
Report-{{ $now.format('YYYY-MM-DD') }}.pdf
{{ $json.customerName }}-Contract.pdf

Restrictions sur le nom de fichier

  • N’utilisez pas de slashs / ni de backslashs \
  • Évitez les caractères spéciaux qui pourraient causer des problèmes sur différents systèmes d’exploitation
  • Les caractères non latins peuvent être échappés ou remplacés

Pour plus de détails sur les options de nom de fichier, consultez Nom de fichier personnalisé.

Métadonnées

Les métadonnées sont des informations supplémentaires attachées à un document qui n’apparaissent pas dans le fichier généré. Elles sont utiles pour suivre l’origine du document, stocker des identifiants de référence et filtrer dans les webhooks.

Pour ajouter des métadonnées :

  1. Développez Additional Options dans le nœud PDFMonkey
  2. Réglez Metadata sur Key-Value Pairs ou JSON
  3. Ajoutez vos champs de métadonnées :
{
  "orderId": "ORD-12345",
  "customerEmail": "john@example.com",
  "environment": "production"
}

Vous pouvez récupérer les métadonnées ultérieurement en utilisant l’opération Get Document ou dans les triggers par webhook.

Métadonnées vs Payload

  • Payload (données dynamiques) : Données utilisées pour générer le contenu du document
  • Metadata : Informations attachées au document mais non visibles dans la sortie ; incluses dans les notifications webhook

Attendre le document

Par défaut, l’opération Generate Document attend que le document soit entièrement généré avant de continuer.

Temps de génération du document

La plupart des documents se génèrent en quelques secondes. Les documents complexes avec de nombreuses pages, images ou du JavaScript peuvent prendre plus de temps. Consultez Statuts des documents pour le cycle de vie complet de la génération.

Si vous devez désactiver l’attente et gérer la complétion de manière asynchrone, vous pouvez utiliser le trigger PDFMonkey ou le polling à la place.

Tableaux et données complexes

n8n facilite le travail avec les tableaux provenant des nœuds précédents. Voici un exemple utilisant des données Google Sheets.

Sortie du nœud Google Sheets :

[
  { "product": "Widget", "qty": 5, "price": 10 },
  { "product": "Gadget", "qty": 2, "price": 25 }
]

Dans le nœud PDFMonkey (mode JSON) :

{
  "customerName": "{{ $json.customerName }}",
  "items": {{ $node["Google Sheets"].json }}
}

Le tableau est transmis directement à votre modèle où vous pouvez le parcourir :

{% for item in items %}
  <tr>
    <td>{{item.product}}</td>
    <td>{{item.qty}}</td>
    <td>{{item.price}}</td>
  </tr>
{% endfor %}

Pour en savoir plus sur les boucles et le rendu conditionnel, consultez Conditions et boucles.

Traitement d’éléments multiples

Si votre workflow traite plusieurs éléments (comme plusieurs clients ou commandes), utilisez le nœud Split In Batches de n8n :

1. Get Data (retourne 100 éléments)
2. Split In Batches (taille du lot : 1)
3. PDFMonkey - Generate Document (s’exécute 100 fois)
4. Stocker les fichiers

Ou utilisez le nœud Loop Over Items pour plus de contrôle.

Limites de débit

Soyez attentif aux limites de votre plan PDFMonkey lorsque vous générez plusieurs documents. Envisagez d’ajouter des nœuds Wait entre les lots si vous générez de nombreux documents. Consultez Limitation de débit pour plus de détails, et Nos plans pour les informations de quota.

Gestion des erreurs

Utilisez les fonctionnalités de gestion d’erreurs de n8n pour gérer les échecs :

  1. Cliquez sur le nœud PDFMonkey
  2. Allez dans l’onglet Settings
  3. Configurez On Error :
    • Stop Workflow (par défaut)
    • Continue With Last Successful Item
    • Continue Execution

Pour une gestion d’erreurs plus robuste, ajoutez un nœud IF après PDFMonkey pour vérifier le statut du document :

IF: {{ $json.status }} equals "success"
  -> TRUE : Continuer avec le fichier
  -> FALSE : Envoyer une notification d’erreur

Trigger PDFMonkey

Le trigger PDFMonkey est un trigger basé sur les webhooks qui écoute les événements de génération de documents. Lorsqu’un document est terminé, PDFMonkey envoie une notification à votre workflow n8n. Cela est utile pour automatiser les actions post-génération comme le stockage de fichiers, l’envoi de notifications ou la mise à jour de bases de données.

Pour des informations de fond sur le fonctionnement des webhooks PDFMonkey (types d’événements, format du payload et vérification des signatures), consultez Webhooks.

Configuration

  1. Dans votre workflow n8n, cliquez sur + pour ajouter un nouveau nœud
  2. Recherchez PDFMonkey Trigger et sélectionnez-le comme point de départ de votre workflow
  3. Sélectionnez vos identifiants API PDFMonkey
  4. Choisissez les modèles à écouter :
    • Any Template : déclencher pour tous les documents de votre workspace
    • Specific Template : déclencher pour un seul modèle
    • Multiple Templates : déclencher pour plusieurs modèles sélectionnés
  5. Copiez l’URL de webhook affichée par le nœud trigger
  6. Dans votre tableau de bord PDFMonkey, allez dans la section Webhooks
  7. Créez un nouvel endpoint avec l’URL de webhook n8n
  8. Cochez les événements de succès et d’échec, puis cliquez sur Create
  9. De retour dans n8n, activez le toggle Activate pour activer votre workflow

Webhooks de production vs de test

n8n fournit deux URLs :

  • URL de test : Pour tester dans l’éditeur n8n
  • URL de production : Pour les workflows activés/publiés

Assurez-vous de mettre à jour l’URL de webhook dans PDFMonkey lors de l’activation de votre workflow.

Données du trigger

Lorsqu’un document est terminé, le trigger reçoit un objet DocumentCard. Celui-ci inclut les métadonnées du document, le statut et l’URL de téléchargement, mais n’inclut pas les données dynamiques originales que vous avez envoyées :

{
  "document": {
    "id": "a5e86d72-f5b7-43d4-a04e-8b7e08e6741c",
    "app_id": "d6b4e8f2-7a3c-4d1e-9f5b-2c8a1d3e6f90",
    "created_at": "2050-03-13T12:34:56.181+02:00",
    "document_template_id": "2903f5b4-623b-4e10-b2e3-dc7e2e67ea39",
    "document_template_identifier": "My Invoice Template",
    "download_url": "https://pdfmonkey.s3.eu-west-1.amazonaws.com/...",
    "failure_cause": null,
    "filename": "2050-03-14 Peter Parker.pdf",
    "meta": {
      "_filename": "2050-03-14 Peter Parker.pdf",
      "clientRef": "spidey-616"
    },
    "output_type": "pdf",
    "preview_url": "https://preview.pdfmonkey.io/...",
    "public_share_link": null,
    "status": "success",
    "updated_at": "2050-03-13T12:34:59.412+02:00"
  }
}

Les données dynamiques ne sont pas incluses

Le payload du webhook n’inclut pas les données dynamiques (payload) originales que vous avez envoyées pour générer le document. Si vous avez besoin de ces informations dans votre workflow, stockez-les dans le champ métadonnées lors de la génération du document. Les métadonnées sont incluses dans chaque notification webhook.

Téléchargement automatique

Le trigger PDFMonkey dispose d’une option Download File qui télécharge automatiquement le fichier généré lorsque le trigger se déclenche.

Lorsqu’elle est activée :

  • Le fichier est téléchargé en tant que données binaires
  • Il est disponible immédiatement dans les nœuds suivants
  • Pas besoin d’une opération Download File séparée

Pour l’activer :

  1. Ouvrez les paramètres du nœud trigger
  2. Développez Additional Options
  3. Basculez Download File sur ON

Les données binaires sont disponibles avec la clé data.

Cas d’utilisation

Stocker des fichiers dans Google Drive :

1. PDFMonkey Trigger (Download File : activé)
2. Google Drive - Upload File
   - File : {{ $binary.data }}
   - Folder : /Invoices/
   - Filename : {{ $json.filename }}

Envoyer une notification sur Slack :

1. PDFMonkey Trigger
2. Slack - Send Message
   - Channel : #notifications
   - Message : "New document generated: {{ $json.filename }}"
   - Attachment : {{ $json.download_url }}

Mettre à jour un enregistrement en base de données :

1. PDFMonkey Trigger
2. Postgres - Update
   - Table : orders
   - Where : id = {{ $json.metadata.orderId }}
   - Set : pdf_url = {{ $json.download_url }}, status = 'completed'

Envoyer le document par email au client :

1. PDFMonkey Trigger (Download File : activé)
2. Gmail - Send Email
   - To : {{ $json.metadata.customerEmail }}
   - Subject : Your invoice is ready
   - Attachments : {{ $binary.data }}

Métadonnées pour le routage

Les métadonnées permettent des workflows conditionnels. Lors de la génération d’un document, attachez des informations de routage :

{
  "metadata": {
    "documentType": "invoice",
    "customerId": "12345",
    "sendEmail": true
  }
}

Puis dans votre workflow déclenché, utilisez un nœud IF ou Switch pour router en fonction des métadonnées :

1. PDFMonkey Trigger
2. Nœud Switch
   - Case 1 : {{ $json.metadata.documentType }} = "invoice" -> Stocker en comptabilité
   - Case 2 : {{ $json.metadata.documentType }} = "report" -> Partager sur Slack
   - Case 3 : {{ $json.metadata.documentType }} = "contract" -> Stocker dans DocuSign

Test

Méthode 1 : Générer un document de test. Utilisez un autre workflow ou l’API pour générer un document, attendez que le webhook se déclenche, et vérifiez l’exécution du nœud trigger dans n8n.

Méthode 2 : Utiliser le webhook de test.

  1. Cliquez sur Listen for event dans le nœud trigger
  2. Générez un document depuis votre modèle PDFMonkey
  3. Le trigger capture l’événement et affiche les données
  4. Cliquez sur Use test event pour utiliser ces données lors de la construction de votre workflow

Déclencher depuis le tableau de bord

Vous pouvez déclencher manuellement une génération de test depuis l’éditeur de modèle PDFMonkey en cliquant sur le bouton Generate. Cela déclenche le webhook immédiatement.

Vous pouvez également avoir plusieurs workflows n8n à l’écoute du même modèle. Chaque webhook reçoit la notification indépendamment, ce qui est utile pour séparer les environnements ou avoir différents workflows pour différents types de documents.

Garanties de livraison

PDFMonkey utilise Svix pour livrer les webhooks. Les livraisons suivent ces garanties :

  • Livraison au moins une fois : vous pourriez recevoir le même événement plusieurs fois
  • Ordre au mieux : les événements sont généralement dans l’ordre mais ce n’est pas garanti
  • Réessais automatiques : les livraisons échouées sont réessayées avec un backoff exponentiel
  • Vérification de signature : chaque webhook est signé pour que vous puissiez vérifier son authenticité

Rendez votre workflow idempotent

Comme les webhooks peuvent être livrés plusieurs fois, concevez votre workflow pour gérer les événements dupliqués correctement. Utilisez les identifiants de documents pour vérifier si vous avez déjà traité un événement.

Pour tous les détails sur la configuration des webhooks (routage par canal et vérification de signature), consultez Webhooks.

Autres opérations

Au-delà de la génération de documents et de la réaction aux triggers, le nœud PDFMonkey prend en charge plusieurs opérations de gestion de documents.

Récupérer un document

L’opération Get Document récupère les informations d’un document précédemment généré. Utilisez-la pour vérifier le statut d’un document, récupérer son URL de téléchargement, accéder aux métadonnées attachées ou vérifier qu’un document existe avant traitement.

Champ requis : Document ID

Document ID : {{ $json.documentId }}

L’opération retourne les informations complètes du document incluant le statut, l’URL de téléchargement, l’URL de prévisualisation, les métadonnées et les horodatages.

Valeurs de statut du document :

  • draft — le document est créé mais pas encore en file d’attente pour la génération
  • pending — le document est en file d’attente pour la génération
  • generating — le document est en cours de rendu
  • success — le document a été généré avec succès
  • failure — la génération a échoué (vérifiez failure_cause pour les détails)

Pour le cycle de vie complet des statuts, consultez Statuts des documents.

Télécharger un fichier

L’opération Download File télécharge un fichier généré en tant que données binaires. Utilisez-la pour télécharger un fichier généré précédemment, obtenir des données binaires séparément de la génération ou re-télécharger un document pour traitement.

Champ requis : Document ID

Champ optionnel : Binary Property Name (par défaut : data)

Document ID : {{ $json.documentId }}
Binary Property Name : pdfFile

Le fichier est stocké en tant que données binaires et peut être utilisé dans les pièces jointes d’email, les nœuds de stockage de fichiers (Google Drive, Dropbox, etc.), les uploads FTP ou d’autres nœuds de traitement.

Generate Document inclut le téléchargement

Si vous générez et téléchargez immédiatement, utilisez l’option Download File dans l’opération Generate Document plutôt qu’un nœud Download File séparé.

Supprimer un document

L’opération Delete Document supprime définitivement un document de PDFMonkey. Utilisez-la pour nettoyer après l’envoi d’un document, supprimer des documents contenant des données sensibles, gérer les quotas de stockage ou implémenter des politiques de rétention de documents.

Champ requis : Document ID

Document ID : {{ $json.documentId }}

La suppression est définitive

Une fois supprimés, les documents ne peuvent pas être récupérés. L’URL de téléchargement ne fonctionnera plus. Assurez-vous d’avoir sauvegardé le fichier ailleurs si vous en avez besoin.

Le TTL comme alternative

Envisagez d’utiliser la suppression automatique (TTL) plutôt que de supprimer manuellement les documents. Vous pouvez configurer la suppression automatique des documents après une période configurable lors de la génération.

Polling de complétion

Si vous avez généré un document avec Wait for Document désactivé, vous pouvez utiliser le polling pour vérifier sa complétion au lieu d’un trigger webhook :

1. PDFMonkey - Generate Document (Wait : désactivé)
2. Wait (10 secondes)
3. PDFMonkey - Get Document
   - Document ID : {{ $node["PDFMonkey"].json.id }}
4. Nœud IF
   - {{ $json.status }} = "success"
   - TRUE : Continuer avec le fichier
   - FALSE : Retourner à l’étape 2

Meilleure approche : utiliser le trigger

Au lieu du polling, envisagez d’utiliser le trigger PDFMonkey pour être notifié lorsque les documents sont prêts. Les triggers sont plus efficaces et répondent plus rapidement.

Combiner les opérations

Générer, stocker et nettoyer :

1. Manual Trigger
2. PDFMonkey - Generate Document (Download : activé)
3. Google Drive - Upload File
   - File : {{ $binary.data }}
   - Folder : /Invoices/
4. Postgres - Insert
   - Table : documents
   - Data : {
       drive_url : {{ $node["Google Drive"].json.webViewLink }},
       pdfmonkey_id : {{ $node["PDFMonkey"].json.id }}
     }
5. PDFMonkey - Delete Document
   - Document ID : {{ $node["PDFMonkey"].json.id }}

Téléchargement conditionnel basé sur le statut :

1. Webhook (reçoit l’identifiant du document)
2. PDFMonkey - Get Document
   - Document ID : {{ $json.documentId }}
3. Nœud IF
   - Condition : {{ $json.status }} = "success"
   - TRUE :
     4a. PDFMonkey - Download File
     5a. Envoyer au client
   - FALSE :
     4b. Envoyer une notification d’erreur
     5b. PDFMonkey - Delete Document (nettoyage de la tentative échouée)

Re-générer et remplacer :

1. Webhook (reçoit la mise à jour de commande)
2. PDFMonkey - Delete Document
   - Document ID : {{ $json.oldDocumentId }}
3. PDFMonkey - Generate Document
   - Template : Invoice
   - Payload : {{ $json.updatedData }}
4. Mettre à jour la base de données avec le nouvel identifiant de document

Résolution de problèmes

Erreurs d’authentification

Clé API invalide :

401 Unauthorized - Invalid API key
  1. Allez dans votre tableau de bord PDFMonkey
  2. Naviguez vers Account puis API
  3. Copiez votre clé API
  4. Dans n8n, mettez à jour vos identifiants PDFMonkey avec la bonne clé
  5. Testez la connexion

Pour en savoir plus sur l’authentification API, consultez Authentification.

Workspaces multiples

Si vous avez plusieurs workspaces PDFMonkey, assurez-vous d’utiliser la clé API du bon workspace.

Si vos identifiants cessent soudainement de fonctionner, supprimez les anciens identifiants dans n8n, créez-en de nouveaux avec une clé API fraîche, et mettez à jour tous les nœuds utilisant ces identifiants.

Modèle introuvable

404 Not Found - Template does not exist

Causes : le modèle a été supprimé, le mauvais workspace ou la mauvaise clé API est utilisé, ou l’identifiant du modèle est incorrect.

Solution : Vérifiez que le modèle existe dans votre tableau de bord PDFMonkey, vérifiez que vous utilisez la bonne clé API, et re-sélectionnez le modèle depuis le menu déroulant dans n8n.

Modèle non publié :

422 Unprocessable Entity - Template is not published

Allez dans votre modèle dans PDFMonkey et assurez-vous qu’il est publié en cliquant sur le bouton Publish, puis réessayez la génération.

Erreur courante

C’est l’une des erreurs les plus fréquentes. Pensez toujours à publier votre modèle après avoir effectué des modifications.

Payload invalide

422 Unprocessable Entity - Invalid payload

Causes : syntaxe JSON invalide (en mode JSON), mauvais types de données ou champs requis manquants.

Problèmes courants de syntaxe JSON :

Guillemets manquants :

// Incorrect
{ name: "John" }

// Correct
{ "name": "John" }

Virgules en fin de ligne :

// Incorrect
{
  "name": "John",
  "age": 30,
}

// Correct
{
  "name": "John",
  "age": 30
}

Guillemets doubles non échappés dans les valeurs :

// Incorrect - les guillemets imbriqués cassent le JSON
{ "name": "Peter "Spider-Man" Parker" }

// Correct - échapper les guillemets internes avec un backslash
{ "name": "Peter \"Spider-Man\" Parker" }

Utilisation des expressions n8n dans le JSON :

Lorsque vous utilisez des expressions, assurez-vous de sérialiser les objets :

// Incorrect - Créera un JSON invalide
{
  "items": {{ $json.items }}
}

// Correct - Sérialiser correctement
{
  "items": {{ JSON.stringify($json.items) }}
}

Utilisez le mode Key-Value Pairs

Si vous avez des difficultés avec la syntaxe JSON, passez en mode Key-Value Pairs. n8n gère automatiquement tout l’échappement et le formatage.

Erreurs de téléchargement

URL de téléchargement expirée :

403 Forbidden - Download URL has expired

Les URLs de téléchargement expirent après 1 heure pour des raisons de sécurité.

Option 1 : Utilisez Get Document pour obtenir une URL fraîche, puis téléchargez depuis la nouvelle URL avec un nœud HTTP Request.

Option 2 : Activez l’option Download File dans le nœud Generate Document pour télécharger immédiatement après la génération.

Option 3 : Stockez les données binaires dans un service de stockage (Google Drive, S3, etc.) plutôt que de dépendre des URLs PDFMonkey.

Pour plus de détails, consultez L’URL de téléchargement retourne 403.

Données binaires non disponibles :

Si aucune donnée binaire n’est disponible pour la pièce jointe ou le stockage, assurez-vous que Download File est activé :

  • Dans l’opération Generate Document : Additional Options puis Download File
  • Dans le PDFMonkey Trigger : Additional Options puis Download File
  • Ou utilisez explicitement une opération Download File

Problèmes de webhook

Le webhook ne reçoit pas d’événements :

  1. Le workflow est activé (pas seulement sauvegardé)
  2. L’URL du webhook est correcte dans PDFMonkey
  3. Utilisation de l’URL de production et non l’URL de test
  4. Le modèle est publié
  5. Le pare-feu ne bloque pas les requêtes

Pour déboguer : vérifiez l’onglet Executions dans n8n pour les erreurs, allez dans les paramètres du modèle dans le tableau de bord PDFMonkey et vérifiez les journaux de livraison des webhooks, et essayez de générer manuellement un document de test. Consultez Webhooks pour les détails de configuration des webhooks.

Réception d’événements webhook en double : c’est un comportement attendu. Les webhooks PDFMonkey utilisent une livraison au moins une fois. Rendez votre workflow idempotent en vérifiant si vous avez déjà traité un document :

1. PDFMonkey Trigger
2. Postgres - Vérifier si l’identifiant du document existe
3. Nœud IF
   - Déjà traité : Arrêter
   - Nouveau document : Continuer le traitement

Mauvaise URL de webhook : Après l’activation de votre workflow, l’URL du webhook passe de Test à Production. Copiez l’URL de production depuis le nœud trigger et mettez à jour l’URL du webhook dans vos paramètres PDFMonkey.

Erreurs d’expression

Cannot read property of undefined :

Cannot read property 'field' of undefined

Cela se produit lorsque vous essayez d’accéder à des données qui n’existent pas depuis un nœud précédent.

Vérifiez le nom du nœud :

// Mauvais nom de nœud
{{ $node["PDFmonkey"].json.id }}

// Bon nom de nœud (M majuscule)
{{ $node["PDFMonkey"].json.id }}

Vérifiez que les données existent :

// Suppose que le champ existe
{{ $json.customer.email }}

// Utilisez le chaînage optionnel (n8n 1.0+)
{{ $json.customer?.email }}

// Ou fournissez une valeur par défaut
{{ $json.customer?.email || 'no-email@example.com' }}

Utilisez l’éditeur d’expressions dans n8n (cliquez sur le bouton Expression) et utilisez l’autocomplétion pour vous assurer de référencer les bons champs.

Timeout du workflow

Workflow execution timed out

Causes : document prenant trop de temps à se générer, problèmes réseau ou téléchargement de fichiers volumineux.

Option 1 : Augmentez le timeout dans les paramètres du workflow (Execution Timeout).

Option 2 : Désactivez « Wait for Document » et utilisez un trigger webhook dans un workflow séparé.

Option 3 : Découpez en plusieurs workflows et utilisez des webhooks pour les chaîner.

Erreurs de mémoire

JavaScript heap out of memory

Cela se produit lors du traitement de fichiers ou de données très volumineux dans n8n.

Solutions :

  1. Traitez les éléments par lots plus petits (utilisez le nœud Split In Batches)
  2. Utilisez le streaming lorsque c’est possible
  3. Augmentez l’allocation mémoire de n8n (auto-hébergé uniquement)
  4. Stockez les fichiers volumineux en externe plutôt que de les faire transiter par le workflow

Limitation de débit

429 Too Many Requests - Rate limit exceeded

Ajoutez des nœuds Wait entre les opérations lors du traitement de plusieurs documents :

1. Récupérer les éléments à traiter
2. Split In Batches (taille : 10)
3. Wait (5 secondes)
4. PDFMonkey - Generate Document
5. Boucle

Ou utilisez le nœud Code pour ajouter des délais :

// Attendre 1 seconde par élément
await new Promise(resolve => setTimeout(resolve, 1000));
return items;

Formatage JSON

Sauts de ligne dans le JSON : le JSON ne prend pas en charge les sauts de ligne bruts dans les chaînes :

// Incorrect
{
  "description": "Line 1
Line 2"
}

// Correct
{
  "description": "Line 1\nLine 2"
}

Ou utilisez un nœud Code pour échapper :

items[0].json.description = items[0].json.description.replace(/\n/g, '\\n');
return items;

Caractères spéciaux : échappez les guillemets doubles dans les valeurs de chaîne :

// Incorrect - les guillemets non échappés cassent le JSON
{ "html": "<div class="test">Hello</div>" }

// Correct - guillemets internes échappés
{ "html": "<div class=\"test\">Hello</div>" }

Ou utilisez le mode Key-Value Pairs qui gère l’échappement automatiquement.

Prochaines étapes

Besoin d’aide supplémentaire ?

Si vous rencontrez toujours des problèmes :

  1. Documentation n8n : docs.n8n.io
  2. Statut PDFMonkey : status.pdfmonkey.io
  3. Communauté n8n : community.n8n.io
  4. Support PDFMonkey : support@pdfmonkey.io

Incluez les détails dans vos demandes de support

Lorsque vous demandez de l’aide, incluez le message d’erreur complet, votre version de n8n, une capture d’écran du workflow et les étapes pour reproduire le problème.