Kundonboarding fallerar på de tråkiga ställena. Du får in formuläret och lägger sedan nästa timme på att kopiera detaljer till Asana, leta upp rätt avtalsmall och dubbelkolla namn och datum eftersom ett enda stavfel räcker.
Det är här byråägare känner friktionen, men ops-chefer och client success-ansvariga lever i den också. Med den här Asana-onboarding-automationen blir en inskickad uppgift till ett projekt som är redo att köras plus ett personligt avtal – utan att skriva in samma info om och om igen.
Du får se hur flödet fångar intakedata, bygger ditt Asana-projekt från en mall, genererar en Google Docs-avtals-PDF, mejlar den, loggar allt och öppnar en Slack-kanal så leveransen kan starta direkt.
Så här fungerar automationen
Här är hela arbetsflödet du kommer att sätta upp:
n8n Workflow Template: Asana + Google Docs: kundonboarding på rätt sätt
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/>Receive Client Form"]
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/slack.svg' width='40' height='40' /></div><br/>Create Slack Channel"]
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/asana.svg' width='40' height='40' /></div><br/>Create Asana Project"]
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/>Get Template Sections"]
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Sections", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Create Section in New Project"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Through Sections", pos: "b", h: 48 }
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/asana.svg' width='40' height='40' /></div><br/>Get Tasks from Template Sect.."]
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/asana.svg' width='40' height='40' /></div><br/>Add Task to New Project"]
n9@{ icon: "mdi:message-outline", form: "rounded", label: "Send Welcome Email with Cont..", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Wait for All Tasks", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Parse Client Data", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Get Contract Template", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Populate Contract with Clien..", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Download Contract as PDF", pos: "b", h: 48 }
n15@{ icon: "mdi:cog", form: "rounded", label: "Reset Template to Blanks", pos: "b", h: 48 }
n16@{ icon: "mdi:database", form: "rounded", label: "Log to Tracking Sheet", pos: "b", h: 48 }
n4 --> n6
n11 --> n2
n10 --> n12
n0 --> n11
n2 --> n3
n12 --> n13
n3 --> n4
n16 --> n1
n6 --> n10
n6 --> n5
n8 --> n6
n14 --> n9
n15 --> n16
n5 --> n7
n7 --> n8
n9 --> n15
n13 --> n14
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 database
class n0,n3,n5 api
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n3,n5,n7,n8 customIcon
Varför det här spelar roll: onboarding som faller mellan stolarna
Onboarding ska kännas trygg och organiserad. Men när den är manuell blir det en liten brandövning varje gång: skapa projektet, lägg till samma sektioner, kopiera samma uppgifter, tilldela ansvariga och bygg sedan ett avtal för hand (igen) med detaljer från ett formulär du redan har. Det värsta är alla kontextbyten. Du hoppar mellan formuläret, Asana, Google Docs, e-post och vilket kalkylark du nu “spårar allt” i, och du missar ändå saker eftersom människor missar saker när de har bråttom.
Det blir snabbt mycket. Här är var det brukar gå snett.
- Att skapa ett kundprojekt från grunden eller från “förra gångens projekt” bjuder in inkonsekvens, och nästa överlämning blir rörig.
- Avtal blir försenade eftersom någon måste hitta mallen, ersätta platshållare, exportera en PDF och sedan bifoga den i rätt mejltråd.
- Kunddetaljer hamnar utspridda i flera verktyg, vilket gör att rapportering och prognoser blir en veckovis skattjakt.
- Internt samarbete startar sent eftersom ingen öppnar Slack-kanalen (eller så öppnas den med fel namn och utan kontext).
Det du bygger: onboarding från intake till projekt med avtalsleverans
Det här flödet startar i samma ögonblick som ett kundintake-formulär skickas in till en webhook. n8n mappar och städar upp inkommande fält (det här flödet hanterar en stor intake-payload med 70+ fält) och skapar sedan ett helt nytt Asana-onboardingprojekt för kunden. Därefter hämtar det sektionerna från ditt Asana-mallprojekt och itererar igenom dem, återskapar strukturen i det nya projektet och kopplar på rätt uppgifter så att teamet får samma konsekventa leveransplan varje gång. När projektet är klart hämtar flödet en Google Docs-avtalsmall, fyller i platshållare med kundens uppgifter, exporterar en PDF och mejlar den via Gmail som ett välformulerat välkomstmeddelande. Slutligen loggar det onboardingposten i Google Sheets för uppföljning och öppnar en dedikerad Slack-kanal så att internt arbete kan starta utan att vänta.
Flödet börjar med en intake-webhook och ett steg för fältmappning så att din data är användbar överallt. Därifrån bygger Asana och HTTP-anrop upp din mallstruktur automatiskt. Google Docs och Google Drive skapar avtals-PDF:en, Gmail skickar den och Google Sheets plus Slack håller teamet organiserat efter överlämningen.
Det du bygger
| Det som automatiseras | Det du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du onboardar 5 kunder i veckan. Manuellt ser ett typiskt flöde ut så här: 20 minuter för att bygga Asana-projektet (sektioner, uppgifter, tilldelningar), cirka 15 minuter för att skapa och exportera avtals-PDF:en och ytterligare 10 minuter för att logga detaljer och sätta upp Slack, alltså ungefär 45 minuter per kund. Det är nästan 4 timmar i veckan. Med det här flödet lägger du kanske 5 minuter på att kontrollera intakefälten och klicka på skicka, och väntar sedan på körningen medan allt skapas och skickas. De flesta team får tillbaka ungefär 3 timmar per vecka direkt.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Asana för att skapa projekt, sektioner och uppgifter.
- Google Docs + Google Drive för att fylla en mall och exportera en PDF.
- Inloggning/behörigheter för Gmail, Google Sheets och Slack (skapa OAuth/API-åtkomst i varje verktygs utvecklar-/inställningsdel).
Nivå: Medel. Du kommer att koppla konton, klistra in mall-ID:n och testa en webhook-payload.
Vill du att någon bygger det åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
En kund skickar in ditt intake-formulär. Flödet startar när ditt formulärverktyg skickar payloaden till n8n:s webhook-trigger, som kan ta emot en detaljerad uppsättning onboardingfält.
Intaket mappas till konsekventa fält. n8n normaliserar inkommande data (namn, företag, arvoden, datum, tekniska anteckningar) så att varje efterföljande steg kan lita på samma struktur i stället för stökiga formulärnycklar.
Asana byggs från din mall. Flödet skapar ett nytt kundonboardingprojekt, hämtar mallsektioner via HTTP, loopar igenom dem i batchar och kopplar på rätt uppgifter så att teamet landar i ett välbekant projekt varje gång.
Avtalet skapas och levereras. Google Docs-platshållare fylls med kundspecifika detaljer, dokumentet exporteras till PDF via Google Drive och Gmail skickar ett välkomstmejl med PDF:en bifogad.
Du kan enkelt ändra Asana-mallprojektet och Google Docs-avtalsmallen så att de matchar dina tjänstepaket, namngivningsstandarder och juridiska formuleringar. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera webhook-triggern
Det här arbetsflödet startar när ett kundintagsformulär postar data till en webhook-endpoint.
- Lägg till och öppna Intake Webhook Trigger.
- Ställ in HTTP Method på
POST. - Ställ in Path på
client-onboard. - Spara noden och kopiera webhook-URL:en till ert intagsformulärs inskick.
$json.body-fält innan ni går vidare.Steg 2: Anslut Asana
Dessa noder skapar onboarding-projektet och kopierar sektioner och uppgifter från ett mallprojekt.
- Öppna Generate Asana Project och ställ in Name till
={{ $json.primary_contact_name }} Onboarding. Ersätt[YOUR_TEAM_ID]och[YOUR_WORKSPACE_ID]med era Asana-ID:n. Credential Required: Anslut era Asana OAuth2 API-uppgifter. - Öppna Fetch Template Sections och ställ in URL till
=https://app.asana.com/api/1.0/projects/[TEMPLATE_PROJECT_ID]/sections. Credential Required: Anslut era Asana OAuth2 API-uppgifter. - I Add Section to New Project, ställ in URL till
=https://app.asana.com/api/1.0/projects/{{ $('Generate Asana Project').item.json.gid }}/sectionsoch JSON Body till={ "data": { "name": "{{ $json.name }}" } }. Credential Required: Anslut era Asana OAuth2 API-uppgifter. - Öppna Retrieve Section Tasks och ställ in Filters → Section till
={{ $('Iterate Sections Batch').item.json.gid }}. Credential Required: Anslut era Asana OAuth2 API-uppgifter. - Öppna Attach Task to Project och ställ in ID till
={{ $json.gid }}och Project till={{ $('Add Section to New Project').item.json.data.project.gid }}. Credential Required: Anslut era Asana OAuth2 API-uppgifter.
[TEMPLATE_PROJECT_ID] eller Asana-ID:n inte ersätts kommer Fetch Template Sections och Add Section to New Project att misslyckas med 404-fel.Steg 3: Sätt upp intagsmappning och sektionsiterering
Det här steget mappar webhook-fält till strukturerad data och itererar Asana-sektioner för att kopiera uppgifter till det nya projektet.
- Öppna Map Client Intake och bekräfta nyckeltilldelningar såsom legal_business_name =
{{ $json.body.legal_business_name }}och primary_contact_email ={{ $json.body.primary_contact_email }}. - I Split Section List ställer ni in Field To Split Out till
dataså att varje mallsektion blir ett item. - I Iterate Sections Batch behåller ni standardinställningarna för batch för att loopa igenom varje sektion.
- Verifiera flödets ordning: Split Section List → Iterate Sections Batch → Add Section to New Project → Retrieve Section Tasks → Attach Task to Project.
- Observera att Iterate Sections Batch skickar output både till Aggregate Task Results och Add Section to New Project parallellt, vilket gör att itereringen kan fortsätta medan resultaten aggregeras.
Steg 4: Konfigurera generering av avtalsdokument
Dessa noder skapar ett avtal från en Google Docs-mall, fyller i fält och exporterar en PDF.
- Öppna Fetch Contract Template och ställ in Document URL till
[YOUR_TEMPLATE_DOCUMENT_ID]. Credential Required: Anslut era Google Docs-uppgifter. - Öppna Fill Contract Fields och bekräfta placeholder-ersättningar, såsom replaceText
=Client: {{ $('Map Client Intake').item.json.primary_contact_name }}och=Effective Date: {{ $now.format('DD') }}. Credential Required: Anslut era Google Docs-uppgifter. - Öppna Export Contract PDF och ställ in File ID till
={{ $json.documentId }}. Credential Required: Anslut era Google Drive-uppgifter.
[YOUR_TEMPLATE_DOCUMENT_ID] används i både Fetch Contract Template och Fill Contract Fields – säkerställ att det pekar på en mall som är säker att kopiera, så att originalet inte skrivs över.Steg 5: Konfigurera output och notifieringar
Dessa noder skickar välkomstmejlet, rensar mall-placeholders, uppdaterar uppföljningsarket och notifierar Slack.
- Öppna Dispatch Welcome Email och ställ in Send To till
={{ $('Map Client Intake').item.json.primary_contact_email }}, Subject till=Welcome to Your Onboarding Project {{ $('Map Client Intake').item.json.primary_contact_name }} 🎉, och uppdatera länkar i Message-brödtexten. Credential Required: Anslut era Gmail-uppgifter. - Öppna Clear Template Placeholders och bekräfta ersättningar för placeholder-rensning (t.ex.
=Effective Date: {{ $now.format('DD') }}→=Effective Date-). Credential Required: Anslut era Google Docs-uppgifter. - Öppna Update Tracking Sheet och ställ in Document ID till
[YOUR_TRACKING_SPREADSHEET_ID], Sheet Name tillgid=0, och behåll Operation somappendOrUpdate. Bekräfta att Matching Columns inkluderarlegal_business_name. Credential Required: Anslut era Google Sheets-uppgifter. - Öppna Open Slack Channel och ställ in Channel ID till
[YOUR_ID]för er teamkanal. Credential Required: Anslut era Slack-uppgifter.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett fullständigt test för att bekräfta att intagsdata skapar Asana-projektet, fyller i avtalet, skickar mejl, uppdaterar arket och öppnar Slack-kanalen.
- Klicka på Test Workflow och skicka en exempel-POST-payload till Intake Webhook Trigger med fält som
primary_contact_name,primary_contact_emailochbrand_name. - Bekräfta att Generate Asana Project skapar ett nytt projekt och att sektioner/uppgifter kopieras av Add Section to New Project och Attach Task to Project.
- Verifiera att avtalet uppdateras i Fill Contract Fields, laddas ner via Export Contract PDF, och att välkomstmejlet skickas av Dispatch Welcome Email.
- Kontrollera er kalkylarksrad i Update Tracking Sheet och verifiera Slack-aktivitet i Open Slack Channel.
- När allt fungerar växlar ni arbetsflödet till Active för att aktivera intag i produktion.
Tips för felsökning
- Asana-behörigheter är en vanlig stoppkloss. Om sektioner eller uppgifter inte kopieras, bekräfta att din Asana OAuth-anslutning har åtkomst till mallprojektet och kan skapa projekt i den aktuella arbetsytan.
- Om du använder Wait-noder eller extern rendering varierar körtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Platshållartexten i Google Docs måste matcha exakt. Om fält inte ersätts eller PDF:en ser “halvifylld” ut, kontrollera mallen efter omdöpta tokens och uppdatera mappningen i Fill Contract Fields.
Snabba svar
Cirka en timme om du redan har dina Asana- och Google-mallar redo.
Nej. Du kopplar dina konton, klistrar in några mall-ID:n och testar en webhook-inskickning.
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 kostnader för Google Workspace om du behöver Gmail/Docs/Drive, samt eventuella krav på Asana-plan för ditt team.
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 hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det bör du troligen. Byt Asana-mallprojektets ID för olika tjänsteområden, justera steget Map Client Intake för att lägga till eller ta bort fält, och uppdatera platshållarna i Google Docs-mallen så att de matchar ditt avtalsinnehåll. En vanlig justering är att ändra reglerna för namngivning av Slack-kanaler så att kanalerna blir konsekventa (och sökbara) i hela teamet.
Oftast är det behörigheter eller fel arbetsyta. Återanslut Asana i n8n och bekräfta att användaren har åtkomst till mallprojektet, samt behörighet att skapa projekt och uppgifter där du försöker lägga dem. Kontrollera också HTTP Request-stegen som hämtar sektioner, eftersom ett inaktuellt mallprojekt-ID kan se ut som ett auth-problem när det egentligen är “hittas inte”.
För de flesta små team är dussintals onboardingar per vecka realistiskt, eftersom flödet främst väntar på API-anrop. Om du kör egen hosting begränsas du av din server och rate limits i Asana, Google och Slack. I n8n Cloud beror din månatliga körningsgräns på din plan, och varje onboarding kan räknas som flera körningar eftersom skapande av sektioner/uppgifter körs i loopar. Om du väntar dig hög volym, batcha skapandet av sektioner noggrant och testa med några riktiga intakes innan du öppnar kranarna fullt.
Ofta, ja, eftersom det här flödet behöver loopar, batchning och dokumenthantering i flera steg som kan bli dyrt eller krångligt i andra verktyg. n8n gör det enkelt att iterera över Asana-sektioner, koppla på uppgifter och fortsätta även när en enskild post misslyckas. Du får också ett alternativ för egen hosting om du vill ha obegränsade körningar utan att betala per task. Zapier eller Make kan fortfarande fungera för en lättare version, som “intake-formulär → skapa projekt”. Om du vill att hela kedjan (projekt + avtals-PDF + e-post + loggning + Slack) ska köra stabilt är n8n oftast det lugnare valet. Prata med en automationsexpert om du är osäker.
När det här väl rullar slutar onboarding vara ett återkommande adminprojekt och börjar kännas som ett system. Flödet hanterar uppsättningen, pappersarbetet och loggningen så att du kan gå direkt in i leverans.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.