Introductie
Evenementen, workshops en trainingsprogramma’s eindigen meestal op dezelfde manier: elke deelnemer verwacht een certificaat, en iemand uit het organiserende team moet die maken en versturen. Namen met de hand invullen, elk certificaat naar PDF exporteren en aan een afzonderlijke e-mail toevoegen is traag werk dat al bij meer dan een handvol deelnemers niet meer schaalt, en één enkele typefout in een naam is genoeg om een certificaat onbruikbaar te maken. In deze tutorial bouwen we een geautomatiseerde workflow met Pipedream en DocuGenerate die het volledige proces afhandelt, van het ontvangen van de gegevens van de deelnemer tot het afleveren van de definitieve PDF in diens inbox.
De workflow bestaat uit drie stappen. Een webhook-trigger ontvangt de gegevens van de deelnemer als JSON-payload, de DocuGenerate-actie Generate Document voegt die gegevens samen met een Word-sjabloon om een PDF-certificaat te maken, en de Gmail-actie Send Email stuurt het certificaat als bijlage naar de deelnemer. Omdat het startpunt een eenvoudig HTTP-eindpunt is, kan dezelfde workflow worden aangeroepen vanuit een registratieplatform, een formulier, een spreadsheetscript of uw eigen backend. Aan het einde van deze gids beschikt u over een werkende workflow die u met één klik naar uw eigen Pipedream-account kunt kopiëren.
Het Certificaatsjabloon Instellen
Voordat we de workflow bouwen, hebben we een certificaatsjabloon in DocuGenerate nodig. Voor deze tutorial gebruiken we het Word-sjabloon Certificate Of Participation, een certificaat in liggend formaat met een sierlijke gouden rand, een groot schrijflettertype voor de naam van de ontvanger, een lakzegel in het midden en een handtekeningblok rechtsonder.
Zodra u het sjabloon hebt geüpload naar uw DocuGenerate-account, worden automatisch 6 merge tags gedetecteerd: Full Name, Event Name, Organizer, Certificate ID, Signer Position en Signer Name. De tag Full Name wordt prominent in het midden van het certificaat weergegeven, Event Name en Organizer verschijnen in de erkenningstekst eronder, en Organizer staat ook afgedrukt in het lakzegel. Het Certificate ID staat naast de uitgiftedatum, terwijl Signer Name en Signer Position het handtekeningblok vullen.

De uitgiftedatum naast het certificaat-ID heeft helemaal geen merge tag nodig. Het is een DATE-veld dat rechtstreeks in Word is ingevoegd, zodat het bij elke generatie van een certificaat wordt gevuld met de huidige datum. Onze blogpost over het invoegen van de datum van vandaag in een sjabloon legt uit hoe u dit soort veld toevoegt in Word of LibreOffice en de weergave-indeling ervan kiest.
Nu het sjabloon klaar is, kunnen we een nieuwe workflow in Pipedream maken. Elke workflow begint met een trigger, die bepaalt waar de gegevens vandaan komen en wanneer de workflow wordt uitgevoerd. De gegevens kunnen afkomstig zijn uit een spreadsheet, een database zoals Airtable of Notion, een formulierbouwer of elke andere app waarmee Pipedream verbinding maakt. Voor deze tutorial gebruiken we een HTTP-trigger die luistert naar inkomende verzoeken op een unieke URL, omdat dit de meest flexibele optie is en werkt met elk systeem dat een HTTP-verzoek kan versturen.
Klik op Add Trigger en selecteer de trigger New HTTP / Webhook Requests. De standaardconfiguratie past goed bij deze workflow, dus u kunt de parameters laten zoals ze zijn:
- Event Data:
Full HTTP request, waarmee de body, headers en andere details van het verzoek via het object steps beschikbaar worden voor de volgende stappen. - HTTP Response:
Return HTTP 200 OK, zodat de aanroeper een onmiddellijke bevestiging ontvangt. - Domains:
pipedream.net, het domein dat wordt gebruikt voor de gegenereerde trigger-URL. - Authorization:
None, wat betekent dat elk verzoek naar de URL wordt geaccepteerd. We komen hierop terug in de sectie over productie.

Klik op Save and continue om de trigger aan te maken. In de sectie SELECT EVENT toont Pipedream de unieke URL die voor deze workflow is gegenereerd, in ons geval https://eorgxgd03g7mu1b.m.pipedream.net. Elk HTTP-verzoek dat naar deze URL wordt verstuurd, start de workflow.

Een Testgebeurtenis Verzenden
Om de volgende stappen te configureren, heeft Pipedream een voorbeeldgebeurtenis nodig, zodat het de structuur van de inkomende gegevens kan tonen en deze kan aanbieden voor automatisch aanvullen. Klik op Generate Test Event, open het tabblad Body, selecteer application/json als Content-Type en voer de volgende payload in het veld Raw Request Body in:
{
"Signer Position": "Program Director",
"Signer Name": "Margaret Ellison",
"Certificate ID": "FLN-2025-00143",
"Organizer": "Future Learning Network",
"Event Name": "International Student Leadership Forum 2025",
"Full Name": "Aisha Rahman",
"Email": "aisha.rahman@example.com"
}
De eerste zes sleutels komen exact overeen met de merge tags in het certificaatsjabloon. De sleutel Email wordt niet gebruikt in het sjabloon, maar we nemen deze op in de payload omdat de workflow moet weten waar het certificaat naartoe gestuurd moet worden zodra het is gegenereerd.

Klik op Send HTTP Request om de testgebeurtenis te verzenden. De sectie RESULTS bevestigt dat het verzoek is ontvangen en laat zien hoe de gegevens worden geëxporteerd onder steps.trigger.event. De zeven velden uit onze payload zijn beschikbaar in het object body, naast andere details van het verzoek zoals de headers, de method en de url.

Het Certificaat Genereren
Klik vervolgens op de knop + onder de trigger, zoek naar DocuGenerate en selecteer de actie Generate Document van de DocuGenerate App. De eerste keer dat u deze gebruikt, moet u uw DocuGenerate-account koppelen met uw API-sleutel. De integratiegids beschrijft deze configuratie in meer detail.

Configureer de actie met de volgende parameters:
- DocuGenerate Account: Het account dat met uw API-sleutel is gekoppeld.
- Template: Het sjabloon Certificate Of Participation dat is geüpload in de stap sjabloon instellen.
- Name:
Certificate for {{steps.trigger.event.body["Full Name"]}}, waarmee elk document een naam krijgt op basis van de deelnemer, zoals Certificate for Aisha Rahman. - Format:
PDF (.pdf), zodat het certificaat aan een e-mail kan worden toegevoegd en op elk apparaat kan worden geopend. - Data: Een object dat elke merge tag koppelt aan de bijbehorende waarde uit de trigger, zoals hieronder uitgelegd.
Selecteer voor de parameter Data de optie Construct an object en voeg een rij toe voor elk van de 6 merge tags. De sleutel van elke rij is de naam van de merge tag, en de waarde verwijst naar het overeenkomende veld in steps.trigger.event.body. Sleutels die spaties bevatten, moeten de haakjesnotatie gebruiken, zoals in {{steps.trigger.event.body["Full Name"]}}, terwijl sleutels van één woord zoals Organizer de kortere puntnotatie kunnen gebruiken, {{steps.trigger.event.body.Organizer}}. Het veld Email wordt weggelaten, omdat het sjabloon het niet gebruikt.

Klik op Test om de actie uit te voeren met de testgebeurtenis. De sectie RESULTS bevestigt dat het document is gegenereerd, en de geëxporteerde $return_value bevat de details van het nieuwe document:
{
"$summary": "Successfully generated the document S1AG7iucebUnYdv9RY73",
"$return_value": {
"created": 1790522684107,
"template_id": "bjBXM4QZeg88Hf7ULwgl",
"name": "Certificate for Aisha Rahman",
"format": ".pdf",
"data_length": 1,
"filename": "Certificate for Aisha Rahman.pdf",
"document_uri": "https://firebasestorage.googleapis.com/v0/b/storage.us.docugenerate.com/o/documents%2FS1AG7iucebUnYdv9RY73%2FCertificate%20for%20Aisha%20Rahman.pdf?alt=media&token=81c6ffdb-282d-4a89-a2b9-e96542f6aee2",
"id": "S1AG7iucebUnYdv9RY73"
}
}
De twee velden die we in de volgende stap nodig hebben, zijn filename, de naam van het gegenereerde bestand, en document_uri, een URL die naar de gegenereerde PDF verwijst.

U kunt het resultaat ook controleren in DocuGenerate. Het tabblad Documents van het sjabloon Certificate Of Participation toont nu een document met de naam Certificate for Aisha Rahman, waarin elke merge tag is vervangen door de waarden uit de testgebeurtenis, inclusief de naam van de organisator in het zegel en de gegevens van de ondertekenaar in het handtekeningblok. U kunt het gegenereerde certificaat downloaden om de definitieve PDF te bekijken.

Het Certificaat per E-mail Verzenden
De laatste stap levert het certificaat af bij de deelnemer. Klik op de knop + onder de actie Generate Document en selecteer de actie Send Email van de Gmail-app, en koppel vervolgens het Gmail-account van waaruit de e-mails moeten worden verzonden. Pipedream ondersteunt veel andere e-mailproviders, maar de Gmail-actie is compleet en snel ingesteld, wat haar een goede keuze maakt voor deze tutorial.

Configureer de actie met de volgende parameters:
- To:
{{steps.trigger.event.body.Email}}, het e-mailadres dat in de webhook-payload is ontvangen. - Subject:
Your certificate {{steps.trigger.event.body["Certificate ID"]}}, dat het certificaat-ID bevat zodat de deelnemer er later naar kan verwijzen. - Email Body: Een kort bericht, gepersonaliseerd met de naam van de deelnemer, de naam van het evenement en de gegevens van de ondertekenaar (zie hieronder).
- Attachment Filenames:
{{steps.generate_document.$return_value.filename}}, de bestandsnaam die wordt geretourneerd door de actie Generate Document. - Attachments:
{{steps.generate_document.$return_value.document_uri}}, de URL van de gegenereerde PDF.
Hier is de volledige tekst die in het veld Email Body wordt gebruikt:
Dear {{steps.trigger.event.body["Full Name"]}},
Thank you for taking part in {{steps.trigger.event.body["Event Name"]}}.
Please find your certificate of participation attached to this email.
We hope you enjoyed the experience and look forward to seeing you at future events.
Best regards,
{{steps.trigger.event.body["Signer Name"]}}
{{steps.trigger.event.body["Signer Position"]}}
Een handig detail van de Gmail-actie is dat het veld Attachments zowel openbare URL’s als bestandspaden accepteert. Dit betekent dat de document_uri die DocuGenerate retourneert direct kan worden doorgegeven, zonder een tussenstap toe te voegen om de PDF eerst naar tijdelijke opslag te downloaden. Klik op Test om de e-mail voor de testgebeurtenis te versturen. De deelnemer ontvangt een bericht met het onderwerp Your certificate FLN-2025-00143, de gepersonaliseerde tekst en het certificaat als bijlage Certificate for Aisha Rahman.pdf.

De Workflow End-to-End Testen
Tot nu toe is elke stap afzonderlijk getest met de voorbeeldgebeurtenis. Om de volledige workflow uit te voeren zoals die in de praktijk zal draaien, klikt u op Deploy zodat de trigger-URL live verzoeken begint te verwerken. Stuur vervolgens een echt HTTP-verzoek van buiten Pipedream naar de trigger-URL. Als u niet zeker weet hoe u dit vanuit uw eigen systeem doet, biedt de knop See Code Examples in de sectie SELECT EVENT van de trigger kant-en-klare codefragmenten in verschillende talen, waaronder cURL, JavaScript, Node, Python, PHP, Go en Ruby.
We gebruiken de volgende cURL-opdracht, die dezelfde deelnemersgegevens verstuurt als de testgebeurtenis:
curl -X POST https://eorgxgd03g7mu1b.m.pipedream.net \
-H "Content-Type: application/json" \
-d '{
"Signer Position": "Program Director",
"Signer Name": "Margaret Ellison",
"Certificate ID": "FLN-2025-00143",
"Organizer": "Future Learning Network",
"Event Name": "International Student Leadership Forum 2025",
"Full Name": "Aisha Rahman",
"Email": "aisha.rahman@example.com"
}'
Binnen enkele seconden na het versturen van het verzoek doorloopt de workflow alle drie de stappen: de trigger ontvangt de payload, DocuGenerate genereert het certificaat en Gmail stuurt het naar de inbox van de deelnemer. Elke uitvoering wordt vastgelegd in de gebeurtenisgeschiedenis van de workflow in Pipedream, waar u de invoer en exports van elke stap kunt inspecteren als er iets niet klopt. Om certificaten te genereren voor een hele lijst deelnemers, stuurt u één verzoek per deelnemer met diens eigen gegevens.
Als u deze workflow zelf wilt uitproberen, kunt u deze deellink gebruiken om hem naar uw eigen Pipedream-account te kopiëren. Gekoppelde accounts worden niet meegenomen in gedeelde workflows, dus u moet uw eigen DocuGenerate- en Gmail-accounts koppelen en uw eigen kopie van het certificaatsjabloon selecteren.
De Workflow in Productie Nemen
De workflow die we hebben gebouwd is compleet, maar een paar aanpassingen zijn de moeite waard voordat u erop vertrouwt voor een echt evenement. De belangrijkste betreft de instelling Authorization van de trigger. Met None kan iedereen die de trigger-URL kent een certificaat genereren en naar een willekeurig adres laten sturen. Met Pipedream kunt u HTTP-verzoeken autoriseren met een aangepast token of OAuth, zodat alleen verzoeken van uw eigen systemen worden geaccepteerd en alle andere worden genegeerd.
Het tweede aandachtspunt is waar de gegevens vandaan komen. De webhook aanroepen vanuit een registratieplatform, een formulierbouwer of uw eigen backend werkt goed wanneer certificaten moeten worden verstuurd zodra iemand een evenement heeft afgerond. Als uw deelnemerslijst zich in plaats daarvan in een spreadsheet of een database bevindt, kunt u de HTTP-trigger vervangen door een Pipedream-trigger die wordt geactiveerd bij een nieuwe rij in Google Sheets of een nieuw record in een database. De stappen Generate Document en Send Email blijven hetzelfde, en alleen de verwijzingen naar steps.trigger.event.body moeten worden bijgewerkt zodat ze naar de gegevens van de nieuwe trigger wijzen.
Conclusie
In deze tutorial hebben we een Pipedream-workflow gebouwd die één HTTP-verzoek omzet in een gepersonaliseerd PDF-certificaat dat per e-mail wordt afgeleverd. De webhook-trigger ontvangt de gegevens van de deelnemer, de DocuGenerate-actie Generate Document voegt ze samen met een Word-sjabloon, en de Gmail-actie Send Email voegt de PDF rechtstreeks via de URL als bijlage toe, zonder tussenliggende downloadstap en zonder handmatig werk zodra de workflow is geïmplementeerd.
Hetzelfde patroon werkt voor elk document dat een ontvanger direct na het aanmaken moet bereiken, zoals cursuscertificaten, evenemententickets, registratiebevestigingen of ontvangstbewijzen. Vervang het sjabloon, pas de payload aan zijn merge tags aan en werk de e-mailtekst bij, en de rest van de workflow blijft ongewijzigd.
Bronnen