🎯 Why this Module Matters
In Module 3, you learned how to push Sortlist opportunities into HubSpot. That’s good for a start.
But here’s the truth:
👉 If you don’t handle duplicates, associations, and sync rules, your CRM will get messy fast.
👉 A messy CRM = missed follow-ups, confused sales reps, and wasted time.
In this module, we’ll:
Stop duplicates before they happen.
Keep your Deals, Companies, and Contacts perfectly linked.
Add smart syncing logic so your team works clean, fast, and confident.
⚡ Two Ways to Integrate HubSpot with Sortlist:
1. The Fast & Easy Way — Use the Template
Want speed? Use our ready-to-go template:
👉 Zapier Template Link
It’s quick, efficient, and gets you live in minutes. Perfect if you already know Zapier and how automations work.
2. The Guided Way — Step-by-Step Tutorial :
Prefer to understand how it all works? Follow the tutorial in this module. You’ll see exactly how to:
Set up the trigger (Sortlist → Opportunity Application Sent).
Handle data payloads (project, company, contact).
Build clean sync rules that scale.
This is the best path if you’re new to Zapier or if you want flexibility later (e.g., changing the workflow, adding conditions, or expanding your automation).
💡 Our Recommendation:
If you’re comfortable with Zapier, go with the template and save time.
If not, take the tutorial route — you’ll learn once, and adapt forever.
The Guided way:
🛠 Step 1 — Trigger Setup (Sortlist → Opportunity Application Sent)
In Zapier, choose Sortlist (App).
Event: Opportunity Application Sent.
Connect your Sortlist account.
Test trigger → get full payload (project, company, contact).
🛠 Step 2 — Find Deal
If you remember from Module 3, we already created a Deal from the Sortlist Opportunity Applied trigger. This means we didn’t yet have all the data attached to the Deal, Contact, and Company in our CRM. At this stage, the contact details and company details are no longer hidden — you’ve already sent your application to the client. The buyer is now qualified and should appear in your Sortlist Opportunity stage: Introduction Sent.
Note: In Zapier, the Find Deal action in HubSpot searches for an existing deal and, optionally, creates one if none is found. This is super useful: if you already set up a Zap earlier, it will enrich the existing deal in HubSpot with the newly unlocked data. If no deal exists yet, Zapier will automatically create a new one by default 😉.
Action: Hubspot -> Find Deal.
First search property name: Deal information: Sortlist Opportunity ID
(On Hubspot)First Search property value: Sortlist_Opportunity.ID
(From Sortlist previous trigger see below)
Ensure to check "Create Hubspot Deal if it doesn't exist yet?"

Map :
Name*= Sortlist.Title
Deal Pipeline*= Deal Pipeline (is the default one, you can for sure customize it if you would like ;)
Deal Stage* = Qualified To Buy (now you have all the contact details, companies details so you have move one step further in your sales funnel)
Deal Revenue = Amount : Sortlist.BudgetMax
Deal information = Create Date: Sortlist.Applied_at
Deal Type = New Business
Deal information: Deal description = Sortlist.Briefing Description
Deal information: Sortlist Opportunity ID= Sortlist.ID
Deal information: Sortlist Opportunity URL = Sortlist.Opportunity_Link

If you don't find Sortlist Opportunity ID & URL you will need to create them in your CRM. We looked together at how to create a custom property on HubSpot Deals during Module 3 to make sure you don’t lose track of your Sortlist Opportunity in your CRM. If you don’t remember, go back to Module 3 here.
You can test, and boom 💥 , Zap Data was found = True. This means that HubSpot has found the Sortlist Opportunity attached to the ID and will enrich it with the new data found.
⚠️ Best practice
Map only the fields you trust (e.g., always email, phone, job title).
Use Zapier Formatter + Filter if you want to avoid overwriting certain fields (e.g., don’t replace a manually verified phone number with a different one unless you’re sure).
You can also add a custom property like “Source = Sortlist” in HubSpot, so your team knows where enrichment came from.
🛠 Step 3 — Contact Sync (Find Contact)
Now, let's get the contact(s) attached to our Sortlist Opportunity Sync in Hubspot.
Action: HubSpot → Find Contact.
Map:
Email = Sortlist.Contact.Email (primary key)
First Name = Sortlist.Contact.FirstName (optional)
Last Name = Sortlist.Contact.LastName (optional)
Phone = Sortlist.Contact.Phone (optional)
LinkedIn = Sortlist.Contact.LinkedIn (optional)
Why: Ensures you never have duplicate contacts. HubSpot checks existing records first.
Ensure to check "Create Hubspot Contact if it doesn't exist yet?"
Run the test: we can see that the Contact was not found in HubSpot, as it shows
Zap_search_success_on_miss: False, which is normal since we never send any contact data to our HubSpot, and this is a new business opportunity.Therefore, the action is creating the contact in HubSpot. "Oufti, it works 😆 !"
🛠 Step 3 — Company Sync (Find Company)
As you can imagine, we now just need to get the Company object. We will perform a similar action as we did for the Contact, but using a different key.
Action: HubSpot → Find Company.
Map:
Company Domain = Sortlist.Company.Website (primary key).
Company Name = Sortlist.Company.Name (optional)
Best practice: Use the domain and company website as the main matching element. If you also add the company name as a second key, you can differentiate subsidiaries under the same domain (e.g., Nike France vs. Nike Germany).
Why: Prevents duplicate companies in your database.
Ensure to check "Create Hubspot Company if it doesn't exist yet?"
🛠 Step 4 — Associations
Now the funny part: "ASSOCIATIONS" who say that building integrations is not fun 🤣.
Before diving into it, I advise you to watch the following video by Terric that explains the concept of Objects in HubSpot:
https://www.youtube.com/watch?v=uEXpl0AOJJM&t=201s
So if you are already familiar with the concept of Objects -> let's do it!
Action: HubSpot → Create Associations.
We would like to associate the deal with Contact & with company, so you will have a clean Hubspot environment enriched with all the Sortlist Opportunity data properly.
We will therefore start with two associations :
(1) Deal to Company:
(2) Deal to Contact(s)
Terrific has done a full tutorial on how to use Associations on Hubspot feel free to check it out ;)
Associate the Deal with:
Deal to Company:
The ID of the object being associated can be found in HubSpot under Find Deal → ID of the deal.
Pick two association types, as this is what we want to start with.
Next, select the type of object, which in HubSpot is "deal".
The object our deal will be associated with here is company.
Therefore, the relation of the association is deal_to_company. Pretty straightforward, huh? 😉
There is a slightly tricky UX issue in Zapier: when you want to associate your second object (in this case, the Company object from HubSpot), you need to select "Custom" in order to retrieve the ID of your Company object in HubSpot.
Now, second association Deal to Contacts: is exactly the same process, you should end up with similar structure.
Time for true, let's test it out ⚡⚡!
✅ No errors! We can see the Deal-to-Company and Deal-to-Contact associations created. It works! 🎉
Why: This makes sure each opportunity lives once in your CRM, and is always linked to the right contact & company.
🛠 Step 5 — Last but not least...
You will tell us, ... Thibaut, Michael, and what about the Associations between the Contact & Companies?
Yes, you are right, doing a last Association action will enable us to triangulate correctly our Hubspot environment.
You can simply create a new Association Action on Zapier, your workflow would look like this now.
With similar logic as below:
Et voilà — test, publish, and you are DONE!!! 🎉
PS: Or maybe not yet… because I’m sure you’re starting to enjoy integrating Sortlist with your CRM and are looking to go even further—adding more data points, improving mappings, and making the flow even better. You might want to bring in more data from Sortlist, adapt the formatting to match your CRM environment, and optimize along the way.
And of course, you may want to automate more steps to ensure perfect synchronization between your HubSpot Deals pipeline and the Sortlist pipeline (and vice versa).
If you have great ideas but feel limited by the current integrations, reach out to us at innovation@sortlist.com. We’ll be more than happy to help you with your challenges!
💡 Step 6 — Sync Rules Like a Pro
Here’s where pros separate themselves from beginners:
Rule 1: Unique IDs matter.
Always use Sortlist Opportunity ID as the primary key for deals.Rule 2: Keep associations alive.
Every deal must be linked to a contact and a company. Otherwise, sales follow-ups fall into a black hole.Rule 3: Enrich with URL links.
Add Sortlist Opportunity URL to deals → one click back to Sortlist for full project details.Rule 4: Automate tasks.
Optional: Create a HubSpot Task like “Follow up with [Contact Name] on Sortlist deal”. Due in 24h.
🧪 Step 7 — Test Like a Pro
Apply to a test Sortlist opportunity.
Watch Zapier fire → check HubSpot.
Confirm:
No duplicates created.
Deal, Contact, and Company linked.
Custom fields (Opportunity ID + URL) visible in Deal view.
🎉 Wrap-Up
Congrats — you now have a professional-grade CRM sync between Sortlist and HubSpot.
Your sales team:
Sees clean Deals with no duplicates.
Clicks straight back to Sortlist in one click.
Always knows who to call, which company they belong to, and what the opportunity is worth.
🔮 What’s Next?
In Module 5: Your Sales Advanced Guru Stack, we’ll take things further.
You’ll see how to leverage AI & LLMs to enrich your SDR & AE CRM environment — bringing context, insights, and automation right where your sales team works.
We’ll cover how to automate smart workflows: nurturing leads, prioritizing high-budget deals, and auto-assigning opportunities to the right salespeople — so your team can focus on closing.























