Att kopiera latitud och longitud mellan verktyg ser harmlöst ut tills du har fem fältuppdateringar som kommer in samtidigt och en siffra glider. Plötsligt ringer du fel kund, markerar fel plats eller slösar en resa. Det är den typen av fel som känns litet – och sedan blir dyrt.
Det här drabbar fältledare hårdast. Men logistikchefer som följer leveranspunkter och byråteam som städar upp platsdataset känner av det också. Med DIGIPIN-uppslagsautomatisering slutar du behandla koordinater som skör text och börjar använda en konsekvent, sökbar platskod.
Det här flödet ger dig två enkla endpoints som du kan anropa från Postman, Google Sheets eller vad som helst som kan träffa en URL. Du får se vad det gör, hur det minskar misstag och var det passar in i en riktig operativ process.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutlig output:
n8n Workflow Template: Postman + Google Sheets: säkra DIGIPIN-uppslag
flowchart LR
subgraph sg0["Flow 1"]
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/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Webhook - Success"]
n1["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Webhook - Error"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch - Check for Success", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>DIGIPIN_Generation_Code"]
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/webhook.dark.svg' width='40' height='40' /></div><br/>Encode_Webhook"]
n5 --> n3
n3 --> n2
n2 --> n0
n2 --> n1
end
subgraph sg1["Flow 2"]
direction LR
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/code.svg' width='40' height='40' /></div><br/>DIGIPIN_Decode_Code"]
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/webhook.dark.svg' width='40' height='40' /></div><br/>Decode_Webhook"]
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch 2 - Check for Success1", 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/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Webhook - Success 2"]
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/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Webhook - Error 2"]
n6 --> n4
n4 --> n7
n7 --> n8
n7 --> n9
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 n2,n7 decision
class n0,n1,n5,n6,n8,n9 api
class n3,n4 code
classDef customIcon fill:none,stroke:none
class n0,n1,n3,n5,n4,n6,n8,n9 customIcon
Problemet: platsdata går sönder när människor hanterar den
Koordinater är brutalt lätta att sabba eftersom de ser ut som ”bara siffror”. Någon klistrar in lat i lon. Någon rundar av några decimaler. Någon byter N/S eller lägger till en extra siffra vid en WhatsApp-överlämning. Och när teamet jobbar i områden med inkonsekventa gatuadresser har du ingen andra sanningskälla att rimlighetskontrollera platsen mot. Resultatet blir omarbete, fram-och-tillbaka-samtal och den där tysta känslan av obehag när du inser att kalkylbladet inte matchar verkligheten.
Det blir snabbt mycket. Här är var det brukar fallera.
- Folk kopierar och klistrar in GPS-koordinater mellan Sheets, formulär och ärenden, vilket bjuder in till stavfel och förväxlade värden.
- Team tappar tid på att leta efter ”rätt pin” eftersom det inte finns någon konsekvent kod att filtrera, avduplicera eller sortera på.
- Manuell validering blir själva processen, så att skala bortom några dussin platser per dag blir smärtsamt.
- När adresser saknas eller är vaga behöver du ändå en exakt identifierare som fungerar överallt, inte bara i en enskild kartapp.
Lösningen: en liten offline DIGIPIN-mikrotjänst i n8n
Det här n8n-flödet gör DIGIPIN till något verksamheten kan ”anropa” som ett verktyg, utan att vara beroende av externa API:er. Du skickar en begäran till en endpoint för att generera en DIGIPIN från latitud och longitud, eller så skickar du en DIGIPIN för att avkoda den tillbaka till koordinater. Flödet routar varje begäran till rätt JavaScript-logik och returnerar sedan ett korrekt formaterat JSON-svar som Postman kan visa direkt eller som Google Sheets kan spara som ett vanligt värde. Eftersom allt körs inne i flödet slipper du API-nycklar, kvoter och tredjepartsdrifttid. Det är medvetet enkelt – och därför blir det pålitligt i fältverksamhet.
Flödet startar med en av två webhooks (koda eller avkoda). Därefter kör n8n motsvarande JavaScript-funktion för att beräkna resultatet. Till sist routar en switch lyckat vs. misslyckat så att du alltid får ett förutsägbart JSON-svar att logga eller felsöka.
Det du får: automatisering vs. resultat
| Det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att ditt driftteam loggar 60 platsbesök per dag. Manuellt innebär varje besök att du kopierar lat/lon från ett formulär till ett sheet och sedan in i Postman eller en kartlänk för verifiering, vilket lätt blir 2 minuter per post (cirka 2 timmar dagligen). Med det här flödet kan sheetet anropa endpointen ”generera DIGIPIN” en gång och spara koden direkt, och att avkoda senare är ytterligare ett enda anrop som tar sekunder. Realistiskt är du nere på cirka 10 minuters stickprovskontroller i stället för timmar av kopiera-klistra.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Postman för att testa och dela HTTP-endpoints.
- Google Sheets för sökbara platslistor och driftloggar.
- Inga API-nycklar krävs eftersom det körs offline i n8n.
Kunskapsnivå: Nybörjare. Du klistrar in flödet i n8n och anropar två URL:er från Postman eller ett kalkylblad.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Inkommande begäran träffar rätt endpoint. Du anropar en webhook för kodning (lat/lon → DIGIPIN) eller en andra webhook för avkodning (DIGIPIN → lat/lon). Det är allt. Inga specialheaders behövs för kärnlogiken.
Flödet kör motsvarande DIGIPIN-logik. En JavaScript-kodnod gör konverteringen helt inne i n8n, så att anropen går snabbt och du inte blir beroende av externa tjänster.
Lyckat och misslyckat hanteras explicit. Switch-noder routar resultatet så att anroparen får ett tydligt ”OK”-svar när indata är giltig, eller ett felsvar när något saknas eller är felaktigt formaterat. Ärligt talat är det här skillnaden mellan ”en snygg demo” och något du kan lita på i drift.
JSON skickas tillbaka till det som frågade. Postman kan visa det direkt för validering. Google Sheets kan spara det i en kolumn, så att teamet kan söka, filtrera och återanvända samma kod i ärenden och rapporter.
Du kan enkelt justera svarsfälten så att de matchar era interna namngivningar, så att kolumner i Sheets eller payloads i ärenden håller sig konsekventa. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera webhook-triggern
Skapa de två webhook-ingångarna som tar emot encode- och decode-förfrågningar.
- Lägg till eller öppna Incoming Encode Hook och ställ in Path på
generate-digipin. - I Incoming Encode Hook, ställ in Response Mode på
responseNodeså att svar hanteras av webhook-svarnoderna. - Lägg till eller öppna Incoming Decode Hook och ställ in Path på
decode-digipin. - I Incoming Decode Hook, ställ in Response Mode på
responseNode.
Steg 2: sätt upp logiken för encode-bearbetning
Konfigurera DIGIPIN-genereringskoden så att den läser latitud och longitud från webhookens query.
- Öppna Generate Pin Logic och behåll JavaScript-koden som den är för DIGIPIN-encoding.
- Säkerställ att indatafälten läses från webhookens query med
$input.first().json.query.latoch$input.first().json.query.lon(finns redan i koden). - Bekräfta att koden skriver output till
item.json.digipinoch fel tillitem.json.error.
lat och lon. Saknade värden triggar felspåret.Steg 3: sätt upp logiken för decode-bearbetning
Konfigurera DIGIPIN-decoding-koden så att den läser ett DIGIPIN-värde från webhookens query och returnerar koordinater.
- Öppna Decode Pin Logic och behåll JavaScript-koden som den är för DIGIPIN-decoding.
- Verifiera att indata läses från
$input.first().json.query.digipinoch lagras iMY_DIGIPINenligt exemplet. - Bekräfta att avkodade fält skrivs till
item.json.decodedLatitudeochitem.json.decodedLongitude, och att fel skrivs tillitem.json.error.
Steg 4: konfigurera lyckade svar
Definiera JSON-svaren som returneras till anropare vid lyckade encode- och decode-förfrågningar.
- Öppna Return Webhook OK och ställ in Respond With på
json. - Ställ in Response Body i Return Webhook OK till
={ "status": "Success", "lat": "{{ $json.query.lat }}", "lon": "{{ $json.query.lon }}", "digipin": "{{ $json.digipin }}" }. - Öppna Return Decode OK och ställ in Respond With på
json. - Ställ in Response Body i Return Decode OK till
={ "status": "Success", "digipin": "{{ $json.query.digipin }}", "lat": "{{ $json.decodedLatitude }}", "lon": "{{ $json.decodedLongitude }}" }.
Steg 5: lägg till felhantering och routning
Routa varje spår baserat på lyckat eller misslyckat resultat och returnera lämpliga felsvar.
- I Route by Result, behåll villkoret för lyckat resultat som kontrollerar att
={{ $json.digipin }}finns och villkoret för misslyckande som kontrollerar att={{ $json.error }}finns. - Säkerställ att Route by Result är kopplad till Return Webhook OK vid lyckat resultat och till Return Webhook Failure vid fel.
- I Route Decode Outcome, behåll villkoret för lyckat resultat som kontrollerar att
={{ $json.decodedLatitude }}finns och villkoret för misslyckande som kontrollerar att={{ $json.error }}finns. - Säkerställ att Route Decode Outcome är kopplad till Return Decode OK vid lyckat resultat och till Return Decode Failure vid fel.
- Ställ in Response Body i Return Webhook Failure till
={ "status": "Failed", "lat": "{{ $json.query.lat }}", "lon": "{{ $json.query.lon }}", "error": "{{ $json.error }}" }. - Ställ in Response Body i Return Decode Failure till
={ "status": "Failed", "digipin": "{{ $json.query.digipin }}", "error": "{{ $json.error }}" }.
Steg 6: testa och aktivera ert workflow
Validera båda endpoints och aktivera sedan workflowet för användning i produktion.
- Klicka på Execute Workflow och skicka en testförfrågan till Incoming Encode Hook med query-parametrarna
latochlon. - Bekräfta ett lyckat svar från Return Webhook OK som innehåller
status,lat,lonochdigipin. - Skicka en testförfrågan till Incoming Decode Hook med query-parametern
digipinoch verifiera att Return Decode OK innehållerlatochlon. - Testa en ogiltig indata för att säkerställa att Return Webhook Failure och Return Decode Failure svarar med
statussatt tillFailedoch ett beskrivandeerror. - Växla workflowet till Active för att aktivera användning i produktion.
Vanliga fallgropar
- Google Sheets-inloggningar kan löpa ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera först ditt anslutna Google-konto i n8n-credentials.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera outputs för alltid.
Vanliga frågor
Cirka 20 minuter när n8n väl är igång.
Nej. Du importerar flödet och använder de endpoints som ingår. JavaScript-logiken finns redan med, så du gör främst konfiguration och test.
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 med 0 USD för API-anrop här, eftersom DIGIPIN-logiken körs offline.
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 hanterar n8n bra. Egen drift ger obegränsade körningar men kräver grundläggande serveradministration.
Ja, men det gör du på anropar-sidan, inte inne i DIGIPIN-logiken. Behåll de två webhooks som de är och låt sedan Google Sheets anropa endpointen ”generate” för nya rader och endpointen ”decode” när en DIGIPIN läggs till. Om du vill ha en annan JSON-form, justera fälten som returneras av Respond to Webhook-noderna så att dina sheet-formler eller Apps Script förblir enkla.
Oftast är det inte Postman. Det är webhook-URL:en, HTTP-metoden eller en saknad query-parameter som lat, lon eller digipin. Bekräfta att du anropar rätt endpoint (koda vs. avkoda) och kontrollera sedan svaren i fail-grenen i n8n för att se vad den klagade på.
Många, eftersom varje förfrågan bara är lättviktig JavaScript. På n8n Cloud Starter är din praktiska gräns din månatliga exekveringskvot; vid egen drift beror det mest på serverstorlek och trafik. I normal drift (dussintals till några hundra uppslag per dag) kommer det att kännas omedelbart. Om du trycker tusentals i timmen, lägg till grundläggande övervakning och överväg rate limiting i proxyn.
Ofta, ja. Zapier och Make är bra för enkla app-till-app-överlämningar, men det här flödet fungerar som en intern verktygstjänst, och n8n är byggt för den typen av förgreningslogik och webhook-hantering. Den stora grejen är egen drift: du kan köra obegränsat antal exekveringar och hålla det offline, vilket är svårt att återskapa snyggt någon annanstans. Om du bara behöver ”ta ett värde från ett sheet och lägga det i ett annat sheet” kan de verktygen gå snabbare. Om du vill att detta ska driva flera system (Sheets, Postman, interna appar, till och med mobila formulär) utan att betala per mikrosteg brukar n8n vinna. Prata med en automationsexpert om du vill ha en snabb rekommendation baserad på din volym.
När DIGIPIN blir en normal kolumn i dina Sheets och ett normalt fält i dina verktyg slutar platsarbete vara skört. Sätt upp det en gång och låt flödet sköta den tråkiga noggrannheten åt dig.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.