Cum emiți Open Badges dintr-un CSV în mai puțin de 5 minute

Pas cu pas: încarcă un CSV cu destinatari, alege insigna, apasă Emite. Pune pe pauză și reia la mijlocul lotului, reîncearcă eșecurile, exportă rezultatele. Funcționează pentru grupuri de 10 sau 10.000.

Nacho Coll De Actualizat 10 min de citit
Pas cu pas: încarcă un CSV cu destinatari, alege insigna, apasă Emite. Pune pe pauză și reia la mijlocul lotului, reîncearcă eșecurile, exportă rezultatele. Funcționează pentru grupuri de 10 sau 10.000.

Dacă ai emis vreodată acreditări unei grupe câte un destinatar pe rând, cunoști deja problema: nu se scalează dincolo de aproximativ zece persoane înainte să se transforme într-o după-amiază de copiat și lipit nume și adrese de e-mail. O grupă de bootcamp de 40 de persoane, o listă de 500 de participanți la o conferință sau o implementare de instruire corporativă pentru 5.000 de persoane au nevoie toate de același lucru — încarci o listă, alegi o insignă, apeși Emite și pleci.

Exact asta fac Acreditările în masă pe https://badges.ninja. Acest ghid acoperă tot fluxul: pregătirea CSV-ului, configurarea lotului, urmărirea execuției și gestionarea cazurilor dezordonate din lumea reală — un rând de destinatar cu o greșeală de tastare, un lot întrerupt la jumătate sau un program care vrea să emită în același fel din propriile sisteme, nu din panou.

Înainte să începi: de ce ai nevoie

Două lucruri, pe care probabil le ai deja pe amândouă:

  1. O insignă — proiectată o singură dată în designerul vizual, reutilizată pentru fiecare destinatar din lot. Dacă încă nu ai construit una, vezi ghidul nostru despre proiectarea primului tău certificat verificabil.
  2. Un CSV cu destinatari — nume, e-mail și (opțional) o dată de emitere. Asta e toată schema.

Nu ai nevoie de un cont de emitent per destinatar, de un server de e-mail sau de vreun cod. Tot ce e în această secțiune se întâmplă în panou.

Pasul 1: pregătește-ți CSV-ul

Formatul listei de destinatari este deliberat minim:

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 — obligatoriu. Completează câmpul destinatar din aserțiune și de pe certificat.
  • email — obligatoriu. Devine identitatea destinatarului în aserțiunea Open Badge v2.0 — este trecut printr-un hash cu o sare per acreditare înainte de a fi stocat, niciodată păstrat în text simplu.
  • issued_on — opțional. Lasă-l gol și lotul folosește momentul în care este procesat fiecare rând; setează-l explicit dacă completezi retroactiv o grupă care de fapt a terminat luna trecută.

Majoritatea proprietarilor de program exportă asta direct de acolo unde urmăresc oricum finalizările — Airtable, Google Sheets, o foaie de calcul predată de un instructor sau un CSV extras dintr-un catalog de note LMS. Nu e nevoie de vreun instrument special de export; funcționează orice CSV cu acele trei coloane.

Capcane frecvente ale CSV-urilor (și cum le prinde previzualizarea)

O mână de probleme apar constant în listele reale de destinatari, de obicei fiindcă CSV-ul a fost asamblat îmbinând două sau trei foi sursă:

  • Spații albe finale în adresele de e-mail — o copiere din o listă PDF sau dintr-un export Google Form aduce adesea cu sine un spațiu invizibil. Arată în regulă într-o celulă de foaie de calcul, dar pică la validarea e-mailului la încărcare.
  • Rânduri duplicate — același destinatar care apare de două ori fiindcă o listă de grupă și o listă de înscriși târzii au fost concatenate fără deduplicare.
  • Formate de dată inconsecvente — o coloană de 2026-07-01 amestecată cu 07/01/2026 dintr-un alt export. Rămâi la ISO 8601 (YYYY-MM-DD) și asta dispare complet.
  • Nepotriviri de majuscule în anteturiEmail față de email față de E-mail. Parserul e tolerant cu variantele comune, dar un nume de antet complet personalizat nu se va mapa automat.

Niciuna dintre acestea nu e fatală — pasul de previzualizare (mai jos) scoate la iveală fiecare dintre ele înainte să se emită ceva, așa că remedierea este „editează foaia de calcul, reîncarcă”, nu „află care dintre cei 3.000 de destinatari a primit o insignă stricată”.

Pasul 2: configurează lotul

Din panou, deschide Acreditări → Acreditări în masă și alege insigna pe care o emiți. Acesta e pasul în care setezi orice se aplică întregului lot: insigna în sine, o dată de emitere comună dacă nu pui date per rând în CSV și (dacă profilul tău de emitent are unul) ID-ul organizației LinkedIn care va permite fiecărui destinatar să adauge acreditarea în profilul său dintr-un singur clic.

Acreditări în masă — pasul 1, configurare

E un moment bun să verifici din nou că insigna pe care ai selectat-o e versiunea finală — destinatarii vor vedea orice imagine și criterii sunt atașate ei în momentul în care emiți, nu ce actualizezi ulterior.

Pasul 3: încarcă și previzualizează

Trage-ți CSV-ul înăuntru, iar platforma îl parsează, îți arată un tabel de previzualizare și semnalează orice nu poate procesa — un e-mail lipsă, o dată malformată, un rând duplicat. Nu se emite nimic până nu confirmi previzualizarea.

Acreditări în masă — pasul 2, încărcare

Acest pas de previzualizare contează mai mult decât pare. O greșeală de tastare într-un rând al unui CSV de 2.000 de rânduri e ușor de ratat cu ochiul, și e mult mai ieftin s-o prinzi înainte ca 1.999 de rânduri corecte să fie deja emise decât să încerci s-o desfaci după aceea. Corectează rândurile semnalate în foaia de calcul, reîncarcă, iar previzualizarea se actualizează.

Pasul 4: rulează lotul

Apasă Emite și lotul începe să proceseze. O bară de progres urmărește rândurile finalizate față de cele rămase, iar lotul rulează pe partea de server — nu trebuie să ții fila deschisă, iar închiderea laptopului la mijlocul lotului nu-ți pierde locul.

Merită să detaliem această ultimă parte, fiindcă e detaliul care contează cu adevărat pentru grupurile mari: starea lotului trăiește pe server, nu în browserul tău. Dacă îți cade conexiunea, laptopul intră în repaus sau pur și simplu închizi fila fiindcă începe o ședință, lotul continuă să ruleze (sau se reia exact de unde a rămas dacă l-ai pus pe pauză) în loc să repornească de la zero. Pentru o grupă de bootcamp de 40 de persoane, ăsta e un plus plăcut. Pentru o implementare corporativă de 5.000 de rânduri, e diferența dintre „pur și simplu funcționează” și „cineva trebuie să stea douăzeci de minute cu ochii pe o filă de browser”.

Poți și să pui deliberat pe pauză un lot în execuție — să zicem, cineva semnalează că textul criteriilor insignei are nevoie de o ajustare la jumătatea unei rulări de 3.000 de rânduri — să repari problema și să reiei fără a reemite rândurile deja finalizate.

Pasul 5: gestionează eșecurile

Listele reale de destinatari au rânduri proaste: un domeniu de e-mail cu greșeală de tastare, un câmp de nume care de fapt e gol, o intrare duplicată dintr-o îmbinare a două foi exportate. Când un rând eșuează, lotul nu se oprește — continuă să proceseze restul și semnalează eșecul pentru revizuire ulterioară. Primești un export de rezultate care arată exact care rânduri au reușit și care nu, astfel încât să poți corecta doar rândurile eșuate și să rulezi un mic lot de continuare în loc să reverifici toată lista.

Asta contează pentru obiceiul exportului CSV, deja frecvent pe panoul de acreditări — poți extrage oricând un CSV cu ce s-a emis efectiv, îl poți compara cu lista ta sursă și poți ști exact cine mai are nevoie de o insignă.

Calea API: același flux, fără panou

Tot ce e mai sus presupune că cineva stă la panou și dă clic prin asistent. Dacă finalizările tale trăiesc deja într-un sistem — un LMS, un CRM, o automatizare de foi de calcul — poți conduce același flux de acreditări în masă direct din Awards API.

Un apel minimal de emitere per destinatar arată așa:

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"
  }'

Sau în Python, iterând peste rândurile citite din același CSV pe care altfel l-ai încărca manual:

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,
            },
        )

Merită să recurgi la asta când emiterea acreditărilor e declanșată de cu totul altceva — un webhook de finalizare a cursului, o schimbare de etapă în CRM, trimiterea unui formular — și nu de o persoană care exportă manual un CSV. Acoperim autentificarea și forma completă a cererii/răspunsului în ghidul de pornire rapidă API. Fiecare acreditare creată astfel este identică cu una creată prin asistentul din panou: aceeași aserțiune Open Badge v2.0, același URL de verificare, același certificat PDF.

Asistentul din panou vs. API: pe care îl vrei de fapt?

Acreditări în masă din panouAwards API
Cel mai potrivit pentruUn lot unic sau ocazional (absolvirea unei grupe, participarea la o conferință)Un declanșator recurent (fiecare finalizare de curs, fiecare achiziție)
Efort de configurareNiciunul — exportă un CSV, încarcă-lMuncă de integrare o singură dată (webhook sau script)
Cine îl ruleazăProprietarul de program, fără codCine deține sistemul declanșator
Gestionarea eșecurilorPrevizualizare + export de rezultate per rândStare HTTP per cerere, gestionată în propria ta logică de reîncercare

Majoritatea echipelor încep cu asistentul din panou fiindcă nu necesită nimic în afară de un CSV și trec la API abia după ce același lot a fost rulat manual de trei-patru ori și tiparul merită evident automatizat.

Confidențialitate: ce se stochează de fapt

Un CSV cu nume și e-mailuri este date personale și merită să știi ce se întâmplă cu el după încărcare. Adresa de e-mail a destinatarului nu este niciodată stocată în text simplu pe acreditarea propriu-zisă — este trecută printr-un hash cu o sare per acreditare ca parte a aserțiunii Open Badge v2.0, urmând formatul de identitate a destinatarului hashed din specificație. Acel hash este ceea ce verifică un verificator, nu adresa brută. Câmpul nume este stocat așa cum a fost introdus, întrucât e menit să fie vizibil pe certificat și pe pagina de verificare. Dacă un rând are nevoie de corectare după emitere — cel mai adesea un nume scris greșit — poți edita sau revoca acreditarea individuală din panoul de acreditări fără să atingi restul lotului.

După lot: anunță destinatarii

Emiterea insignei și informarea destinatarului despre ea sunt doi pași diferiți. Dacă CSV-ul tău nu declanșează deja un e-mail prin propriul sistem, fluxul de partajare în masă din panou îți permite să selectezi mai multe acreditări pe care tocmai le-ai creat și să le trimiți tuturor un e-mail de partajare personalizat într-o singură trecere — vezi trimiterea în masă a e-mailurilor de partajare pentru ghidul complet, inclusiv cum se substituie automat personalizarea per destinatar (nume, imaginea insignei, link de verificare).

Când Acreditările în masă sunt instrumentul potrivit

Emiterea în masă e alegerea potrivită ori de câte ori cadrul de „lot” se potrivește lumii reale: o grupă care a terminat în aceeași zi, o conferință tocmai încheiată, o implementare de instruire care prinde un termen de conformitate. Dacă în schimb emiți acreditări punctuale pe măsură ce sunt atinse repere individuale — o singură promovare, finalizarea unui singur proiect — formularul pentru o singură acreditare e mai rapid decât să asamblezi un CSV cu un singur rând.

Pentru orice recurent — același curs care rulează în fiecare lună, un flux de onboarding continuu — merită să configurezi o dată calea API de mai sus. Transformă „rulează manual acreditări în masă la fiecare grupă” în „finalizările emit deja acreditări automat”, care e versiunea acestui flux de lucru pe care majoritatea proprietarilor de program o vor cu adevărat după al doilea sau al treilea lot manual.

Gata să emiți prima ta acreditare verificabilă? Începe gratuit pe badges.ninja — designer vizual, pagină de verificare publică, certificat PDF, ieșire Open Badge v2.0. Fără card de credit.

Nacho Coll

Despre autor

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.

Înapoi la Blog

Articole similare