Cara Menerbitkan Open Badges dari CSV dalam Waktu Kurang dari 5 Menit

Langkah demi langkah: unggah CSV berisi penerima, pilih lencana Anda, tekan Award. Jeda dan lanjutkan di tengah batch, coba ulang yang gagal, ekspor hasilnya. Cocok untuk kelompok berisi 10 atau 10.000 orang.

Nacho Coll Oleh Diperbarui 8 menit baca
Langkah demi langkah: unggah CSV berisi penerima, pilih lencana Anda, tekan Award. Jeda dan lanjutkan di tengah batch, coba ulang yang gagal, ekspor hasilnya. Cocok untuk kelompok berisi 10 atau 10.000 orang.

Jika Anda pernah menerbitkan credential ke sebuah kelompok satu penerima setiap kali, Anda pasti sudah tahu masalahnya: cara ini tidak bisa diskalakan melebihi sekitar sepuluh orang sebelum berubah menjadi satu sore penuh menyalin-tempel nama dan email. Kelompok bootcamp berisi 40 orang, daftar 500 peserta konferensi, atau peluncuran pelatihan korporat untuk 5.000 orang semuanya membutuhkan hal yang sama — unggah daftar, pilih lencana, klik Issue, lalu tinggalkan.

Itulah tepatnya yang dilakukan Bulk Credentials di https://badges.ninja. Panduan ini mencakup keseluruhan alur: menyiapkan CSV Anda, mengonfigurasi batch, menyaksikannya berjalan, dan menangani kasus dunia nyata yang berantakan — satu baris penerima dengan salah ketik, batch yang terputus di tengah jalan, atau program yang ingin menerbitkan dengan cara yang sama dari sistemnya sendiri alih-alih dari dasbor.

Sebelum Anda Mulai: Apa yang Anda Butuhkan

Dua hal, yang keduanya mungkin sudah Anda miliki:

  1. Sebuah lencana — dirancang sekali di perancang visual, digunakan ulang untuk setiap penerima dalam batch. Jika Anda belum membuatnya, lihat panduan kami tentang merancang sertifikat pertama Anda yang dapat diverifikasi.
  2. Sebuah CSV berisi penerima — nama, email, dan (opsional) tanggal penerbitan. Itulah seluruh skemanya.

Anda tidak memerlukan akun penerbit per penerima, server surat, atau kode apa pun. Semua yang ada di bagian ini terjadi di dasbor.

Langkah 1: Siapkan CSV Anda

Format daftar penerima sengaja dibuat seminimal mungkin:

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 — wajib. Mengisi kolom penerima pada assertion dan sertifikat.
  • email — wajib. Ini menjadi identitas penerima pada assertion Open Badge v2.0 — di-hash dengan salt yang unik untuk setiap credential sebelum disimpan, tidak pernah disimpan dalam bentuk teks biasa.
  • issued_on — opsional. Biarkan kosong dan batch akan menggunakan momen saat setiap baris diproses; isi secara eksplisit jika Anda melakukan backfill untuk kelompok yang sebenarnya sudah selesai bulan lalu.

Sebagian besar pemilik program mengekspornya langsung dari tempat mereka sudah melacak penyelesaian — Airtable, Google Sheets, spreadsheet yang diserahkan oleh instruktur, atau CSV yang ditarik dari buku nilai LMS. Tidak diperlukan alat ekspor khusus; CSV apa pun dengan tiga kolom itu bisa digunakan.

Jebakan CSV yang Umum (dan Bagaimana Pratinjau Menangkapnya)

Segelintir masalah terus-menerus muncul dalam daftar penerima dunia nyata, biasanya karena CSV disusun dengan menggabungkan dua atau tiga lembar sumber:

  • Spasi di akhir alamat email — salin-tempel dari daftar PDF atau ekspor Google Form sering membawa spasi tak terlihat. Terlihat baik-baik saja di sel spreadsheet tetapi gagal validasi email saat diunggah.
  • Baris duplikat — penerima yang sama muncul dua kali karena daftar kelompok dan daftar pendaftar terlambat digabungkan tanpa deduplikasi.
  • Format tanggal yang tidak konsisten — satu kolom 2026-07-01 bercampur dengan 07/01/2026 dari ekspor yang berbeda. Tetaplah pada ISO 8601 (YYYY-MM-DD) dan masalah ini hilang sepenuhnya.
  • Ketidakcocokan huruf besar/kecil pada headerEmail vs email vs E-mail. Pengurai cukup toleran terhadap varian umum, tetapi nama header yang sepenuhnya khusus tidak akan dipetakan secara otomatis.

Tidak ada satu pun dari ini yang fatal — langkah pratinjau (di bawah) memunculkan setiap masalah sebelum apa pun diterbitkan, sehingga perbaikannya adalah “sunting spreadsheet, unggah ulang” alih-alih “cari tahu siapa di antara 3.000 penerima yang mendapat lencana rusak”.

Langkah 2: Konfigurasikan Batch

Dari dasbor, buka Credentials → Bulk Credentials dan pilih lencana yang Anda terbitkan. Ini adalah langkah tempat Anda mengatur apa pun yang berlaku untuk seluruh batch: lencana itu sendiri, tanggal penerbitan bersama jika Anda tidak menaruh tanggal per baris dalam CSV, dan (jika profil penerbit Anda memilikinya) ID organisasi LinkedIn yang akan memungkinkan setiap penerima menambahkan credential ke profil mereka dalam satu klik.

Bulk Credentials — langkah 1, konfigurasi

Ini saat yang tepat untuk memeriksa ulang bahwa lencana yang Anda pilih adalah versi final — penerima akan melihat gambar dan kriteria apa pun yang terlampir padanya pada saat Anda menerbitkan, bukan apa pun yang Anda perbarui setelahnya.

Langkah 3: Unggah dan Pratinjau

Letakkan CSV Anda dan platform akan menguraikannya, menampilkan tabel pratinjau, dan menandai apa pun yang tidak dapat diprosesnya — email yang hilang, tanggal yang salah format, baris duplikat. Tidak ada yang diterbitkan sampai Anda mengonfirmasi pratinjau.

Bulk Credentials — langkah 2, unggah

Langkah pratinjau ini lebih penting daripada tampilannya. Salah ketik di satu baris CSV berisi 2.000 baris mudah terlewat oleh mata, dan jauh lebih murah menangkapnya sebelum 1.999 baris yang benar sudah diterbitkan daripada mencoba mengurainya setelahnya. Perbaiki baris yang ditandai di spreadsheet Anda, unggah ulang, dan pratinjau diperbarui.

Langkah 4: Jalankan Batch

Tekan Issue dan batch mulai diproses. Bilah kemajuan melacak baris yang selesai versus yang tersisa, dan batch berjalan di sisi server — Anda tidak perlu membiarkan tab tetap terbuka, dan menutup laptop di tengah batch tidak menghilangkan posisi Anda.

Bagian terakhir itu layak diperjelas karena itulah detail yang benar-benar penting untuk kelompok besar: keadaan batch berada di server, bukan di peramban Anda. Jika koneksi Anda putus, laptop Anda tertidur, atau Anda sekadar menutup tab karena ada rapat yang dimulai, batch tetap berjalan (atau melanjutkan tepat dari tempat ia berhenti jika Anda menjedanya) alih-alih memulai ulang dari nol. Untuk kelompok bootcamp berisi 40 orang, ini enak dimiliki. Untuk peluncuran korporat 5.000 baris, ini adalah perbedaan antara “berjalan begitu saja” dan “seseorang harus mengawasi tab peramban selama dua puluh menit”.

Anda juga dapat menjeda batch yang sedang berjalan dengan sengaja — misalnya seseorang menandai bahwa teks kriteria lencana perlu penyesuaian di tengah proses 3.000 baris — perbaiki masalahnya, dan lanjutkan tanpa menerbitkan ulang baris yang sudah selesai.

Langkah 5: Tangani Kegagalan

Daftar penerima yang sesungguhnya memiliki baris buruk: domain email yang salah ketik, kolom nama yang sebenarnya kosong, entri duplikat dari dua lembar ekspor yang digabungkan. Ketika sebuah baris gagal, batch tidak berhenti — ia terus memproses sisanya dan menandai kegagalan untuk ditinjau setelahnya. Anda mendapatkan ekspor hasil yang menunjukkan tepat baris mana yang berhasil dan mana yang tidak, sehingga Anda dapat memperbaiki hanya baris yang gagal dan menjalankan ulang batch lanjutan kecil alih-alih memeriksa ulang seluruh daftar.

Ini penting untuk kebiasaan ekspor CSV yang sudah umum di dasbor credential — Anda dapat menarik CSV berisi apa yang benar-benar diterbitkan kapan saja, mencocokkannya dengan daftar sumber Anda, dan mengetahui persis siapa yang masih membutuhkan lencana.

Jalur API: Alur yang Sama, Tanpa Dasbor

Semua di atas mengasumsikan seseorang duduk di dasbor mengeklik melalui wizard. Jika penyelesaian Anda sudah berada di suatu sistem — sebuah LMS, sebuah CRM, sebuah otomasi spreadsheet — Anda dapat menjalankan alur credential massal yang sama langsung dari Awards API.

Panggilan penerbitan minimal per penerima terlihat seperti ini:

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

Atau di Python, mengulang baris yang dibaca dari CSV yang sama yang jika tidak akan Anda unggah secara 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,
            },
        )

Ini layak dipertimbangkan ketika penerbitan credential dipicu oleh sesuatu yang sama sekali lain — webhook penyelesaian kursus, perubahan tahap CRM, pengiriman formulir — alih-alih seseorang yang mengekspor CSV secara manual. Kami membahas autentikasi dan bentuk permintaan/respons lengkap di panduan cepat API. Setiap credential yang dibuat dengan cara ini identik dengan yang dibuat melalui wizard dasbor: assertion Open Badge v2.0 yang sama, URL verifikasi yang sama, sertifikat PDF yang sama.

Wizard Dasbor vs. API: Yang Mana yang Sebenarnya Anda Inginkan?

Dashboard Bulk CredentialsAwards API
Terbaik untukBatch sekali atau sesekali (kelulusan kelompok, kehadiran konferensi)Pemicu berulang (setiap penyelesaian kursus, setiap pembelian)
Upaya penyiapanTidak ada — ekspor CSV, unggahPekerjaan integrasi sekali (webhook atau skrip)
Siapa yang menjalankannyaPemilik program, tanpa kodeSiapa pun yang memiliki sistem pemicu
Penanganan kegagalanPratinjau + ekspor hasil per barisStatus HTTP per permintaan, ditangani dalam logika coba ulang Anda sendiri

Sebagian besar tim memulai dengan wizard dasbor karena tidak memerlukan apa pun selain CSV, dan baru beralih ke API setelah batch yang sama dijalankan secara manual tiga atau empat kali dan polanya jelas layak untuk diotomatiskan.

Privasi: Apa yang Sebenarnya Disimpan

CSV berisi nama dan email adalah data pribadi, dan penting untuk mengetahui apa yang terjadi padanya setelah diunggah. Alamat email penerima tidak pernah disimpan dalam bentuk teks biasa pada credential itu sendiri — ia di-hash dengan salt yang unik untuk setiap credential sebagai bagian dari assertion Open Badge v2.0, mengikuti format identitas penerima hashed dari spesifikasi. Hash itulah yang diperiksa oleh verifikator, bukan alamat mentahnya. Kolom nama disimpan sebagaimana dimasukkan, karena memang dimaksudkan untuk terlihat pada sertifikat dan halaman verifikasi. Jika sebuah baris perlu dikoreksi setelah penerbitan — paling umum nama yang salah eja — Anda dapat menyunting atau mencabut credential individual dari dasbor credential tanpa menyentuh sisa batch.

Setelah Batch: Beri Tahu Penerima

Menerbitkan lencana dan memberi tahu penerima tentangnya adalah dua langkah yang berbeda. Jika CSV Anda belum memicu email melalui sistem Anda sendiri, alur berbagi massal dasbor memungkinkan Anda memilih beberapa credential yang baru saja Anda buat dan mengirim email berbagi yang dipersonalisasi ke semuanya dalam satu langkah — lihat mengirim email berbagi secara massal untuk panduan lengkap, termasuk bagaimana personalisasi per penerima (nama, gambar lencana, tautan verifikasi) disubstitusi secara otomatis.

Kapan Bulk Credentials Adalah Alat yang Tepat

Penerbitan massal adalah pilihan yang tepat kapan pun kerangka “batch” cocok dengan dunia nyata: kelompok yang selesai pada hari yang sama, konferensi yang baru saja berakhir, peluncuran pelatihan yang mengejar tenggat kepatuhan. Jika sebaliknya Anda menerbitkan credential satu per satu saat pencapaian individual tercapai — satu promosi, satu penyelesaian proyek — formulir credential tunggal lebih cepat daripada menyusun CSV satu baris.

Untuk apa pun yang berulang — kursus yang sama berjalan setiap bulan, pipeline onboarding yang bergulir — jalur API di atas layak disiapkan sekali. Ia mengubah “jalankan bulk credentials secara manual setiap kelompok” menjadi “penyelesaian sudah menerbitkan credential secara otomatis”, yang merupakan versi alur kerja ini yang sebenarnya diinginkan sebagian besar pemilik program setelah batch manual kedua atau ketiga.

Siap menerbitkan credential pertama Anda yang dapat diverifikasi? Mulai gratis di badges.ninja — perancang visual, halaman verifikasi publik, sertifikat PDF, keluaran Open Badge v2.0. Tanpa kartu kredit.

Nacho Coll

Tentang penulis

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.

Kembali ke Blog

Artikel Terkait