Flygbiljettspriser sjunker inte på ditt schema. Du uppdaterar Google Flights, kollar Skyscanner, öppnar tre flikar till “bara för att bekräfta”, och sedan försvinner priset medan du är upptagen med att faktiskt jobba.
Det här drabbar rese-konsulter hårdast, men ops-ansvariga och interna reseansvariga känner av det också. Med automatisering för prisbevakning på flyg slutar du sitta barnvakt åt sökresultat och börjar få strukturerade Slack-notiser i rätt tid när en rutt faktiskt blir värd att boka.
Det här flödet hämtar priser från flera källor, loggar historiken i Google Sheets, kör en AI-baserad “rimlighetskontroll” och först därefter notifierar det teamet. Nedan ser du exakt vad som automatiseras, vilka resultat du kan förvänta dig och hur du anpassar det för dina rutter och trösklar.
så fungerar automatiseringen
Hela n8n-flödet, från trigger till slutligt resultat:
n8n Workflow Template: Google Sheets + Slack: fånga fallande flygpriser
flowchart LR
subgraph sg0["Schedule Price Check Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Price Check", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Flight Search Parameters", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Check Kayak API"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Check Google Flights"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Check Skyscanner"]
n5@{ icon: "mdi:cog", form: "rounded", label: "Aggregate Flight Data", pos: "b", h: 48 }
n6@{ icon: "mdi:brain", form: "rounded", label: "AI Analysis Model", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Flight Price Analyzer", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n9@{ icon: "mdi:database", form: "rounded", label: "Store Price History", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check If Booking Ready", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare Booking Data", 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/slack.svg' width='40' height='40' /></div><br/>Send Booking Alert to Slack"]
n13["<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/wordpress.svg' width='40' height='40' /></div><br/>Create WordPress Post"]
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/slack.svg' width='40' height='40' /></div><br/>Send Price Update Summary"]
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/code.svg' width='40' height='40' /></div><br/>Price Change Calculator"]
n16@{ icon: "mdi:database", form: "rounded", label: "Fetch Historical Prices", pos: "b", h: 48 }
n17@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Multi-Criteria Decision", pos: "b", h: 48 }
n18@{ icon: "mdi:brain", form: "rounded", label: "Enhanced Analysis Prompt", pos: "b", h: 48 }
n19@{ icon: "mdi:robot", form: "rounded", label: "Advanced Flight Analyzer", pos: "b", h: 48 }
n20@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Risk Assessment Check", pos: "b", h: 48 }
n21["<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/slack.svg' width='40' height='40' /></div><br/>Send Detailed Analytics Report"]
n22["<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/wordpress.svg' width='40' height='40' /></div><br/>Create Detailed WordPress Re.."]
n23["<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/slack.svg' width='40' height='40' /></div><br/>High Urgency Booking Alert"]
n2 --> n5
n4 --> n5
n6 -.-> n7
n9 --> n14
n3 --> n5
n11 --> n12
n11 --> n13
n0 --> n1
n5 --> n7
n5 --> n16
n7 --> n9
n7 --> n10
n20 --> n11
n20 --> n23
n10 --> n11
n16 --> n15
n17 --> n20
n17 --> n21
n17 --> n14
n15 --> n19
n19 --> n17
n18 -.-> n19
n1 --> n2
n1 --> n3
n1 --> n4
n8 -.-> n7
n21 --> n22
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 n7,n8,n19 ai
class n6,n18 aiModel
class n10,n17,n20 decision
class n9,n16 database
class n2,n3,n4 api
class n15 code
classDef customIcon fill:none,stroke:none
class n2,n3,n4,n12,n13,n14,n15,n21,n22,n23 customIcon
problemet: prisfall sker när du inte tittar
Manuell prisbevakning låter enkelt tills du gör det för mer än en rutt. Du kollar Google Flights, sedan Skyscanner, sedan kanske Kayak, och ändå känns det osäkert eftersom varje källa kan visa lite olika tider, skatter eller tillgänglighet. Under tiden hamnar dina “anteckningar” utspridda mellan webbläsarbokmärken, slumpmässiga skärmdumpar och någons minne av vad priset var förra tisdagen. Det handlar inte bara om tid. Det är den mentala belastningen av konstant jämförelse, plus risken att missa den enda dipp som skulle gjort resan prisvärd.
Det summerar snabbt. Här är var det faller isär i verkliga team.
- Du slutar med att kontrollera samma rutter flera gånger om dagen eftersom det saknas en gemensam källa som alla litar på.
- Folk tappar förtroendet för notiser eftersom de bygger på en enda sajt, inte en korskontroll mot annan data.
- “Var det här verkligen ett fall?” blir en diskussion när du inte har en korrekt formaterad prishistorik samlad på ett ställe.
- Även när du hittar ett bra pris slösar du tid på att formatera ett meddelande, tagga rätt personer och kopiera detaljer till ett ark.
lösningen: prischeckar från flera källor loggade i sheets, aviseringar i slack
Det här n8n-flödet kör schemalagda prischeckar för rutterna du bryr dig om, hämtar prisdata från Google Flights, Skyscanner och Kayak och kombinerar sedan resultaten till en enhetlig datamängd. Efter det gör det något som många enkla alert-upplägg hoppar över: det jämför aktuella priser med din lagrade historik i Google Sheets och kör ett AI-analyslager som flaggar trender, avvikelser och “falsklarm”. Om siffrorna godkänns enligt dina beslutsregler (dina trösklar, dina riskspärrar och dina kontroller för bokningsberedskap) skickar det Slack-notiser med bokningsklara detaljer och uppdaterar arket så att hela teamet ser samma bild. När flödet hittar något som verkligen går att agera på kan det också publicera ett deal-inlägg eller en analysrapport till WordPress automatiskt.
Flödet startar enligt ett schema. Det samlar in och slår ihop prisresultat, utvärderar sedan prisrörelse och kontext (säsong, efterfrågan på rutten, märkliga toppar). Till sist uppdaterar det ditt Google-ark och skickar rätt meddelande i Slack, vilket gör att du agerar på prisfall i stället för att upptäcka dem för sent.
vad du får: automatisering vs. resultat
| vad det här flödet automatiserar | resultat du får |
|---|---|
|
|
exempel: så här ser det ut
Säg att du bevakar 12 rutter för kundresor och att du kollar 3 källor (Google Flights, Skyscanner, Kayak) två gånger om dagen. Om varje kontroll tar cirka 5 minuter per källa blir det ungefär 6 timmar i veckan av flikhoppande och copy-paste. Med det här flödet sätter du kriterierna en gång, sedan tar varje körning en minut att dra igång (den är schemalagd) och några minuter att processa i bakgrunden. Du lägger bara tid när Slack säger: “den här är viktig”.
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 Sheets för att lagra och granska prishistorik
- Slack för att skicka notiser till rätt kanal
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard)
svårighetsnivå: Medel. Du kopplar konton, klistrar in API-tokens och justerar några trösklar och fält.
Vill du inte sätta upp det här själv? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).
så fungerar det
En schemalagd körning startar kontrollen. “Scheduled Price Trigger” körs med det intervall du väljer (varje timme, dagligen eller något däremellan), så du är inte beroende av att någon kommer ihåg att kolla.
Dina flygkriterier tillämpas konsekvent. Flödet definierar avreseort, destination, datum, kabinklass och eventuella filter du har satt, och skickar sedan samma parametrar till varje källa så att du jämför äpplen med äpplen.
Prisdata från flera källor slås ihop och analyseras. HTTP-anrop hämtar resultat från Kayak, Google Flights och Skyscanner, och därefter aggregerar flödet dem. Sedan granskar en AI-agent den sammanslagna outputen, tittar på tidigare priser i Google Sheets och hjälper till att tolka rörelser så att du inte jagar märkliga toppar.
Beslut routas till Slack och publicering. Om kontrollerna för bokningsberedskap och riskutvärdering går igenom mappar flödet bokningsfälten och skickar en Slack-notis för bokning (plus en brådskande ping vid behov). Det kan också publicera deal-inlägg och analysrapporter till WordPress för ett kundnära flöde eller intern rapportering.
Du kan enkelt ändra priströsklarna så att de matchar dina rutter och budgetar utifrån dina behov. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera schematriggern
Ställ in arbetsflödets körfrekvens och definiera kriterierna för flygsökningen som resten av flödet kommer att använda.
- Öppna Scheduled Price Trigger och ställ in schemaregeln så att den körs var 6:e timme genom att sätta Interval till
hoursoch hoursInterval till6. - I Define Flight Criteria ställer ni in departure_city till
New Yorkoch destination tillTokyo. - Ställ in date_range_start till
{{ $now.plus(30, 'days').toFormat('yyyy-MM-dd') }}och date_range_end till{{ $now.plus(60, 'days').toFormat('yyyy-MM-dd') }}. - Ställ in max_budget till
1200och preferred_departure_time tillmorning.
Steg 2: konfigurera parallell insamling av flygdata
Hämta flygdata från flera leverantörer parallellt och sammanställ den till en gemensam dataset.
- I Kayak Data Request ställer ni in URL till
https://www.kayak.com/flights/{{ $json.departure_city }}-{{ $json.destination }}/{{ $json.date_range_start }}. - I Google Flights Fetch ställer ni in URL till
https://www.google.com/travel/flights/search?q=Flights+to+{{ $json.destination }}+from+{{ $json.departure_city }}. - I Skyscanner Lookup ställer ni in URL till
https://www.skyscanner.com/transport/flights/{{ $json.departure_city }}/{{ $json.destination }}. - Säkerställ att Define Flight Criteria skickar output parallellt till Kayak Data Request, Google Flights Fetch och Skyscanner Lookup.
- Ställ in Combine Flight Results till Aggregate med
aggregateAllItemDataså att de tre HTTP-resultaten slås ihop.
Define Flight Criteria skickar output parallellt till Kayak Data Request, Google Flights Fetch och Skyscanner Lookup, och därefter matar alla tre Combine Flight Results.
Steg 3: konfigurera AI-analys och parsning
Konfigurera AI-modellen och agenterna som tolkar rå flygdata och genererar strukturerade insikter.
- Öppna AI Model Config och ställ in alternativen till en låg temperatur (redan satt till
0.3) för konsekvent extraktion. - I Flight Insight Agent behåller ni prompten som definierad och säkerställer att den refererar till kriteriefälten som
{{ $('Define Flight Criteria').item.json.departure_city }}och den aggregerade datan med{{ JSON.stringify($json) }}. - Koppla Structured Parse Output som output-parser för Flight Insight Agent.
- Öppna Enhanced AI Prompt och bekräfta att model är satt till
gpt-4omed temperaturen0.2. - I Advanced Insight Agent behåller ni prompten och säkerställer att den refererar till
{{ $('Compute Price Changes').first()?.json.average_price || 'N/A' }}och annan historisk analys.
Autentisering krävs: Anslut era OpenAI-uppgifter i AI Model Config och Enhanced AI Prompt.
Obs: Structured Parse Output är en AI-undernod; lägg till autentisering på den överordnade språkmodellnoden (AI Model Config), inte på själva parsern.
Steg 4: konfigurera historisk data och prisanalys
Lagra prishistorik i Google Sheets och beräkna analyser som matar det avancerade beslutsflödet.
- I Append Price History ställer ni in Operation till
append, Sheet Name tillFlight Price Historyoch Document ID till ert Google Sheet-ID. - I Retrieve Past Prices ställer ni in Sheet Name till
Flight Price Historyoch Document ID till samma sheet-ID. - I Compute Price Changes behåller ni den medföljande JavaScript-koden för att beräkna volatilitet, trendstyrka och konfidens.
- Bekräfta flödet: Combine Flight Results skickar output parallellt till Retrieve Past Prices och Flight Insight Agent, och Retrieve Past Prices matar Compute Price Changes.
Autentisering krävs: Anslut era Google Sheets-uppgifter till Append Price History och Retrieve Past Prices.
Steg 5: konfigurera beslutsroutning och bokningsaviseringar
Routa AI-resultat till brådsketrösklar, mappa bokningsfält och skicka aviseringar eller inlägg baserat på beredskap.
- I Booking Readiness Check behåller ni villkoren:
{{ $json.booking_ready }}är lika medtrueOCH{{ $json.lowest_price }}är mindre än eller lika med{{ $('Define Flight Criteria').item.json.max_budget }}. - I Decision Routing bekräftar ni de tre routningsreglerna för
immediate_booking,price_drop_alertochwait_and_monitormed de definierade uttrycken. - I Risk Evaluation Gate behåller ni villkoren som kräver
{{ $json.booking_urgency_score }}större än eller lika med75och{{ $json.price_volatility }}inte lika medhigh. - I Map Booking Fields mappar ni fälten med uttryck som
{{ $json.best_flight_details.booking_url }}och sätter timestamp till{{ $now.toISO() }}. - Säkerställ att Map Booking Fields skickar output parallellt till både Slack Booking Alert och Publish Deal Post.
Combine Flight Results skickar output parallellt till både Flight Insight Agent och Retrieve Past Prices, och Risk Evaluation Gate skickar output parallellt till både Map Booking Fields och Slack Urgency Alert.
Steg 6: konfigurera Slack- och WordPress-utdata
Leverera aviseringar till Slack och publicera inlägg i WordPress baserat på AI-insikter och routningsutfall.
- I Slack Booking Alert ställer ni in Channel till er målkanal och behåller meddelandemallen som använder
{{ $json.flight_price }}och{{ $('Flight Insight Agent').item.json.price_trend }}. - I Slack Price Summary väljer ni sammanfattningskanalen och behåller meddelandemallen med
{{ $json.lowest_price }}och{{ $json.optimal_window ? 'Yes ✅' : 'No ⏳' }}. - I Slack Urgency Alert väljer ni aviseringskanalen och behåller brådskande-meddelandemallen som använder
{{ $('Advanced Insight Agent').item.json.booking_urgency_score }}. - I Slack Analytics Report använder ni blockmeddelandemallen som refererar till
{{ $('Compute Price Changes').item.json.average_price }}och{{ $('Advanced Insight Agent').item.json.recommendation }}. - I Publish Deal Post ställer ni in Title till
Japan Flight Deal Alert: ${{ $json.flight_price }} to {{ $('Define Flight Criteria').item.json.destination }}och behåller kategorierna. - I Publish Analytics Report ställer ni in Title till
Japan Flight Intelligence Report: {{ $now.toFormat('MMM dd, yyyy') }}och behåller statuspublish.
Autentisering krävs: Anslut era Slack-uppgifter till Slack Booking Alert, Slack Price Summary, Slack Urgency Alert och Slack Analytics Report.
Autentisering krävs: Anslut era WordPress-uppgifter till Publish Deal Post och Publish Analytics Report.
Steg 7: testa och aktivera ert arbetsflöde
Verifiera att datainsamling, AI-analys, routning och aviseringar fungerar end-to-end innan ni slår på det.
- Klicka på Execute Workflow och bekräfta att Define Flight Criteria skickar ut förväntade värden.
- Verifiera att Kayak Data Request, Google Flights Fetch och Skyscanner Lookup returnerar svar och att Combine Flight Results aggregerar dem.
- Kontrollera att Flight Insight Agent returnerar strukturerad JSON och att Append Price History skriver en rad till Google Sheets.
- Bekräfta att Compute Price Changes producerar analysdata och att Advanced Insight Agent routar in i Decision Routing som förväntat.
- Kontrollera Slack-meddelanden och WordPress-inlägg från Slack Booking Alert, Slack Price Summary, Slack Analytics Report och Publish Deal Post eller Publish Analytics Report.
- När testerna är lyckade växlar ni arbetsflödet till Active så att Scheduled Price Trigger körs automatiskt.
vanliga fallgropar
- Behörigheter i Google Sheets kan vara den tysta mördaren. Om rader slutar läggas till, kontrollera det anslutna Google-kontot i n8n och bekräfta att målarket och fliken fortfarande finns.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre ned misslyckas på grund av tomma svar.
- OpenAI-prompter är avsiktligt generiska, men det ger också generiska resultat. Lägg in ditt språk för “vad som räknas som ett riktigt bra pris” tidigt (ruttregler, föredragna flygbolag, antaganden om bagage), annars kommer du att behöva ifrågasätta AI-sammanfattningarna.
vanliga frågor
Cirka 45 minuter om du redan har dina API-tokens.
Nej. Du kopplar mest konton och redigerar några fält och trösklar.
Ja. n8n har ett gratis alternativ för egen drift 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 OpenAI API-användning och eventuella avgifter för flygdata-API:er från dina leverantörer.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och klarar n8n bra. Egen drift ger obegränsat antal körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Uppdatera rutt, datum, kabinklass och filter i steget “Define Flight Criteria”, och skärp sedan beslutslogiken genom att justera trösklar i kontrollerna “Decision Routing” och “Risk Evaluation Gate”. Vanliga justeringar är att lägga till föredragna flygbolag, exkludera långa mellanlandningar och använda olika trösklar för prisfall per rutt.
Oftast handlar det om behörigheter eller att kalkylarket har ändrat struktur. Återanslut Google-kontot i n8n, bekräfta att sheet ID och fliknamn fortfarande stämmer, och kontrollera att kontot kan redigera (inte bara visa). Om arket har duplicerats eller en kolumn har bytt namn kan stegen “Append Price History” och “Retrieve Past Prices” peka på fält som inte längre finns.
Tillräckligt för ett mindre team.
För just det här användningsfallet är n8n oftast ett bättre val eftersom flödet inte är ett enkelt “om priset sjunker, skicka meddelande”. Du slår ihop flera källor, lagrar historik, kör beräkningar och routar beslut via AI och riskkontroller, vilket är den typen av förgrening och datatransformering som blir dyr (eller krånglig) i Zapier och Make. n8n ger också möjligheten att köra i egen drift med obegränsade körningar, vilket spelar roll när du checkar ofta. Zapier eller Make kan fortfarande funka om du bara behöver en källa och en enkel tröskelnotis. Om du är osäker, prata med en automatiseringsexpert så gör vi en rimlighetskontroll av den enklaste setupen som når ditt mål.
När det här väl rullar slutar du jaga priser och börjar reagera på verkliga möjligheter. Det är ärligt talat hela poängen.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.