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

Telegram + Google Sheets: kvittens loggas

Rickard Andersson Partner, Nodenordic.se

Leveransbevis faller oftast sönder i den röriga mitten. En chaufför sms:ar en bild, någon annan vidarebefordrar en platsnål, och sändningsnumret skrivs in “ungefär rätt” i ett kalkylark.

Logistikchefer får jaga detaljer för att knyta ihop säcken. Driftkoordinatorer känner av det när kunder ifrågasätter leveranser. Och om du kör en liten fordonsflotta är det du som fastnar med efterarbetet. Den här automatiseringen för Telegram-baserad POD-loggning löser det genom att samla sändningsnummer, GPS och foto i ett och samma guidade flöde.

Du sätter upp ett n8n-flöde som chattar med chaufförer i Telegram, sparar bevisen i Google Drive, loggar posten i Google Sheets och mejlar en korrekt formaterad bekräftelse till ditt team.

Så fungerar automatiseringen

Här är hela arbetsflödet du kommer att sätta upp:

n8n Workflow Template: Telegram + Google Sheets: kvittens loggas

Varför det här spelar roll: leveransbevis som inte försvinner

Om du inte har ett fullskaligt TMS (Transportation Management System) blir leveransbevis snabbt ett lapptäcke av chattar, foton och “vi uppdaterar arket senare”. Senare blir till imorgon. Under tiden ber kunder om bevis, teamet letar febrilt i Telegram-trådar och chauffören är redan på nästa stopp utan tid att skicka om något. Det värsta är hur små misstag växer: ett fel sändningsnummer, en saknad tidsstämpel eller ett foto som inte kan kopplas till en plats, och plötsligt sitter du i en tvist du aldrig borde ha haft.

Det går fort att tappa kontrollen. Här brukar processen oftast fallera.

  • Foton delas utan sammanhang, så någon måste gissa vilken leverans de hör till.
  • GPS-nålar stannar i chattappar, vilket gör att de sällan hamnar i planering eller rapportering.
  • Manuell inmatning i kalkylark bjuder in stavfel, särskilt när chaufförer skickar detaljer i all hast.
  • Tvister drar ut på tiden eftersom “bevisen” ligger utspridda i inkorgar, diskar och telefoner.

Vad du bygger: Telegram-styrd POD-insamling till Sheets

Det här flödet gör Telegram till en guidad leveransbevis-assistent för chaufförer. Det startar när en chaufför skriver till din Telegram-bot. Därefter ber boten om sändningsnummer, begär chaufförens GPS-position och frågar efter ett foto på levererat gods. n8n håller koll på konversationens status så att flera chaufförer kan använda det samtidigt utan att störa varandra. När fotot kommer hämtar flödet bilden från Telegram, laddar upp den till Google Drive och skapar en delbar länk. Till sist lägger det till en enda korrekt formaterad rad i Google Sheets och mejlar ditt logistikteam en bekräftelse med sändningsnummer, tidsstämplar, koordinater och fotolänken.

Flödet börjar med ett Telegram-meddelande och skickar chauffören till rätt “nästa fråga”. Sedan sparar det varje svar när det kommer in, paketerar allt och loggar det i Google Sheets. Sista steget är en sammanfattning tillbaka till chauffören plus en Gmail-bekräftelse till ditt team.

Det här bygger du

Förväntade resultat

Säg att du hanterar 20 leveranser per dag. Manuellt är det vanligt att lägga cirka 10 minuter per leverans på att kombinera ett foto, en plats och en sändningsreferens till något teamet faktiskt kan använda, så du bränner runt 3 timmar per dag bara på att “göra det läsbart”. Med det här flödet lägger chauffören ungefär 2 minuter på att svara på frågor i Telegram, och n8n sköter resten i bakgrunden (uppladdning, loggning och mejl). Det ger cirka 2 timmar tillbaka de flesta dagar, plus betydligt färre saknade detaljer.

Innan du börjar

  • n8n-instans (prova n8n Cloud gratis)
  • Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
  • Telegram för chattbaserad datainsamling från chaufförer.
  • Google Sheets för att lagra leveransposter som rader.
  • Google Drive för att spara och dela leveransfoton.
  • Gmail för att mejla leveransbekräftelser till ditt team.
  • Telegram bot-token (hämta den från BotFather i Telegram).
  • Google API-inloggningsuppgifter (aktivera Drive API, Sheets API och Gmail API i Google Cloud).

Kunskapsnivå: Mellan. Du klistrar in API-inloggningsuppgifter, mappar några fält och testar Telegram-konversationsflödet.

Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).

Steg för steg

En chaufför skriver till din Telegram-bot. Telegram-triggern lyssnar efter nya meddelanden, och flödet identifierar kommandon och avgör vad chauffören vill göra (starta, hjälp, fortsätta osv.).

Botten guidar chauffören genom obligatoriska fält. n8n håller en enkel “väntestatus” i bakgrunden så att nästa meddelande tolkas korrekt. Om chauffören inte har delat sändningsnummer än frågar den efter det. Om GPS saknas begär den en platsnål. Samma upplägg gäller för leveransfotot.

Bevis sparas och paketeras. När chauffören laddar upp ett foto hämtar flödet det från Telegram, laddar upp det till Google Drive och skapar en länk som teamet kan öppna utan att leta i chatthistoriken.

Allt loggas och skickas till rätt personer. En enda rad läggs till i Google Sheets (sändningsnummer, tider, GPS-latitud/longitud, fotolänk, leveranstid), och sedan mejlar Gmail en bekräftelse. Chauffören får också ett snabbt sammanfattande meddelande, så hen vet att det fungerade.

Du kan enkelt justera kolumnerna i arket och mejlformatet utifrån din SOP. Se hela implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: konfigurera Telegram-triggern

Det här arbetsflödet startar när ett Telegram-meddelande tas emot och routar meddelandet in i flödet för kommandohantering.

  1. Lägg till eller öppna Telegram Intake Trigger.
  2. Ställ in Updatesmessage.
  3. Behörighet krävs: anslut era Telegram API-inloggningsuppgifter.
  4. Bekräfta att Telegram Intake Trigger skickar utdata till Detect Command.

⚠️ Vanlig fallgrop: Om Telegram-inloggningsuppgifter saknas kommer inga av Telegram-noderna (inklusive Request Shipment Number, Request GPS Location och Request Shipment Photo) att skicka meddelanden. Säkerställ att bot-tokenen är ansluten en gång och används i alla Telegram-noder.

Steg 2: koppla Telegram-åtgärder för meddelanden

Arbetsflödet använder flera Telegram-svarsnoder för att guida förare genom leveransregistreringen.

  1. Öppna Request Shipment Number och ställ in Text till 📦 Please enter the delivery number for this shipment..
  2. Ställ in Chat ID till {{ $('Telegram Intake Trigger').item.json.message.chat.id }} och Reply Markup till forceReply.
  3. I Request GPS Location, ställ in Text till =📍 Please share your GPS location by clicking the 📎 attachment button. och Chat ID till {{ $json.message.chat.id }}.
  4. I Request Shipment Photo, ställ in Text till =Please take a **photo of the shipment** and upload it here by clicking the 📎 attachment button. och Chat ID till {{ $json.message.chat.id }}.
  5. I Send Welcome Note och Send Help Instructions, bekräfta långmeddelandet och att Chat ID är satt till {{ $json.message.chat.id }} eller {{ $('Telegram Intake Trigger').first().json.message.chat.id }}.
  6. Behörighet krävs: anslut era Telegram API-inloggningsuppgifter till alla Telegram-noder (10+ noder hanterar meddelanden och filhämtning).

Tips: använd samma Telegram-behörighet för alla meddelandenoder för att undvika inkonsekvent bot-beteende.

Steg 3: konfigurera kommandoroutning och spårning av status

Kommandon upptäcks, routas och status lagras i arbetsflödets statiska data för att avgöra vilket steg föraren befinner sig i.

  1. I Detect Command, säkerställ att villkoret använder {{ $json.message.entities[0] }} för att upptäcka Telegrams kommando-entiteter.
  2. Konfigurera Route Command med fyra regler som matchar {{ $json.message.text }} mot /addShipment, /addGPS, /sendPhoto och /sendConfirmation.
  3. Verifiera att Route Command skickar utdata till Await Shipment Number, Await GPS Data, Await Photo Upload och Load Stored Data.
  4. I Check Waiting State, behåll JavaScript-koden som läser $getWorkflowStaticData('global') och returnerar { state }.
  5. I Evaluate Status, behåll reglerna som kontrollerar {{ $json.state }} för waitingShipmentNumber, waitingGPS och waitingPhoto.
  6. Notera exekveringsflödet: Detect Command skickar utdata till både Route Command och Check Waiting State parallellt.

⚠️ Vanlig fallgrop: Om statusflaggor inte sparas kommer Evaluate Status att routa användaren till fel steg. Ändra inte nycklarna för statiska data i Check Waiting State.

Steg 4: konfigurera registrering av leveransnummer och GPS

Dessa noder fångar leveransdetaljer och sparar dem för senare rapportering.

  1. I Await Shipment Number, behåll JavaScript-koden som sätter waitingShipmentNumber: true för aktuellt chatt-ID.
  2. I Capture Shipment Number, ställ in tilldelningsvärdet till {{ $('Detect Command').item.json.message.text }}.
  3. Capture Shipment Number skickar utdata till både Confirm Shipment Number och Persist Shipment Info parallellt.
  4. I Confirm Shipment Number, bekräfta att Text använder {{ $json.shipmentNumber }} och att Chat ID är {{ $('Telegram Intake Trigger').first().json.message.chat.id }}.
  5. I Persist Shipment Info, behåll JavaScript-koden som lagrar workflowData.shipmentNumber.
  6. I Map GPS Coordinates, ställ in latitude till {{ $('Telegram Intake Trigger').item.json.message.location.latitude }} och longitude till {{ $('Telegram Intake Trigger').item.json.message.location.longitude }}.
  7. Map GPS Coordinates skickar utdata till både Confirm GPS Receipt och Persist GPS Info parallellt.

Steg 5: konfigurera fotouppladdning och lagring i Google Drive

Fotot hämtas från Telegram, lagras i Google Drive och görs publikt tillgängligt.

  1. I Await Photo Upload, behåll JavaScript-koden som sätter waitingPhoto: true för chatt-ID:t.
  2. I Fetch Telegram Photo, ställ in File ID till {{ $('Telegram Intake Trigger').item.json.message.photo[3].file_id }} och Resource till file.
  3. Fetch Telegram Photo skickar utdata till både Upload Image to Drive och Extract File Name parallellt.
  4. I Upload Image to Drive, ställ in Drive till My Drive och Folder ID till https://drive.google.com/drive/folders/[YOUR_ID].
  5. I Share Drive File, ställ in Operation till share och File ID till {{ $json.id }}.
  6. I Save Public Image URL, behåll JavaScript-koden som bygger https://drive.google.com/uc?export=view&id=${fileId}.
  7. I Extract File Name, ställ in fileName till {{ $binary.data.fileName }} och spara det sedan i Persist File Name.
  8. Behörighet krävs: anslut era Google Drive-inloggningsuppgifter i Upload Image to Drive och Share Drive File.

⚠️ Vanlig fallgrop: Om Share Drive File inte är inställd för att tillåta åtkomst för anyone kommer den publika bild-URL:en som skapas i Save Public Image URL inte att gå att visa.

Steg 6: konfigurera utdata-destinationer och notifieringar

När all data har samlats in lägger arbetsflödet till en rad i Google Sheets, notifierar föraren och skickar en e-postbekräftelse.

  1. I Load Stored Data, behåll JavaScript-koden som sammanställer shipmentNumber, gpsLatitude, gpsLongitude, publicImageLink, deliveryTime och fileName.
  2. Load Stored Data skickar utdata till Append Delivery Record, Notify Driver Summary och Email Delivery Confirmation parallellt.
  3. I Append Delivery Record, mappa fälten enligt definition: {{ $now }}, {{ $json.shipmentNumber }}, {{ $json.gpsLatitude }}, {{ $json.gpsLongitude }}, {{ $json.publicImageLink }} och {{ $json.deliveryTime }}.
  4. Ställ in Document ID och Sheet Name till era kalkylbladsvärden (ersätt [YOUR_ID] i den cachade URL:en).
  5. I Notify Driver Summary, behåll HTML-meddelandet och att Chat ID är satt till {{ $('Telegram Intake Trigger').item.json.message.chat.id }}.
  6. I Email Delivery Confirmation, ersätt värdet för Send To [YOUR_EMAIL] och verifiera att Subject använder Delivery Confirmation: {{ $json.shipmentNumber }}.
  7. Efter att e-postmeddelandet skickats, bekräfta att Email Delivery Confirmation skickar utdata till Reset State Flags.
  8. Behörighet krävs: anslut era Google Sheets-inloggningsuppgifter i Append Delivery Record och Gmail-inloggningsuppgifter i Email Delivery Confirmation.

Tips: använd en dedikerad flik i kalkylarket för leveranser för att undvika att rubriker skrivs över och för att förenkla rapporteringen.

Steg 7: testa och aktivera ert arbetsflöde

Kör ett fullständigt end-to-end-test för att säkerställa att varje steg routas och sparas korrekt innan aktivering.

  1. Klicka på Execute Workflow och skicka /start till er bot för att verifiera att Send Welcome Note returnerar ett svar.
  2. Skicka /addShipment och bekräfta sedan att Request Shipment Number svarar och att Capture Shipment Number sparar värdet.
  3. Skicka /addGPS med en live-position och bekräfta att Confirm GPS Receipt och Persist GPS Info körs parallellt.
  4. Skicka /sendPhoto med en bild och bekräfta att Upload Image to Drive, Share Drive File och Save Public Image URL slutförs utan fel.
  5. Skicka /sendConfirmation och verifiera att Append Delivery Record, Notify Driver Summary och Email Delivery Confirmation körs parallellt.
  6. Kontrollera att Reset State Flags rensar sessionen för chatt-ID:t.
  7. När ni är nöjda, växla arbetsflödet till Active för användning i produktion.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Tips för felsökning

  • Inloggningsuppgifter för Google Drive, Google Sheets eller Gmail kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera n8n-skärmen Credentials och bekräfta att Google-projektet fortfarande har Drive/Sheets/Gmail-API:erna aktiverade.
  • Telegram-foton kommer i flera storlekar och fil-ID:n. Om steget som laddar upp till Drive misslyckas beror det oftast på att flödet hämtade fel filvariant eller inte väntade in meddelandetypen “photo”. Dubbelkolla därför inställningarna i noden som hämtar Telegram-filen.
  • Standardtexterna i Telegram-frågor räcker för demo, men de är generiska. Uppdatera meddelandena tidigt (välkomsttext, hjälpinstruktioner, bekräftelser) så att de matchar hur dina chaufförer faktiskt kommunicerar, annars får du halvfärdiga inlämningar.

Snabba svar

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

Cirka 45 minuter om du redan har Google-API:erna och bot-tokenen klara.

Krävs kodning för att logga leveransbevis?

Nej. Du kopplar främst konton och mappar fält till Google-arket. Flödet innehåller redan logiken som håller koll på chaufförens “nästa steg” i Telegram.

Är n8n gratis att använda för det här flödet för Telegram-baserad POD-loggning?

Ja. n8n har ett gratis self-hosted-alternativ 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 Google-användning, som vanligtvis är gratis vid lågt till måttligt antal API-anrop.

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

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och klarar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här flödet för Telegram-baserad POD-loggning för andra användningsfall?

Ja, och det bör du. Du kan ändra vad som samlas in genom att redigera Telegram-noderna för frågor (som “Request Shipment Number” eller “Request GPS Location”) och sedan uppdatera Google Sheets-steget “Append Delivery Record” så att det matchar dina nya kolumner. Vanliga justeringar är att lägga till kundnamn, fånga ett signaturfoto, registrera fordons-ID eller skriva till ett andra ark för avvikelser och misslyckade leveranser.

Varför fungerar inte min Telegram-anslutning i det här flödet?

Oftast är det bot-tokenen. Generera en ny eller kopiera tokenen på nytt från BotFather och uppdatera Telegram-inloggningsuppgifterna i n8n. Kontrollera också att du skriver till rätt bot (team testar ibland i en chatt och driftsätter sedan en annan bot i produktion). Om meddelanden kommer fram men foton misslyckas handlar det ofta om behörigheter eller att flödet läser fel Telegram-filobjekt.

Vilka volymer klarar det här flödet för Telegram-baserad POD-loggning?

Mycket, för ett litet driftteam. Botten kan hantera flera chaufförer samtidigt eftersom flödet spårar konversationsstatus per chaufför, och varje leverans är bara en körning som laddar upp en fil och lägger till en rad. Med n8n Cloud Starter får du ett tak för körningar per månad, så din gräns blir i praktiken “leveranser per månad”. Om du self-hostar finns ingen körningsgräns, men din server och Googles API-kvoter blir det praktiska taket.

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

Ofta, ja, eftersom det här flödet inte bara är “Telegram-meddelande → lägg till rad”. Det kräver hantering av flerstegskonversationer (sändningsnummer, sedan GPS, sedan foto) och statusspårning så att nästa meddelande från chauffören tolkas korrekt. n8n är byggt för den typen av förgrenad logik, och du kan self-hosta när volymerna växer. Zapier och Make kan fungera, men flerstegsflöden i chatt blir snabbt klumpiga och kostnaderna ökar när varje meddelande blir en ny task. Om du vill ha hjälp att välja, prata med en automationsexpert.

När detta väl rullar slutar leveransbevis att vara detektivarbete. Ditt team får en prydlig post per stopp, och chaufförerna behöver inte tänka på “process” överhuvudtaget.

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