Paano Mag-issue ng Open Badges mula sa CSV sa Wala Pang 5 Minuto

Step-by-step: mag-upload ng CSV ng mga recipient, piliin ang badge mo, i-click ang Issue. Puwedeng i-pause at ituloy sa gitna ng batch, i-retry ang mga failure, i-export ang resulta. Gumagana para sa cohort na 10 o 10,000.

Nacho Coll Ni Na-update 10 min basahin
Step-by-step: mag-upload ng CSV ng mga recipient, piliin ang badge mo, i-click ang Issue. Puwedeng i-pause at ituloy sa gitna ng batch, i-retry ang mga failure, i-export ang resulta. Gumagana para sa cohort na 10 o 10,000.

Kung nakapag-issue ka na ng credentials sa isang cohort nang isa-isang recipient, alam mo na ang problema: hindi ito nag-i-scale lampas sa mga sampung tao bago ito maging isang buong hapon ng copy-paste ng mga pangalan at email. Isang 40-tao na bootcamp cohort, isang 500-tao na listahan ng attendee sa conference, o isang 5,000-tao na corporate training rollout — pare-pareho lang ang kailangan nila: mag-upload ng listahan, pumili ng badge, i-click ang Issue, at umalis na.

Iyan mismo ang ginagawa ng Bulk Credentials sa https://badges.ninja. Sasaklawin ng walkthrough na ito ang buong flow: paghahanda ng CSV mo, pag-configure ng batch, panonood habang tumatakbo ito, at paghawak sa magugulong real-world na kaso — isang recipient row na may typo, isang batch na naputol sa kalagitnaan, o isang program na gustong mag-issue sa parehong paraan mula sa sarili nitong systems sa halip na sa dashboard.

Bago Ka Magsimula: Ano ang Kailangan Mo

Dalawang bagay, na malamang meron ka na:

  1. Isang badge — dinisenyo nang minsan sa visual designer, ginagamit ulit para sa bawat recipient sa batch. Kung wala ka pang nagawa, tingnan ang guide namin sa pagdidisenyo ng iyong unang verifiable certificate.
  2. Isang CSV ng mga recipient — pangalan, email, at (optional) isang issue date. Iyon na ang buong schema.

Hindi mo kailangan ng issuer account bawat recipient, ng mail server, o ng anumang code. Lahat ng nasa seksyong ito ay nangyayari sa dashboard.

Step 1: Ihanda ang CSV Mo

Sinadyang gawing minimal ang format ng recipient list:

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 — required. Pinupuno nito ang recipient field sa assertion at sa certificate.
  • email — required. Ito ang nagiging recipient identity sa Open Badge v2.0 assertion — hina-hash gamit ang per-credential salt bago ito i-store, hindi kailanman iniimbak nang plaintext.
  • issued_on — optional. Iwanan mo itong blangko at gagamitin ng batch ang sandaling na-process ang bawat row; itakda mo ito nang explicit kung nagba-backfill ka ng cohort na natapos talaga noong nakaraang buwan.

Karamihan sa mga program owner ay ini-export ito diretso mula sa kung saan man nila tina-track ang completions — Airtable, Google Sheets, isang spreadsheet na binigay ng instructor, o isang CSV na kinuha mula sa gradebook ng LMS. Walang kailangang espesyal na export tool; gumagana ang kahit anong CSV na may tatlong column na iyon.

Mga Karaniwang CSV Pitfall (at Paano Ito Nahuhuli ng Preview)

May ilang isyu na palaging lumalabas sa mga real-world na recipient list, kadalasan dahil pinagsama-sama ang CSV mula sa dalawa o tatlong source sheet:

  • Trailing whitespace sa mga email address — ang copy-paste mula sa PDF roster o Google Form export ay madalas may dalang invisible na space. Mukhang okay ito sa spreadsheet cell pero nabi-bigo sa email validation kapag nag-upload.
  • Duplicate rows — ang parehong recipient na lumalabas nang dalawang beses dahil pinagsugpong ang cohort list at late-registrants list nang walang dedup.
  • Inconsistent na date formats — isang column ng 2026-07-01 na halo-halo sa 07/01/2026 mula sa ibang export. Manatili ka sa ISO 8601 (YYYY-MM-DD) at tuluyan itong mawawala.
  • Header casing mismatchesEmail vs email vs E-mail. Maunawain ang parser sa mga karaniwang variant, pero hindi awtomatikong mama-map ang isang ganap na custom na header name.

Wala sa mga ito ang fatal — inila-labas ng preview step (sa ibaba) ang bawat isa bago may ma-issue, kaya ang fix ay “i-edit ang spreadsheet, i-upload ulit” sa halip na “alamin kung sino sa 3,000 recipient ang nakakuha ng sirang badge.”

Step 2: I-configure ang Batch

Mula sa dashboard, buksan ang Credentials → Bulk Credentials at piliin ang badge na iini-issue mo. Ito ang step kung saan mo itina-takda ang anumang naa-apply sa buong batch: ang badge mismo, isang shared issue date kung hindi ka naglalagay ng per-row na petsa sa CSV, at (kung may isa ang issuer profile mo) ang LinkedIn organization ID na magpapahintulot sa bawat recipient na idagdag ang credential sa profile nila nang isang click.

Bulk Credentials — step 1, configure

Magandang sandali ito para i-double-check na ang badge na pinili mo ay ang final version — makikita ng mga recipient kung anumang image at criteria ang naka-attach dito sa sandaling nag-issue ka, hindi kung anuman ang i-update mo mamaya.

Step 3: I-upload at I-preview

I-drop mo ang CSV mo at ipa-parse ito ng platform, ipapakita sa iyo ang isang preview table, at ita-flag ang anumang hindi nito ma-process — isang nawawalang email, isang malformed na petsa, isang duplicate row. Walang mai-issue hanggang hindi mo kino-confirm ang preview.

Bulk Credentials — step 2, upload

Mas importante ang preview step na ito kaysa sa hitsura nito. Isang typo sa isang row ng 2,000-row na CSV ay madaling ma-miss ng mata, at mas mura pang mahuli ito bago pa ma-issue ang 1,999 na tamang row kaysa subukang i-unwind ito pagkatapos. Ayusin ang mga na-flag na row sa spreadsheet mo, i-upload ulit, at mag-a-update ang preview.

Step 4: Patakbuhin ang Batch

I-click ang Issue at magsisimulang mag-process ang batch. May progress bar na nagta-track sa completed vs. natitirang rows, at tumatakbo ang batch sa server-side — hindi mo kailangang panatilihing bukas ang tab, at hindi mo mawawala ang lugar mo kahit isara mo ang laptop sa gitna ng batch.

Sulit ilinaw ang huling bahaging iyan dahil iyon ang detalyeng talagang mahalaga para sa malalaking cohort: nasa server ang batch state, hindi sa browser mo. Kung mag-drop ang connection mo, matulog ang laptop mo, o isara mo lang ang tab dahil may meeting, patuloy na tatakbo ang batch (o magpapatuloy mismo sa kung saan ito huminto kung ni-pause mo ito) sa halip na mag-restart mula sa zero. Para sa isang 40-tao na bootcamp cohort, nice-to-have ito. Para sa isang 5,000-row na corporate rollout, ito ang pagkakaiba ng “gumagana lang siya” at ng “may kailangang mag-babysit ng browser tab nang dalawampung minuto.”

Puwede mo ring sadyang i-pause ang tumatakbong batch — sabihin nating may nag-flag na kailangang i-tweak ang criteria text ng badge sa kalagitnaan ng isang 3,000-row na run — ayusin ang isyu, at ituloy nang hindi ini-issue ulit ang mga row na tapos na.

Step 5: Hawakan ang mga Failure

May masasamang row ang totoong recipient lists: isang email domain na may typo, isang name field na blangko pala, isang duplicate entry mula sa dalawang exported sheet na pinagsama. Kapag nag-fail ang isang row, hindi hihinto ang batch — patuloy nitong pino-process ang natitira at ita-flag ang failure para sa review pagkatapos. Makakakuha ka ng results export na nagpapakita nang eksakto kung aling rows ang nag-succeed at alin ang hindi, para maayos mo lang ang mga na-fail na row at magpatakbo ng maliit na follow-up batch sa halip na i-recheck ang buong listahan.

Mahalaga ito para sa CSV-export na ugali na karaniwan na sa credentials dashboard — puwede kang kumuha ng CSV ng kung ano ang talagang na-issue sa anumang punto, i-cross-reference ito sa source list mo, at malaman nang tumpak kung sino pa ang kailangang bigyan ng badge.

Ang API Path: Parehong Flow, Walang Dashboard

Lahat ng nasa itaas ay ipina-palagay na may nakaupo sa dashboard na nag-cli-click sa wizard. Kung nasa isang system na ang completions mo — isang LMS, isang CRM, isang spreadsheet automation — puwede mong patakbuhin ang parehong bulk-credential flow diretso mula sa Awards API.

Ganito ang hitsura ng minimal na per-recipient issuance call:

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

O sa Python, na naglo-loop sa mga row na binasa mula sa parehong CSV na sana ay ini-upload mo nang manu-mano:

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

Sulit itong gamitin kapag ang credential issuance ay tina-trigger ng ibang bagay talaga — isang course-completion webhook, isang CRM stage change, isang form submission — sa halip na isang taong nag-e-export ng CSV nang manu-mano. Sinasaklaw namin ang authentication at ang buong request/response shape sa API quickstart. Bawat credential na ginawa sa ganitong paraan ay kapareho ng ginawa sa pamamagitan ng dashboard wizard: parehong Open Badge v2.0 assertion, parehong verification URL, parehong PDF certificate.

Dashboard Wizard vs. API: Alin Talaga ang Gusto Mo?

Dashboard Bulk CredentialsAwards API
Best para saIsang one-time o paminsan-minsang batch (cohort graduation, conference attendance)Isang recurring na trigger (bawat course completion, bawat purchase)
Setup effortWala — mag-export ng CSV, i-uploadOne-time na integration work (webhook o script)
Sino ang nagpapatakboProgram owner, walang codeSinuman ang may-ari ng triggering system
Failure handlingPreview + per-row results exportPer-request na HTTP status, hinahawakan sa sarili mong retry logic

Karamihan sa mga team ay nagsisimula sa dashboard wizard dahil wala itong kailangan bukod sa CSV, at lumilipat lang sa API kapag napatakbo na nang manu-mano ang parehong batch nang tatlo o apat na beses at halatang sulit nang i-automate ang pattern.

Privacy: Ano Talaga ang Nasi-store

Isang CSV ng mga pangalan at email ay personal data, at sulit malaman kung ano ang nangyayari dito pagkatapos ng upload. Ang email address ng recipient ay hindi kailanman sina-store nang plaintext sa credential mismo — hina-hash ito gamit ang per-credential salt bilang bahagi ng Open Badge v2.0 assertion, sumusunod sa hashed recipient identity format ng spec. Iyong hash ang chine-check ng isang verifier, hindi ang raw address. Ang name field ay sina-store gaya ng pagkaka-enter, dahil layunin nitong makita sa certificate at verification page. Kung may row na kailangang itama pagkatapos mag-issue — isang maling spelling ng pangalan, ang pinakakaraniwan — puwede mong i-edit o i-revoke ang indibidwal na credential mula sa credentials dashboard nang hindi ginagalaw ang natitira sa batch.

Pagkatapos ng Batch: Abisuhan ang mga Recipient

Ang pag-issue ng badge at ang pagsabi rito sa recipient ay dalawang magkaibang step. Kung hindi pa nagta-trigger ng email ang CSV mo sa pamamagitan ng sarili mong system, hinahayaan ka ng bulk-share flow ng dashboard na mag-multi-select ng mga credential na kaka-gawa mo lang at magpadala ng personalized na share email sa lahat ng ito nang sabay-sabay — tingnan ang bulk-sending ng share emails para sa buong walkthrough, kasama kung paano awtomatikong napa-palitan ang per-recipient na personalization (pangalan, badge image, verification link).

Kailan ang Bulk Credentials ang Tamang Tool

Tamang desisyon ang bulk issuance tuwing bagay ang “batch” framing sa totoong mundo: isang cohort na natapos sa parehong araw, isang conference na katatapos lang, isang training rollout na papasok sa isang compliance deadline. Kung sa halip ay nag-i-issue ka ng one-off na credentials habang natatamo ang mga indibidwal na milestone — isang promotion, isang project completion — mas mabilis ang single-credential form kaysa mag-assemble ng one-row na CSV.

Para sa anumang recurring — ang parehong course na tumatakbo bawat buwan, isang rolling onboarding pipeline — sulit i-set up nang minsan ang API path sa itaas. Ginagawa nitong “mag-run ng bulk credentials nang manu-mano bawat cohort” na maging “awtomatiko nang nag-i-issue ng credentials ang completions,” na siyang bersyon ng workflow na ito na talagang gusto ng karamihan ng program owner pagkatapos ng pangalawa o pangatlong manual batch.

Handa nang mag-issue ng iyong unang verifiable credential? Magsimula nang libre sa badges.ninja — visual designer, public verification page, PDF certificate, Open Badge v2.0 output. Walang kailangang credit card.

Nacho Coll

Tungkol sa may-akda

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.

Bumalik sa Blog

Kaugnay na Artikulo