Reparationsanmälningar är enkla att samla in. Det röriga börjar efteråt: saknade uppgifter om lägenheten, utspridda e-posttrådar och uppdateringar som aldrig hamnar tillbaka i ett underlag du faktiskt kan lita på.
Den här automationen för reparationstracking slår hårdast mot fastighetsförvaltare, men fastighetsägare och driftpersoner som hanterar hyresgästkommunikation känner av det också. Du får en reparationshistorik per lägenhet, plus automatiska e-postuppdateringar, utan att behöva bo i inkorgen.
Nedan ser du hur flödet körs, vad det automatiserar och hur ”organiserade reparationer” ser ut när Google Forms, Google Sheets, Google Drive och Gmail äntligen beter sig som ett enda system.
Så fungerar den här automationslösningen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Google Forms + Sheets: reparationer per enhet
flowchart LR
subgraph sg0["REPLACE w/ N8N FORM trigger. Flow"]
direction LR
n0@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Upload Repair Photo", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "New details", pos: "b", h: 48 }
n3@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Photo Uploading", 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/code.svg' width='40' height='40' /></div><br/>Combine Photo URLs"]
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/code.svg' width='40' height='40' /></div><br/>Separate Photo Files"]
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/merge.svg' width='40' height='40' /></div><br/>Merge Data"]
n8@{ icon: "mdi:database", form: "rounded", label: "Update w/ Repair", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Existing Details", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n16@{ icon: "mdi:play-circle", form: "rounded", label: "REPLACE w/ N8N FORM trigger.", pos: "b", h: 48 }
n10 --> n6
n10 --> n2
n7 --> n8
n2 --> n7
n4 --> n5
n4 --> n1
n9 --> n7
n8 --> n3
n5 --> n2
n0 --> n9
n1 --> n4
n6 --> n4
n16 --> n10
n16 --> n0
end
subgraph sg1["New repair form submitted Flow"]
direction LR
n11@{ icon: "mdi:play-circle", form: "rounded", label: "New repair form submitted", pos: "b", h: 48 }
n12["<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/>Isolate new entry"]
n13@{ icon: "mdi:message-outline", form: "rounded", label: "Report Alert + Info", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "Format Data", pos: "b", h: 48 }
n15@{ icon: "mdi:database", form: "rounded", label: "Add UUID #", pos: "b", h: 48 }
n14 --> n13
n14 --> n15
n12 --> n14
n11 --> n12
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 n16,n11 trigger
class n10 decision
class n0,n8,n15 database
class n5,n6,n12 code
classDef customIcon fill:none,stroke:none
class n5,n6,n7,n12 customIcon
Problemet: reparationsuppdateringar försvinner mellan formulär, e-post och minne
Du börjar med goda intentioner: en hyresgäst skickar in en felanmälan, du mejlar någon, kanske lägger du in en notering i ett kalkylark senare. Sedan kommer verkligheten. Någon svarar i en ny e-posttråd, foton kommer som bilagor och ”senaste status” finns på tre ställen samtidigt. En vecka senare försöker du minnas om lägenhet 2B:s läcka är åtgärdad eller bara ”inbokad”, samtidigt som hyresgästen ber om en uppdatering som du svär att du redan skickat. Det är inte svårt arbete. Det är konstant arbete.
Var för sig är det små friktioner. Tillsammans blir de anledningen till att reparationer känns kaotiska.
- Du lägger cirka 10 minuter per ärende bara på att skriva in detaljer i en tracker.
- Uppdateringar kommer i Gmail, men ditt kalkylark (”källan till sanningen”) blir inaktuellt.
- Foton begravs i inkorgar, vilket gör det svårt att bevisa i efterhand vad som gjorts.
- Ingen konsekvent lägenhetsidentifierare innebär dubbletter, felmatchningar och mycket ”vilken lägenhet gällde det här?”
Lösningen: ett lägenhets-id, en rad, alla uppdateringar kopplade
Det här flödet gör din reparationsprocess till en enkel loop: en felanmälan kommer in, ansvarig får en notifiering, uppdateringar skrivs tillbaka till samma post. Det använder två samordnade automationer eftersom du har två separata tillfällen att fånga information. Först skickar en hyresgäst in ”Repair Request Form”, vilket lägger till en ny rad i Google Sheets. Flödet formaterar inskickningen, genererar ett standardiserat lägenhets-id (tänk BYGGNAD-LÄGENHET) och mejlar byggnadsansvarig en strukturerad sammanfattning med en länk till ett ”Repair Update Form”. När ansvarig skickar in uppdateringar senare, letar det andra flödet upp rätt rad i arket via lägenhets-id, laddar vid behov upp foton till Google Drive, slår ihop de nya uppgifterna med de befintliga och uppdaterar samma rad så att historiken hålls samman.
Flödet startar med en ny rad i Google Sheets som skapas av Google Forms. Därefter skickar Gmail rätt person en användbar och lättläst anmälan (plus uppdateringslänken). Sedan öppnar varje reparationsuppdatering samma post i arket, lägger till ny information och skickar ett uppföljningsmejl så att alla är synkade.
Vad du får: automation vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du förvaltar 30 lägenheter och får 10 felanmälningar i veckan. Manuellt tar även en ”snabb” process cirka 10 minuter att läsa mejlet eller formuläret, 10 minuter att logga det och ytterligare 10 minuter att jaga uppdateringar senare, så ungefär 5 timmar i veckan försvinner. Med det här flödet loggas hyresgästens inskick automatiskt och mejlar en strukturerad sammanfattning på ungefär en minut, och uppdateringar från ansvarig skrivs tillbaka till samma rad (inklusive foton) efter några minuters bearbetning i bakgrunden. Du läser och fattar beslut, istället för att flytta information mellan verktyg.
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)
- Google Forms för att samla in felanmälningar och uppdateringar.
- Google Sheets för att lagra en reparationspost per lägenhet.
- Gmail för att skicka aviseringar om nya ärenden och uppdateringsmejl.
- Google Drive för att lagra och länka reparationsfoton.
- Google API-inloggningsuppgifter (skapas i Google Cloud Console).
Kunskapsnivå: Medel. Du kopplar Google-inloggningar, klistrar in ark- och mapp-id:n och testar båda triggers från början till slut.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En ny anmälan dyker upp i ditt ark. En hyresgäst fyller i reparationsformuläret i Google Forms, vilket skapar en ny rad i Google Sheets. Flödet triggar på den nya raden så att du inte är beroende av att någon ”kollar formuläret senare”.
Anmälan struktureras och märks upp. Flödet väljer den senaste posten, formaterar nyckeldetaljerna (adress, lägenhet, brådska, kontaktuppgifter) och lägger till ett standardiserat lägenhets-id så att ärendet kan hittas igen senare. Det här id:t är limmet som håller hela historiken på ett ställe.
Gmail skickar en avisering som folk faktiskt läser. Ett strukturerat mejl går till byggnadsansvarig med sammanfattning av ärendet och en länk till Repair Update Form. Om du någon gång har vidarebefordrat ett rörigt formulärsvar och hoppats på det bästa, är det här raka motsatsen.
Uppdateringar slås ihop i originalposten. Den ansvarige skickar in ett uppdateringsformulär, flödet letar upp rätt rad via lägenhets-id, laddar vid behov upp foton till Google Drive och slår ihop den nya informationen i samma rad i arket. Sedan skickar det ett uppdateringsmejl så att hyresgästen (eller interna teamet) hålls informerad.
Du kan enkelt ändra e-postmottagarna för att inkludera leverantörer eller en delad underhållsinkorg utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera Google Sheets-triggern
Sätt upp den formulärstyrda triggern som startar arbetsflödet varje gång en ny reparationsförfrågan läggs till i ert kalkylark.
- Välj New Form Row Trigger och ställ in Event till
rowAdded. - Ställ in Document till
[YOUR_ID]och Sheet Name tillForm Responses 7. - Bekräfta att Poll Times är inställt på
everyMinuteför uppdateringar nära realtid. - Låt Manual Form Trigger ligga kvar för manuell testning och omkörningar.
Manual Form Trigger skickar utdata parallellt till både Conditional Check och Fetch Sheet Rows.
Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter till New Form Row Trigger om de inte redan är anslutna.
Steg 2: anslut Google Sheets för uppslag och uppdateringar
Konfigurera läs- och uppdateringsoperationerna som används för att hämta befintliga reparationsposter och lägga till identifierare.
- I Fetch Sheet Rows ställer ni in Document till
[YOUR_ID]och Sheet Name tillForm Responses 7. - Ställ in filtret för Fetch Sheet Rows till Lookup Column
Unique Unit IDmed Lookup Value{{ $json['UUID:'] }}. - Bekräfta att Return First Match är aktiverat med
{{ true }}. - I Append Unit Identifier ställer ni in Operation till
updateoch mappar Timestamp till{{ $json.timestamp }}samt Unique Unit ID till{{ $json.uniqueUnitId }}. - I Modify Repair Record behåller ni Operation som
updateoch mappar:
- Action till
{{ $json.Action }}, {{ $json['Action-new'] }} - Name/Date till
{{ $json.nameDate }} ,{{ $json['nameDate-new'] }} - Repair Photos till
{{ $json.repairPhotos }}, {{ $json['repairPhotos-new'] }} - Unique Unit ID till
{{ $json.UUID }}
Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter till Fetch Sheet Rows (redan konfigurerat), och lägg till samma inloggningsuppgifter i Append Unit Identifier och Modify Repair Record.
Steg 3: konfigurera formatering och routing av förfrågningsdata
Normalisera den senaste formulärposten, generera unika id:n och routa aviseringar samt uppdateringar i arket parallellt.
- I Select Latest Entry behåller ni JavaScript-koden som returnerar sista objektet:
const last = items[items.length - 1]; return [last];. - I Format Request Data ställer ni in uniqueUnitId till
{{ $json["Building Address"].replace(/\s+/g, '').toUpperCase() + '-' + String($json["Unit Number "]).trim() }}. - Mappa resterande fält i Format Request Data exakt enligt definition (t.ex. timestamp till
{{ $json.Timestamp }}, email till{{ $json.Email }}). - Bekräfta att Format Request Data skickar utdata parallellt till både Send Request Alert och Append Unit Identifier.
Steg 4: bearbeta reparationsfoton och mappa uppdateringsfält
Hantera fotobinära data, ladda upp dem till Drive och slå ihop nya uppdateringsdata med befintliga fält.
- I Conditional Check behåller ni villkoret
{{ $json.repairPhotos }}med Operation inställt påexists. - Konfigurera Split Photo Binaries med den medföljande JavaScript-koden för att dela upp inkommande binärdata i enskilda objekt.
- I Upload Fix Image ställer ni in Name till
Repair Photo-{{ $('On form submission').item.json['UUID:'] }}-{{ $('On form submission').item.json.nameDate }}och Input Data Field Name tilldata. - Säkerställ att Batch Photo Processing kopplas till Upload Fix Image och sedan till Merge Image Links så att länkarna kombineras.
- I Merge Image Links behåller ni JavaScript-koden som ger utdata
photosCombinedochphotosArray. - I Map New Details mappar ni:
- UUID till
{{ $('On form submission').first().json['UUID:'] }} - Action-new till
{{ $('On form submission').first().json.Action }} - nameDate-new till
{{ $('On form submission').first().json.nameDate }} - repairPhotos-new till
{{ $json.photosCombined || "" }}
Inloggningsuppgifter krävs: Anslut era Google Drive-inloggningsuppgifter till Upload Fix Image.
⚠️ Vanlig fallgrop: Om reparationsformuläret inte innehåller filer kommer Split Photo Binaries att ge en tom array—se till att Conditional Check filtrerar detta fall korrekt.
Steg 5: slå ihop befintliga och nya reparationsdata
Kombinera den befintliga reparationsposten med de nya uppdateringsdetaljerna innan ni uppdaterar kalkylarket.
- I Set Existing Fields mappar ni UUID till
{{ $json['Unique Unit ID'] }}, Action till{{ $json.Action }}, nameDate till{{ $json['Name/Date'] }}och repairPhotos till{{ $json['Repair Photos'] }}. - Behåll Combine Update Data i Mode
combinemed Join ModekeepEverythingoch Fields To MatchUUID. - Verifiera att både Set Existing Fields och Map New Details matar in i Combine Update Data.
Steg 6: konfigurera e-postaviseringar
Skicka aviseringar för nya ärenden och bekräftelsemejl efter att uppdateringar har loggats.
- I Send Request Alert ställer ni in Subject till
n8nTESt - Urgency: {{ $json.urgency }}. Service Request @ {{ $json.building }}, Unit{{ $json.unit }}. - I Send Request Alert behåller ni HTML-Message-innehållet och ersätter platshållare som
[N8N PRODUCTION FORM LINKoch[ADD LINK TO SPREADSHEET URL]med riktiga URL:er. - I Dispatch Update Email ställer ni in Subject till
Repair update submittedoch ersätter[ADD LINK TO SPREADSHEET]med den riktiga logglänken. - Bekräfta att Modify Repair Record skickar utdata till Dispatch Update Email.
Inloggningsuppgifter krävs: Anslut era Gmail-inloggningsuppgifter till Send Request Alert och Dispatch Update Email.
Steg 7: testa och aktivera ert arbetsflöde
Validera flödet från start till mål och aktivera det sedan för produktion.
- Kör arbetsflödet manuellt med Manual Form Trigger för att simulera indata och se båda parallella grenarna köras.
- Verifiera att Send Request Alert och Append Unit Identifier körs parallellt efter Format Request Data.
- Bekräfta att uppladdningar till Google Drive skapar länkar och att Merge Image Links ger utdata
photosCombined. - Kontrollera målarket för att säkerställa att Modify Repair Record lägger till värden korrekt och att Dispatch Update Email levereras.
- När testningen är klar växlar ni arbetsflödet till Active så att New Form Row Trigger körs kontinuerligt.
Vanliga fallgropar
- Inloggningar för Google Sheets och Google Drive kan löpa ut eller kräva särskilda behörigheter. Om saker slutar fungera, kontrollera först panelen Credentials i n8n och inställningarna för OAuth-samtycke i Google Cloud.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder misslyckas på grund av 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 dina formulär, arket och Drive-mappen är klara.
Nej. Du kopplar mest Google-konton och klistrar in id:n för ditt ark och dina mappar. Du behöver göra lite testning så att du kan bekräfta att lägenhets-id och uppslaget för uppdateringar fungerar korrekt.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod i n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också ta hänsyn till Googles användningsgränser (oftast försumbart för små fastigheter) och eventuell valfri AI-användning om du aktiverar sammanfattningar.
Två alternativ: n8n Cloud (hanterat, enklast uppsättning) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och kör n8n bra. Egen drift ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det är en smart justering. Använd den befintliga villkorslogiken för att upptäcka ”Urgent” från formulärinskickningen och ändra sedan innehåll och mottagare i Gmail-steget ”Send Request Alert” för den grenen. Vanliga anpassningar är att CC:a en leverantör, skicka en extra avisering till en delad underhållsinkorg och routa brådskande ärenden till en separat flik i Google Sheets.
Oftast beror det på utgånget OAuth-samtycke i Google eller att fel konto är kopplat i n8n. Anslut Google Sheets-inloggningen igen och bekräfta sedan att kalkylarks-id och blad/flik matchar vad noderna förväntar sig. Om det bara misslyckas vid uppdateringar är uppslaget på lägenhets-id ofta boven, så kontrollera att uppdateringsformuläret skickar lägenhets-id exakt som det är lagrat.
Mer än tillräckligt för ett litet till medelstort bestånd. Med n8n Cloud Starter kan du köra tillräckligt många körningar per månad för normal reparationsvolym i de flesta fastigheter, och högre nivåer klarar mer. Om du kör egen drift finns ingen gräns för antal körningar (det beror på din server). I praktiken är uppslag i Sheets och uppladdningar till Drive flaskhalsen, så ärenden med många foton tar längre tid än uppdateringar med bara text.
Ofta, ja. Den här lösningen har två triggers (nytt ärende och senare uppdateringar), villkorsstyrd fotohantering och sammanfogning av data i en och samma rad, vilket är där Zapier och Make kan bli pilligt eller dyrt när antalet grenar växer. n8n är också enklare att köra i egen drift när du vill ha förutsägbara kostnader, och du kan granska varje steg när något blir konstigt. Om du bara behöver ”formulärinskick → skicka ett mejl” fungerar Zapier fint. För en verklig reparationshistorik per lägenhet är n8n en renare lösning, ärligt talat. Prata med en automationsexpert om du vill ha hjälp att välja.
När det här väl rullar slutar felanmälningar kännas som viskleken. Flödet håller ordning på historiken, så att du kan fokusera på att få jobbet gjort.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.