Ditt SMS-verktyg avvisar ”giltiga” nummer. Eller värre: det accepterar dem, men skickar sedan till fel kontakt eftersom halva kalkylarket använder parenteser, punkter och slumpmässiga anknytningar i samma cell. Det är rörigt, det är dyrt och det är alldeles för lätt att missa.
Det här slår först mot marketing ops (lanseringsdagens kaos är på riktigt), men även byråteam som rensar kundlistor känner av det, liksom småföretagare som försöker sms:a bokningar utan att behöva vakta ett kalkylark. En enkel automation för Sheets phone cleanup ger dig ett pålitligt format per kontakt, klart för SMS-verktyg.
Nedan ser du hur flödet standardiserar amerikanska nummer, behåller anknytningar och returnerar flera format som du kan stoppa in i vilket outreach-system du än använder.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutlig output:
n8n Workflow Template: Google Sheets-nummer, rensade för SMS-verktyg
flowchart LR
subgraph sg0["When Executed by Another Workflow Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When Executed by Another Wor..", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check if first digit is vali..", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add valid country code", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Strip phone number formatting", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check number of digits in ph..", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Format phone numbers", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Clear invalid number", pos: "b", h: 48 }
n6 --> n5
n2 --> n5
n3 --> n4
n0 --> n3
n4 --> n1
n4 --> n2
n4 --> n6
n1 --> n5
n1 --> n6
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 n1,n4 decision
Problemet: telefonnummer i Sheets är inte ”SMS-klara”
Google Sheets är där telefonlistor blir konstiga. Någon klistrar in ”(555) 123-4567”, någon annan exporterar ”555.123.4567”, ett formulär skickar ”+15551234567”, och sälj lägger till ”5551234567×890” eftersom ”vi kanske behöver anknytningen senare”. Sedan vill din SMS-plattform ha E.164, ditt CRM vill ha nationell formatering, och teamet vill bara att det ska fungera. Manuell rensning låter enkelt tills du gör det över några hundra rader, under deadline, samtidigt som du försöker undvika att sms:a fasta nummer eller felaktigt formaterade nummer.
Det blir snabbt mycket. Här är var det faller sönder i verkligheten.
- Du formaterar om samma kontakt mer än en gång eftersom varje import ser olika ut.
- Anknytningar försvinner i röran, vilket gör att uppföljningar misslyckas när någon försöker använda det ”rensade” numret.
- Dåliga poster smyger sig in i kampanjer och skapar studsar, supportärenden och utredningar av typen ”varför levererades inte detta?”.
- Ditt team slösar ungefär en timme per lista bara för att göra datan acceptabel för nästa verktyg.
Lösningen: validera och standardisera amerikanska nummer automatiskt
Det här flödet tar en enda telefonnummersträng som input, rensar den, validerar den som ett amerikanskt nummer och returnerar konsekventa format som du kan lagra eller skicka vidare. Det börjar med att ta bort icke-numeriska tecken så att ”(555) 123-4567”, ”555.123.4567” och ”5551234567” blir samma kärnsiffror. Om det finns en anknytning inbakad i inputen (som ”x890”) separeras den också. Därefter kontrolleras landskod och längd, eftersom ett nummer som inte är 10 siffror (efter normalisering) inte bör betraktas som tillförlitligt för SMS. Om det är giltigt genererar flödet flera standardutdata, inklusive E.164 för de flesta SMS-API:er.
Flödet startar när ett annat workflow (eller ett webhook-liknande anrop) skickar in en telefonsträng. n8n normaliserar texten, routar den baserat på antal siffror och validerar reglerna för amerikansk landskod. Till sist returneras strukturerade fält som E.164, nationellt format och anknytningsvärden så att ditt ark, CRM och SMS-verktyg alla får det de vill ha.
Det du får: automation vs. resultat
| Vad detta workflow automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du importerar 300 kontakter till Google Sheets varje vecka, och att du normalt lägger kanske 30 sekunder per rad på att fixa format, ta bort symboler och hantera landskoder. Det är cirka 2,5 timmar rensning innan du ens skickar första SMS:et. Med det här flödet skickar du varje rått värde till n8n, får tillbaka validerade format direkt och skriver tillbaka ett enda standardiserat resultat till arket. I praktiken blir din veckovisa ”telefonrensning” en snabb granskning av de få ogiltiga raderna, inte en hel eftermiddag av formatering.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra råa och rensade nummer.
- Webhook-anropare för att skicka varje telefonsträng till n8n.
- n8n-autentiseringsuppgifter (ställs in i n8n för anslutna appar).
Nivå: Nybörjare. Du mappar några fält och testar med exempelnr.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett telefonnummer skickas in till flödet. Den här mallen är designad som ett sub-workflow, så en annan automation kan skicka in en enda telefonsträng när en rad skapas, uppdateras eller importeras.
Input normaliseras till siffror. Formateringstecken tas bort så att flödet kan utvärdera den verkliga längden och upptäcka en möjlig anknytning utan att behöva gissa vad ”.” eller ”( )” betyder.
Flödet validerar amerikanska regler och standardiserar landsprefixet. En Switch routar baserat på antal siffror, och sedan kontrollerar en If landskodslogiken. Vid behov lägger flödet till prefixet ”1” så att downstream-SMS-verktyg får en konsekvent E.164-vänlig struktur.
Flera format (och anknytningsfält) genereras för lagring eller återanvändning. Giltiga nummer returnerar E.164, nationell formatering, internationell formatering och fält med endast siffror. Ogiltiga poster nollställs så att du kan flagga dem i Sheets i stället för att tyst skicka vidare dålig data.
Du kan enkelt ändra outputfälten så att de matchar kraven från ditt CRM eller din SMS-leverantör. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera triggen för körning av subflöde
Det här arbetsflödet körs som ett subflöde, så ni måste definiera inmatningsschemat för uppströmsarbetsflöden.
- Lägg till noden Subflow Execution Trigger för att starta arbetsflödet.
- I workflowInputs, lägg till ett värde med Name inställt på
Phone Numberoch Type inställt påany. - Säkerställ att uppströmsarbetsflöden skickar in ett fält med namnet
Phone Numbertill detta subflöde.
Tips: Inmatningsnamnet måste matcha exakt (Phone Number), annars kommer nedströmsuttryck att returnera tomma värden.
Steg 2: Ställ in Normalize Phone Input
Normalisera indata till enbart siffror före routning och formatering.
- Lägg till noden Normalize Phone Input och koppla den efter Subflow Execution Trigger.
- I Assignments, ställ in Name till
Phone Number, Type tillnumberoch Value till={{ $json['Phone Number'].match(/[0-9]+/gmi).join('') }}.
⚠️ Vanlig fallgrop: Om Phone Number saknas eller är tomt kan regex-matchningen misslyckas. Validera indata innan ni anropar detta subflöde.
Steg 3: Konfigurera logik för routning och validering
Använd routning baserat på antal siffror och validering av landskod för att avgöra hur numret ska formateras.
- Lägg till noden Route by Digit Count och koppla den efter Normalize Phone Input.
- Skapa fyra utgångar i Route by Digit Count med dessa villkor med
={{ $json['Phone Number'].toString().length }}: - Utgång Full Number: Operation
gteoch Right Value11. - Utgång Number: Operation
equalsoch Right Value10. - Utgång Invalid Number: Operation
ltoch Right Value10. - Utgång Not a Number: Operation
notExistsmed={{ $json['Phone Number'] }}. - Koppla Route by Digit Count → Validate Country Code för utgången Full Number.
- Koppla Route by Digit Count → Append Country Prefix för utgången Number.
- Koppla Route by Digit Count → Reset Invalid Number för både utgångarna Invalid Number och Not a Number.
- I Validate Country Code, ställ in villkoret till
={{ $json['Phone Number'].toString().slice(0,1).toNumber() }}equals1.
Körflödet är linjärt per gren: Subflow Execution Trigger → Normalize Phone Input → Route by Digit Count → Validate Country Code → Generate Phone Formats, där ogiltiga grenar går via Reset Invalid Number.
Steg 4: Konfigurera noder för utdataformatering
Lägg till en landskod vid behov och generera standardiserade utdataformat.
- I Append Country Prefix, ställ in värdet för Phone Number till
=1{{ $json['Phone Number'] }}. - I Reset Invalid Number, ställ in Phone Number till en tom sträng och aktivera includeOtherFields.
- I Generate Phone Formats, lägg till assignments med följande värden:
- Phone Number (Input) →
={{ $('Subflow Execution Trigger').item.json['Phone Number'] }} - Phone Number →
={{ $json['Phone Number'].toString().slice(0,11).toNumber() }} - =Phone Number (E-164) →
={{ $json['Phone Number'] ? '+' + $json['Phone Number'] : '' }} - Phone Number (National) →
={{ $json['Phone Number'] ? '(' + $json['Phone Number'].toString().slice(1,4) + ') ' + $json['Phone Number'].toString().slice(4,7) + '-' + $json['Phone Number'].toString().slice(7,11) : '' }} - Phone Number (Full National) →
={{ $json['Phone Number'] ? '1 (' + $json['Phone Number'].toString().slice(1,4) + ') ' + $json['Phone Number'].toString().slice(4,7) + '-' + $json['Phone Number'].toString().slice(7,11) : '' }} - Phone Number (International) →
={{ $json['Phone Number'] ? '00-1-' + $json['Phone Number'].toString().slice(1,4) + '-' + $json['Phone Number'].toString().slice(4,7) + '-' + $json['Phone Number'].toString().slice(7,11) : '' }} - Extension →
={{ $json['Phone Number'].toString().slice(11).toNumber() }} - Extension (String) →
={{ $json['Phone Number'].toString().slice(11).toNumber() > 0 ? $json['Phone Number'].toString().slice(11).toNumber() : '' }}
Steg 5: Testa och aktivera ert arbetsflöde
Validera formateringsutdata och aktivera sedan arbetsflödet för användning i produktion.
- Klicka på Execute Workflow och ange en provindata för
Phone Number(t.ex.+1 (212) 555-0199 ext 123) till Subflow Execution Trigger. - Bekräfta att Generate Phone Formats ger ut de formaterade fälten, inklusive Phone Number (E-164), Phone Number (National) och Extension (String).
- Om numret är ogiltigt eller saknas, verifiera att Reset Invalid Number rensar Phone Number och att formateringsfälten är tomma.
- Växla arbetsflödet till Active när testningen är lyckad.
Vanliga fallgropar
- Google Sheets-autentisering kan gå ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först din n8n-lista Credentials och åtkomsten för det anslutna Google-kontot.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om downstream-noder fallerar på tomma svar.
- Webhook-anrop kan misslyckas utan att det syns om avsändaren ändrar fältnamnet. Om du plötsligt får ”ogiltigt” för allt, inspektera inkommande webhook-payload i n8n och bekräfta att du fortfarande skickar den telefonsträng du tror att du gör.
Vanliga frågor
Cirka 20 minuter om du redan har n8n igång.
Nej. Du klistrar in workflowt och mappar inputfältet. Att testa med några exempelnummer är det mesta av ”jobbet”.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna med kostnader för eventuellt SMS-verktyg om du kopplar in ett senare (det här flödet kräver i sig inget betalt API för telefonvalidering).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, men du behöver ändra logiken i delarna Route by Digit Count och Validate Country Code i workflowt. Just nu utgår det från amerikanska regler: 10-siffriga nationella nummer, plus valfritt ”1” / ”+1”. Vanliga anpassningar är att lägga till andra landsspecifika längder, tillåta andra landsprefix eller att hoppa över landskodsvalideringen helt och bara returnera ”endast siffror” plus ditt ursprungliga värde för granskning.
Oftast beror det på utgångna Google-credentials i n8n. Anslut Google Sheets-credentialn på nytt och bekräfta sedan att kontot fortfarande har åtkomst till filen. Om du anropar detta som ett sub-workflow, kontrollera också att det överordnade workflowt fortfarande mappar telefältet korrekt, eftersom en saknad input kan se ut som ett formateringsfel.
Många. I praktiken kör de flesta team detta per ny eller uppdaterad rad, så det skalar med dina uppdateringar i arket i stället för att försöka processa om allt varje dag.
Ofta, ja, eftersom telefon-normalisering blir pillig. n8n gör det enklare att förgrena på antal siffror, tvinga igenom valideringsregler och returnera flera outputfält utan att betala extra för ”formatter”-steg. Det fungerar också bra som ett sub-workflow, vilket håller dina stora automationer rena och återanvändbara. Zapier eller Make kan fungera om du bara behöver en enkel omformatering, men oftast slutar du med att stapla steg för att hantera ”+1”, ”1”, anknytningar och ogiltiga nummer. Om du väljer mellan dem, prata med en automationsexpert så pekar vi dig till det enklaste alternativet för din stack.
Korrekt formaterade nummer gör varje utgående system lugnare, från SMS till CRM till rapportering. Sätt upp detta en gång, så slutar dina Sheets vara en slagplats för formatering.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.