· Dan · Guides  · 3 min read

Add Holidays to ConnectWise PSA

Year-end procedure to bulk add holidays for the coming year using n8n and ChatGPT

🎄

The year end procedure in ConnectWise Manage can be a bitvery annoying. This makes it a little less annoying.

Step 1: Get Your Holidays from ChatGPT

First, find a list of statutory holidays for your region. You can Google something like “2026 statutory holidays [your province/state]” or use a government website.

Then, paste the list into ChatGPT with this prompt:

Take these holidays and return this JSON object shape:
{"holidays":[{"name":"...", "date":"YYYY-MM-DD"}]}

ChatGPT will return something like:

{
  "holidays": [
    { "name": "New Year's Day", "date": "2026-01-01" },
    { "name": "Family Day", "date": "2026-02-16" },
    { "name": "Good Friday", "date": "2026-04-03" },
    ...
  ]
}

Copy this JSON output for use in step 3 below.

The Workflow

@mspcopilot/n8n-nodes-connectwise.connectWisePsa n8n-nodes-base.splitOut n8n-nodes-base.merge n8n-nodes-base.httpRequest

Step 2: Get Your Holiday List ID

Before running the main workflow, you need to find your Holiday List ID in ConnectWise.

  1. Click on the disconnected @mspcopilot/n8n-nodes-connectwise.connectWisePsa Get Holiday List ID node at the top-left
  2. Execute just that node
  3. Look at the output to find your holiday list’s id value

Depending on how you manage your holiday lists, you may only have one, or you need to find our most recent.

Step 3: Configure the Workflow

Set Holiday List ID

Open this node and change the holidayListId value to match the ID you found in Step 2.

Set Holidays

Open this node and replace the JSON with the holidays you got from ChatGPT. The format should be:

{
  "holidays": [
    { "name": "New Year's Day", "date": "2026-01-01" },
    { "name": "Your Holiday", "date": "2026-MM-DD" }
  ]
}

n8n-nodes-base.httpRequest Create Holiday

This node uses the ConnectWise REST API directly to create each holiday. You’ll need to set up your ConnectWise API credentials.

How It Works

  1. Set Holiday List ID stores your holiday list ID for the other nodes to use.

  2. The workflow splits into two parallel paths:

    • Set Holidays + n8n-nodes-base.splitOut Split Out takes your JSON and splits each holiday into a separate item
    • @mspcopilot/n8n-nodes-connectwise.connectWisePsa Get Holidays fetches existing holidays from ConnectWise
  3. n8n-nodes-base.merge Return Missing Dates compares the two lists and only outputs holidays that don’t already exist in ConnectWise (matching by date).

  4. n8n-nodes-base.httpRequest Create Holiday POSTs each new holiday to ConnectWise.

Step 4: Test Before Running

The Create Holiday node is disabled by default. This is intentional.

  1. Run the workflow with the node disabled to see which holidays will be created
  2. Verify the output looks correct
  3. Enable the Create Holiday node
  4. Run the workflow again to actually create the holidays

Notes

  • The workflow automatically skips holidays that already exist (matching by date)
  • If you need to update holiday names, you’ll need to delete them in ConnectWise first
  • You can run this workflow multiple times safely - it won’t create duplicates
Back to Blog

Related Posts

View All Posts »