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

OpenAI till Google Sheets, livekostnadsdashboard

Rickard Andersson Partner, Nodenordic.se

Dina AI-kostnader “exploderar” sällan i ett dramatiskt ögonblick. De smyger sig på. Några extra testkörningar, en ny modell, en stökig prompt-loop, och plötsligt sitter du och gräver i körningsloggar för att kunna motivera en högre faktura.

Marknadsansvariga känner det när kampanjexperimenten blir fler. En produktägare får frågan “varför stack spend iväg?” på måndagen. Och byråer som jonglerar flera kundautomationer drabbas hårdast. Den här automationen för en OpenAI-kostnadsdashboard samlar meddelanden, tokens och spend i ett Google Sheet så att du snabbt kan svara på budgetfrågor.

Du får se vad workflowet spårar, hur dashboarden genereras och hur du anpassar det till din egen AI-agent eller RAG-setup utan att göra det till ett projekt som tar en hel vecka.

Så fungerar den här automationen

Hela n8n-workflowet, från trigger till slutresultat:

n8n Workflow Template: OpenAI till Google Sheets, livekostnadsdashboard

Problemet: AI-användning är svår att förklara (tills det är för sent)

Om du använder OpenAI i n8n för chatbots, leadkvalificering, innehållsutkast, supportmakron eller interna verktyg har du redan “datan”. Den är bara utspridd. En del finns i körningshistoriken, en del ligger begravd i några skärmdumpar och en del är rena gissningar. Sedan ställer någon intressent en enkel fråga som “vilket workflow kostar oss mest?” och det blir en rörig timme av att jaga sessions-ID:n, jämföra token-antal och försöka återskapa vad som hände över flera körningar. Helt ärligt är det inte bara irriterande. Det gör dig långsammare och mer försiktig med experiment.

Friktionen byggs på. Här är var det faller isär.

  • Körningsloggar visar vad som kördes, men de ger dig ingen korrekt formaterad daglig översikt av tokens och kostnad över sessioner.
  • När kostnaderna sticker iväg är det lätt att missa den verkliga orsaken eftersom prompts, modeller och outputs inte spåras tillsammans på ett ställe.
  • Team slutar med att diskutera utifrån åsikter (“det måste vara chatboten”) i stället för att titta på en gemensam källa till sanning.
  • Utan konsekvent spårning blir prognosen för nästa månads spend en gissning och man sätter konservativa begränsningar.

Lösningen: En live-dashboard som loggar tokens och kostnad till Sheets

Den här n8n-mallen fungerar som ett mätlager för dina AI-workflows. Den fångar konversationsdetaljer från dina AI-agentkörningar (sessions-ID, input, output, prompt-tokens, completion-tokens, total tokens, modellnamn) och sparar dem som strukturerade rader. Sedan berikar den raderna med modellpriser så att du kan räkna ut faktisk spend per meddelande och per session. Till sist genererar den en interaktiv dashboardvy, så att du kan se totalsummor, dagliga diagram och prompt-kontra-completion token-användning utan att manuellt bygga rapporter. Du kan koppla in den i nästan vilket AI Agent- eller RAG-workflow som helst i n8n, vilket gör att kostnadsinsyn slutar vara ett separat projekt.

Workflowet börjar med en inkommande webhook och en chattrigger för din AI-agent. Därifrån loggar det meddelanden i en tabell, pollar efter rader som saknar usage-etiketter, hämtar körningsdetaljer, beräknar total kostnad med din prissättningstabell och uppdaterar posterna. Dashboard-HTML genereras från den lagrade datan och returneras via webhook så att den kan visas i en webbläsare eller bäddas in.

Det du får: automation vs. resultat

Exempel: så här ser det ut

Säg att ditt team kör en AI-agent för lead-triage och supportutkast, och att den i snitt hanterar cirka 200 meddelanden per vecka. Att manuellt kontrollera användning innebär oftast att öppna körningar, kopiera token-antal och försöka summera det i efterhand (även vid 2 minuter per körning är det ungefär 6 timmar i veckan). Med det här workflowet sker loggningen automatiskt för varje meddelande, och den schemalagda pollningen fyller i saknade kostnadsdata i bakgrunden. Ditt “arbete” blir att öppna ett Google Sheet eller en dashboardlänk, vilket mer är som 2 minuter om dagen.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
  • OpenAI för användningsdata för chattmodellen.
  • Google Sheets för att lagra rader och bygga vyer.
  • OpenAI API-nyckel (hämta den från OpenAI:s API-dashboard).

Svårighetsnivå: Mellan. Du kopplar upp credentials, skapar två tabeller/ark och klistrar in en webhook-URL på rätt ställe.

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

Så fungerar det

En webhook eller chattrigger startar. När din AI-agent tar emot ett meddelande (eller när ett externt system anropar webhooken) börjar workflowet fånga det som spelar roll: sessions-ID, användarens input och AI:ns output.

Nyckelfält normaliseras direkt. Ett Set-steg sätter ett konsekvent datumfält och förbereder en körningsidentifierare, så att rapporteringen senare inte beror på stökiga tidsstämplar eller halvt ifylld metadata.

Användningsdetaljer berikas i efterhand. Enligt schema letar workflowet efter rader som fortfarande saknar token- eller kostnadsfält, hämtar körningsdetaljer och sammanställer sedan prompt-tokens, completion-tokens och total tokens.

Kostnader beräknas med din prissättningstabell. Det hämtar din data för “modellpris”, slår ihop den med token-måtten, beräknar total kostnad och uppdaterar de sparade posterna. Därefter genereras dashboard-HTML från de lagrade raderna och returneras som webhook-svar.

Du kan enkelt ändra modellistan och prissättningslogiken så att den matchar dina egna leverantörer eller interna debiteringsregler. Se hela implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: Konfigurera webhook-triggern

Det här arbetsflödet levererar en dashboard via HTTP, så webhook-sökvägen och svarsläget måste ställas in korrekt.

  1. Öppna Incoming Webhook Endpoint och ställ in Path till 176f23d4-71b3-41e0-9364-43bea6be01d3.
  2. Ställ in Response Mode till responseNode så att arbetsflödet returnerar HTML:en från Return Webhook Output.
  3. Bekräfta kopplingen från Incoming Webhook Endpoint till Assign Date Field.

Använd produktions-URL:en från Incoming Webhook Endpoint i er webbläsare för att visa den live-dashboarden när arbetsflödet är aktivt.

Steg 2: Konfigurera chatt-triggern och AI-agenten

Den här grenen hanterar inkommande chattmeddelanden, genererar ett AI-svar och loggar konversationen.

  1. Öppna Incoming Chat Trigger och aktivera Public som true.
  2. I Conversational AI Agent ställer ni Text till =Réponds à ce message : {{ $json.chatInput }} och behåller Prompt Type som define.
  3. Öppna OpenAI Chat Engine och ställ in Model till gpt-4.1-mini.
  4. Inloggningsuppgifter krävs: Anslut era openAiApi-inloggningsuppgifter i OpenAI Chat Engine.
  5. Säkerställ att Session Memory Buffer är ansluten som minne för Conversational AI Agent; lägg till inloggningsuppgifter på den överordnade OpenAI Chat Engine om det krävs av er konfiguration.
  6. Bekräfta den parallella förgreningen: Conversational AI Agent skickar utdata både till No-Op Gate och Capture Run Identifier parallellt.

⚠️ Vanlig fallgrop: Session Memory Buffer är en AI-undernod; lägg inte till inloggningsuppgifter direkt där—konfigurera inloggningsuppgifter på OpenAI Chat Engine.

Steg 3: Anslut datatabeller för chattloggar och dashboarddata

Det här arbetsflödet använder flera datatabellsnoder (totalt 6). Konfigurera dem efter funktion för att hålla meddelandedata, prissättning och användningsstatistik synkade.

  1. I Retrieve Message Rows ställer ni Operation till get, Return All till true och Data Table till Template - data (GyHAqQLTtmZbynYI).
  2. I Append Chat Log Row mappar ni kolumner till uttryck som ={{ $('Incoming Chat Trigger').item.json.chatInput }} och ={{ $json.id }} för executionId.
  3. I Fetch Unlabeled Rows ställer ni in filtret modelName till isEmpty och behåller Return All som true.
  4. I Fetch Price Table ställer ni Data Table till Model - Price (5tsC5vulvGwYGS2g).
  5. I Update Usage Records ställer ni Operation till update och filtrerar på executionId med ={{ $json.executionId }}.
  6. I Insert Pricing Row mappar ni kolumner till ={{ $json.name }}, ={{ $json.promptTokensPrice }} och ={{ $json.completionTokensPrice }}.

Alla datatabellsnoder refererar till interna n8n-datatabeller—inga externa inloggningsuppgifter krävs.

Steg 4: Bygg dashboard-svaret

Den här grenen sätter ihop KPI-dashboardens HTML och returnerar den som webhook-svar.

  1. I Assign Date Field lägger ni till tilldelningen today med värdet ={{ $today }}.
  2. Behåll flödet: Incoming Webhook EndpointAssign Date FieldRetrieve Message RowsGenerate Dashboard HTML.
  3. I Generate Dashboard HTML behåller ni den angivna JavaScript Code intakt (den genererar en HTML-dashboard som binär data).
  4. I Return Webhook Output ställer ni Respond With till binary.

Steg 5: Konfigurera schemalagd berikning av användningsdata

Den här schemalagda grenen berikar chattrader med token-användning och kostnadsdata.

  1. Öppna Scheduled Poll Trigger och ställ in intervallet till var 30:e minut.
  2. Säkerställ att flödet är Scheduled Poll TriggerFetch Unlabeled RowsIterate Row Batches.
  3. Iterate Row Batches skickar utdata både till No-Op Placeholder och Retrieve Execution Details för batchbearbetning och felsökning.
  4. I Retrieve Execution Details ställer ni Execution ID till ={{ $json.executionId }} och ansluter inloggningsuppgifter.
  5. Inloggningsuppgifter krävs: Anslut era n8nApi-inloggningsuppgifter i Retrieve Execution Details.
  6. I Assemble Token Metrics bekräftar ni uttrycken för token-antal, till exempel ={{ $json.data.resultData.runData['OpenAI Chat Engine'][0].data.ai_languageModel[0][0].json.tokenUsage.totalTokens }}.
  7. Assemble Token Metrics skickar utdata både till Fetch Price Table och Combine Model Data parallellt.
  8. I Combine Model Data ställer ni Mode till combine och slår ihop på namemodel_name.
  9. I Compute Global Cost behåller ni JavaScript-koden som beräknar globalCost och uppdaterar sedan poster via Update Usage Records.

⚠️ Vanlig fallgrop: Om n8n API-token saknar behörighet att läsa körningar kommer Retrieve Execution Details att misslyckas och efterföljande kostnadsberäkningar blir tomma.

Steg 6: Seeda eller uppdatera prissättningstabellen

Den här valfria grenen används för att lägga in rader med modellpriser vid behov.

  1. Granska den pinnade datan i Prepare Price Fields för att bekräfta era modellpriser (t.ex. gpt-4.1-mini med prompt- och completion-takter).
  2. Trigga Insert Pricing Row för att lägga in modellprissättning i Model - Price (5tsC5vulvGwYGS2g).
  3. Behåll Prepare Price Fields som en platshållare för framtida transformationer om ni behöver normalisera prissättningsdata.

Noderna No-Op Gate och No-Op Placeholder finns för felsökning och kan användas för att pausa eller inspektera data under installationen.

Steg 7: Testa och aktivera ert arbetsflöde

Verifiera webhook-dashboarden och chattloggningen innan ni slår på arbetsflödet.

  1. Klicka på Execute Workflow och skicka ett testmeddelande till Incoming Chat Trigger för att verifiera svar från Conversational AI Agent och att Append Chat Log Row lägger in rader.
  2. Anropa URL:en för Incoming Webhook Endpoint i en webbläsare och bekräfta att en fullständig HTML-dashboard returneras av Return Webhook Output.
  3. Vänta på nästa körning av Scheduled Poll Trigger och verifiera att Update Usage Records fyller i token- och kostnadsfält.
  4. När testerna lyckas växlar ni arbetsflödet till Active för produktionsanvändning.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Google Sheets-credentials kan gå ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera först n8n:s Credentials-vy och delningsinställningarna för målarket.
  • Om du använder Wait-noder eller extern rendering varierar processingtiderna. Öka väntetiden om noder längre ned i flödet fallerar på tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera outputs i all evighet.

Vanliga frågor

Hur lång tid tar det att sätta upp den här automationen för en OpenAI-kostnadsdashboard?

Cirka 30 minuter om dina Sheets och API-nycklar är redo.

Behöver jag kunna koda för att automatisera rapportering i en OpenAI-kostnadsdashboard?

Nej. Du kopplar främst konton och mappar några fält i Set- och Data Table-noder.

Är n8n gratis att använda för det här workflowet för en OpenAI-kostnadsdashboard?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in OpenAI:s API-kostnader, som beror på modell och tokenvolym.

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

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 hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här workflowet för en OpenAI-kostnadsdashboard för spårning per kund?

Ja, och det är en vanlig justering. Lägg till ett clientId-fält (eller projekt) där workflowet lägger till chatloggraden, och för sedan med det genom stegen “Assemble Token Metrics” och uppdateringen så att ditt Sheet kan pivoteras per kund. Många team anpassar även prissättningstabellen för att tillämpa olika nivåer per kund eller miljö (prod vs. staging).

Varför fallerar min OpenAI-anslutning i det här workflowet?

Oftast är det en API-nyckelfråga eller att fel org/projekt är valt i dina OpenAI-credentials. Skapa en ny nyckel, uppdatera den i n8n och kör en enda testkörning för att bekräfta att tokens returneras. Om det bara fallerar under belastning kan du slå i rate limits, så sänk schemat eller batchstorleken lite.

Hur många meddelanden klarar den här automationen för en OpenAI-kostnadsdashboard?

Många. På n8n Cloud Starter begränsas du av månatliga körningar, medan self-hosting saknar körningstak (det beror mest på din serverstorlek och hur ofta du pollar efter uppdateringar). I praktiken är team som loggar några tusen meddelanden i veckan helt okej så länge du batchar uppdateringar och inte hämtar körningsdetaljer en och en hela dagen.

Är den här automationen för en OpenAI-kostnadsdashboard bättre än att använda Zapier eller Make?

Ofta, ja. Det här workflowet bygger på schemalagd polling, att hämta körningsdetaljer och att uppdatera sparade rader efter berikning, vilket är där Zapier/Make-scenarier kan bli dyra eller klumpiga. n8n ger dig också self-hosting för obegränsade körningar och mer flexibel branching när du vill hantera “saknar prissättning” annorlunda än “saknar tokens”. Om du bara behöver ett enkelt flöde som “logga ett svar till ett ark” kommer Zapier eller Make kännas snabbare. För en riktig dashboard-pipeline är n8n oftast bättre. Prata med en automationsexpert om du vill ha en second opinion.

När det här väl rullar slutar kostnadsinsyn att vara en brandövning. Workflowet tar hand om det repetitiva, och du får en tydlig vy som du faktiskt kan använda.

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

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Launch login modal Launch register modal