Automatiseer Open Badges met Zapier, Make en n8n (no-code recepten)
Laat badge-uitgifte starten bij een Typeform-inzending, Stripe-aankoop of Mailchimp-tag — drie werkende no-code recepten die elk minder dan 10 minuten kosten.
Nacho founded Badges Ninja to make issuing verifiable digital credentials as simple as a single API call — Open Badge v2.0 badges and certificates, minted, hosted, and verifiable without standing up your own issuer infrastructure.
Als je een trainingsprogramma, een betaalde cursus of een e-maillijst met niveaus runt, wordt het moment waarop iemand iets afrondt, koopt of zich kwalificeert meestal al ergens bijgehouden — een formulierreactie, een Stripe-afschrijving, een Mailchimp-tag. De badge zou automatisch op die gebeurtenis moeten volgen. Dat gebeurt zelden, omdat “een credential uitgeven” in de meeste tools geen native actie is, en het bouwen van een eigen webhook-ontvanger voor een eenmalige automatisering overkill is.
Precies hiervoor zijn Zapier, Make en n8n gemaakt. Alle drie kunnen de Badges Ninja API rechtstreeks aanroepen — geen plugin, geen tussenliggende server, geen code-deployment. Hieronder staan drie werkende recepten die je vandaag kunt overnemen, plus de manier waarop je de API-key beheert en fouten laat afhandelen, zodat badges niet stilletjes falen bij uitgifte.
Wat je aan elkaar koppelt
Elk recept volgt dezelfde vorm: trigger → (optioneel) opzoeken van de ontvanger → HTTP POST naar /awards. Het /awards-endpoint is wat daadwerkelijk een badge aan een ontvanger uitgeeft — je verwijst naar een bestaande badgeId en het maakt een unieke, verifieerbare uitreiking aan met een eigen verificatie-URL, QR-code en pdf-certificaat. Zie de API-quickstart als je nog geen badge hebt aangemaakt; je hebt de bijbehorende ID nodig voordat een van deze automatiseringen kan draaien.
Authenticatie is voor alle drie de platformen hetzelfde: een X-Api-Key-header met een sleutel die je in je dashboard genereert. Automatiseringsplatformen gaan niet goed om met OAuth-flows voor willekeurige REST-API’s, dus API-keys zijn hier de juiste keuze — langlevend, gekoppeld aan je account, en met één klik in te trekken als een Zap ooit misgaat.
Maak eerst de API-key aan

Open in je dashboard Instellingen → API Keys, klik op Create Key en geef de key een naam die past bij zijn taak — zapier-course-completions, niet key1. Die naamgeving is belangrijker dan het klinkt: als een automatisering over zes maanden onverwacht raar doet, wil je die key kunnen intrekken zonder drie andere integraties te breken die hem toevallig delen.

De key wordt eenmalig, volledig, direct na het aanmaken getoond. Kopieer hem meteen naar de beveiligde credential-opslag van je automatiseringsplatform — de “Connection” van Zapier, de “Connection” van Make, of een n8n-credential — nooit in een gewoon tekstveld binnen de Zap/het scenario/de workflow zelf.
Recept 1: Typeform → Badges Ninja (afrondingsformulier voor een cohort)
Use case: een cohort rondt een cursus af en vult een kort “ik heb dit afgerond”-formulier in (of je stuurt een formulier als laatste stap van een zelfstudietraject).
In Zapier:
- Trigger: Typeform — New Entry, beperkt tot je afrondingsformulier.
- Actie: Webhooks by Zapier — POST.
- URL:
https://api.badges.ninja/awards - Headers:
X-Api-Key: bws_<your key>,Content-Type: application/json - Data (gemapt vanuit de Typeform-velden):
{
"badgeId": "bdg_9f2a1c",
"recipient": {
"name": "{{typeform_name}}",
"email": "{{typeform_email}}"
},
"issuedOn": "2026-08-27"
}
Dat is de hele Zap. Er is geen filterstap nodig als het formulier alleen afgaat bij echte afrondingen — is het een algemeen contactformulier, voeg dan een Filter by Zapier-stap toe die een verborgen veld of antwoordwaarde controleert voordat de webhook afgaat, zodat je geen badges uitgeeft vanuit spam of testinzendingen.
Recept 2: Stripe → Badges Ninja (aankoop = credential)
Use case: een betaald certificeringsexamen, een premium cursusniveau, of een membership-plan waarbij de badge onderdeel is van wat mensen kopen.
In Zapier:
- Trigger: Stripe — New Charge (of New Invoice Payment Succeeded voor abonnementen).
- Filter: het afschrijvingsbedrag is exact gelijk aan de prijs van het product waar de credential bij hoort — belangrijk als je Stripe-account meerdere producten via één webhook afhandelt.
- Actie: Webhooks by Zapier — POST naar
https://api.badges.ninja/awards, dezelfde headers als hierboven. - Data: map
charge.billing_details.emailencharge.billing_details.namenaarrecipient.email/recipient.name.
Het fijne aan uitgifte koppelen aan een betalingsgebeurtenis: het is van nature bijna idempotent. Stripe charge-ID’s zijn uniek, dus als je je zorgen maakt dat een Zap opnieuw afgaat bij een herhaalde webhook, voeg dan een Storage by Zapier-stap toe die controleert of je die charge-ID al hebt verwerkt voordat je /awards aanroept.
Recept 3: Mailchimp-tag → Badges Ninja
Use case: je tagt abonnees handmatig (of via een andere automatisering) zodra ze een mijlpaal bereiken — een webinar bijgewoond, een druppelreeks afgerond, drie mensen doorverwezen — en je wilt dat die tag een badge triggert zonder zelf de API aan te raken.
In Zapier:
- Trigger: Mailchimp — New Tag Added to Subscriber, gefilterd op de specifieke tag (bijv.
webinar-attended). - Actie: Webhooks by Zapier — POST naar
https://api.badges.ninja/awards. - Data: map
subscriber.email_addressensubscriber.merge_fields.FNAME+LNAMEnaar de ontvangervelden.
Dit patroon is populair voor erkenningsprogramma’s — sales-SPIFF’s, community-mijlpalen, evenementaanwezigheid — waarbij iemand in het team al de gewoonte heeft om contacten te taggen, en jij wilt dat de badge gratis uit die gewoonte voortrolt.
Fouten en retries afhandelen
Automatiseringsplatformen zijn niet transactioneel met je badgegegevens, dus bouw dezelfde discipline in die je van een echte integratie zou verwachten:
- Controleer de responscode. Een
200betekent dat de uitreiking is aangemaakt; een4xxduidt meestal op een verkeerdebadgeIdof een misvormd e-mailadres — dat is een configuratiefout in de Zap, niet iets om blindelings opnieuw te proberen. Een5xxis veilig om te herhalen. - Zapier: mislukte Zap-runs belanden in de Zap History, compleet met request en response. Zet Auto-Replay aan voor tijdelijke fouten, maar stel ook een e-mail/Slack-melding in bij herhaalde fouten, zodat een stilletjes kapotte Zap niet betekent dat je drie maanden lang badges mist.
- Make: scenario’s ondersteunen een native Error Handler-route — koppel een Resume- of Rollback-instructie aan de HTTP-module, en stuur aanhoudende fouten naar een notificatiemodule in plaats van ze gewoon te negeren.
- n8n: omdat het self-hosted of cloud is met fijnmaziger controle, wikkel je de HTTP Request-node in een Error Trigger-workflow, en overweeg mislukte payloads weg te schrijven naar een lichte fallback-opslag (Airtable, Google Sheets) die je handmatig kunt herspelen.
Vermijd in alle drie de gevallen de valkuil van “het liep groen, dus het werkte”. Een respons die er 200-uitziend uitziet van een verkeerd geconfigureerde webhook-stap (verkeerde URL, ontbrekende header) kan alsnog mislukken aan de kant van Badges Ninja. Controleer wekelijks steekproefsgewijs de uitreikingenlijst in het dashboard, in ieder geval tijdens de eerste maand van elke nieuwe automatisering.
Het Make.com-equivalent
De visuele scenario-builder van Make loopt vrijwel één-op-één met de Zapier-stappen hierboven:
- Trigger-module — Typeform-, Stripe- of Mailchimp-watchmodule, hetzelfde als de Zapier-trigger.
- HTTP → Make a Request module — Methode
POST, URLhttps://api.badges.ninja/awards, headers ingesteld in de Headers-tabel (X-Api-Key,Content-Type: application/json), body als raw JSON met gemapte variabelen uit de trigger. - Optionele Filter tussen modules voor de Stripe-bedragcontrole of de “echte afronding”-check op Typeform.
Het voordeel van Make hier is zichtbaarheid — de scenario-editor laat je bij elke stap de daadwerkelijke JSON-payload zien voordat je hem aanzet, wat het debuggen van een verkeerde veldmapping veel sneller maakt dan de meer lineaire, stap-voor-stap testweergave van Zapier.
Het n8n-equivalent
n8n is de beste keuze als je dit self-hosted wilt, of als je de rest van je stack daar al automatiseert:
- Trigger-node — Typeform Trigger / Stripe Trigger / Mailchimp Trigger (allemaal ingebouwde nodes).
- HTTP Request-node — Methode
POST, URLhttps://api.badges.ninja/awards, authenticatie ingesteld op Header Auth met jeX-Api-Keyopgeslagen als n8n-credential (niet hardcoded in de node), JSON-body opgebouwd met een expressie die verwijst naar de output van de trigger-node. - IF-node (optioneel) — dezelfde afrondings-/bedragcontrole als hierboven, geplaatst vóór de HTTP Request-node.
Omdat n8n-credentials versleuteld zijn en herbruikbaar over workflows heen, is dit de nettere optie als je van plan bent meer dan één Badges Ninja-automatisering te bouwen — je stelt de credential één keer in en hergebruikt hem in elke workflow die badges moet uitgeven.
Waarom een generieke webhook-stap in plaats van een native app
Zapier, Make en n8n hebben allemaal app-marketplaces, en de neiging is om te zoeken naar een “Badges Ninja”-app voordat je naar een generieke HTTP/webhook-module grijpt. Sla die zoektocht over — voor een REST-API die zo klein is (een uitgever aanmaken, een badge aanmaken, een uitreiking aanmaken, klaar) heb je met een generieke webhook-stap binnen tien minuten iets live, zonder afhankelijkheid van een externe app-beheerder die de API-wijzigingen bijhoudt. Een speciale app voegt een abstractielaag toe die je niet nodig hebt: je vult nog steeds dezelfde velden badgeId, recipient.email en recipient.name in, alleen via een formulier in plaats van een JSON-body. De API-referentie is kort genoeg om in vijf minuten te lezen, en zodra je dat hebt gedaan, is de rechtstreekse HTTP-aanpak eigenlijk minder kwetsbaar — er zit geen app-store-goedkeuringscyclus tussen een wijziging in de Badges Ninja API en het weer werken van je automatisering.
Test voordat je het live zet
Elk platform hierboven biedt een manier om één testuitvoering te draaien zonder op een echte trigger te wachten:
- Zapier — gebruik “Test” op de trigger-stap om een voorbeeldrecord op te halen, en dan “Test” op de webhook-actie om precies één echte request te versturen. Controleer of de uitreiking in je dashboard verschijnt voordat je de Zap aanzet.
- Make — draai het scenario handmatig één keer (knop “Run once”) met een voorbeeldbundel, en bekijk de outputbel van de HTTP-module voor de daadwerkelijke responsebody.
- n8n — gebruik “Execute Node” op de HTTP Request-node met testinvoerdata, waardoor je de request en respons direct in de editor ziet.
Twee dingen zijn het controleren waard bij die eerste testrun: dat de hardgecodeerde badgeId echt bij de badge hoort die je denkt (een verouderde ID uit een gedupliceerde Zap is een veelgemaakte fout), en dat het e-mailveld van de ontvanger een echt adres oplevert en niet een placeholder zoals {{email}} die door een mappingfout onopgelost is gebleven. Beide fouten zijn onzichtbaar in de “success”-indicator van het automatiseringsplatform — de HTTP-call geeft in beide gevallen alsnog 200 terug — dus de enige betrouwbare controle is de uitreiking in je dashboard te openen en te bevestigen dat de ontvanger degene is die je verwacht.
Dubbele badges voorkomen
Elke triggerbron hierboven kan onder reële omstandigheden meer dan één keer afgaan voor dezelfde gebeurtenis — Stripe herhaalt webhooks bij een timeout, Typeform kan dubbel indienen bij een trage verbinding, Mailchimp-automatiseringen kunnen opnieuw triggeren als een tag wordt verwijderd en weer toegevoegd. Als je badge-uitgifte niet idempotent is, betekent dat dat ontvangers dezelfde credential twee keer krijgen, wat slordig overkomt en supportmail oplevert.
De schoonste bescherming is een opzoeken-voor-je-aanmaakt-stap: voeg vóór de POST naar /awards een Search-actie toe (Zapier’s “Find Award” via een GET-request, of het Make/n8n-equivalent van een HTTP GET) tegen je eigen uitreikingsgegevens — een simpele Google Sheet of Airtable-log waar dezelfde Zap meteen na een geslaagde uitreiking naar schrijft, werkt hier prima voor als je de API er niet voor wilt bevragen. Bestaat er al een record voor die combinatie van ontvanger en badge, vertak dan naar een no-op in plaats van opnieuw uit te geven. Dit is een aanpassing van vijf minuten, en het is het verschil tussen een automatisering die je onbewaakt vertrouwt en een die je in de gaten moet blijven houden.
Wanneer no-code niet volstaat
Deze recepten dekken losse, eenmalige triggers goed. Zodra je honderden badges tegelijk uit één CSV-export uitgeeft — een cohort dat afstudeert, een lijst met conferentiedeelnemers, een bulkverlenging van CE-punten — sla je het automatiseringsplatform over en gebruik je direct de bulk badge-upload: die pauzeert en hervat halverwege een batch en overleeft een gesloten browsertab, iets wat no-code webhook-loops bij grote volumes niet netjes aankunnen.
Klaar om je eerste verifieerbare credential uit te geven? Begin gratis op badges.ninja — visuele designer, publieke verificatiepagina, pdf-certificaat, Open Badge v2.0-output. Geen creditcard nodig.
Hoe dit artikel is gemaakt
Sommige berichten op deze blog worden met behulp van een AI-assistent opgesteld en vervolgens door het Badges Ninja-team gecontroleerd, geverifieerd en bewerkt voordat ze worden gepubliceerd. Elk codevoorbeeld en elke prijs wordt geverifieerd aan de hand van het live product. Lees meer over ons redactionele en AI-proces op onze pagina over ons redactieproces .

Over de auteur
Nacho Coll
Founder & Engineer at Badges Ninja
Nacho founded Badges Ninja to make issuing verifiable digital credentials as simple as a single API call — Open Badge v2.0 badges and certificates, minted, hosted, and verifiable without standing up your own issuer infrastructure. Writes about the Open Badges spec, credential verification, and running a credentialing platform serverless on AWS, from the operator side of the wire.
Meer van Nacho Coll
- Moodle's native Open Badges vervangen door Badges Ninja (betere designer, dezelfde API)31 aug 2026 · 7min leestijd
- Zo voeg je een LinkedIn “Add to Profile”-knop toe aan je Open Badges20 aug 2026 · 10min leestijd
- Open Badges versus pdf-certificaten: wat past het best bij jouw programma in 2026?10 aug 2026 · 6min leestijd

