Back to Catalog

Merge multiple PDF files with CustomJS API

CustomJSCustomJS
1048 views
2/3/2026
Official Page

workflow.png This n8n template demonstrates how to download multiple PDF files from public URLs and merge them into a single PDF using the PDF Toolkit from www.customjs.space.

@custom-js/n8n-nodes-pdf-toolkit

Notice

Community nodes can only be installed on self-hosted instances of n8n.

What this workflow does

  • Downloads each PDF using an HTTP Request.
  • Populates files into an array with Merge node from n8n.
  • Merges all downloaded PDFs using the Merge PDF node from the @custom-js/n8n-nodes-pdf-toolkit.
  • Writes the final merged PDF to disk.

Requirements

  • Self-hosted n8n instance
  • CustomJS API key for merging multiple PDF files.
  • PDF files to be merged to be converted into a PDF

Workflow Steps:

  1. Manual Trigger:

    • Runs with user interaction.
  2. HTTP Request Node For PDF Download:

    • Pass urls for PDF files to merge.
  3. Merge Node For Array Population:

    • Just populates two files into an array.
  4. Merge PDF files:

    • Uses the CustomJS node to merge the incoming PDF files into a single PDF file.
    • If size of PDF files exceeds 6MB, you can simply pass an array of URLs for PDF files.

Usage

Get API key from customJS

  • Sign up to customJS platform.
  • Navigate to your profile page
  • Press "Show" button to get API key 1.png

Set Credentials for CustomJS API on n8n

Copy and paste your API key generated from CustomJS here. 2.png

Design workflow

  • A Manual Trigger for starting workflow.
  • Two HTTP Request Nodes for downloading PDF files.
  • A Merge Node for populating files as an array.
  • Merge PDFs node for merging files
  • Write to Disk node for saving merged PDF file.

You can replace logic for triggering and returning results. For example, you can trigger this workflow by calling a webhook and get a result as a response from webhook. Simply replace Manual Trigger and Write to Disk nodes.

Perfect for

  • Bundling reports or invoices.
  • Generating document sets from external sources.
  • Automating PDF handling without writing custom code

Merge Multiple PDF Files with CustomJS API

This n8n workflow demonstrates how to merge multiple PDF files using a custom API, then save the resulting merged PDF to disk. It's designed to be triggered manually and showcases interaction with an external service for PDF manipulation.

What it does

This workflow performs the following steps:

  1. Starts Manually: The workflow is initiated by a manual trigger, allowing you to run it on demand.
  2. Makes an HTTP Request: It sends an HTTP POST request to a specified API endpoint (likely a CustomJS API) to merge PDF files. The request body would typically contain the data or URLs of the PDF files to be merged.
  3. Saves Merged PDF: The binary data received from the API response (which is expected to be the merged PDF file) is then saved to disk using the "Read/Write Files from Disk" node.

Prerequisites/Requirements

  • CustomJS API: An external API endpoint capable of receiving PDF file data (or references) and returning a merged PDF as binary data. This API is not part of the n8n workflow and needs to be hosted separately.
  • n8n Instance: A running n8n instance to host and execute this workflow.

Setup/Usage

  1. Import the Workflow: Import the provided JSON into your n8n instance.
  2. Configure the HTTP Request Node:
    • Open the "HTTP Request" node.
    • Set the URL to your CustomJS API endpoint for merging PDFs.
    • Configure the Method (likely POST).
    • Adjust the Body Parameters to send the necessary data for your PDF files to the API. This might involve passing file names, URLs, or binary data of the PDFs you wish to merge.
  3. Configure the Read/Write Files from Disk Node:
    • Open the "Read/Write Files from Disk" node.
    • Ensure the Operation is set to Write.
    • Specify the File Name and File Path where you want to save the merged PDF. You can use expressions to dynamically generate the file name (e.g., merged_{{ $now() }}.pdf).
  4. Execute the Workflow: Click "Execute Workflow" in the n8n editor to run the workflow manually and test the PDF merging process.

Related Templates

AI-powered code review with linting, red-marked corrections in Google Sheets & Slack

Advanced Code Review Automation (AI + Lint + Slack) Who’s it for For software engineers, QA teams, and tech leads who want to automate intelligent code reviews with both AI-driven suggestions and rule-based linting — all managed in Google Sheets with instant Slack summaries. How it works This workflow performs a two-layer review system: Lint Check: Runs a lightweight static analysis to find common issues (e.g., use of var, console.log, unbalanced braces). AI Review: Sends valid code to Gemini AI, which provides human-like review feedback with severity classification (Critical, Major, Minor) and visual highlights (red/orange tags). Formatter: Combines lint and AI results, calculating an overall score (0–10). Aggregator: Summarizes results for quick comparison. Google Sheets Writer: Appends results to your review log. Slack Notification: Posts a concise summary (e.g., number of issues and average score) to your team’s channel. How to set up Connect Google Sheets and Slack credentials in n8n. Replace placeholders (<YOURSPREADSHEETID>, <YOURSHEETGIDORNAME>, <YOURSLACKCHANNEL_ID>). Adjust the AI review prompt or lint rules as needed. Activate the workflow — reviews will start automatically whenever new code is added to the sheet. Requirements Google Sheets and Slack integrations enabled A configured AI node (Gemini, OpenAI, or compatible) Proper permissions to write to your target Google Sheet How to customize Add more linting rules (naming conventions, spacing, forbidden APIs) Extend the AI prompt for project-specific guidelines Customize the Slack message formatting Export analytics to a dashboard (e.g., Notion or Data Studio) Why it’s valuable This workflow brings realistic, team-oriented AI-assisted code review to n8n — combining the speed of automated linting with the nuance of human-style feedback. It saves time, improves code quality, and keeps your team’s review history transparent and centralized.

higashiyama By higashiyama
90

Daily cash flow reports with Google Sheets, Slack & Email for finance teams

Simplify financial oversight with this automated n8n workflow. Triggered daily, it fetches cash flow and expense data from a Google Sheet, analyzes inflows and outflows, validates records, and generates a comprehensive daily report. The workflow sends multi-channel notifications via email and Slack, ensuring finance professionals stay updated with real-time financial insights. 💸📧 Key Features Daily automation keeps cash flow tracking current. Analyzes inflows and outflows for actionable insights. Multi-channel alerts enhance team visibility. Logs maintain a detailed record in Google Sheets. Workflow Process The Every Day node triggers a daily check at a set time. Get Cash Flow Data retrieves financial data from a Google Sheet. Analyze Inflows & Outflows processes the data to identify trends and totals. Validate Records ensures all entries are complete and accurate. If records are valid, it branches to: Sends Email Daily Report to finance team members. Send Slack Alert to notify the team instantly. Logs to Sheet appends the summary data to a Google Sheet for tracking. Setup Instructions Import the workflow into n8n and configure Google Sheets OAuth2 for data access. Set the daily trigger time (e.g., 9:00 AM IST) in the "Every Day" node. Test the workflow by adding sample cash flow data and verifying reports. Adjust analysis parameters as needed for specific financial metrics. Prerequisites Google Sheets OAuth2 credentials Gmail API Key for email reports Slack Bot Token (with chat:write permissions) Structured financial data in a Google Sheet Google Sheet Structure: Create a sheet with columns: Date Cash Inflow Cash Outflow Category Notes Updated At Modification Options Customize the "Analyze Inflows & Outflows" node to include custom financial ratios. Adjust the "Validate Records" filter to flag anomalies or missing data. Modify email and Slack templates with branded formatting. Integrate with accounting tools (e.g., Xero) for live data feeds. Set different trigger times to align with your financial review schedule. Discover more workflows – Get in touch with us

Oneclick AI SquadBy Oneclick AI Squad
619

Track daily moods with AI analysis & reports using GPT-4o, Data Tables & Gmail

Track your daily mood in one tap and receive automated AI summaries of your emotional trends every week and month. Perfect for self-reflection, wellness tracking, or personal analytics. This workflow logs moods sent through a webhook (/mood) into Data Tables, analyzes them weekly and monthly with OpenAI (GPT-4o), and emails you clear summaries and actionable recommendations via Gmail. ⚙️ How It Works Webhook – Mood → Collects new entries (🙂, 😐, or 😩) plus an optional note. Set Mood Data → Adds date, hour, and note fields automatically. Insert Mood Row → Stores each record in a Data Table. Weekly Schedule (Sunday 20:00) → Aggregates the last 7 days and sends a summarized report. Monthly Schedule (Day 1 at 08:00) → Aggregates the last 30 days for a deeper AI analysis. OpenAI Analysis → Generates insights, patterns, and 3 actionable recommendations. Gmail → Sends the full report (chart + AI text) to your inbox. 📊 Example Auto-Email Weekly Mood Summary (last 7 days) 🙂 5 ██████████ 😐 2 ████ 😩 0 Average: 1.7 (Positive 🙂) AI Insights: You’re trending upward this week — notes show that exercise days improved mood. Try keeping short walks mid-week to stabilize energy. 🧩 Requirements n8n Data Tables enabled OpenAI credential (GPT-4o or GPT-4 Turbo) Gmail OAuth2 credential to send summaries 🔧 Setup Instructions Connect your credentials: Add your own OpenAI and Gmail OAuth2 credentials. Set your Data Table ID: Open the Insert Mood Row node and enter your own Data Table ID. Without this, new moods won’t be stored. Replace the email placeholder: In the Gmail nodes, replace your.email@example.com with your actual address. Deploy and run: Send a test POST request to /mood (e.g. { "mood": "🙂", "note": "productive day" }) to log your first entry. ⚠️ Before activating the workflow, ensure you have configured the Data Table ID in the “Insert Mood Row” node. 🧠 AI Analysis Interprets mood patterns using GPT-4o. Highlights trends, potential triggers, and suggests 3 specific actions. Runs automatically every week and month. 🔒 Security No personal data is exposed outside your n8n instance. Always remove or anonymize credential references before sharing publicly. 💡 Ideal For Personal mood journaling and AI feedback Therapists tracking client progress Productivity or self-quantification projects 🗒️ Sticky Notes Guide 🟡 Mood Logging Webhook POST /mood receives mood + optional note. ⚠️ Configure your own Data Table ID in the “Insert Mood Row” node before running. 🟢 Weekly Summary Runs every Sunday 20:00 → aggregates last 7 days → generates AI insights + emails report. 🔵 Monthly Summary Runs on Day 1 at 08:00 → aggregates last 30 days → creates monthly reflection. 🟣 AI Analysis Uses OpenAI GPT-4o to interpret trends and recommend actions. 🟠 Email Delivery Sends formatted summaries to your inbox automatically.

Jose CastilloBy Jose Castillo
105