POS-försäljning går snabbt. Din rapportering gör det oftast inte. Innan du har kopierat en order till ett kalkylark och pingat teamet står nästa kund redan och väntar.
POS-orderloggning slår ärligt talat först mot små retailteam. Men butikschefer som försöker stämma av skift och driftsansvariga som behöver korrekt formaterade siffror känner samma smärta på olika sätt. Det här arbetsflödet loggar varje försäljning i Google Sheets och skickar en tydlig Telegram-avisering i samma ögonblick.
Du får se hur automatiseringen fungerar, vad den ersätter och vad du behöver för att köra den utan att behöva passa den varje dag.
Så fungerar den här automatiseringen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: Google Sheets + Telegram: logga POS-order direkt
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/telegram.svg' width='40' height='40' /></div><br/>Send a text message"]
n1@{ icon: "mdi:database", form: "rounded", label: "Append or update row in sheet", pos: "b", h: 48 }
n2["<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/>Start the webhook"]
n3@{ icon: "mdi:database", form: "rounded", label: "Get products data", pos: "b", h: 48 }
n4["<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/>Respond to Webhook"]
n5@{ icon: "mdi:cog", form: "rounded", label: "Wait for click", pos: "b", h: 48 }
n6["<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/>Respond to click"]
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/>Format data for sheet"]
n8@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n9@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", 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/>Format data for webhook"]
n8 --> n0
n5 --> n6
n6 --> n8
n6 --> n7
n3 --> n10
n2 --> n3
n4 --> n5
n7 --> n1
n9 -.-> n8
n10 --> n4
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 n8 ai
class n9 aiModel
class n1,n3 database
class n2,n4,n6 api
class n7,n10 code
classDef customIcon fill:none,stroke:none
class n0,n2,n4,n6,n7,n10 customIcon
Problemet: POS-order tappas bort mellan ”såld” och ”registrerad”
När order kommer in vid en disk, en pop-up eller en stressig kiosk är själva försäljningen den enkla delen. Det stökiga är allt efteråt: skriva ner artiklar, räkna rabatter, tilldela ett försäljnings-ID, uppdatera ett kalkylark och sedan meddela teamet så att plock eller förberedelser kan starta. Gör du detta manuellt får du små glapp överallt. En missad registrering blir en lageravvikelse. En slarvig notering blir en retur- eller återbetalningstvist. Och helgrapporteringen blir ett stressigt minnesspel.
Det blir snabbt mycket. Här är det som oftast skapar fel.
- Någon glömmer att logga en försäljning under en rusning och ”fyller i den senare” med ofullständiga detaljer.
- Rabatter och antal matas in två gånger, vilket bjuder in inkonsekvenser och tysta misstag.
- Teamet får inte notis i rätt ögonblick, så plock/förberedelse startar sent eller inte alls.
- Försäljnings-ID:n är inte standardiserade, vilket gör avstämning och återbetalningar mer smärtsamma än de behöver vara.
Lösningen: en orderinlämning → rad i Sheets + Telegram-sammanfattning
Det här arbetsflödet gör din POS-orderinlämning till ett automatiskt spårbart underlag. Det startar från en n8n-webhook som serverar en lättviktig webbaserad orderskärm (produktkatalog, sök, varukorg, antal, pris, rabatter). När du skickar in försäljningen sätter n8n ihop orderdatan, skapar ett unikt försäljnings-ID och förbereder en korrekt formaterad payload för ditt Google Sheet. Samtidigt kör den försäljningen genom en AI-agent (via en OpenRouter-chatmodell) för att skapa en lättläst försäljningssammanfattning som teamet kan ta in direkt. Till sist skriver den transaktionen till Google Sheets och skickar Telegram-notisen direkt, så att rätt personer kan agera.
Arbetsflödet börjar när POS-sidan öppnas via webhook-URL:en och hämtar din aktuella produktlista från Google Sheets. Efter inlämning formaterar den ordern, uppdaterar ditt försäljningsark och skickar sedan en Telegram-avisering med en AI-genererad recap. Resultatet känns enkelt, även om allt tråkjobb är borta.
Det du får: automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du driver en pop-up och hanterar ungefär 20 order per dag. Manuellt, om varje försäljning tar cirka 3 minuter att skriva in på nytt i Google Sheets och ytterligare en minut att meddela teamet, blir det runt 80 minuter administration. Med det här arbetsflödet är ”efteråt” snarare 10 sekunder för att skicka in ordern på POS-sidan, plus en kort väntan medan n8n skriver raden och skickar Telegram. Du får tillbaka ungefär en timme, och ditt ark är redan korrekt formaterat.
Det du behöver
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för produktlista + lagring av försäljningstabell
- Telegram för att notifiera personal via ett bot-meddelande
- OpenRouter API-nyckel (hämta den i din OpenRouter-dashboard)
Kunskapsnivå: Medel. Du kopplar konton, sätter upp autentisering och justerar lätt fält så att de matchar dina kolumner i arket.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En kundorder sätter igång det. Du öppnar webhook-URL:en som returnerar en enkel POS-webbsida. n8n hämtar direkt din produktlista från Google Sheets så att katalogen alltid är uppdaterad.
Arbetsflödet väntar på inlämning. Ett kort ”paus”-steg håller sessionen tills du klickar på skicka, därefter bekräftar n8n klicket och samlar in payloaden (kunduppgifter, varukorgsartiklar, antal, rabatter).
Orderdatan struktureras och berikas. Två kodsteg sätter ihop webhook-datan, skapar ett unikt försäljnings-ID och förbereder Google Sheets-raden så att den matchar din försäljningsflik utan extra formatering.
Sheets och Telegram uppdateras automatiskt. n8n skriver försäljningen till Google Sheets, sedan tar AI-agenten fram en lättläst sammanfattning och skickar den till Telegram så att teamet får en tydlig, direkt heads-up.
Du kan enkelt ändra kolumnerna i Google Sheets och formatet på Telegram-meddelandet så att det matchar din process. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera webhook-triggern
Konfigurera den inkommande webhooken som visar POS-beställningssidan och startar arbetsflödet.
- Lägg till noden Incoming Webhook Trigger och ställ in Path till
smartpostsystem. - Ställ in Response Mode till
responseNodeså att svaret hanteras av Return Webhook Page. - Koppla Incoming Webhook Trigger till Retrieve Product List.
Steg 2: Anslut Google Sheets
Hämta produktdata och skriv försäljningsrader till ert Google Sheet.
- Öppna Retrieve Product List och ställ in Document ID till
YOUR_GOOGLE_SHEETS_IDoch Sheet Name tillgid=0. - Credentials krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Retrieve Product List.
- Öppna Modify Sheet Row och ställ in Operation till
appendOrUpdate. - Ställ in kolumnmappningarna i Modify Sheet Row till uttrycken:
={{ $json["SALES ID"] }},={{ $json["SALES QTY"] }},={{ $json["SALES DATE"] }},={{ $json["SALES DISCOUNT"] }},={{ $json["SALES PRICE (USD)"] }},={{ $json["SALES PRODUCT NAME"] }},={{ $json["SALES CUSTOMER NAME"] }}. - Credentials krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Modify Sheet Row.
SALES ID och SALES PRICE (USD)), annars misslyckas append/update.Steg 3: Konfigurera webbsvar och väntflöde
Visa POS-gränssnittet för beställning och pausa tills användaren skickar formuläret.
- I Assemble Webhook Data, behåll JavaScript-koden som serialiserar produktdata och injicerar URL:erna
{{ $json.webhookUrl }}och{{ $resumeWebhookUrl }}. - Öppna Return Webhook Page och ställ in Respond With till
textoch behåll hela HTML:en i Response Body som börjar med=</code>. - Bekräfta att HTML-mallen i Return Webhook Page refererar till uttrycken
{{ $json.productId }},{{ $json.productName }},{{ $json.productImage }},{{ $json.productCategoryName }},{{ $json.productPriceUsd }}och{{ $json.productDiscount }}. - Konfigurera Pause for Submit med Resume satt till
webhook, HTTP Method satt tillPOSToch Response Mode satt tillresponseNode. - Koppla Return Webhook Page till Pause for Submit, och koppla sedan Pause for Submit till Confirm Click Response.
{{ $resumeWebhookUrl }} som action-URL. Säkerställ att arbetsflödet är aktivt eller att testläge är aktiverat så att resume-webhooken är nåbar.Steg 4: Sätt upp bearbetning och AI-noder
Skapa en försäljningssammanfattning och förbered rader för Google Sheets efter att beställningen har skickats.
- I Confirm Click Response, behåll Respond With satt till
textoch HTML-svarets body som börjar med=</code>. - Confirm Click Response skickar output till både Sales Summary Agent och Prepare Sheet Payload parallellt.
- I Prepare Sheet Payload, behåll JavaScript-koden som parsar
orderItemsoch outputtar strukturerade fält somSALES ID,SALES DATEochSALES QTY. - I Sales Summary Agent, ställ in Text till
=customer name : {{ $json.body.customerName }} order items : {{ $json.body.orderItems }} order total : {{ $json.body.orderTotals }} Sales report format : New sales! (opening or greetings to the owner ) customer name : order details : Have a good day (closing). - Öppna OpenRouter Chat Engine och ställ in Model till
google/gemini-2.0-flash-exp:free. - Credentials krävs: Anslut era openRouterApi-uppgifter i OpenRouter Chat Engine.
- Säkerställ att OpenRouter Chat Engine är ansluten som språkmodell för Sales Summary Agent (credentials läggs till på den överordnade modellnoden, inte på agentnoden).
Steg 5: Konfigurera output-/åtgärdsnoder
Skicka den AI-genererade sammanfattningen till Telegram och lägg till försäljningsraderna i Google Sheets.
- I Dispatch Telegram Alert, ställ in Chat ID till
YOUR_TELEGRAM_CHAT_ID. - Ställ in Text i Dispatch Telegram Alert till
={{ $json.output }}. - Credentials krävs: Anslut era telegramApi-uppgifter i Dispatch Telegram Alert.
- Bekräfta att Prepare Sheet Payload är kopplad till Modify Sheet Row för att skriva försäljningsrader.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett fullständigt test för att verifiera POS-formuläret, inskick av beställning, Telegram-meddelandet och uppdateringen i Google Sheets.
- Klicka Execute Workflow och öppna Incoming Webhook Trigger-testadressen i er webbläsare för att ladda POS-sidan.
- Skicka in en testbeställning och bekräfta att success-sidan från Confirm Click Response visas.
- Verifiera att en ny rad läggs till/uppdateras i Google Sheets via Modify Sheet Row och att en sammanfattning skickas av Dispatch Telegram Alert.
- När testet är lyckat, växla arbetsflödet till Active så att webhook-URL:en för produktion kan användas av ert POS-system.
Vanliga fallgropar
- Autentisering för Google Sheets kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först n8n:s autentiseringsinställningar och arkets delningsåtkomst.
- Om du använder Wait-noder eller extern bearbetning varierar tajmingen. Öka väntetiden om noder längre fram fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du redigera output för alltid.
Vanliga frågor
Cirka 30 minuter om ditt Google Sheet och din Telegram-bot är klara.
Nej. Du kopplar mest konton och mappar några fält mot kolumnerna i Google Sheets.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volymer. Du behöver också räkna med kostnader för OpenRouter API-användning, som beror på vilken modell du väljer.
Två alternativ: n8n Cloud (hanterad, 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änsade körningar men kräver grundläggande serverhantering.
Ja, och det är en vanlig justering. Du kan styra Telegram-notiser till olika chattar genom att justera Telegram-noden ”Dispatch Telegram Alert” och lägga till ett enkelt villkor baserat på plats eller användarinmatning. I Google Sheets kan du lägga till en kolumn för ”Butik” eller ”Terminal” och mappa den i steget ”Prepare Sheet Payload”. Många team anpassar också AI-agentens prompt så att varje plats får ett något annat sammanfattningsformat.
Oftast är det bot-token eller chatt-ID. Skapa en ny token i BotFather vid behov, bekräfta att du skickar till rätt chatt och säkerställ att boten har fått minst ett meddelande så att Telegram tillåter konversationen. Om det bara fallerar under rusning kan du slå i rate limits, så det kan hjälpa att glesa ut meddelandena lite.
För de flesta små butiker: ”mycket fler än du hinner med på en dag”. På n8n Cloud Starter begränsas du av månatliga körningar, och varje order räknas vanligtvis som en körning. Om du kör egen hosting finns ingen körningsgräns, så kapaciteten beror främst på din server och hur tungt steget med AI-sammanfattning är.
Ofta, ja. Det här arbetsflödet är inte bara ”POS → kalkylark”; det serverar en webhook-sida, väntar på inlämning, kör en AI-sammanfattning och förgrenar sedan till Google Sheets plus Telegram, vilket är den typ av flersteglogik som blir dyr eller klumpig på andra plattformar. n8n låter dig också hosta själv för obegränsade körningar, vilket spelar roll när du hanterar order dagligen. Zapier eller Make kan fortfarande vara bra om du bara behöver en enkel tvåstegslogg och aldrig vill tänka på hosting. Vill du ha hjälp att välja, prata med en automationsexpert.
När detta väl rullar loggas och delas varje försäljning utan att du behöver tänka på det. Arbetsflödet tar hand om repetitiva moment, så att teamet kan fokusera på kunder och plock/leverans.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.