Så utfärdar du Open Badges från en CSV på under 5 minuter

Steg för steg: ladda upp en CSV med mottagare, välj ditt märke, tryck på Utfärda. Pausa och återuppta mitt i satsen, gör om misslyckanden, exportera resultat. Fungerar för grupper på 10 eller 10 000.

Nacho Coll Av Uppdaterad 9 min läsning
Steg för steg: ladda upp en CSV med mottagare, välj ditt märke, tryck på Utfärda. Pausa och återuppta mitt i satsen, gör om misslyckanden, exportera resultat. Fungerar för grupper på 10 eller 10 000.

Om du någonsin har utfärdat referenser till en grupp en mottagare i taget känner du redan till problemet: det skalar inte bortom ungefär tio personer innan det förvandlas till en eftermiddag av att kopiera och klistra in namn och e-postadresser. En bootcamp-grupp på 40 personer, en deltagarlista på 500 personer för en konferens eller en utrullning av företagsutbildning för 5 000 personer behöver alla samma sak — ladda upp en lista, välj ett märke, klicka på Utfärda och gå därifrån.

Det är precis vad Massreferenser på https://badges.ninja gör. Denna genomgång täcker hela flödet: att förbereda din CSV, konfigurera satsen, se den köra och hantera de stökiga verkliga fallen — en mottagarrad med ett stavfel, en sats som avbryts halvvägs, eller ett program som vill utfärda på samma sätt från sina egna system i stället för instrumentpanelen.

Innan du börjar: vad du behöver

Två saker, som du förmodligen redan har båda:

  1. Ett märke — designat en gång i den visuella designern, återanvänt för varje mottagare i satsen. Om du inte har byggt något ännu, se vår guide om att designa ditt första verifierbara certifikat.
  2. En CSV med mottagare — namn, e-post och (valfritt) ett utfärdandedatum. Det är hela schemat.

Du behöver inget utfärdarkonto per mottagare, ingen e-postserver och ingen kod. Allt i detta avsnitt sker i instrumentpanelen.

Steg 1: förbered din CSV

Formatet på mottagarlistan är medvetet minimalt:

name,email,issued_on
Maria Gonzalez,maria@example.com,2026-07-01
David Kim,david@example.com,2026-07-01
Priya Patel,priya@example.com,
  • name — obligatoriskt. Fyller i mottagarfältet på intyget (assertion) och certifikatet.
  • email — obligatoriskt. Detta blir mottagarens identitet på Open Badge v2.0-intyget — hashat med ett salt per referens innan det lagras, aldrig sparat i klartext.
  • issued_on — valfritt. Lämna det tomt så använder satsen ögonblicket då varje rad bearbetas; ange det uttryckligen om du fyller i efterhand för en grupp som faktiskt blev klar förra månaden.

De flesta programägare exporterar detta direkt från där de ändå spårar slutföranden — Airtable, Google Sheets, ett kalkylark överlämnat av en instruktör, eller en CSV hämtad från en LMS-betygsbok. Inget särskilt exportverktyg krävs; vilken CSV som helst med de tre kolumnerna fungerar.

Vanliga CSV-fallgropar (och hur förhandsvisningen fångar dem)

En handfull problem dyker upp ständigt i verkliga mottagarlistor, oftast för att CSV:n satts ihop genom att slå samman två eller tre källblad:

  • Efterföljande blanksteg i e-postadresser — en kopiering från en PDF-lista eller en Google Form-export drar ofta med sig ett osynligt mellanslag. Det ser bra ut i en kalkylarkscell men faller på e-postvalideringen vid uppladdning.
  • Dubbletter av rader — samma mottagare som förekommer två gånger för att en grupplista och en lista över sena anmälningar sammanfogats utan avdubblering.
  • Inkonsekventa datumformat — en kolumn med 2026-07-01 blandat med 07/01/2026 från en annan export. Håll dig till ISO 8601 (YYYY-MM-DD) så försvinner detta helt.
  • Skillnader i versaler i rubrikerEmail mot email mot E-mail. Tolken är förlåtande mot vanliga varianter, men ett helt anpassat rubriknamn mappas inte automatiskt.

Inget av detta är ödesdigert — förhandsvisningssteget (nedan) lyfter fram vart och ett innan något utfärdas, så åtgärden är “redigera kalkylarket, ladda upp igen” i stället för “räkna ut vilken av 3 000 mottagare som fick ett trasigt märke”.

Steg 2: konfigurera satsen

Öppna Referenser → Massreferenser i instrumentpanelen och välj det märke du utfärdar. Detta är steget där du ställer in allt som gäller hela satsen: själva märket, ett delat utfärdandedatum om du inte lägger in datum per rad i CSV:n, och (om din utfärdarprofil har ett) LinkedIn-organisationens ID som låter varje mottagare lägga till referensen i sin profil med ett klick.

Massreferenser — steg 1, konfigurera

Det här är ett bra tillfälle att dubbelkolla att märket du valt är den slutgiltiga versionen — mottagarna ser den bild och de kriterier som är kopplade till det i det ögonblick du utfärdar, inte det du uppdaterar det till senare.

Steg 3: ladda upp och förhandsgranska

Släpp in din CSV så tolkar plattformen den, visar dig en förhandsvisningstabell och flaggar allt den inte kan bearbeta — en saknad e-post, ett felaktigt datum, en dubblettrad. Inget utfärdas förrän du bekräftar förhandsvisningen.

Massreferenser — steg 2, ladda upp

Detta förhandsvisningssteg spelar större roll än det ser ut. Ett stavfel på en rad i en CSV med 2 000 rader är lätt att missa med blotta ögat, och det är mycket billigare att fånga det innan 1 999 korrekta rader redan är utfärdade än att försöka nysta upp det efteråt. Rätta de flaggade raderna i ditt kalkylark, ladda upp igen så uppdateras förhandsvisningen.

Steg 4: kör satsen

Tryck på Utfärda så börjar satsen bearbetas. En förloppsindikator spårar slutförda kontra återstående rader, och satsen körs på serversidan — du behöver inte hålla fliken öppen, och att fälla ihop din laptop mitt i satsen förlorar inte din plats.

Den sista delen är värd att stava ut eftersom det är detaljen som verkligen spelar roll för stora grupper: satsens tillstånd lever på servern, inte i din webbläsare. Om din anslutning bryts, din laptop går i viloläge, eller du helt enkelt stänger fliken för att ett möte börjar, fortsätter satsen köra (eller återupptas exakt där den slutade om du pausade den) i stället för att starta om från noll. För en bootcamp-grupp på 40 personer är detta trevligt att ha. För en företagsutrullning på 5 000 rader är det skillnaden mellan “det bara fungerar” och “någon måste vakta en webbläsarflik i tjugo minuter”.

Du kan också pausa en pågående sats medvetet — säg att någon flaggar att märkets kriterietext behöver justeras halvvägs genom en körning på 3 000 rader — åtgärda problemet och återuppta utan att utfärda om de redan slutförda raderna.

Steg 5: hantera misslyckanden

Verkliga mottagarlistor har dåliga rader: en e-postdomän med stavfel, ett namnfält som faktiskt är tomt, en dubblettpost från att två exporterade blad slagits samman. När en rad misslyckas stannar satsen inte — den fortsätter bearbeta resten och flaggar misslyckandet för granskning efteråt. Du får en resultatexport som visar exakt vilka rader som lyckades och vilka som inte gjorde det, så att du kan rätta bara de misslyckade raderna och köra en liten uppföljningssats i stället för att kontrollera hela listan på nytt.

Detta spelar roll för CSV-exportvanan som redan är vanlig i referensinstrumentpanelen — du kan när som helst dra en CSV över det som faktiskt utfärdats, korsreferera den mot din källista och veta exakt vem som fortfarande behöver ett märke.

API-vägen: samma flöde, ingen instrumentpanel

Allt ovan förutsätter att någon sitter vid instrumentpanelen och klickar sig igenom guiden. Om dina slutföranden redan lever i ett system — ett LMS, ett CRM, en kalkylarksautomatisering — kan du driva samma massreferensflöde direkt från Awards API i stället.

Ett minimalt utfärdandeanrop per mottagare ser ut så här:

curl -X POST https://api.badges.ninja/awards \
  -H "X-Api-Key: bws_1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d" \
  -H "Content-Type: application/json" \
  -d '{
    "badgeId": "badge_9f8e7d6c5b4a",
    "recipient": {
      "name": "Maria Gonzalez",
      "email": "maria@example.com"
    },
    "issuedOn": "2026-07-01T00:00:00Z"
  }'

Eller i Python, med en loop över rader lästa från samma CSV som du annars skulle ladda upp för hand:

import csv
import requests

API_KEY = "bws_1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d"
BADGE_ID = "badge_9f8e7d6c5b4a"

with open("recipients.csv") as f:
    for row in csv.DictReader(f):
        requests.post(
            "https://api.badges.ninja/awards",
            headers={"X-Api-Key": API_KEY},
            json={
                "badgeId": BADGE_ID,
                "recipient": {"name": row["name"], "email": row["email"]},
                "issuedOn": row.get("issued_on") or None,
            },
        )

Detta är värt att ta till när referensutfärdande utlöses av något helt annat — en kursslutförande-webhook, en CRM-fasändring, ett formulärinlämnande — snarare än en person som manuellt exporterar en CSV. Vi täcker autentisering och den fullständiga request/response-formen i API-snabbstarten. Varje referens som skapas på detta sätt är identisk med en som skapas via instrumentpanelsguiden: samma Open Badge v2.0-intyg, samma verifierings-URL, samma PDF-certifikat.

Instrumentpanelsguide kontra API: vilken vill du faktiskt ha?

Instrumentpanelens MassreferenserAwards API
Bäst förEn engångs- eller enstaka sats (gruppexamen, konferensdeltagande)En återkommande utlösare (varje kursslutförande, varje köp)
UppsättningsinsatsIngen — exportera en CSV, ladda upp denEngångsintegrationsarbete (webhook eller skript)
Vem kör detProgramägaren, ingen kodDen som äger det utlösande systemet
FelhanteringFörhandsvisning + resultatexport per radHTTP-status per förfrågan, hanterad i din egen omförsökslogik

De flesta team börjar med instrumentpanelsguiden eftersom den inte kräver något utöver en CSV, och går över till API:et först när samma sats körts manuellt tre eller fyra gånger och mönstret uppenbart är värt att automatisera.

Integritet: vad som faktiskt lagras

En CSV med namn och e-postadresser är personuppgifter, och det är värt att veta vad som händer med den efter uppladdning. Mottagarens e-postadress lagras aldrig i klartext på själva referensen — den hashas med ett salt per referens som en del av Open Badge v2.0-intyget, enligt specifikationens hashed-format för mottagaridentitet. Det är den hashen en verifierare kontrollerar mot, inte den råa adressen. Namnfältet lagras som det angetts, eftersom det är tänkt att synas på certifikatet och verifieringssidan. Om en rad behöver rättas efter utfärdande — oftast ett felstavat namn — kan du redigera eller återkalla den enskilda referensen från referensinstrumentpanelen utan att röra resten av satsen.

Efter satsen: meddela mottagarna

Att utfärda märket och att berätta för mottagaren om det är två olika steg. Om din CSV inte redan utlöser ett e-postmeddelande via ditt eget system låter instrumentpanelens massdelningsflöde dig markera flera av referenserna du just skapade och skicka ett personligt delningsmejl till dem alla i en enda omgång — se att massutskicka delningsmejl för hela genomgången, inklusive hur personalisering per mottagare (namn, märkesbild, verifieringslänk) ersätts automatiskt.

När Massreferenser är rätt verktyg

Massutfärdande är rätt val när “sats”-ramen passar den verkliga världen: en grupp som blev klar samma dag, en konferens som just avslutats, en utbildningsutrullning som når en efterlevnadsdeadline. Om du i stället utfärdar enstaka referenser allteftersom individuella milstolpar nås — en enda befordran, ett enda slutfört projekt — är formuläret för enskild referens snabbare än att sätta ihop en CSV med en rad.

För något återkommande — samma kurs som körs varje månad, en löpande onboardingpipeline — är API-vägen ovan värd att sätta upp en gång. Den förvandlar “kör massreferenser manuellt för varje grupp” till “slutföranden utfärdar redan referenser automatiskt”, vilket är den version av detta arbetsflöde som de flesta programägare faktiskt vill ha efter den andra eller tredje manuella satsen.

Redo att utfärda din första verifierbara referens? Börja gratis på badges.ninja — visuell designer, offentlig verifieringssida, PDF-certifikat, Open Badge v2.0-utdata. Inget kreditkort krävs.

Nacho Coll

Om författaren

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.

Tillbaka till Bloggen

Relaterade artiklar