---
title: HubSpot Warmup Rotation Automation Setup
description: HubSpot Warmup Rotation Automation Setup
---

[Skip to content](https://support.warmy.io/knowledge/hubspot-warmup-rotation-automation-setup#main-content)

English

Show submenu for translations

![Group 1261151152.png\]](https://support.warmy.io/hs-fs/hubfs/Group%201261151152.png?width=50&height=50&name=Group%201261151152.png)

Open main navigation

Close main navigation

- English
  
  Show submenu for translations
- [Go to warmy.io](https://www.warmy.io/)

[Go to warmy.io](https://www.warmy.io/)

 Hey there Warmer! How can we help? 🙏

- There are no suggestions because the search field is empty.

1. [Help Center](https://support.warmy.io/knowledge?hsLang=en)
2. [Connection Guide](https://support.warmy.io/knowledge/connection-guide?hsLang=en)

# HubSpot Warmup Rotation Automation Setup

## This workflow manages the daily rotation of pre-synced seed contacts flagged as “in warmup” inside HubSpot, keeping it entirely separate from the seed list sync workflow and operating without sending external web-hooks to Warmy.

   **![](https://a.slack-edge.com/production-standard-emoji-assets/16.0/google-medium/1f3a7@2x.png)       Prefer to listen? Hit play to hear this article read aloud.** 

   

<iframe src="https://demo.arcade.software/ZG6Nae15igtDewVSVKjJ?embed&amp;embed_mobile=tab&amp;embed_desktop=inline&amp;show_copy_link=true" title="Create a Warmup Contact Segment in HubSpot" frameborder="0" loading="lazy" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen allow="clipboard-write; autoplay" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; color-scheme: light;"></iframe>

**How it works**

- A schedule trigger runs daily at 9am (no Warmy webhook required).
- n8n reads from two HubSpot static lists: the full pool list and the active warmup list.
- The workflow increases the desired warmup target size by a random 4–7% daily (starting at 30 if empty), shuffles the full pool, and selects the exact number of required contacts.
- It compares this desired set against the current warmup list to directly add or remove contacts via the HubSpot list membership API.
- HubSpot list membership acts directly as the warmup flag, removing the need for a custom contact property.

**Before you start**

- The **Update rotate seedlist on HubSpot workflow** must already be active for the intended split to supply the pool list input.
- You need the existing **HubSpot Service Key** credential (includes `crm.lists.read` and `crm.lists.write`).

### Instructions

**Step 1 — Attach the HubSpot credential to all 4 HTTP nodes** Open the four HTTP nodes in n8n and select your existing HubSpot Service Key from the authentication dropdown.

![Screenshot 2026-08-26 at 16.52.35](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.52.35.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.52.35.png)

![Screenshot 2026-08-26 at 16.52.38](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.52.38.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.52.38.png)

**HTTP: get pool members**

![Screenshot 2026-08-26 at 16.52.41](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.52.41.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.52.41.png)

![Screenshot 2026-08-26 at 16.52.46](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.52.46.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.52.46.png)

![Screenshot 2026-08-26 at 16.52.49](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.52.49.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.52.49.png)

**HTTP: get warmup members**

![Screenshot 2026-08-26 at 16.52.51](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.52.51.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.52.51.png)  
![Screenshot 2026-08-26 at 16.52.53](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.52.53.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.52.53.png)  
![Screenshot 2026-08-26 at 16.52.55](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.52.55.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.52.55.png)

**HTTP: remove members from warmup list**

![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-30-37-5388-PM.png?width=670&height=436&name=image-png-Aug-27-2026-06-30-37-5388-PM.png)  
![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-31-08-0161-PM.png?width=670&height=436&name=image-png-Aug-27-2026-06-31-08-0161-PM.png)  
![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-31-31-1572-PM.png?width=670&height=436&name=image-png-Aug-27-2026-06-31-31-1572-PM.png)

**HTTP: add members to warmup list**

![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-32-15-6278-PM.png?width=670&height=436&name=image-png-Aug-27-2026-06-32-15-6278-PM.png)  
![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-32-36-6187-PM.png?width=670&height=436&name=image-png-Aug-27-2026-06-32-36-6187-PM.png)  
![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-32-52-5487-PM.png?width=670&height=436&name=image-png-Aug-27-2026-06-32-52-5487-PM.png)

**Step 2 — Paste the pool list ID into the config** Go to HubSpot (CRM → Segments) and locate the segment maintained by the sync workflow. Copy its ID from the browser address bar (e.g., `17`). Open the **Set: warmup config** node in n8n and paste it into `pool_list_id`.

![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-34-21-5283-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-34-21-5283-PM.png) ![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-34-37-5573-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-34-37-5573-PM.png) ![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-34-55-3897-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-34-55-3897-PM.png) ![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-35-17-6614-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-35-17-6614-PM.png)![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-35-32-5055-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-35-32-5055-PM.png)![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-35-52-5619-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-35-52-5619-PM.png) ![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-36-15-9578-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-36-15-9578-PM.png)![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-36-30-6331-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-36-30-6331-PM.png)![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-36-45-4716-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-36-45-4716-PM.png)

*{*  
  *"pool\_list\_id": "17",*  
  *"warmup\_list\_id": ""*  
*}*

**Step 3 — Create the warmup segment in HubSpot** Return to the HubSpot Segments overview. Click **Create segment → Contacts → Next**. Name it (e.g., "Warmup Segment"), choose **Static** processing, and save. Copy this new segment ID from the address bar (e.g., `19`).

![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-38-12-3712-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-38-12-3712-PM.png) ![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-38-27-8009-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-38-27-8009-PM.png) ![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-38-42-6217-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-38-42-6217-PM.png)![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-39-06-5555-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-39-06-5555-PM.png)![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-39-21-5639-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-39-21-5639-PM.png)![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-39-44-6606-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-39-44-6606-PM.png)![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-39-57-0314-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-39-57-0314-PM.png)![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-40-20-1866-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-40-20-1866-PM.png)![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-40-32-6256-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-40-32-6256-PM.png)

**Step 4 — Paste the warmup list ID into the config** Open the **Set: warmup config** node in n8n again and insert the new ID into `warmup_list_id`.

![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-40-46-8641-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-40-46-8641-PM.png)![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-41-05-2436-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-41-05-2436-PM.png)![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-41-17-2693-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-41-17-2693-PM.png)

**{**  
  **"pool\_list\_id": "17",**  
  **"warmup\_list\_id": "19"**  
**}**

**Step 5 — Check the schedule**

Ensure the **Schedule Trigger** node is set to the correct daily runtime (defaults to 9 AM).

![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-43-27-6353-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-43-27-6353-PM.png)

![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-43-38-4676-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-43-38-4676-PM.png)

![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-43-52-1645-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-43-52-1645-PM.png)

**Step 6 — Tune the growth rate (optional)**

Open the **Code: compute new warmup set** node. You can modify the `growthRate` variable. By default, `1.04 + Math.random() * 0.03` generates a daily increase between 4% and 7%.

![](https://support.warmy.io/hs-fs/hubfs/image-png-Aug-27-2026-06-44-15-6612-PM.png?width=2940&height=1912&name=image-png-Aug-27-2026-06-44-15-6612-PM.png)![Screenshot 2026-08-26 at 16.55.26](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.55.26.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.55.26.png) ![Screenshot 2026-08-26 at 16.55.29](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.55.29.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.55.29.png)

**Step 7 — Publish and test**

Activate the workflow using the top-right toggle. Click **Execute workflow** to run it manually. Wait 3–5 minutes for HubSpot to recalculate, then check the Segments tab to confirm pool contacts have transferred into the warmup segment. Execute manually a second time to verify the warmup segment size grows properly.

![Screenshot 2026-08-26 at 16.55.35](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.55.35.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.55.35.png)

![Screenshot 2026-08-26 at 16.55.42](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.55.42.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.55.42.png)

![Screenshot 2026-08-26 at 16.55.45](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.55.45.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.55.45.png)

![Screenshot 2026-08-26 at 16.55.52](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.55.52.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.55.52.png)

![Screenshot 2026-08-26 at 16.55.59](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.55.59.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.55.59.png)![Screenshot 2026-08-26 at 16.56.08](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.56.08.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.56.08.png)![Screenshot 2026-08-26 at 16.56.11](https://support.warmy.io/hs-fs/hubfs/Screenshot%202026-08-26%20at%2016.56.11.png?width=670&height=436&name=Screenshot%202026-08-26%20at%2016.56.11.png)

### Known Limitations & Troubleshooting

- **Empty Fetches:** If the pool list fetch is empty, the workflow aborts to protect the warmup list. It will retry on the next schedule.
- **Error Notifications:** HubSpot HTTP calls retry up to 3 times automatically. A persistent failure will only show in the n8n execution log unless a separate Error Trigger workflow is added.
- **Scalability:** To add another split, duplicate this workflow entirely rather than configuring a multi-split setup in a single canvas.

| **Symptom** | **Likely Cause** | **Fix** |
| --- | --- | --- |
| **Warmup segment member count does not change** | HubSpot is recalculating or the browser is cached. | Refresh after a few minutes; recheck on the next scheduled run. |
| **Warmup list stays empty after first run** | `pool_list_id` or `warmup_list_id` is incorrect, or the pool list is empty. | Verify config values and confirm the sync workflow populated the pool list. |
| **401 or 403 on HubSpot call** | The credential is not attached. | Repeat Step 1 to select the correct HubSpot credential. |
| **Nothing changes on the second run** | Growth calculation produced no new additions for small pools. | Check the output of the **Code: compute new warmup set** node in the execution log. |
| **Workflow never runs** | Workflow inactive or trigger misconfigured. | Toggle the workflow active and verify the Schedule Trigger timing. |

- [Connection Guide](https://support.warmy.io/knowledge/connection-guide?hsLang=en)
- [General questions](https://support.warmy.io/knowledge/general-questions?hsLang=en)
- [Technical questions](https://support.warmy.io/knowledge/technical-questions?hsLang=en#main-content)

    - [SPF and DKIM Configuration](https://support.warmy.io/knowledge/technical-questions?hsLang=en#spf-and-dkim-configuration)
- [Subscription](https://support.warmy.io/knowledge/subscription?hsLang=en)
- [Collaborate](https://support.warmy.io/knowledge/collaborate?hsLang=en)
- [Features](https://support.warmy.io/knowledge/features?hsLang=en)
- [Troubleshooting](https://support.warmy.io/knowledge/troubleshooting?hsLang=en#main-content)

    - [SMTP Errors](https://support.warmy.io/knowledge/troubleshooting?hsLang=en#smtp-errors)
    - [Service-related issues](https://support.warmy.io/knowledge/troubleshooting?hsLang=en#service-related-issues)
- [Integrations](https://support.warmy.io/knowledge/integrations?hsLang=en#main-content)

    - [Seed List Automations](https://support.warmy.io/knowledge/integrations?hsLang=en#seed-list-automations)

[![Chill listening crop-3](https://support.warmy.io/hs-fs/hubfs/Group%201261151152.png?width=24&height=24&name=Group%201261151152.png "Chill listening crop-3")](https://www.warmy.io/)

warmy.io Help Center

<https://www.linkedin.com/company/warmy> <https://www.youtube.com/channel/UCZu6E6YFPAssti54Ks2CV7A> <https://www.facebook.com/warmy.io> <https://www.instagram.com/warmy.io/?hl=en> <https://www.tiktok.com/@warmy_io>

Copyright © 2026, AnyBiz LTD