Certifikatförfrågningar kommer alltid vid sämsta möjliga tidpunkt. Du gräver i gamla kalkylblad, letar efter den “slutgiltiga-slutgiltiga” PDF-mallen och hoppas att du inte stavar fel på ett namn innan du trycker på skicka.
Den här certifikat-e-postautomationen träffar utbildningskoordinatorer först, men kurskreatörer och ops-ansvariga fastnar ofta i den också. Resultatet är enkelt: certifikaten skickas ut automatiskt, varje certifikat får ett unikt ID och du kan verifiera eller skicka om utan att bygga om något.
Nedan ser du hur arbetsflödet genererar en PDF från en mall, mejlar den via Gmail, loggar posten och exponerar en verifierings-endpoint som du kan dela publikt.
Så fungerar den här automationen
Se hur detta löser problemet:
n8n Workflow Template: PDF generator API + Gmail: certifikat skickas rätt
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "Insert_Certificaton", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Generate_Certification_ID"]
n2@{ icon: "mdi:cog", form: "rounded", label: "Find_Certification_By_ID", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Certification_ID_Exists", pos: "b", h: 48 }
n4@{ icon: "mdi:message-outline", form: "rounded", label: "Email_Certification", 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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook_Creation"]
n11@{ icon: "mdi:web", form: "rounded", label: "Generate a PDF document", pos: "b", h: 48 }
n10 --> n1
n0 --> n11
n3 --> n1
n3 --> n0
n11 --> n4
n2 --> n3
n1 --> n2
end
subgraph sg1["Flow 2"]
direction LR
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/>Webhook_Check"]
n6@{ icon: "mdi:cog", form: "rounded", label: "Find_Certification_By_ID1", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Certification_Exists", 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_Found"]
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_NotFound"]
n5 --> n6
n7 --> n8
n7 --> n9
n6 --> n7
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 n3,n7 decision
class n10,n11,n5,n8,n9 api
class n1 code
classDef customIcon fill:none,stroke:none
class n1,n10,n5,n8,n9 customIcon
Utmaningen: certifikat är enkla att skapa… tills du behöver skala
Att skapa ett certifikat manuellt är störigt. Att skapa femtio efter att en kohort avslutas blir ett miniprojekt du inte hade planerat. Du kopierar namn från ett formulär, justerar en PDF, exporterar, döper om filen, bifogar den i ett mejl och sedan svarar någon två veckor senare och ber om en ny utskickning för att “jag hittar det inte”. Samtidigt vidarebefordrar en annan person ett certifikat till en arbetsgivare och du får frågan: “Kan du bekräfta att detta är äkta?” Det kan du, men först efter att du letar i inkorgen eller i en mappstruktur som kändes rimlig då.
Det blir snabbt mycket. Och det smärtsamma är inte bara tiden, utan förtroendet och konsekvensen.
- Små stavfel smyger sig in när du manuellt kopierar namn och kursnamn, och de misstagen är pinsamma att rätta i efterhand.
- Mejltrådar blir din “databas”, vilket gör omskickningar och revisioner långsamma och opålitliga.
- Utan ett unikt certifikat-ID blir verifiering en fram-och-tillbaka-dialog i stället för en snabb kontroll.
- Malländringar blir en brandkårsutryckning eftersom ditt flöde är låst till en specifik fil eller layout.
Lösningen: generera, mejla och verifiera certifikat automatiskt
Det här arbetsflödet gör certifikatutskick till en tjänst, inte en uppgift. En publik webhook för “skapa certifikat” tar emot deltagaruppgifter (förnamn, efternamn, kurs, e-post). Automationen genererar ett unikt certifierings-ID, kontrollerar att det inte redan används och lagrar posten i en n8n Data Table så att du har en pålitlig källa för sanningen. Därefter skickar den en JSON-payload till en mall i PDF Generator API, som skapar en korrekt formaterad, varumärkesanpassad PDF utan att du behöver bygga HTML eller pilla med layout i arbetsflödet. Till sist skickar Gmail certifikatet som bilaga, så mottagaren får ett proffsigt dokument på minuter, inte dagar.
En andra publik endpoint hanterar verifiering. När någon anger ett ID slår arbetsflödet upp det och returnerar ett giltigt/ogiltigt-svar plus grundläggande deltagarinformation. Det gör omskickningar enkla, och äkthetskontroller slutar avbryta din dag.
Vad som förändras: före vs. efter
| Det här tar bort | Effekten du märker |
|---|---|
|
|
Praktisk effekt i verkligheten
Säg att du håller en workshop med 30 deltagare och du utfärdar certifikat varje vecka. Manuellt tar även en “snabb” process kanske 8 minuter per person med PDF-ändringar, export, namngivning och mejl, vilket blir runt 4 timmar varje vecka. Med det här arbetsflödet skickar du in deltagardatan en gång (eller skickar den från ett formulär), väntar på att PDF:en genereras och låter Gmail leverera den automatiskt. Din manuella tid sjunker till ungefär 10 minuter totalt, mest för stickprovskontroll och för att svara på faktiska frågor.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- PDF Generator API för att rendera PDF:er från en mall
- Gmail för att mejla certifikat som bilagor
- n8n Data Table (skapa den i n8n)
Svårighetsnivå: Medel. Du kopplar konton, exponerar webhooks publikt och bekräftar några fältmappningar.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Flödet i arbetsflödet
En skapa-certifikat-förfrågan kommer in. “Incoming Create Webhook” tar emot förnamn, efternamn, kursuppgifter och mottagarens e-post. Det är detta du kopplar till ditt formulär, LMS eller interna adminverktyg.
Ett unikt certifierings-ID genereras och kontrolleras. Arbetsflödet skapar ett ID, slår upp det i n8n Data Table och går bara vidare när det verkligen är oanvänt. Om det blir en krock genererar det ett nytt och kontrollerar igen, så att du inte får dubbletter senare.
Posten lagras, sedan skapas PDF:en. Deltagardata läggs till i Data Table och skickas sedan som en JSON-payload till din mall i PDF Generator API. Mallen hanterar typsnitt, färger, logotyper och layout, vilket gör att själva automationsflödet kan hållas enkelt.
Gmail skickar certifikatet automatiskt. Den genererade PDF:en bifogas i ett Gmail-meddelande med din ämnesrad och brödtext. Mottagaren får certifikatet direkt, och du har en sparad post som stödjer omskickningar och verifiering.
Du kan enkelt justera certifikatfälten för att inkludera saker som kohortnamn eller instruktör, beroende på dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera webhook-triggern
Konfigurera de två webhook-ingångarna som startar skapande av certifikat och validering av certifikat.
- Öppna Incoming Create Webhook och ställ in Path till
certifications2. - I Incoming Create Webhook ställer ni in HTTP Method till
POSToch Response Mode tilllastNode. - Öppna Incoming Check Webhook och ställ in Path till
certificationscheck2. - I Incoming Check Webhook ställer ni in HTTP Method till
POSToch Response Mode tillresponseNode. - Verifiera flödet: Incoming Create Webhook → Create Unique Certificate ID och Incoming Check Webhook → Retrieve ID Record.
name, surname, email, course, och för kontroller id, eftersom dessa refereras av uttryck genom hela workflowet.Steg 2: Anslut datatabellen för certifieringar
Konfigurera Data Table-noderna som lagrar och slår upp certifikat-ID:n.
- Öppna Append Certification Record och välj den Data Table där Data Table ID är inställt på
[YOUR_ID](ersätt med ert faktiska tabell-ID). - I Append Certification Record mappar ni kolumner: Name till
{{ $('Incoming Create Webhook').item.json.headers.name }}, Surname till{{ $('Incoming Create Webhook').item.json.headers.surname }}, och CertificationID till{{ $('Create Unique Certificate ID').item.json.id }}. - Öppna Lookup Certificate ID och ställ in Operation till
getmed Return All aktiverat. - I Lookup Certificate ID ställer ni in filtret CertificationID till
{{ $json.id }}. - Öppna Retrieve ID Record och ställ in Operation till
getmed Return All aktiverat. - I Retrieve ID Record ställer ni in filtret CertificationID till
{{ $json.headers.id }}.
Name, Surname och CertificationID kommer append- och lookup-operationerna att misslyckas.Steg 3: Sätt upp logik för ID-generering och validering
Generera unika ID:n och validera dem för både skapande- och verifieringsflöden.
- Öppna Create Unique Certificate ID och behåll JavaScript Code som angivet för att generera ett unikt ID.
- Bekräfta flödet för ID-unikhet: Create Unique Certificate ID → Lookup Certificate ID → Check ID Availability.
- I Check ID Availability säkerställer ni att villkoret kontrollerar ett tomt resultat (det konfigurerade villkoret använder
{{ $json }}med operatornempty). - Verifiera valideringsflödet: Retrieve ID Record → Validate Certificate Record → Return Valid Response eller Return Invalid Response.
- I Validate Certificate Record bekräftar ni jämförelsen mellan
{{ $json.CertificationID }}och{{ $('Incoming Check Webhook').item.json.headers.id }}.
CertificationID-värdena för att bekräfta exakta matchningar.Steg 4: Konfigurera PDF-generering och e-postutskick
Generera certifikat-PDF:en och skicka den till mottagaren via e-post.
- Öppna Generate PDF File och välj mallen genom att ställa in Template ID till
[YOUR_ID]. - I Generate PDF File ställer ni in Data till det JSON-uttryck som visas:
{ "DueDate": "{{$now.toISODate()}}", "Candidate": "{{$('Incoming Create Webhook').item.json.headers.name}} {{$('Incoming Create Webhook').item.json.headers.surname}}", "CourseName": "{{ $('Incoming Create Webhook').item.json.headers.course }}", "ID": "{{ $('Create Unique Certificate ID').item.json.id }}" }. - Ställ in Document Output till
filei Generate PDF File. - Credential Required: Anslut era pdfGeneratorApi-uppgifter i Generate PDF File.
- Öppna Send Certificate Email och ställ in Send To till
{{ $('Incoming Create Webhook').item.json.headers.email }}. - I Send Certificate Email ställer ni in Subject till
Your certification is ready!och Message tillAttached you find your new certification!. - Lägg till bilagemappningen i Send Certificate Email till
document.pdf. - Credential Required: Anslut era gmailOAuth2-uppgifter i Send Certificate Email.
document.pdf.Steg 5: Konfigurera webhook-svar
Returnera tydliga JSON-svar för valideringskontroller.
- Öppna Return Valid Response och ställ in Respond With till
json. - I Return Valid Response ställer ni in Response Body till
{ "ok": "true", "name": "{{ $('Retrieve ID Record').item.json.Name }}", "surname": "{{ $('Retrieve ID Record').item.json.Surname }}" }. - Öppna Return Invalid Response och ställ in Respond With till
json. - I Return Invalid Response ställer ni in Response Body till
{ "ok": "false" }.
Steg 6: Testa och aktivera ert workflow
Kör end-to-end-tester för både skapande- och valideringsvägar, och aktivera sedan workflowet.
- Klicka på Execute Workflow och skicka en POST-förfrågan till Incoming Create Webhook-URL:en med headers för
name,surname,emailochcourse. - Bekräfta att en ny post läggs till av Append Certification Record, och verifiera att Generate PDF File outputtar en fil och att Send Certificate Email levererar meddelandet med bilaga.
- Skicka en POST-förfrågan till Incoming Check Webhook-URL:en med headern
idoch verifiera att Return Valid Response returnerar"ok": "true"med för- och efternamn. - Testa med ett ogiltigt ID och bekräfta att Return Invalid Response returnerar
"ok": "false". - När testerna passerar, slå på workflowet till Active för att möjliggöra körning i produktion.
Se upp för
- Gmail OAuth2-uppgifter kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först status för uppgifterna i n8n under Credentials.
- Platshållare i PDF Generator API-mallen måste matcha dina JSON-nycklar exakt. Om din PDF renderas med tomma fält, jämför mallens UI och payloaden i noden “Generate PDF File” sida vid sida.
- Publika webhooks behöver en stabil URL och rimlig säkerhet. Om du exponerar den här endpointen mot internet, lägg till en delad hemlighet eller begränsa åtkomst, annars kan vem som helst försöka generera certifikat.
Vanliga frågor
Cirka en timme om din PDF-mall och Gmail-åtkomst är redo.
Ja, men någon behöver hantera den initiala exponeringen av webhook och uppgifter/credentials. Efter det handlar det mest om att fylla i fält, testa med en exempel-mottagare och justera mejltexten.
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 användningsavgifter för PDF Generator API baserat på hur många certifikat du genererar.
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 dig obegränsade körningar, men kräver grundläggande serveradministration.
Du kan byta PDF-mall utan att röra logiken genom att uppdatera noden “Generate PDF File” så att den pekar på en annan PDF Generator API-mall. Vanliga anpassningar är att lägga till extra fält i Data Table (t.ex. kohort eller betyg), ändra mejlinnehållet i “Send Certificate Email” och returnera fler detaljer i verifieringssvaret om din use case kräver det.
Oftast beror det på en ogiltig eller saknad API-nyckel i noden “Generate PDF File”. Det kan också vara en mall-mismatch där platshållarna i PDF Generator API inte matchar JSON-nycklarna du skickar, så att requesten lyckas men resultatet blir fel. Om du genererar många certifikat i en kort burst kan även rate limits dyka upp, så det kan hjälpa att sprida ut förfrågningarna.
På en typisk n8n Cloud-plan kan du hantera tusentals körningar per månad, och egen drift tar bort den körningsbegränsningen (din server blir begränsningen). I praktiken är flaskhalsarna Gmails sändningsgränser och genomströmningen i PDF-genereringen, inte själva arbetsflödeslogiken.
Ofta, ja. Det här arbetsflödet behöver två publika endpoints (skapa och verifiera), en pålitlig unikhetskontroll för certifierings-ID:n och en lagrad post som du kan fråga mot senare. n8n hanterar den typen av branching och datauppslagningar på ett rent sätt, och du kan köra egen drift om du inte vill ha prissättning per task. Zapier eller Make kan fortfarande fungera om du bara behöver “formulärinskick → skicka mejl”, men verifiering och hantering av ID-krockar blir snabbt klumpigt. Om du väljer mellan plattformar, prata med en automationsexpert så mappar vi det mot din volym och dina compliance-krav.
När detta är live slutar certifikaten att vara en återkommande stress. Du får renare leverans, enklare omskickningar och ett verifieringsspår som du faktiskt kan lita på.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.