# Looking for advice: Automation Workflow (GoHighLevel WhatsApp -\> n8n -\> HubSpot Tickets)

**URL:** <https://community.n8n.io/t/looking-for-advice-automation-workflow-gohighlevel-whatsapp-n8n-hubspot-tickets/233390>\
**Category:** Questions\
**Tags:** hubspot-trigger, highlevel, whatsapp\
**Created:** [December 9, 2025, 9:24am UTC](https://community.n8n.io/t/looking-for-advice-automation-workflow-gohighlevel-whatsapp-n8n-hubspot-tickets/233390 "2025-12-09T09:24:30Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lougha007](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/lougha007/32/79936_2.png) [@Lougha007](https://community.n8n.io/u/Lougha007)\
**Post date:** [December 9, 2025, 9:24am UTC](https://community.n8n.io/t/looking-for-advice-automation-workflow-gohighlevel-whatsapp-n8n-hubspot-tickets/233390/1 "2025-12-09T09:24:30Z")

</div>

**Hi Community,**

I am running a small educational institute and I’m currently optimizing our tech stack to be more cost-effective.

**My Goal:** I want to build a support ticket automation system where **GoHighLevel (GHL)** acts as the frontend (WhatsApp) and **HubSpot** acts as the backend database.

**The Stack I want to use:**

1. **Frontend:** GoHighLevel (WhatsApp Channel with AI enabled).

2. **Backend:** HubSpot CRM (Where all student data lives).

3. **Automation Bridge:**  **n8n** (Self-hosted/Cloud) instead of Zapier.

**The Logic I’m trying to build:**

1. **Trigger:** A student messages on WhatsApp (GHL). The AI detects a support issue (e.g., “Teacher Complaint”) and triggers a workflow.

2. **Webhook:** GHL sends data via Webhook to n8n.

3. **Action (n8n):**

**My Challenge:** I am new to n8n and looking for guidance on how to structure this flow correctly, specifically the **“Lookup & Associate”** part to ensure tickets don’t get created as “orphans”.

**Ask:** Does anyone have a similar n8n workflow template or screenshots they could share? Or is there an expert here who could help me set this up for a **friendly budget**?

Any advice or pointers would be greatly appreciated!

Thanks in advance.

---

<div class="post-metadata">

**Author:** ![Wouter\_Nigrini](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/wouter_nigrini/32/150261_2.png) [@Wouter\_Nigrini](https://community.n8n.io/u/Wouter_Nigrini)\
**Post date:** [December 9, 2025, 11:35am UTC](https://community.n8n.io/t/looking-for-advice-automation-workflow-gohighlevel-whatsapp-n8n-hubspot-tickets/233390/2 "2025-12-09T11:35:02Z")

</div>

Hi @Lougha007, I would be happy to help advise on your workflow. Can you share your existing workflow here in a code block so i can get an idea of how far you got, or do you want to handle this over a private call?

---

<div class="post-metadata">

**Author:** ![Lougha007](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/lougha007/32/79936_2.png) [@Lougha007](https://community.n8n.io/u/Lougha007)\
**Post date:** [December 9, 2025, 4:38pm UTC](https://community.n8n.io/t/looking-for-advice-automation-workflow-gohighlevel-whatsapp-n8n-hubspot-tickets/233390/3 "2025-12-09T16:38:34Z")

</div>

Thanks for your support!

I haven’t finalized the workflow code yet, but I have designed the exact **Logic Flow** I want to implement.

Here is the blueprint of what I am trying to build. I need help specifically with the **HubSpot Search & Association** step (Branching Logic) to ensure tickets are linked to the correct contact.

**The Workflow Logic:**

**1. Trigger:** Start with a **Webhook node (POST)** that receives a JSON payload (from my frontend app) containing: `contact_email`, `contact_phone`, and `message_body`.

**2. Preparation:** Clean the `contact_phone` (remove spaces/dashes) to ensure accurate searching.

**3. Logic Flow:**

- **Step A:** Search HubSpot for a Contact using the `phone` or `email`.

- **Step B (If Node):** Check “Does the HubSpot Contact ID exist?”

**4. Execution:** Merge both branches into a **HubSpot: Create Ticket** node.

- **Map** the `contactId` to associate the ticket with the student.

- **Subject:** “Support Request from [contact\_email]”

- **Description:** The incoming `message_body`.

- **Pipeline:** “New”.

**5. Notification:** Send a reply back to the user via WhatsApp confirming the Ticket ID.

Could you please advise on how to structure the **“Search → If/Else → Merge”** part in n8n to avoid duplicates?

---

<div class="post-metadata">

**Author:** ![Lougha007](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/lougha007/32/79936_2.png) [@Lougha007](https://community.n8n.io/u/Lougha007)\
**Post date:** [December 9, 2025, 4:40pm UTC](https://community.n8n.io/t/looking-for-advice-automation-workflow-gohighlevel-whatsapp-n8n-hubspot-tickets/233390/4 "2025-12-09T16:40:15Z")

</div>

![Screenshot 2025-12-09 at 17.39.17](https://europe1.discourse-cdn.com/n8n/original/3X/c/e/cef0d282a47e252f85cccf8eeca06f6279bc5b0c.png)

---

<div class="post-metadata">

**Author:** ![salmansolutions](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/salmansolutions/32/144083_2.png) [@salmansolutions](https://community.n8n.io/u/salmansolutions)\
**Post date:** [December 9, 2025, 5:23pm UTC](https://community.n8n.io/t/looking-for-advice-automation-workflow-gohighlevel-whatsapp-n8n-hubspot-tickets/233390/5 "2025-12-09T17:23:34Z")

</div>

This is fairly easy, since the Hubspot API is returning almost(!!) the same response after creating, or searching for an contact. The small but very relevant difference is that when searching for a contact, the id is called “id” and when creating a contact it’s called “vid”. Therefore I have added a simple “Rename Keys” Node:

---

<div class="post-metadata">

**Author:** ![Lougha007](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/lougha007/32/79936_2.png) [@Lougha007](https://community.n8n.io/u/Lougha007)\
**Post date:** [December 9, 2025, 9:26pm UTC](https://community.n8n.io/t/looking-for-advice-automation-workflow-gohighlevel-whatsapp-n8n-hubspot-tickets/233390/6 "2025-12-09T21:26:55Z")

</div>

* * *

Hi @Wouter_Nigrini and @SalmanSolutions,

Thank you both for the incredible support and the screenshots.

I tried to implement the “Rename Keys” solution and connect my HubSpot credentials, but I am still hitting some roadblocks. To be honest, as a non-technical person, I am finding the configuration a bit overwhelming, even though it might look simple to you experts.

**@Wouter_Nigrini** , you mentioned in your first reply that we could handle this over a **private call**.

**I would love to take you up on that offer.** I really need someone to walk me through the final setup (Credentials & Testing) via a screen share to get this running.

Please let me know how we can schedule this (I am happy to discuss your rates/fee for the time).

---

<div class="post-metadata">

**Author:** ![salmansolutions](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/salmansolutions/32/144083_2.png) [@salmansolutions](https://community.n8n.io/u/salmansolutions)\
**Post date:** [December 10, 2025, 3:36am UTC](https://community.n8n.io/t/looking-for-advice-automation-workflow-gohighlevel-whatsapp-n8n-hubspot-tickets/233390/7 "2025-12-10T03:36:56Z")

</div>

The general concept here is to reference the previous item in the “Create a Ticket” Node. This is done by {{ $json.id }}. This expression references the incoming item for that node, no matter over which connection its sent. As long as the incoming item has a id, it will be referenced correctly. This is why we don’t need a Merge node or anything else.

Btw..I did not post just a screenshot, but a workflow you could copy to your canvas and play around with 😉

---

<div class="post-metadata">

**Author:** ![achamm](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/achamm/32/143734_2.png) [@achamm](https://community.n8n.io/u/achamm)\
**Post date:** [December 30, 2025, 8:29pm UTC](https://community.n8n.io/t/looking-for-advice-automation-workflow-gohighlevel-whatsapp-n8n-hubspot-tickets/233390/8 "2025-12-30T20:29:49Z")

</div>

N8N for education is a pretty nice concept!
