Samtalssammanfattningar är värdefulla. Problemet är att de hamnar på fel ställe, publiceras för sent eller kopieras in två gånger. Då blir ”CRM-tidslinjen” en rörig berättelse som ingen litar på.
Den här automatiseringen för Chorus HubSpot notes träffar först och främst sales ops, helt ärligt. Men account managers och byråteam som kör kundsamtal märker det också, eftersom uppföljning står och faller med tydlig kontext. Utfallet är enkelt: varje ny Chorus-sammanfattning hamnar i rätt HubSpot-företagspost, en gång.
Du får se vad workflowet gör, hur dubbletter förhindras och vad du behöver för att köra det varje timme utan att passa det.
Så här fungerar automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: Chorus till HubSpot: samtalsnoteringar utan dubbletter
flowchart LR
subgraph sg0["Run every hour Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Chorus Engagement per la.."]
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Merge paginated engagements"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter items with empty meet..", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Search Company In HubSpot By.."]
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If company exists", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Search notes"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Engagements", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If note not exist", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Skip, if company not found", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Skip, if note already exists", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Note Payload"]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Create Note"]
n12@{ icon: "mdi:cog", form: "rounded", label: "Continue", pos: "b", h: 48 }
n13@{ icon: "mdi:play-circle", form: "rounded", label: "Run every hour", pos: "b", h: 48 }
n14@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n12 --> n6
n11 --> n12
n5 --> n7
n13 --> n0
n4 --> n5
n4 --> n8
n7 --> n10
n7 --> n9
n10 --> n11
n6 --> n3
n8 --> n6
n1 --> n2
n9 --> n6
n3 --> n4
n0 --> n1
n14 --> n0
n2 --> n6
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n13,n14 trigger
class n2,n4,n7 decision
class n0,n3,n5,n11 api
class n1,n10 code
classDef customIcon fill:none,stroke:none
class n0,n1,n3,n5,n10,n11 customIcon
Utmaningen: samtalsanteckningar som försvinner (eller dyker upp två gånger)
Om du använder Chorus för att fånga insikter från samtal har du redan råmaterialet för bättre uppföljning. Men att få in de sammanfattningarna i HubSpot är där det faller. Någon måste leta upp rätt företag, kopiera en sammanfattning, klistra in den som en anteckning, lägga till en länk och hoppas att de inte tog fel post. Missar du en dag hamnar du efter. Gör du det i stress loggar du dubbletter, vilket gör tidslinjen brusig och får reps att sluta läsa den.
Det här eskalerar snabbt. Så här ser det ut i praktiken i riktiga team.
- Reps klistrar in samtalssammanfattningar inkonsekvent, så viktiga detaljer blir aldrig sökbara i HubSpot.
- Dubbletter smyger sig in när två personer loggar samma samtal, eller när en sammanfattning läggs in igen efter att ett workflow körts om.
- Samtal utan sammanfattningar blir ändå ”loggade”, vilket ger platshållaranteckningar som slösar tid.
- När företagsnamnet inte matchar exakt hamnar anteckningar på fel post eller loggas inte alls.
Lösningen: timvis Chorus → HubSpot-synk av anteckningar (unik + matchad)
Det här workflowet körs enligt schema (varje timme) och kontrollerar Chorus efter nya engagemang från det senaste dygnet. Det hämtar alla resultatsidor, slår ihop dem till en strukturerad lista och tar bort allt som saknar en riktig mötessammanfattning. Därefter behandlar det varje engagemang ett i taget: det söker i HubSpot efter företaget med Chorus-kontonamnet och fortsätter bara om det finns en exakt matchning. Innan det skriver något söker det också bland befintliga HubSpot-anteckningar efter engagemangs-ID:t. Finns engagemanget redan hoppar det över. Är det nytt skapar det en korrekt formaterad HubSpot-anteckning med samtalsdatum, sammanfattning och en länk till inspelningen.
Flödet startar på den timvisa triggern (eller manuell körning för test). Chorus-data hämtas och avdubbletteras via en kontroll i HubSpot: ”finns detta redan?”. Till sist skapas en enda anteckning och kopplas till matchande företag, så att CRM-tidslinjen förblir felfri och pålitlig.
Vad som förändras: före vs. efter
| Detta tar bort | Effekten du märker |
|---|---|
|
|
Effekt i verkligheten
Säg att teamet kör 25 kundsamtal i veckan och du vill att varje samtal ska synas i HubSpot. Manuellt tar det ofta cirka 6 minuter att hitta rätt företag, klistra in sammanfattningen, lägga till länken och dubbelkolla dubbletter, alltså ungefär 2–3 timmar per vecka. Med det här workflowet är ”arbetet” i princip noll efter att det är uppsatt: Chorus kontrolleras varje timme, sammanfattningar filtreras och anteckningar skapas automatiskt. Du gör mest en snabb koll i tidslinjen och följer upp.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- ZoomInfo Chorus för samtalsengagemang och sammanfattningar
- HubSpot för att lagra anteckningar på företagsposter
- Chorus API-token (Settings → Personal Settings → API Access)
- HubSpot app-token (från din privata HubSpot-app)
Svårighetsgrad: Nybörjare. Du kopplar in credentials och testar sedan en manuell körning.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Workflowflödet
Timvis kontroll av nya Chorus-samtal. Workflowet körs varje timme (och stödjer även manuella körningar för test). Det begär engagemang från de senaste 24 timmarna, så att det kan ”komma ikapp” även om något har blivit fördröjt.
Rensa och förbered engagemangslistan. Chorus returnerar paginerade resultat, så workflowet slår ihop flera sidor till en lista. Sedan filtrerar det bort engagemang där mötessammanfattningen är tom, vilket förhindrar skräpanteckningar.
Matcha varje engagemang mot rätt HubSpot-företag. Varje engagemang behandlas individuellt. HubSpot genomsöks på företagsnamn med Chorus account_name, och om det inte finns en exakt matchning hoppar workflowet över engagemanget (inga gissningar).
Förhindra dubbletter och skriv sedan anteckningen. Innan något skapas söker workflowet i HubSpot efter en befintlig anteckning som innehåller engagemangs-ID:t. Hittas ingen byggs en formaterad anteckning (datum/tid, sammanfattningstext, inspelningslänk, engagemangs-ID) och läggs till på företagets tidslinje.
Du kan enkelt justera matchningslogiken för företag så att den använder en annan identifierare (som en domän) beroende på behov. Se den fullständiga implementationsguiden nedan för alternativ för anpassning.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera schematriggern
Konfigurera arbetsflödet så att det körs med ett fast timintervall, med en valfri manuell trigger för testning.
- Lägg till noden Hourly Trigger och ställ in Rule på
Interval → Hours. - Behåll noden Manual Start Trigger för ad hoc-körningar under konfigurering och felsökning.
- Koppla Hourly Trigger till Fetch Chorus Engagements enligt arbetsflödet.
- Koppla Manual Start Trigger till Fetch Chorus Engagements för att möjliggöra manuell testning.
Steg 2: Anslut Chorus och hämta engagements
Konfigurera Chorus API-anropet och pagineringen så att arbetsflödet kan hämta alla call engagements från det senaste dygnet.
- Öppna Fetch Chorus Engagements och ställ in URL till
https://chorus.ai/v3/engagements. - Ställ in Authentication till Generic Credential Type och Generic Auth Type till
httpHeaderAuth. - Autentiseringsuppgift krävs: Anslut era
httpHeaderAuth-uppgifter i Fetch Chorus Engagements. - Under Query Parameters, ställ in min_date till
{{ $now.minus(1, 'day').toUTC().toISO() }}. - Aktivera paginering och ställ in completeExpression till
{{ $response.body.engagements?.length === 0 }}med fortsättningsnyckeln{{ $response.body.continuation_key }}. - Koppla Fetch Chorus Engagements till Combine Paged Engagements.
15 och requestInterval på 250 för att undvika rate limiting.Steg 3: Filtrera och iterera engagements
Slå ihop paginerade resultat, filtrera bort tomma sammanfattningar och iterera ett engagement i taget.
- I Combine Paged Engagements, behåll den tillhandahållna JavaScript-koden för att slå ihop
$input.all()till en enda lista med engagements. - Öppna Filter Nonempty Summaries och bekräfta att villkoret använder
{{ $json.meeting_summary }}med operationen notEmpty. - Koppla Combine Paged Engagements → Filter Nonempty Summaries → Iterate Engagements.
- I Iterate Engagements, lämna standardinställningarna för batch så att varje engagement bearbetas sekventiellt.
Steg 4: Sök i HubSpot och styr med villkor
Hitta matchande företag i HubSpot, kontrollera om företaget finns och verifiera om en anteckning redan finns.
- Öppna Find HubSpot Company och ställ in URL till
https://api.hubapi.com/crm/v3/objects/companies/searchmed Method satt tillPOST. - Ställ in JSON Body till den angivna sök-payloaden och säkerställ att den använder
{{ $json.account_name }}för filtret på företagsnamn. - Autentiseringsuppgift krävs: Anslut era
hubspotAppToken-uppgifter i Find HubSpot Company. - I Company Exists Check, bekräfta att villkoret kontrollerar
{{ $json.results[0].id }}med operationen exists. - Koppla true-grenen från Company Exists Check till Lookup Existing Notes, och false-grenen till Skip When Company Missing → Iterate Engagements.
- Öppna Lookup Existing Notes och ställ in URL till
https://api.hubapi.com/crm/v3/objects/notes/searchmed JSON-body som refererar till{{ $('Iterate Engagements').item.json.engagement_id }}och{{ $json.results[0].id }}. - Autentiseringsuppgift krävs: Anslut era
hubspotAppToken-uppgifter i Lookup Existing Notes. - I Note Missing Check, bekräfta att villkoret kontrollerar
{{ $json.results }}med operationen empty. - Koppla false-grenen från Note Missing Check till Skip When Note Present → Iterate Engagements.
{{ $('Iterate Engagements').item.json.engagement_id }} som det är.Steg 5: Bygg och skapa HubSpot-anteckningen
Skapa en formaterad anteckningstext och skapa HubSpot-anteckningen när ingen befintlig anteckning hittas.
- Öppna Build Note Payload och behåll JavaScript-koden som bygger
hs_note_bodyochhs_timestampfrån engagement-data. - Verifiera att företagskopplingen använder
{{ $('Find HubSpot Company').first().json.results[0].id }}och associationstypen190. - Koppla Build Note Payload till Create HubSpot Note.
- I Create HubSpot Note, ställ in URL till
https://api.hubspot.com/crm/v3/objects/notesoch JSON Body till{{ $json }}. - Autentiseringsuppgift krävs: Anslut era
hubspotAppToken-uppgifter i Create HubSpot Note. - Koppla Create HubSpot Note till Continue Loop, och sedan tillbaka till Iterate Engagements för att bearbeta nästa objekt.
Steg 6: Testa och aktivera ert arbetsflöde
Validera hela dataflödet och slå sedan på schemat för synkning i produktion.
- Klicka på Execute Workflow i editorn och använd Manual Start Trigger för att köra ett test.
- Bekräfta att Fetch Chorus Engagements returnerar nyliga samtal och att Filter Nonempty Summaries endast skickar vidare objekt med
meeting_summary. - Verifiera att Find HubSpot Company returnerar ett företag och att Lookup Existing Notes returnerar tomma resultat för ett nytt engagement.
- Kontrollera i HubSpot att Create HubSpot Note skapar en anteckning med den formaterade sammanfattningen och engagement-ID.
- När ni är nöjda, växla arbetsflödet till Active så att Hourly Trigger körs automatiskt.
Se upp med
- HubSpot app-tokens kan tappa åtkomst om scopes ändras. Om anteckningar slutar skapas, kontrollera behörigheterna i din privata app och välj sedan om HubSpot-credentials i noderna ”Search notes” och ”Create Note”.
- Om du processar många samtal kan Chorus-paginering ta längre tid än väntat. Workflowet hanterar redan upp till cirka 15 paginerade anrop, men du kan behöva justera fönstret ”last 24h” eller schemat om ni har hög volym.
- Exakt matchning på företagsnamn är medvetet strikt, men kan överraska. Om ”Acme Inc” i Chorus är ”Acme, Inc.” i HubSpot kommer workflowet att hoppa över tills du normaliserar namn eller justerar matchningslogiken.
Vanliga frågor
Vanligtvis cirka 30 minuter när du har båda tokens.
Ja. Du klistrar i huvudsak in API-tokens, kopplar credentials och kör ett manuellt test för att bekräfta att anteckningar skapas.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in åtkomst till Chorus och HubSpot (API-tokens ingår i många planer).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Det kan du. Den vanligaste ändringen är matchningslogiken i delen ”Search Company In HubSpot By Name” i workflowet, så att den använder en domän eller ett internt ID i stället för ett exakt namn. Team brukar också justera logiken i ”Build Note Payload” för att ta med rep-namn, affärsnamn eller ett tightare sammanfattningsformat. Om du behöver en annan strategi för avdubblettering kan du byta kontrollen ”Search notes” så att den letar efter inspelnings-URL:en eller samtalets tidsstämpel i stället för engagemangs-ID:t.
Oftast handlar det om token eller scopes i din privata HubSpot-app.
På n8n Cloud kan du köra den varje timme utan problem för de flesta små team, och den praktiska gränsen är oftast din tilldelning av körningar. Om du kör egen hosting finns ingen körningsgräns från n8n, men du begränsas fortfarande av din server och API:ernas rate limits. Workflowet processar engagemang ett i taget, så större backfills kan ta tid. Vid stora volymer: utöka schemaläggningsfönstret försiktigt och övervaka körhistoriken.
Ofta, ja. Det här flödet behöver pagineringshantering, loopar, villkorslogik och en dedupe-sökning innan en anteckning skapas, och de delarna blir dyra eller klumpiga i många Zapier-liknande upplägg. n8n ger också ett bra alternativ för egen hosting, vilket är viktigt om du synkar varje timme och volymen växer. Zapier eller Make kan fortfarande fungera om du bara har en handfull samtal och inte bryr dig om strikt avdubblettering. Om du är osäker, prata med en automationsexpert så tar vi fram den enklaste vägen för ditt team.
När detta är live hålls din HubSpot-tidslinje uppdaterad utan att någon behöver komma ihåg att göra det. Workflowet tar hand om den repetitiva loggningen så att teamet kan fokusera på uppföljningen som faktiskt driver affärer framåt.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.