Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Telegram + Google Sheets: enkätsvar loggas strukturerat

Rickard Andersson Partner, Nodenordic.se

Din enkät-“process” ser förmodligen ut så här: svar utspridda i Telegram-trådar, någon som kopierar in dem i ett kalkylark senare och en gnagande känsla av att du missar de bästa insikterna för att du har bråttom.

Marknadschefer som försöker validera budskap känner av det först. En produktägare som kör nöjdhetskontroller fastnar i att strukturera data. Till och med en liten byrå som samlar in kundfeedback går in i samma vägg. Den här automatiseringen för loggning av Telegram-enkäter förvandlar chattsvar till felfria, analysklara rader i Google Sheets.

Du får se hur arbetsflödet körs, vad det fångar (inklusive AI-uppföljningar) och vad du behöver för att få det att fungera utan att förvandla veckan till ett gör-det-själv-automationsprojekt.

Så fungerar automatiseringen

Hela n8n-arbetsflödet, från trigger till slutligt resultat:

n8n Workflow Template: Telegram + Google Sheets: enkätsvar loggas strukturerat

Problemet: enkätsvar blir röriga snabbt

Telegram är toppen för att få ärlig feedback. Det är uselt för att omvandla den feedbacken till något du faktiskt kan analysera. Folk svarar i fel ordning, hoppar över frågor och lägger till kontext som inte passar ditt prydliga flervalsformat. Sedan hamnar du (eller någon i teamet) med att läsa igenom chattloggar, gissa vad varje svar syftade på och manuellt klistra in “det viktiga” i ett ark. Ärligt talat är kopieringen inte det värsta. Det är de tappade nyanserna och den inkonsekventa strukturen som gör uppföljning och rapportering till ett huvudbry.

Det växer snabbt. Här är där det fallerar i verkligheten:

  • Svar landar i chatttrådar utan konsekvent format, så sortering och filtrering blir gissningslek.
  • Någon måste manuellt matcha varje svar till en fråga, och det är så misstag smyger sig in.
  • Uppföljningsfrågor sker oftast ad hoc, så de bästa insikterna fångas aldrig i din dataset.
  • När datan väl är felfri har tillfället att agera redan passerat.

Lösningen: en Telegram-enkät som loggar sig själv

Det här arbetsflödet förvandlar en Telegram-chattbotkonversation till en strukturerad enkätpipeline. En användare startar enkäten med ett enkelt kommando (som “/next”), och n8n hämtar dina enkätfrågor direkt från Google Sheets så att du inte hårdkodar något. När varje svar kommer in kontrollerar arbetsflödet sessionsstatus (så det vet vilken fråga personen är på) och skriver svaret tillbaka till rätt kolumn i ditt ark. Sedan gör det något som de flesta “chatt-enkät”-upplägg inte klarar särskilt bra: det använder en AI-agent för att ställa smarta uppföljningsfrågor när svaret förtjänar det. Slutresultatet är ett kalkylark du kan filtrera, söka i och analysera utan att lägga fredagskvällen på att städa upp chattloggar.

Arbetsflödet startar i Telegram, men sanningskällan ligger i Google Sheets. Redis håller konversationsstatus så att respondenter kan pausa och fortsätta utan att logiken går sönder. När klassificeraren flaggar ett svar som “behöver mer detaljer” genererar OpenAI en kort, träffsäker uppföljning och minikonversationen loggas tillsammans med originalsvaret.

Vad du får: automatisering kontra resultat

Exempel: så här ser det ut

Säg att du kör en nöjdhetsenkät med 6 frågor och samlar in 40 svar efter en lansering. Manuellt tar även “snabb” hantering kanske 5 minuter per person för att kopiera svar, fixa formatering och märka vilken fråga de menade, vilket är cirka 3 timmar. Med det här arbetsflödet svarar respondenter i Telegram och arket fyller i sig självt i realtid. Du lägger fortfarande tid på att läsa insikter, men admin-delen går i princip ner till noll, och AI-uppföljningarna plockar ofta fram detaljer du aldrig skulle få från ett stelt formulär.

Det här behöver du

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
  • Telegram för att köra enkät-chatboten.
  • Google Sheets för att lagra frågor och enkätsvar.
  • Redis för chattstatus och konversationsminne.
  • OpenAI API-nyckel (hämta den i din OpenAI-dashboard).

Kunskapsnivå: Medel. Du kopplar konton, anger ett Sheet ID och verifierar några uppgifter samt behörigheter.

Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15 minuters konsultation).

Så fungerar det

Ett Telegram-meddelande triggar arbetsflödet. När någon interagerar med din bot (och använder kommandot “/next” för att börja) startar eller återupptar n8n deras enkätsession.

Sessionsstatus laddas så att boten vet “var du slutade”. Redis lagrar deltagarens aktuella frågeindex och chatthistorik, vilket betyder att folk kan svara naturligt utan att enkäten tappar tråden.

Frågor kommer från Google Sheets, inte från hårdkodad text. Arbetsflödet läser arkets kolumner som din frågelista, ställer dem i ordning och skapar eller uppdaterar en deltagarrad när svaren kommer in.

AI avgör när det är värt att gräva djupare. En klassificerare kontrollerar varje svar för att se om en uppföljning skulle ge meningsfull insikt. Om ja ställer AI-agenten en eller två korta frågor och loggar sedan den minikonversationen tillbaka i samma Google Sheet.

Du kan enkelt justera enkätfrågorna och uppföljningsstilen så att det matchar er tonalitet och era forskningsmål. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementation

Steg 1: Konfigurera Telegram-triggern

Konfigurera arbetsflödet så att det lyssnar på inkommande Telegram-meddelanden och startar en enkätsession.

  1. Lägg till och konfigurera Telegram Entry Trigger med Updates inställt på message.
  2. Autentisering krävs: Anslut era telegramApi-autentiseringsuppgifter till Telegram Entry Trigger.
  3. Bekräfta att körflödet startar med Telegram Entry TriggerAssign Survey Variables.

Steg 2: Anslut Google Sheets

Definiera enkätmetadata och koppla alla Google Sheets-operationer som läser kolumner, slår upp deltagare och skriver svar.

  1. I Assign Survey Variables ställer ni in title till Product Satisfaction Survey, gsheetId till [YOUR_ID] och cacheKey till =survey_user_{{ $json.sessionId }}.
  2. I Retrieve Sheet Columns ställer ni in Document ID till {{ $('Assign Survey Variables').first().json.gsheetId }} och Sheet Name till Sheet1.
  3. I Lookup Participant Record ställer ni in Lookup Value till {{ $('Telegram Entry Trigger').first().json.message.from.id }} och Document ID till {{ $('Assign Survey Variables').first().json.gsheetId }}.
  4. I Create Session Record och Upsert Participant Row behåller ni Operation som appendOrUpdate och mappar ID till {{ $('Telegram Entry Trigger').first().json.message.from.id }}.
  5. Autentisering krävs: Anslut era googleSheetsOAuth2Api-autentiseringsuppgifter till alla Google Sheets-noder (inklusive Retrieve Sheet Columns, Lookup Participant Record, Create Session Record, Upsert Participant Row, Write Interim Answer och Write Final Answer).

⚠️ Vanlig fallgrop: Ersätt [YOUR_ID] i Assign Survey Variables med ert faktiska Google Sheet-ID, annars kommer uppslag och skrivningar att misslyckas.

Steg 3: Konfigurera Redis-session och minne

Spara sessionstillstånd och konversationshistorik i Redis och koppla in minnesbuffertar för AI-konversationen.

  1. I Initialize Session State ställer ni in Key till {{ $('Assign Survey Variables').first().json.cacheKey }} och Value till JSON-objektet som innehåller "current_question_idx": 0.
  2. I Fetch Session State och Load Session State ställer ni in Key till {{ $('Assign Survey Variables').first().json.cacheKey }} och Operation till get.
  3. I Advance Question Index ställer ni in Key till {{ $('Assign Survey Variables').first().json.cacheKey }} och behåller Value-uttrycket som uppdaterar current_question_idx.
  4. I Chat Memory Buffer och Extended Chat Memory ställer ni in Session Key till {{ $('Assign Survey Variables').first().json.cacheKey }}_history och behåller Context Window Length som 10 respektive 100.
  5. Autentisering krävs: Anslut era redis-autentiseringsuppgifter till alla Redis-noder (inklusive Fetch Session State, Initialize Session State, Load Session State, Advance Question Index, Fetch Last Bot Reply, Chat Memory Buffer och Extended Chat Memory).

Tips: Håll cacheKey konsekvent över alla Redis-noder, annars kan enkätsessionen återställas oväntat.

Steg 4: Konfigurera kommandorouting

Klassificera inkommande meddelanden, extrahera botkommandon och routa åtgärder för nya sessioner, nästa frågor eller ogiltiga kommandon.

  1. I Classify Message Type behåller ni regeluttrycket {{ ['/start','/next', '/reset'].includes($('Telegram Entry Trigger').first().json.message.text) }} och noterar att Classify Message Type skickar utdata till både Extract Bot Command och Lookup Participant Record parallellt.
  2. I Extract Bot Command ställer ni in command till {{ $('Telegram Entry Trigger').first().json.message.text.slice($('Telegram Entry Trigger').first().json.message.entities[0].offset, $('Telegram Entry Trigger').first().json.message.entities[0].length ) }}.
  3. I Route Bot Actions behåller ni de två villkoren för /start och /next så att utdata routas till Create Session Record eller Load Session State.
  4. I Check Missing Record behåller ni villkoret empty med {{ $json }} för att avgöra om en deltagarrad ska skapas.

Steg 5: Konfigurera enkättillstånd och meddelanden

Bygg den aktiva enkätkontexten, avgör om enkäten är klar och skicka rätt meddelanden till deltagaren.

  1. I Assemble Survey State behåller ni uttrycken för num_questions, next_question_idx och is_survey_complete baserat på Load Session State.
  2. I Survey Continuation Check behåller ni villkoret som kontrollerar {{ $('Advance Question Index').item.json.is_survey_complete }} för att routa till Reset Conversation Memory eller Send Completion Notice.
  3. I Send Welcome Message behåller ni meddelandetexten och chatId inställt på {{ $('Telegram Entry Trigger').first().json.message.chat.id }}.
  4. I Dispatch Next Query ställer ni in text till {{ $('Assemble Survey State').first().json.next_question_idx }}. {{ Object.values($('Retrieve Sheet Columns').first().json)[$('Assemble Survey State').first().json.next_question_idx+1] }} och chatId till {{ $('Telegram Entry Trigger').first().json.message.chat.id }}.
  5. Autentisering krävs: Anslut era telegramApi-autentiseringsuppgifter till alla Telegram-åtgärdsnoder (inklusive Send Welcome Message, Dispatch Next Query, Reply With Agent Output, Send Invalid Command och Send Completion Notice).

Steg 6: Konfigurera AI-bearbetning

Konfigurera den konversationsbaserade agenten och klassificeraren och säkerställ att rätt språkmodeller och minnesverktyg är anslutna.

  1. I Conversational Agent ställer ni in Text till {{ $('Telegram Entry Trigger').first().json.message.text }} och behåller Prompt Type som define.
  2. Öppna Primary Language Model och bekräfta att Model är gpt-4o-mini; den här modellen är ansluten som språkmodell för Conversational Agent—säkerställ att autentiseringsuppgifter är tillagda i Primary Language Model.
  3. I Determine Followup Need behåller ni Input Text som =AI: {{ $('Fetch Last Bot Reply').item.json.data?.first().parseJson().data.content ?? ''}} USER: {{ $('Telegram Entry Trigger').first().json.message.text }} och de två kategorierna för uppföljningsbeslut.
  4. Öppna Classifier Language Model och bekräfta att Model är gpt-4o-mini; den här modellen är ansluten till Determine Followup Need—säkerställ att autentiseringsuppgifter är tillagda i Classifier Language Model.
  5. I Reset Conversation Memory behåller ni Mode som insert med Insert Mode inställt på override; lägg till Redis-autentiseringsuppgifter i minnesnoderna (Chat Memory Buffer / Extended Chat Memory), inte i Reset Conversation Memory.

Tips: Minnesnoderna (Chat Memory Buffer och Extended Chat Memory) ger kontext till Reset Conversation Memory och Conversational Agent. Håll deras sessionsnycklar i linje med {{ $('Assign Survey Variables').first().json.cacheKey }}_history.

Steg 7: Konfigurera utdata och skrivningar till Sheet

Bygg svars-payloaden, avgör om en uppföljning behövs och spara enkätsvar tillbaka till Google Sheets.

  1. I Build Response Payload behåller ni payload som {{ [ Object.values($('Lookup Participant Record').first().json)[Number($('Fetch Session State').first().json.data.current_question_idx || 0) + 1], 'User: ' + $('Telegram Entry Trigger').first().json.message.text, ].join('\n\n').trim() }}.
  2. I Build Response Payload ställer ni in cell till {{ 'abcdefghijklmnopqrstuvxyz'.toUpperCase().split('')[$('Classify Message Type').first().json.data.current_question_idx] }}{{ $('Lookup Participant Record').first().json.row_number }}.
  3. I Write Interim Answer ställer ni in URL till https://sheets.googleapis.com/v4/spreadsheets/{{ $('Assign Survey Variables').first().json.gsheetId }}/values/Sheet1!{{ $('Build Response Payload').first().json.cell }} och behåller JSON Body med values inställt på [[$('Build Response Payload').first().json.payload]].
  4. I Write Final Answer använder ni samma URL och behåller JSON Body som lägger till Agent: {{ $('Conversational Agent').first().json.output }}.
  5. I Reply With Agent Output ställer ni in text till {{ $('Conversational Agent').first().json.output }} och chatId till {{ $('Telegram Entry Trigger').first().json.message.chat.id }}.

⚠️ Vanlig fallgrop: Både Write Interim Answer och Write Final Answer använder googleSheetsOAuth2Api-autentiseringsuppgifter trots att de är HTTP Request-noder—säkerställ att den autentiseringstypen är vald.

Steg 8: Testa och aktivera ert arbetsflöde

Validera Telegram-enkätflödet från början till slut innan ni aktiverar det för produktion.

  1. Klicka på Test Workflow och skicka /start till er Telegram-bot för att bekräfta att Send Welcome Message triggas efter Initialize Session State.
  2. Svara med /next för att verifiera att Dispatch Next Query skickar nästa enkätfråga och att Advance Question Index uppdaterar Redis.
  3. Skicka ett vanligt svar för att bekräfta att Determine Followup Need routar till Write Interim Answer eller Conversational Agent och att Write Final Answer loggar svaret i Google Sheets.
  4. När enkäten är klar, säkerställ att Send Completion Notice levereras och att sessionstillståndet återställs av Reset Conversation Memory.
  5. Slå på arbetsflödet med Activate-reglaget för användning i produktion.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Google Sheets-inloggningar kan löpa ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera n8n-skärmen Credentials och bekräfta att kontot kan redigera målarket.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder misslyckas på tomma svar.
  • OpenAI-prompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera utdata för alltid.

Vanliga frågor

Hur lång tid tar det att sätta upp den här automatiseringen för loggning av Telegram-enkäter?

Cirka en timme om din Telegram-bot, ditt Sheet och Redis är redo.

Behöver jag kunna koda för att automatisera loggning av Telegram-enkäter?

Nej. Du kopplar konton och uppdaterar några variabler, som ditt Google Sheet ID. Logiken är redan inbyggd i arbetsflödet.

Är n8n gratis att använda för det här arbetsflödet för loggning av Telegram-enkäter?

Ja. n8n har ett gratisalternativ för egen drift 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 OpenAI API-användning (oftast några cent per enkätsession) och den Redis-hosting du väljer.

Var kan jag hosta n8n för att köra den här automatiseringen?

Två alternativ: n8n Cloud (hanterat, enklast uppsättning) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger dig obegränsat antal körningar men kräver grundläggande serveradministration.

Kan jag anpassa det här arbetsflödet för loggning av Telegram-enkäter för CSAT eller onboarding-enkäter?

Ja, och det handlar mest om en ändring i Google Sheets. Uppdatera noden “Assign Survey Variables” med din nya enkättitel och Sheet ID, och justera sedan dina frågekolumner i arket. Du kan också finjustera klassificerarens beteende i “Determine Followup Need” och instruktionerna till AI-agenten så att den frågar efter skäl, exempel eller brådska beroende på enkättyp.

Varför misslyckas min Telegram-anslutning i det här arbetsflödet?

Oftast är det bot-token eller Telegram-behörigheter. Dubbelkolla Telegram-uppgifterna i n8n, och bekräfta sedan att du meddelar rätt bot och använder det förväntade kommandot (som “/next”) för att starta sessionen. Om triggern kör men svar inte skickas kan det också vara fel chat-ID, eller en bot som användaren inte har startat ännu. Och om bara vissa meddelanden misslyckas kan rate limits dyka upp när du testar för aggressivt.

Hur många enkätsvar kan den här automatiseringen för loggning av Telegram-enkäter hantera?

Många. På n8n Cloud beror det på din månatliga körningsgräns, och vid egen drift beror det främst på serverstorlek och Redis-stabilitet. I praktiken kör team hundratals svar per vecka på modest uppsatta miljöer eftersom varje meddelande är lättviktigt. Om du förväntar dig toppar (som en stor kampanj), håll koll på OpenAI:s rate limits och din Google Sheets API-kvot.

Är den här automatiseringen för loggning av Telegram-enkäter bättre än att använda Zapier eller Make?

Ofta, ja. Det här arbetsflödet bygger på sessionsstatus, förgreningslogik och ett AI-drivet beslut om “ska vi ställa en uppföljning?”, och n8n brukar hantera den typen av flöden renare utan att pressa in dig i dyr prissättning per flerstegs-task. Du får också möjligheten att köra egen drift, vilket är viktigt när enkäter körs ofta. Zapier eller Make kan fortfarande fungera för enkla “Telegram-meddelande → lägg till rad”-jobb, men de blir klumpiga när du behöver minne och flervarvs-konversationer. Prata med en automationsexpert om du vill ha hjälp att välja enklaste alternativet för din setup.

När det här väl rullar slutar din enkät vara “en massa chattar” och blir en dataset du faktiskt kan använda. Arbetsflödet tar hand om det repetitiva. Du fokuserar på besluten.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal