Utrustningsförfrågningar ska inte bli en vecka av fram och tillbaka. Men när någon pingar dig i Slack utan detaljer, någon annan mejlar “godkände du det här?”, och inköp får en halvt skriven notis, fastnar du i att jaga svar i stället för att driva ärendet framåt.
HR-koordinatorer märker det när onboarding staplas på hög. Driftansvariga känner av det när laptops och passerkort är brådskande. Och IT-administratörer blir till slut den “mänskliga routern”. Den här automatiseringen för MySQL Gmail approvals validerar medarbetaren, skickar godkännandet rätt och mejlar korrekt formaterade meddelanden som folk faktiskt svarar på.
Nedan ser du hur workflowet avgör vem som behöver godkänna, hur det skriver professionella meddelanden med AI och vad som förändras när hela överlämningen blir konsekvent.
Så här fungerar automatiseringen
Hela n8n-workflowet, från trigger till slutresultat:
n8n Workflow Template: MySQL + Gmail: felfria godkännanden utan jagande
flowchart LR
subgraph sg0["Question form 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/form.svg' width='40' height='40' /></div><br/>Question form"]
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", 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/form.svg' width='40' height='40' /></div><br/>Return Employee not found"]
n3["<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/form.svg' width='40' height='40' /></div><br/>Get request information"]
n4@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", 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/mysql.dark.svg' width='40' height='40' /></div><br/>Get Employee"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Employee data", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Is approval required?", pos: "b", h: 48 }
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/mysql.dark.svg' width='40' height='40' /></div><br/>Get Manager"]
n9["<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/>Employee and Manager"]
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Manager field", pos: "b", h: 48 }
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 Employee data and requ.."]
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Approval request message", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "Create approval message", 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/>Data and message"]
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/form.svg' width='40' height='40' /></div><br/>End employee request"]
n16@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n17@{ icon: "mdi:message-outline", form: "rounded", label: "Notify approved request", pos: "b", h: 48 }
n18@{ icon: "mdi:message-outline", form: "rounded", label: "Notify denied request", pos: "b", h: 48 }
n19@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n20@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", pos: "b", h: 48 }
n21@{ icon: "mdi:robot", form: "rounded", label: "Create request message", pos: "b", h: 48 }
n22@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model2", pos: "b", h: 48 }
n23@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser2", pos: "b", h: 48 }
n24@{ icon: "mdi:robot", form: "rounded", label: "Create request approved mess..", pos: "b", h: 48 }
n25@{ icon: "mdi:cog", form: "rounded", label: "Send request approved to the..", pos: "b", h: 48 }
n26@{ icon: "mdi:cog", form: "rounded", label: "Send request to the purchasi..", pos: "b", h: 48 }
n27["<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/form.svg' width='40' height='40' /></div><br/>End manager request"]
n28@{ icon: "mdi:message-outline", form: "rounded", label: "Send request to approve", pos: "b", h: 48 }
n29@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Request approved?", pos: "b", h: 48 }
n1 --> n2
n1 --> n6
n8 --> n10
n5 --> n1
n6 --> n3
n6 --> n7
n0 --> n5
n14 --> n15
n4 -.-> n13
n29 --> n17
n29 --> n24
n29 --> n18
n10 --> n9
n19 -.-> n21
n22 -.-> n24
n9 --> n11
n15 --> n28
n7 --> n8
n7 --> n9
n7 --> n11
n21 --> n26
n13 --> n14
n3 --> n11
n28 --> n29
n12 --> n13
n12 --> n14
n12 --> n21
n16 -.-> n13
n20 -.-> n21
n23 -.-> n24
n24 --> n25
n11 --> n12
n26 --> n27
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 n0 trigger
class n13,n16,n20,n21,n23,n24 ai
class n4,n19,n22 aiModel
class n1,n7,n12,n29 decision
class n5,n8 database
classDef customIcon fill:none,stroke:none
class n0,n2,n3,n5,n8,n9,n11,n14,n15,n27 customIcon
Problemet: utrustningsförfrågningar fastnar i ett godkännandelimbo
De flesta “processer” för utrustningsförfrågningar är inte processer. De är en kedja av meddelanden som bygger på att folk kommer ihåg sammanhanget. Någon skickar in ett anställningsnummer som HR måste verifiera manuellt. Förfrågan kommer in utan viktiga uppgifter (modell, motivering, leveransdatum), så du måste följa upp. Sedan behöver du ta reda på om beställaren ens har en chef, och om ja, skriver du ännu ett mejl för att få ett ja/nej-beslut. Under tiden kopplas inköp in för tidigt eller för sent, vilket skapar dubbelarbete och långsamma beställningar.
Friktionen byggs på. Här är var det fallerar i praktiken:
- HR eller drift slösar cirka 10 minuter per förfrågan på att validera medarbetaren och hitta deras chef.
- Chefer svarar med “godkänd” men glömmer detaljerna, så du får skicka vidare sammanhanget (igen).
- Inköp får inkonsekventa mejl, vilket leder till följdfrågor och försenade inköp.
- Avslag blir obekväma och tar tid, så team drar sig för att säga “nej” och förfrågan blir hängande i limbo.
Lösningen: validera i MySQL, routa godkännanden, skicka proffsiga Gmail-mejl
Det här workflowet gör en rörig kedja av förfrågningar till ett strukturerat, guidat inflöde som routar sig självt. Det börjar med ett enkelt formulär där medarbetaren anger sitt anställningsnummer, sedan slår n8n upp personen i MySQL för att bekräfta att den finns och hämta grundprofilen. Därefter fångar ett andra formulär upp förfrågningsdetaljerna (vad de behöver, varför och eventuella anteckningar du vill att inköp ska se). Sedan bestämmer workflowet väg: om medarbetaren har en chef genererar det ett professionellt godkännandemejl (skrivet av en LLM i en konsekvent ton) och skickar det via Gmail med ett godkänn/avslå-steg. Om beställaren är chef hoppar det över godkännandet och går direkt till ett inköpsklart meddelande.
Workflowet börjar med validering av anställningsnummer i MySQL. Sedan slår det ihop medarbetar- + chef- + förfrågningsdata till ett prydligt paket, så mejlen blir konsekventa. Till sist skickar Gmail rätt budskap till rätt person och bekräftar utfallet på skärmen, så ingen behöver undra vad som hände.
Det du får: automatisering vs. resultat
| Det här workflowet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du hanterar 20 utrustningsförfrågningar på en vecka. Manuellt tar det ofta 10 minuter att validera medarbetaren, cirka 10 minuter att lista ut rätt godkännare och skriva ett mejl, plus ytterligare 10 minuter att städa upp och vidarebefordra den slutliga förfrågan till inköp. Det blir ungefär 10 timmars koordinering. Med det här workflowet lägger beställaren cirka 3 minuter på formulären, chefen klickar godkänn eller avslå i Gmail och inköp får ett proffsigt mejl automatiskt. Du har fortfarande överblick, men det mesta av jagandet försvinner.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- MySQL för uppslag mot medarbetartabellen.
- Gmail för att skicka godkännanden och notiser.
- OpenAI API-nyckel (hämta den från OpenAI-dashboarden).
Kompetensnivå: Medel. Du kopplar in inloggningar, mappar några fält och verifierar att din MySQL-tabell matchar förväntade kolumner.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Insamling av anställningsnummer startar allt. En medarbetare anger sitt anställningsnummer i det första formuläret. n8n frågar direkt MySQL och hämtar posten, vilket hindrar ärenden från “okänd beställare” att hamna i din kö.
Förfrågningsdetaljerna fångas upp och struktureras. Ett andra formulär samlar in vad de vill ha och varför. n8n slår ihop den datan med medarbetarprofilen, så senare steg inte bygger på att någon kopierar detaljer mellan verktyg.
Godkännanderoutning sker automatiskt. Om medarbetaren har en chef hämtar workflowet chefens post från MySQL och skapar ett strukturerat godkännandemejl med OpenAI:s chatmodell. Om beställaren är chef (eller om ingen chef finns) hoppar det över godkännanden och förbereder direkt ett inköpsmeddelande.
Gmail skickar rätt mejl och stänger loopen. Chefer får ett beslutsspår för godkänn/avslå. Beställaren får en notis oavsett utfall, och inköp får en konsekvent, professionell förfrågan som inte behöver skrivas om.
Du kan enkelt ändra vart inköpsförfrågningar ska skickas (mejl, helpdesk, ERP) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera formulärtriggern
Konfigurera intagsformuläret som initierar arbetsflödet och validerar anställd-ID.
- Öppna Enrollment Intake Form och ställ in Form Title till
Equipment Request Form. - Ställ in Form Description till
Please fill in your employee ID so we can validate your information and identify your manager. - Under Form Fields lägger ni till det obligatoriska fältet
Your employee enrollment. - Bekräfta att Response Mode är satt till
lastNodeså att formuläret väntar på slutförandenoderna.
Steg 2: anslut MySQL för uppslagning av anställda
Hämta anställd- och chefsposter från er databas.
- Öppna Fetch Employee Record och ställ in Operation till
selectmed Return All aktiverat. - Ställ in Table till
employeesoch Where tillenrollment_numberlika med{{ $json['Your employee enrollment'] }}. - Inloggningsuppgifter krävs: anslut era
mySql-inloggningsuppgifter i Fetch Employee Record. - Öppna Fetch Manager Record och ställ in Table till
employeesmed Whereidlika med{{ $json.employee.manager }}. - Inloggningsuppgifter krävs: anslut era
mySql-inloggningsuppgifter i Fetch Manager Record.
employees eller kolumnnamnen skiljer sig kommer Empty Record Check att skicka användare till Show Missing Employee även när en post finns.Steg 3: mappa anställddata och hantera saknade poster
Normalisera fält för anställda och definiera routningsregler för saknade eller icke-chefshanterade anställda.
- I Empty Record Check behåller ni villkoret
{{ $json.isEmpty() }}för att upptäcka saknade poster. - Konfigurera Show Missing Employee med Completion Title
Employee not foundoch Completion MessageIt was not possible to find your registration based on your enrollment number.. - I Map Employee Fields mappar ni fält till employee-objektet:
- employee.enrollment_number =
{{ $json.enrollment_number }} - employee.name =
{{ $json.name }} - employee.email =
{{ $json.email }} - employee.manager =
{{ $json.manager }} - employee.requires_approval =
{{ $json.manager ? true : false }}
- employee.enrollment_number =
- Map Employee Fields skickar output till både Capture Request Details och Approval Needed? parallellt.
- I Approval Needed? behåller ni villkoret
{{ $json.employee.manager }}(inte tomt) för att avgöra om en chefsuppslagning krävs.
Steg 4: samla in begäransdetaljer och slå ihop personaldata
Samla in utrustningsbegäran och slå ihop den med data för anställd och chef för vidare bearbetning.
- I Capture Request Details säkerställer ni att fältet
What would you like to request?är obligatoriskt. - I Assign Manager Object mappar ni manager till
{{ $json }}för att spara chefsposten. - Ställ in Combine Staff Records till Mode
combineoch Combine BycombineByPosition. - Ställ in Merge Staff + Request till Mode
combineoch Combine BycombineByPosition. - Approval Needed? skickar output till både Fetch Manager Record och Combine Staff Records parallellt.
Steg 5: konfigurera AI-generering av e-post
Konfigurera de tre AI-vägarna för utkast och deras strukturerade parsers.
- Öppna OpenAI Chat Engine A och välj inloggningsuppgiften
openAiApi. - Öppna OpenAI Chat Engine B och välj inloggningsuppgiften
openAiApi. - Öppna OpenAI Chat Engine C och välj inloggningsuppgiften
openAiApi. - I Generate Manager Email ställer ni in Text till
Employee request: {{ $json['What would you like to request?'] }}och behåller Prompt Typedefinemed Has Output Parser aktiverat. - I Generate Procurement Email ställer ni in Text till
Employee request: {{ $json['What would you like to request?'] }}och behåller Has Output Parser aktiverat. - I Generate Approved Procurement Email ställer ni in Text till
Employee request: {{ $('Merge Data + Email').item.json['What would you like to request?'] }}och behåller Has Output Parser aktiverat. - För Parse Manager JSON, Parse Direct JSON och Parse Approved JSON lämnar ni schemaexemplet som det är och noterar att detta är AI-undernoder; inloggningsuppgifter måste läggas till på överordnade noder (OpenAI Chat Engine A, OpenAI Chat Engine B, OpenAI Chat Engine C).
Steg 6: konfigurera godkännanderoutning och e-poståtgärder
Skicka chefsgodkännanden, meddela sedan anställda och routa till inköp baserat på beslutet.
- I Approval Path Gate behåller ni villkoret
{{ $json.employee.requires_approval }}satt till true. - Approval Path Gate skickar output till både Generate Manager Email och Merge Data + Email parallellt när godkännande krävs.
- I Merge Data + Email ställer ni in Mode till
combineoch Combine By tillcombineByPosition. - I Finalize Employee Notice ställer ni in Completion Title till
Request sent for your manager’s approvaloch Completion Message tillSoon you will receive a response on whether your request has been approved.. - I Send Manager Approval Email ställer ni in:
- Send To =
{{ $('Merge Data + Email').item.json.manager.email }} - Message =
{{ $('Merge Data + Email').item.json.output.email_text }} - Subject =
Equipment Request Approval – {{ $('Merge Data + Email').item.json.employee.name }} (Enrollment:{{ $('Merge Data + Email').item.json.employee.enrollment_number }}) - Operation =
sendAndWait
- Send To =
- Inloggningsuppgifter krävs: anslut era
gmailOAuth2-inloggningsuppgifter i Send Manager Approval Email. - I Manager Decision Check behåller ni villkoret
{{ $json.data.approved }}för att förgrena på godkännanden. - Manager Decision Check skickar output till både Email Approval Notice och Generate Approved Procurement Email parallellt när det godkänns.
- I Email Approval Notice ställer ni in:
- Send To =
{{ $('Merge Data + Email').item.json.employee.email }} - Subject =
Equipment Request Approved - Message använder
{{ $('Merge Data + Email').item.json.output.sanitized_request }}
- Send To =
- Inloggningsuppgifter krävs: anslut era
gmailOAuth2-inloggningsuppgifter i Email Approval Notice och Email Denial Notice.
Steg 7: konfigurera direkt inköpsflöde och slutförandemeddelanden
Hantera begäranden som inte kräver chefsgodkännande och skicka direkt slutförandebesked.
- När godkännande inte krävs routar Approval Path Gate till Generate Procurement Email.
- Generate Procurement Email skickar output till Dispatch Direct Procurement, som sedan routar till Finalize Manager Notice.
- I Finalize Manager Notice ställer ni in Completion Title till
Request sent to the purchasing departmentoch Completion Message tillYour request has already been forwarded to the purchasing department..
Steg 8: testa och aktivera ert arbetsflöde
Validera end-to-end-flödet innan ni aktiverar det i produktion.
- Klicka på Execute Workflow och skicka in Enrollment Intake Form med ett känt anställnings-/enrollmentnummer.
- Bekräfta att Empty Record Check routar korrekt: saknade anställda ska se Show Missing Employee.
- Skicka in begäran i Capture Request Details och verifiera att Send Manager Approval Email skickar en godkännandeförfrågan till chefen.
- Godkänn och neka i e-postmeddelandet för att testa båda grenarna: godkännande ska trigga Email Approval Notice och Generate Approved Procurement Email parallellt, medan nekning ska trigga Email Denial Notice.
- När allt fungerar växlar ni arbetsflödet till Active så att formulärtriggern är live för anställda.
Vanliga fallgropar
- Gmail-inloggningar kan löpa ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera n8n-skärmen Credentials och autentisera om ditt Google-konto först.
- Om du använder Wait-noder eller extern rendering varierar processtider. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera utdata i all evighet.
Vanliga frågor
Cirka 45 minuter om din MySQL-tabell och ditt Gmail-konto är redo.
Nej. Du kopplar främst konton och mappar fält mellan formulären, MySQL och Gmail.
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 volym. Du behöver också räkna in OpenAI API-användning, vilket vanligtvis är några cent per förfrågan för korta mejl.
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 kör n8n stabilt. Egen hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det är ärligt talat en av de bästa uppgraderingarna. Du kan ersätta inköpets “dispatch”-steg (noderna som är märkta för direkt och godkänd överlämning till inköp) med en nod som skapar ärenden i din helpdesk eller ett HTTP Request till ditt ERP. Vanliga anpassningar är att lägga till ett spårnings-ID i ämnesraden, CC:a en revisionsbrevlåda och lägga in SLA-formulering i AI-prompten så svaren blir konsekventa mellan team.
Oftast är det utgått OAuth-medgivande eller att fel Google-konto är anslutet. Anslut Gmail igen i n8n Credentials och kör sedan en enskild testförfrågan. Om det fortfarande fallerar, kontrollera att era Google Workspace-policyer tillåter de scopes som n8n begär, och håll koll på rate limits om du skickar många godkännandemejl samtidigt.
De flesta små team kan köra hundratals förfrågningar i månaden utan att behöva tänka på det.
Ofta, ja, eftersom godkännandelogiken här inte bara är en rak linje. n8n gör det enklare att förgrena utifrån “chef finns”, “godkänd/avslagen” och “saknad medarbetare”, utan att förvandla automatiseringen till en hög separata zaps eller scenarier. Du får också ett alternativ för egen hosting, vilket kan spela roll om du vill ha obegränsade körningar eller stramare kontroll över HR-data. Zapier eller Make kan fortfarande vara bra för väldigt enkel routning, men godkännanden plus databasuppslag tenderar att bli dyra och sköra. Prata med en automationsexpert om du vill ha en snabb rekommendation utifrån volym och compliance-krav.
När det här är live slutar utrustningsförfrågningar vara en skattjakt. Workflowet sköter validering, routning och korrekt formaterad kommunikation så att teamet kan fokusera på att ge folk det de behöver.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.