MAP-övervakning blir snabbt rörig. En återförsäljare justerar ett pris, en annan annons tar slut i lager, och du sitter och uppdaterar produktsidor och tvivlar på det du nyss såg.
Varumärkesansvariga brukar känna av det först. Sedan börjar e-handelsdriften jaga skärmdumpar, och compliance-folket får till slut reagera för sent. Den här automatiseringen för MAP-överträdelser gör din återförsäljarlista till Slack-meddelanden du faktiskt kan agera på.
Du får se hur arbetsflödet kontrollerar varje URL från Google Sheets enligt schema, skrapar det aktuella priset och postar tydliga “slut i lager”- eller “MAP-överträdelse”-larm i Slack.
Så här fungerar automatiseringen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: Google Sheets + Slack: pålitliga varningar vid MAP-brott
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Run a workflow task", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", 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/slack.svg' width='40' height='40' /></div><br/>Send a message"]
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/merge.svg' width='40' height='40' /></div><br/>Merge"]
n7@{ icon: "mdi:cog", form: "rounded", label: "Get details of a workflow task", 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/code.svg' width='40' height='40' /></div><br/>Code in JavaScript"]
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If1", 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/slack.svg' width='40' height='40' /></div><br/>Send a message1"]
n4 --> n5
n4 --> n6
n9 --> n10
n9 --> n4
n6 --> n2
n5 --> n6
n2 --> n3
n10 --> n6
n0 --> n1
n8 --> n9
n1 --> n2
n3 --> n7
n7 --> n8
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 n4,n9 decision
class n1 database
class n8 code
classDef customIcon fill:none,stroke:none
class n5,n6,n8,n10 customIcon
Problemet: MAP-kontroller skalar inte bortom “några få URL:er”
Att hålla MAP intakt låter enkelt tills du jonglerar dussintals återförsäljare, var och en med sina egna sajt-egenheter, produktlayoutar och “special”-logik för prissättning. Manuella kontroller skapar en dålig kombination av långsam upptäckt och svaga bevis. Du ser en överträdelse sent, du kan inte återskapa den senare, och den interna tråden blir “är vi säkra?” i stället för “här är länken, här är priset, här är vad vi ska göra.” Ännu värre: slut-i-lager-sidor ser ofta ut som trasiga sidor, så team missar lagersignaler eller behandlar dem som överträdelser.
Det här drar snabbt iväg. Här är var det brister.
- Att kontrollera 40 återförsäljar-URL:er med ens 5 minuter per styck kan sluka runt 3 timmar, och då är dokumentation inte ens inräknad.
- Priserna hinner ändras mellan kontroller, så du får veta det efter att skadan redan skett och tvingas skicka “snälla fixa”-mejl med svaga underlag.
- Olika kollegor tolkar samma sida olika, vilket innebär inkonsekvent efterlevnad och mer intern pingpong.
- Slut-i-lager-listningar ignoreras tills det blir ett kanalproblem, inte bara en enstaka saknad produkt.
Lösningen: schemalagd skrapning + Slack-larm från ditt ark
Det här arbetsflödet körs enligt schema (timvis är vanligt) och hämtar din bevakningslista direkt från Google Sheets. För varje rad besöker det återförsäljarens produkt-URL via BrowserAct, skrapar sidans liveinnehåll och parsar fram det aktuella annonserade priset. Sedan tar det två praktiska beslut: först kontrollerar det om skrapningen gav “NoData”, vilket behandlas som slut i lager, och postar ett lagerlarm i Slack. Om sidan innehåller data jämför det skrapat pris med MAP-priset som ligger i ditt ark och postar ett MAP-överträdelselarm när återförsäljaren ligger under MAP. Till sist slår det ihop resultatvägarna och fortsätter till nästa återförsäljare tills listan är klar.
Arbetsflödet börjar med ditt ark som sanningskälla. BrowserAct gör grovjobbet genom att öppna riktiga produktsidor och fånga priset på ett tillförlitligt sätt. Slack blir den enda platsen där avvikelser dyker upp, så du behöver inte leva i kalkylark hela dagen.
Det här får du: automatisering vs. resultat
| Vad detta arbetsflöde automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du följer 30 återförsäljarlistningar och gör en snabb manuell kontroll två gånger om dagen. Om varje listning tar cirka 4 minuter att ladda, verifiera och logga blir det runt 4 timmar per dag. Med det här arbetsflödet uppdaterar du Google-arket en gång och låter sedan den timvisa körningen göra kontrollerna i bakgrunden. Du kanske lägger 5 minuter på att skanna Slack-larm och klickar bara in på den handfull som kräver åtgärd.
Det du behöver
- n8n-instans (testa n8n Cloud gratis)
- Egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra återförsäljar-URL:er och MAP.
- Slack för att leverera larm om överträdelser och lagersaldo.
- BrowserAct API-nyckel (hämta den i din BrowserAct-kontos dashboard).
Svårighetsgrad: Medel. Du kopplar konton, mappar fält i arket och bekräftar att skrapningen returnerar priset du förväntar dig.
Vill du inte sätta upp detta själv? Prata med en automationsspecialist (gratis 15-minuters konsultation).
Så fungerar det
Ett tidsstyrt schema drar igång. Arbetsflödet kör automatiskt (timvis, dagligen eller det din kanal behöver) så att du inte är beroende av att någon kommer ihåg att “gå och kolla priser”.
Ditt Google-ark ger bevakningslistan. n8n läser varje rad med återförsäljarens namn, produkt-URL och MAP-pris (ofta en kolumn som AP_Price). Arket är också det enklaste stället att lägga till eller ta bort återförsäljare utan att röra arbetsflödet.
BrowserAct besöker varje listning och returnerar siddata. Arbetsflödet loopar igenom rader i batchar, kör en BrowserAct-task, hämtar task-detaljer och parsar sedan payloaden för att plocka ut aktuellt annonserat pris eller ett “no data”-läge.
Slack får två typer av larm. Slut i lager får sitt eget meddelande. MAP-överträdelser får ett annat larm efter prisjämförelsen, vilket håller kanalen fokuserad och minskar falsklarm.
Du kan enkelt ändra schemafrekvens och Slack-routning efter behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera den schemalagda triggern
Det här arbetsflödet startar enligt ett tidsstyrt schema och hämtar sedan rader för prisefterlevnad från Google Sheets.
- Lägg till och öppna Timed Run Trigger.
- Ställ in önskat schema i intervallet Rule (noden har som standard ett tomt intervall, så välj er körfrekvens).
- Bekräfta kopplingen från Timed Run Trigger till Retrieve Sheet Rows.
Steg 2: Anslut Google Sheets
Hämta produktrader från er prislista för efterföljande kontroller.
- Öppna Retrieve Sheet Rows.
- Ställ in Document till
[YOUR_ID]och Sheet Name tillgid=0(Sheet1 i det cachelagrade resultatet). - Autentiseringsuppgifter krävs: Anslut era googleSheetsOAuth2Api-uppgifter.
- Säkerställ att noden skickar vidare till Batch Item Iterator.
Reseller_URL och AP_Price att sluta fungera.Steg 3: Iterera rader och kör webbläsarkontroller
Arbetsflödet loopar igenom varje rad i arket och triggar ett Browser Act-arbetsflöde för att hämta prisdata.
- Öppna Batch Item Iterator och behåll standardinställningarna (den batchar rader från arket).
- I Execute Browser Task, ställ in Workflow ID till
[YOUR_ID]. - Ställ in Target_Link till
{{ $json.Reseller_URL }}under Input Parameters. - Autentiseringsuppgifter krävs: Anslut era browserActApi-uppgifter i Execute Browser Task.
- I Fetch Task Details, ställ in Operation till
getTask, Task ID till{{ $json.id }}, och aktivera Wait For Finish. - Autentiseringsuppgifter krävs: Anslut era browserActApi-uppgifter i Fetch Task Details.
$input.first().json.output.string, eftersom parsningen är beroende av exakt den sökvägen.Steg 4: Tolka och utvärdera prisdata
Konvertera Browser Act-utdata till enskilda objekt och utvärdera lagerstatus och prisefterlevnad.
- Öppna Parse Price Payload och lämna JavaScript-koden som den är; den tolkar
$input.first().json.output.stringoch returnerar flera objekt. - I Out of Stock Check, säkerställ att villkoret jämför Left Value
{{ $json.Price }}lika med Right ValueNoData. - I Price Breach Check, bekräfta två villkor:
{{ $json.Price }}finns, och{{ $json.Price }}är mindre än{{ $('Batch Item Iterator').item.json.AP_Price }}. - Verifiera routingen: true-vägen från Out of Stock Check går till Post Stock Alert; false-vägen går till Price Breach Check.
- Säkerställ att Combine Result Paths är inställd på Mode
chooseBranch, Outputempty, och Number Inputs3för att loopa tillbaka till Batch Item Iterator.
Steg 5: Konfigurera Slack-aviseringar
Skicka Slack-notiser för produkter som är slut i lager och för prisöverträdelser.
- Öppna Post Stock Alert och ställ in Channel ID till
[YOUR_ID]. - Ställ in Text till
{{ $('Batch Item Iterator').item.json.Reseller_Name }} is out of stock on Product {{ $('Batch Item Iterator').item.json.Product_SKU }} Link : {{ $('Batch Item Iterator').item.json.Reseller_URL }} Date : {{ $('Timed Run Trigger').item.json["Readable date"] }}. - Autentiseringsuppgifter krävs: Anslut era slackOAuth2Api-uppgifter i Post Stock Alert.
- Öppna Post Violation Alert och ställ in Channel ID till
[YOUR_ID]. - Ställ in Text till
{{ $('Batch Item Iterator').item.json.Reseller_Name }} is Breaking Rules {{ $('Batch Item Iterator').item.json.Product_SKU }} Price is less than {{ $('Batch Item Iterator').item.json.AP_Price }} current Price : {{ $json.Price }} Link : {{ $('Batch Item Iterator').item.json.Reseller_URL }} Date : {{ $('Timed Run Trigger').item.json["Readable date"] }}. - Autentiseringsuppgifter krävs: Anslut era slackOAuth2Api-uppgifter i Post Violation Alert.
oAuth2, så säkerställ att er Slack-app har behörighet att posta i den valda kanalen.Steg 6: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att verifiera hela loopen och aktivera sedan för schemalagd efterlevnadsövervakning.
- Klicka på Execute Workflow för att köra Timed Run Trigger manuellt.
- Bekräfta att Retrieve Sheet Rows ger ut objekt och att Batch Item Iterator startar loopen.
- Verifiera att Execute Browser Task och Fetch Task Details returnerar en giltig payload och att Parse Price Payload skickar ut flera objekt.
- Kontrollera Slack efter meddelanden från Post Stock Alert och Post Violation Alert när villkoren uppfylls.
- När allt fungerar, växla arbetsflödet till Active för schemalagda produktionskörningar.
Vanliga fallgropar
- Google Sheets-inloggningar kan löpa ut eller tappa åtkomst till filen. Om saker slutar fungera: kontrollera först n8n:s credential-koppling och delningsbehörigheter för kalkylarket.
- Om du använder Wait-noder eller extern rendering varierar processningstiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- BrowserAct-skrapning kan returnera “NoData” om sajten blockerar automation eller om selector-logiken inte matchar sidan. Bekräfta BrowserAct-taskens output i körningsloggen innan du antar att listningar verkligen är slut i lager.
Vanliga frågor
Cirka 30 minuter om ditt ark och dina konton är redo.
Nej. Du kopplar Google Sheets, Slack och BrowserAct och mappar sedan fält som URL och MAP-pris.
Ja. n8n har ett gratis alternativ för egen hosting 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 med BrowserAct-kostnader baserat på hur många sidor du skrapar.
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 klarar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, men då vill du lägga till en kolumn “channel” i Google Sheets och routa larm baserat på det värdet. I n8n kan du förgrena innan Slack-noderna och skicka överträdelser till olika kanaler beroende på varumärke, region eller produktlinje. Många anpassar också larmmeddelandet för att inkludera återförsäljarnivå, senast sedd-datum eller en “owner” @mention. Om du använder flera ark (ett per varumärke) kan du duplicera arbetsflödet och byta Google Sheets-noden, eller behålla ett arbetsflöde och växla ark baserat på schemalagda tidsfönster.
Oftast är det en API-nyckel-fråga eller så matchar inte BrowserAct task template ID det du har i ditt konto. Kontrollera först BrowserAct-credential i n8n, öppna sedan senaste körningen och inspektera outputen från “Execute Browser Task” efter ett autentiseringsfel. Om autentisering är okej kan sajten blockera automatiserad browsing eller ladda pris dynamiskt, vilket kan ge “NoData” eller saknade fält i task-detaljerna.
Tillräckligt för de flesta små team. På n8n Cloud beror din gräns på månatliga körningar, och varje kontrollerad återförsäljar-URL räknas in. Om du hostar själv är körningar inte flaskhalsen; det är din serverkapacitet och BrowserActs throughput. I praktiken börjar många team med 50–200 URL:er och skalar därifrån när de är nöjda med skrapningens tillförlitlighet.
För det här användningsfallet, ja. Loopning, förgrening och mönstret skrapa-och-parsa är sådant n8n hanterar betydligt smidigare, och egen hosting kan hålla kostnaderna rimliga när du övervakar många URL:er. Zapier och Make kan fungera om du redan har en korrekt formaterad prisfeed och bara behöver en enkel regel: “om pris under X, larma”. De blir ofta klumpiga när du behöver iterera rad för rad, slå ihop flödesvägar och felsöka mer detaljerat i körningsloggar. Om du är osäker, prata med en automationsspecialist så får du en rak rekommendation.
MAP-efterlevnad ska inte hänga på att någon kommer ihåg att kontrollera 30 flikar. Sätt upp detta en gång, och låt Slack säga till när något faktiskt spelar roll.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.