Din QA-process för support går oftast sönder på tråkiga sätt. En konversation stängs i Intercom, någon “ska” granska den senare, och sedan blir det aldrig av. Eller så blir det av… men anteckningarna hamnar i ett dokument, poängen blir inkonsekventa och ingen litar på trenderna.
Supportansvariga märker det när coachning blir gissningslek. QA-chefer får hantera kalkylbladskaoset. Och om du driver en byrå eller ett litet team har du båda rollerna, vilket gör den här Intercom QA-automationen ännu mer användbar.
Det här arbetsflödet poängsätter varje stängd Intercom-konversation med AI, loggar korrekt formaterade QA-resultat i Google Sheets och lägger till coachningsliknande feedback när poängen sjunker. Du får se hur det fungerar, vad du behöver och hur du anpassar det efter teamets regler.
Så fungerar den här automatiseringen
Här är hela arbetsflödet du kommer att sätta upp:
n8n Workflow Template: Intercom + Google Sheets: QA-poäng loggas rensat
flowchart LR
subgraph sg0["AI Agent 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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP Request"]
n2@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n3@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", 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/code.svg' width='40' height='40' /></div><br/>Code"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out1", pos: "b", h: 48 }
n7["<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/>Code1"]
n8["<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/>Code2"]
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out2", 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/>Code3"]
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/merge.svg' width='40' height='40' /></div><br/>Merge"]
n12@{ icon: "mdi:robot", form: "rounded", label: "AI Agent1", pos: "b", h: 48 }
n13@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n14["<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/merge.svg' width='40' height='40' /></div><br/>Merge1"]
n15["<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/>Code5"]
n16@{ icon: "mdi:database", form: "rounded", label: "Append row in sheet", pos: "b", h: 48 }
n17@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If1", pos: "b", h: 48 }
n19@{ icon: "mdi:robot", form: "rounded", label: "AI Agent2", pos: "b", h: 48 }
n20@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model2", pos: "b", h: 48 }
n17 --> n9
n17 --> n4
n18 --> n19
n5 --> n6
n7 --> n11
n7 --> n12
n8 --> n14
n10 --> n11
n15 --> n14
n11 --> n2
n14 --> n16
n14 --> n18
n0 --> n1
n2 --> n8
n12 --> n15
n4 --> n5
n6 --> n7
n9 --> n10
n1 --> n17
n3 -.-> n2
n13 -.-> n12
n20 -.-> n19
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 n2,n12,n19 ai
class n3,n13,n20 aiModel
class n17,n18 decision
class n16 database
class n0,n1 api
class n5,n7,n8,n10,n15 code
classDef customIcon fill:none,stroke:none
class n0,n1,n5,n7,n8,n10,n11,n14,n15 customIcon
Varför det här spelar roll: QA faller isär efter att ärendet stängs
De flesta team misslyckas inte med kundsupport för att agenterna inte bryr sig. De misslyckas för att QA-processen är skör. Granskningar sker “när det finns tid”, vilket betyder att de mest högljudda problemen får uppmärksamhet och de tysta mönstren inte gör det. Sedan frågar någon: “Har vår ton blivit sämre?” eller “Är vi långsamma på brådskande ärenden?” och då sitter du fast med att stickprova ett fåtal tickets, diskutera poängsättning och gräva i Intercom-trådar för att hitta sammanhang. Det tar energi. Och ärligt talat gör det att coachning känns personlig när den borde vara systematisk.
Friktionen byggs på. Här är var det brukar fallera.
- Granskare lägger cirka 10 minuter per konversation bara på att återskapa vad som hände från utspridda kommentarer och interna anteckningar.
- Två personer poängsätter samma ticket olika, så trender blir diskussioner i stället för beslut.
- Interaktioner med låg kvalitet triggar inte coachning tillräckligt snabbt, så samma misstag upprepas i veckor.
- Rapportering är alltid sen eftersom datainmatningen är manuell, vilket gör att du inte kan lita på den från vecka till vecka.
Vad du bygger: Intercom QA-poäng loggade i Google Sheets
Den här automatiseringen startar i samma ögonblick som en Intercom-konversation markeras som stängd. En webhook fångar händelsen, sedan hämtar arbetsflödet hela konversationen från Intercom API så att den inte bedömer utifrån ofullständig data. Därefter strukturerar den om konversationen till ett läsbart transkript (inklusive första meddelandet och relevanta kommentardelar), och en AI-agent utvärderar interaktionen utifrån praktiska QA-dimensioner som svarstid, tydlighet, ton och beteende, hantering av brådska samt ägarskap/lösning. Poängen parsas till ett strukturerat format och skrivs in i Google Sheets som en korrekt formaterad rad du kan filtrera, visualisera och dela. Om poängen är låg genererar en andra AI-agent coachningsliknande feedback så att du kan ge konkret vägledning i stället för vaga “gör bättre”-anteckningar.
Arbetsflödet börjar med Intercoms stängningshändelse och gör sedan en stökig tråd till ett konsekvent transkript. AI skapar QA-scorecardet och arbetsflödet loggar det i Sheets. Om betyget är 3 eller lägre skapar det även coachningsfeedback så att nästa 1:1 får verkligt innehåll.
Det här bygger du
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att teamet stänger cirka 40 Intercom-konversationer per dag och att du QA-granskar 15 av dem. Manuellt, med ungefär 10 minuter för att läsa, poängsätta och logga varje en, blir det cirka 2,5 timmar granskartid dagligen (och det är ändå inte konsekvent). Med det här arbetsflödet triggas allt direkt och AI-poängsättningen körs i bakgrunden; du lägger vanligtvis omkring en minut per ticket på en snabb rimlighetskontroll i Google Sheets. Det är runt 2 timmar tillbaka en vanlig dag, plus mycket renare trendrapportering.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Intercom för att skicka webhooks när konversationer stängs
- Google Sheets för att lagra QA-poäng och anteckningar
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard)
Svårighetsgrad: Medel. Du kopplar in credentials, sätter en webhook i Intercom och granskar några fält i Google Sheets.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
En Intercom-konversation stängs. Intercom skickar en conversation.admin.closed-händelse till din n8n-webhook, som fungerar som en “startknapp” för QA.
Arbetsflödet hämtar och förbereder underlaget. Med en HTTP-förfrågan till Intercom API hämtar det hela konversationen, filtrerar meddelandedelar och sätter ihop ett korrekt formaterat transkript så att AI:n inte behöver tolka en rörig tråd.
AI poängsätter konversationen och parsar resultatet. En AI-agent (driven av en OpenAI-chatmodell) utvärderar svarstid, tydlighet, ton, hantering av brådska samt ägarskap/lösning. Kodsteg gör om modellens output till konsekventa fält som du kan lagra och analysera.
Poängen hamnar i Google Sheets, och låga poäng får extra fokus. Arbetsflödet lägger till en ny rad i ditt ark och kontrollerar sedan betyget. Om det är 3 eller lägre genererar det coachningsliknande feedback som du kan använda i granskningar eller uppföljningar (och kan vid behov skicka vidare till Gmail eller Telegram om du vill ha notiser).
Du kan enkelt ändra poängkriterierna så att de matchar din QA-rubric, eller byta destination från Google Sheets till ett annat system. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera webhook-triggern
Det här arbetsflödet startar när Intercom skickar en konversationshändelse till er webhook-endpoint.
- Lägg till och öppna Incoming Webhook Trigger.
- Ställ in HTTP Method på
POST. - Ställ in Path på
a716761a-b062-4f93-9734-04fdc83e9a9a. - Kopiera webhook-URL:en för produktion och klistra in den i era Intercom-webhookinställningar.
Steg 2: anslut Intercom och filtrera konversationstyper
Det här avsnittet hämtar hela konversationen och filtrerar bort oönskade typer innan bearbetning.
- Öppna Intercom API Fetch och ställ in URL på
=https://api.intercom.io/conversations/{{ $json.body.data.item.id }}?display_as=plaintext'. - Inloggningsuppgifter krävs: anslut era intercomApi-inloggningsuppgifter.
- Öppna Conversation Type Check och bekräfta att villkoren är inställda för att filtrera
Spam/PromotionalochOthermed{{ $json.custom_attributes.Type }}.
custom_attributes.Type kan filtret oväntat routa allt via grenen “true”.Steg 3: bygg konversationstranskriptet
Det här steget expanderar Intercom-payloaden och omvandlar kommentarsdelar till ett rent transkript.
- Öppna Extract Source Fields och ställ in Field To Split Out på
source.body, source.delivered_as, source.author.name, source.author.email,. - Öppna Format Initial Message och behåll koden som matar ut
conversationinitiatiedbaserat påsource.bodyoch uppgifter om författaren. - Öppna Expand Parts List och ställ in Field To Split Out på
conversation_parts. - Granska koden i Filter Comment Parts för att säkerställa att den endast matar ut objekt där
part_typeär lika medcomment. - Öppna Extract Comment Fields och ställ in Field To Split Out på
body, created_at, author.type, author.name, author.email. - Öppna Assemble Transcript och behåll logiken för transkriptformatering som matar ut en enda
conversation-sträng.
Steg 4: konfigurera AI-poängsättning och meddelanderäkning
Det här arbetsflödet använder två AI-spår: ett för QA-poängsättning och ett för meddelanderäkning, och slår sedan ihop resultaten.
- Öppna Combine Conversations och bekräfta att Mode är
combinemed Combine By inställt påcombineByPosition. - Öppna QA Review Agent och ställ in Text på
{{ $json }}. - Inloggningsuppgifter krävs: anslut era openAiApi-inloggningsuppgifter i OpenAI Chat Engine. OpenAI Chat Engine är ansluten som språkmodell för QA Review Agent (inloggningsuppgifter läggs till i OpenAI Chat Engine, inte i agenten).
- Öppna Message Count Agent och ställ in Text på
{{ $json.conversation }}. - Inloggningsuppgifter krävs: anslut era openAiApi-inloggningsuppgifter i OpenAI Mini Chat. OpenAI Mini Chat är ansluten som språkmodell för Message Count Agent.
- Öppna Parse QA Scores och behåll JSON-parse-logiken för
$json["output"]. - Öppna Parse Count Output och behåll koden som tar bort markdown och parsar JSON.
- Öppna Merge Scores & Counts och bekräfta att Mode är
combinemed Combine By inställt påcombineByPosition.
Assemble Transcript skickar utdata till både Combine Conversations och Message Count Agent parallellt.
Steg 5: konfigurera utdata till Google Sheets och coaching vid låg poäng
Det här steget skriver QA-resultat till Google Sheets och triggar coachande feedback vid låga poäng.
- Öppna Append Sheet Row och ställ in Operation på
append. - Ställ in Document ID på
[YOUR_ID]och Sheet Name på[YOUR_ID]. - Mappa kolumner med de befintliga uttrycken, till exempel
{{ $json["Overall Score"] }}och{{ $item(0).$node["Intercom API Fetch"].json["id"] }}. - Inloggningsuppgifter krävs: anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Append Sheet Row.
- Öppna Low Score Filter och bekräfta att villkoret är
{{ $json['Overall Score'] }}lte3. - Öppna Coaching Feedback Agent och säkerställ att Text konkatenerar
{{ $('Combine Conversations').item.json.conversationinitiatied }}och{{ $('Combine Conversations').item.json.conversation }}. - Inloggningsuppgifter krävs: anslut era openAiApi-inloggningsuppgifter i OpenAI Latest Chat. OpenAI Latest Chat är ansluten som språkmodell för Coaching Feedback Agent.
Merge Scores & Counts skickar utdata till både Append Sheet Row och Low Score Filter parallellt.
Overall Score eller Response time), kommer append att misslyckas eller skriva tomma värden.Steg 6: testa och aktivera ert arbetsflöde
Verifiera arbetsflödet från början till slut innan ni slår på det för produktionstrafik.
- Klicka på Execute Workflow och skicka en exempel-payload från Intercom till Incoming Webhook Trigger.
- Bekräfta att Intercom API Fetch returnerar en fullständig konversation och att Conversation Type Check routar den till bearbetning (inte filtrerar bort den).
- Verifiera att QA Review Agent och Message Count Agent båda returnerar JSON-utdata som parsas korrekt i Parse QA Scores och Parse Count Output.
- Kontrollera att Append Sheet Row skriver en ny rad med förväntade värden och att Low Score Filter triggar Coaching Feedback Agent för poäng ≤ 3.
- När allt ser korrekt ut, slå om arbetsflödet till Active för användning i produktion.
Tips för felsökning
- Intercom-credentials och tokens kan ha begränsad scope. Om noden Intercom API Fetch börjar fallera, kontrollera token-behörigheter i Intercom och bekräfta att endpointen fortfarande tillåter läsning av konversationsdelar.
- Om du får tomma transkript är det oftast filterlogiken som är för aggressiv. Kontrollera stegen “Filter Comment Parts” och transkript-ihopsättning i n8n igen, och testa med några olika konversationstyper.
- OpenAI kan returnera lite olika formatering över tid. Om steget Parse QA Scores skapar fel, skärp prompten till AI-agenten så att outputen blir förutsägbar, och kör sedan om några exempelärenden för att bekräfta att fälten matchar dina kolumner i arket.
Snabba svar
Cirka 30 minuter om din Intercom-webhook och ditt ark är klara.
Nej. Du kopplar främst ihop Intercom, OpenAI och Google Sheets och testar sedan med några stängda konversationer.
Ja. n8n har ett gratisalternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna in kostnader för OpenAI API, som vanligtvis är några cent per poängsatt konversation beroende på transkriptets längd.
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 klarar n8n bra. Egen hosting ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Ja, och det bör du förmodligen. De flesta team anpassar prompten till QA Review Agent så att den matchar deras rubric (till exempel att vikta ton tyngre för vissa köer). Du kan också justera tröskeln i Low Score Filter, lägga till en spam-/reklamkontroll direkt efter Conversation Type Check eller byta ut Google Sheets mot en annan destination genom att ersätta steget Append Sheet Row.
Oftast beror det på en utgången eller felaktigt scoped Intercom-token. Skapa om credentialn, bekräfta att den kan läsa konversationsdetaljer och testa HTTP-förfrågan igen med ett känt konversations-ID. Om det bara fallerar ibland kan du slå i rate limits när många konversationer stängs samtidigt, så att lägga in en kort väntan eller kö kan stabilisera det.
Med n8n Cloud Starter kan du hantera tusentals körningar per månad, och vid egen hosting försvinner körningsbegränsningen. I praktiken är den begränsande faktorn OpenAI-genomströmning och Intercoms rate limits, men de flesta små team kan poängsätta varje stängd konversation utan problem.
Ofta, ja. Det här arbetsflödet gör mer än att flytta fält; det hämtar full Intercom-data, sätter ihop ett transkript, kör en AI-utvärdering i flera steg, parsar strukturerade poäng och genererar sedan coachningsfeedback villkorligt. I Zapier eller Make blir det ofta en lång kedja av sköra steg, och du märker det när output varierar eller när du behöver förgreningar. n8n ger dig dessutom ett alternativ för egen hosting, vilket är praktiskt om du poängsätter många tickets. Om du bara behöver “logga stängda tickets i ett ark” kan Zapier eller Make vara enklare. Prata med en automationsexpert om du vill ha en snabb rekommendation.
När det här väl rullar blir QA ett stabilt system i stället för en veckovis panikinsats. Arbetsflödet tar hand om den repetitiva poängsättningen och loggningen så att du kan fokusera på coachning och att förbättra den faktiska kundupplevelsen.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.