How Open edX digital badges with Credly and Accredible get issued
Issuing a badge when a learner completes a course means choosing one badge issuer, configuring a service account that the platform can use to request badges, and enabling the feature in both the LMS and Credentials. These three decisions set the shape of the rest of the work, so settle them before anyone builds completion rules or designs badge artwork. The education team should state which badge it needs, which learners qualify, and who will own the issuer account after launch. Credly and Accredible each have their own account model, branding options and verification pages, so the team should confirm which issuer fits its badge program before any template is built.
At a high level, the supported integration passes course completion from the LMS to the Credentials service, which then requests the badge from the chosen issuer through that issuer's API. The LMS determines who completed which course, while Credentials holds the badge configuration and communicates with the issuer. Confirm the exact mechanism, the feature names and the settings in the Open edX documentation for the release in use, because Open edX supports only its latest named release at a time. Do not carry over a setting from an older guide without checking that the current release still uses it.
The service account is the credential that lets Credentials act against the issuer. In the vendor's API documentation, confirm which account type, permissions or keys each issuer requires, how long those credentials remain valid, and whether they can be rotated without downtime. Store the credential in the secrets system your organization already runs, limit who can read it, and record which team owns renewal. Create the badge templates or groups in the issuer before testing, and name them to match your course catalog so the mapping between courses and badges stays easy to audit.
Verification should run in a non-production environment with a test learner, a test course and a sandbox or staging issuer account if the vendor provides one. Check that a single completion produces one badge, that a failed issuer call is retried or reported to someone who can act on it, and that revoked or reissued badges behave as your policy requires. Plan for ownership after go-live as well: who responds when a learner reports a missing badge, who updates mappings when a course is retired, and what happens to issued badges if the organization later changes issuer.
What you need before connecting Open edX to Credly or Accredible
Connecting Open edX to a badge provider touches the platform release, the deployment, the badge provider account and the network path between them. Confirm each of these items before you configure the integration, because a gap in any one of them stops the work at the point where it is hardest to diagnose.
Current named Open edX release
Open edX supports only its latest named release, and the current named release is Verawood, published on 30 July 2026. Confirm that the target environment runs Verawood or plan an upgrade first, since the badge integration should be configured against the release you will operate. Record the exact release in the project documentation so that later upgrades are scoped against a known baseline.
Supported deployment with Tutor
Run Open edX through Tutor, the official Docker-based distribution, or through another deployment method your provider supports. The edx-platform maintainers recommend production installs through a service provider or with Tutor, because bare-metal installs are complex and receive limited community support. Confirm which Tutor version matches the target release and who owns the configuration files that the integration will change.
LMS and Credentials services running
Badge issuance depends on the LMS handling course completion and on the Credentials service that manages the badge records and the provider connection. Confirm that both services are deployed, reachable and running the same release line as your other Open edX components. Check that the Credentials service has its own database, administrator account and credentials for the LMS, since these are configured separately.
Active Credly or Accredible account
Your organization needs an active account with the badge provider and API access enabled for that account. Account tier, API availability and any plan limits on issued badges vary by vendor and can change, so confirm them directly with Credly or Accredible before you commit to a design. Ask who holds the account owner role, because that person controls the API credentials and the badge templates or groups.
HTTPS and outbound network rules
The Credentials service must make outbound HTTPS calls to the badge provider's API, so firewall, proxy and egress rules need to allow that traffic from the hosts that run the service. Confirm the exact provider hostnames with the vendor, check any TLS inspection in the path, and make sure the public URLs that learners see are served over HTTPS. Test egress from the actual runtime environment, not from an administrator workstation.
Finished badge design and completion rules
Prepare the badge image, name, description and criteria before configuration starts, and decide which course or program completion events trigger each badge. Badge templates or groups are set up on the provider side, so changing them later can affect badges already issued. Agree who approves the wording and artwork, and document the mapping from each course or program to its badge.
How the badge flow moves from completion to a learner's wallet
The badge flow has four stages, and each one can fail without an obvious error for the learner. A learner meets the completion criteria set on the course, the platform records that completion and raises a badge event, the integration builds a request to the badge provider using the fields that provider requires, and the learner receives a claim link or a record to add to a wallet. Before you configure anything, write this sequence out for your own course with one row per stage and a named owner for each row. A missing badge can start at any of the four stages, so the table is what lets your team trace it.
Confirm ownership of each step before you build. The Open edX documentation for your release should state whether the LMS or Credentials emits the completion event, which service holds the badge configuration, and which service calls the external provider. Do not rely on a diagram from a blog post or an older release, because the split may differ between releases and between deployment methods. Ask your implementation partner or the Open edX community for the current pages covering each step, then record the answer in your runbook together with the release and deployment method you tested against.
Decide where failed provider calls are logged before go-live. Check which service writes errors for the badge call (the LMS logs, the Credentials logs, or a worker's logs), and whether a failed call is retried or dropped. Then assign who reads those logs, how often they do so, and how a learner who completed the course but received no badge is found and reissued. Test the failure path on purpose using a sandbox provider account or a deliberately invalid credential. A failure nobody can see is a common reason learners report missing badges long after the course ended.
Settle what happens to completions recorded before the integration is switched on. Confirm whether the feature can issue badges for past completions, whether it only applies to completions after the switch date, and whether your release provides a command or batch process for backfilling. Each option changes the audit trail. A backfill issues badges to learners who finished months earlier, while a forward-only switch leaves earlier completers without a record unless you issue those credentials through a separate process. Agree the rule with the business owner, document the cut-off date, and rehearse the chosen approach on a copy of the learner data.
Configuration sequence for Open edX digital badges
This sequence takes an Open edX site from confirming which badge method its release supports to a verified test award that a learner can see in the provider. Each step ends with a check so the platform team, the badge provider administrator and the course owners can confirm the link works before any real learner receives a badge.
Confirm the supported badge method for your release
Before any account is created, the platform engineer confirms in the Open edX documentation for your named release which badge integration is supported, whether it runs through the LMS, the Credentials service or both, and which provider versions it expects. Open edX supports one release at a time, so check the release notes for the version you run, not a newer one. Record the method, the required settings and any deprecation notes in the project runbook. The check is a written decision that names the integration path and the release it applies to, signed off by the platform lead.
Create the badge provider account
The organization's administrator creates the account with Credly or Accredible under the legal entity that will own the badges, using a role-based or shared administrative mailbox rather than a personal login. The account owner should be recorded, multi-factor authentication enabled, and the plan or license checked against the expected issuance volume. Ask the provider sales or support team to confirm any API access terms in writing. The check is a provider dashboard that loads for the owner and lists the organization profile, with no badges issued yet.
Create a dedicated service account or API credential
The platform team creates a service account or API credential used only by the Open edX integration, scoped to issuing and reading badges. Store the key in your secrets manager, not in configuration files in the repository, and restrict who can read it. Document the credential owner, the rotation procedure and the process for revoking it. Avoid reusing an administrator's personal token. The check is a successful authenticated read call from the test environment that returns the provider organization details, and a note in the runbook naming the credential and its owner.
Define badge templates or groups in the provider
The badge owner creates the badge templates or groups in the provider dashboard, one for each credential the organization intends to award. Each template needs a name, description, criteria text, issuer details and artwork that match the provider's requirements. Keep the identifiers the provider generates, because the course configuration in a later step refers to them. Decide who approves changes to criteria text, since learners and employers will read it. The check is a list of templates in the provider with their identifiers copied into a configuration sheet reviewed by the course owner.
Enable the badge feature in the LMS and Credentials
The platform engineer enables the badge feature in the LMS and the Credentials service through the settings or Tutor configuration that the confirmed release requires, pointing each service at the provider endpoint and the credential stored in the secrets manager. Deploy to the staging environment first, then restart the affected services so the new settings load. Check the service logs for configuration errors and confirm the integration is switched on only where intended. The check is a clean startup log with no authentication errors and a settings view that shows the badge integration as enabled in staging.
Link each course to its badge
The course team, working in Studio, links each course or course run to the badge template or group it should award, using the identifiers recorded in the template step. Define the completion condition that triggers a badge, such as passing grade or certificate eligibility, and confirm it matches the grading policy in the course. Record every mapping in the configuration sheet so the mapping can be reviewed later. Mapping a course to the wrong template is easy to miss, so treat this sheet as the source for the test. The check is a reviewed mapping sheet signed by the course owner, with each course tied to exactly one template.
Run a staff-only issuance test
Enroll a staff test learner account in a test course, complete the course conditions, and confirm the badge is issued in staging. Then check the provider dashboard for a matching record with the same recipient, template and date, and review the LMS and Credentials logs for the award event. Repeat the test for each mapped course before enabling production. Record any failures and their causes, and confirm the staff test account is excluded from real reporting. The check is a provider record that matches the test award for every mapped course, with a clean log entry for each issuance.
Mapping badges to course completion and learner data
This table maps each completion criterion to a badge template or group, the learner fields sent to the provider, the system that owns each field, and the role that approves changes. Read it as a starting worksheet: confirm each field name and availability against the integration documentation and the provider's API before build, and record a documented legal basis for every personal data field sent to a third party.
| Mapping item | What it sends or controls | Owning system | Approving role |
|---|---|---|---|
| Completion criterion: passing grade in a course | Triggers issuance of the course badge template or group after the learner meets the grade threshold set in the course | Open edX LMS gradebook and course settings | Course owner with the academic or training lead |
| Completion criterion: certificate-eligible completion | Triggers a badge where the learner has met all graded requirements and the course certificate is issued | Open edX LMS certificates configuration | Program manager with the course owner |
| Badge template or group identifier | Identifies which Credly or Accredible template or group receives the award, mapped to a course identifier | Credly or Accredible account, with the mapping held in the Open edX configuration | Platform owner with the credentialing lead |
| Learner name | Sent to the provider to display on the badge; confirm the exact field name in the integration and provider API | Learner profile in the Open edX LMS, or the identity provider where SSO is used | Privacy officer for the basis, with the data protection lead |
| Learner email | Sent to the provider as the recipient or claim address; confirm whether the provider requires it and how it is matched | Learner account in the Open edX LMS or the upstream identity provider | Privacy officer for the basis, with the data protection lead |
| Completion date | Sent as the award or issue date; confirm the timezone and format the provider expects | Open edX LMS completion record | Course owner, with the credentialing lead |
| Course identifier | Sent so the badge can be traced to the course run; confirm whether the course key or a custom code is used | Open edX Studio course metadata | Course owner with the platform owner |
| Service account and API credentials | Authenticate the LMS to the provider; scope, rotation and storage must be confirmed with the provider documentation | Credly or Accredible account and the secrets store chosen by the operator | Security lead with the platform owner |
| Changes to mappings or templates | Any change to a criterion, template or field list before it goes live in production | Change record in the operator's change management system | Credentialing lead, with the security lead for new personal data fields |
Deciding between one badge template per course and grouped badges
The first decision is whether each course gets its own badge template or whether several courses in a program share grouped templates. This choice sets how many provider records you maintain. One template per course means one record per course on the provider side, each with its own name, criteria, description and image. Grouped templates mean one record can cover a set of courses or a program-level award. Confirm how Credly and Accredible each name and structure templates, groups and badge classes, along with any limits on each, against current provider documentation before you draft the mapping. The terminology differs between providers, and the mapping table should use the names each provider actually uses.
Mapping and testing effort follow directly from this choice. Per-course templates make the mapping one to one: each course completion event maps to one template identifier. The table grows with every course, but each row is simple, and each new course needs one new entry and one test. Grouped templates reduce the number of entries, but they require a rule that decides when a learner qualifies for the group, such as completing a defined set of courses. That rule must be tested with partial progress, repeated attempts and learners who re-enroll. Decide early whether the grouping logic lives in the LMS, in the Credentials service or in the provider. A rule split across systems is the hardest to test and the easiest to break when one side changes.
The audience should guide the provider choice for each badge set. If badges are meant to be shared with employers or professional networks, the provider's public verification and sharing features matter more than internal consistency. If the main audience is an internal workforce or an academic group, check how each provider handles the same learner earning badges from several programs, and whether the learner's record stays consistent across them. Revision rules also need a decision before launch. When course content changes, decide whether badges already issued remain valid as awarded, whether a new template version applies only to future awards, and whether any earlier badges will be reissued. Changing a template name or criteria after learners hold badges creates confusion, so write these rules into the design first.
Ownership after launch needs a named owner. Assign one person or team to make template changes, one approver to sign off on them, and a change log that records what changed and why. Templates are often edited in the provider interface by staff who do not work on the platform, so access should match the service accounts and provider roles set up during the build. Each template or mapping change should be checked against a test learner record before it goes live. DeployOpen can plan this as part of a fixed-scope build or provide it as ongoing support under a retainer. The written scope should state who handles template edits, mapping changes and provider account changes after go-live.
Security for Open edX digital badges
Badge issuance connects your LMS to an external credentialing service with a standing credential that can create public records. The cards below cover the credential, secret storage, environment separation, template governance, data minimization and logging controls that keep that connection contained. Confirm where each setting lives in the Open edX release and Tutor version you run, because configuration paths change between releases.
Issuance-only service credentials
Create the Credly or Accredible API credential for the badge integration with only the permissions needed to issue and revoke badges, and nothing for account administration or reporting exports. Confirm with the provider which scopes or roles the credential can hold and whether it can be limited to specific badge templates or groups. Record which Open edX service issues badges with it so a compromised credential can be traced to one integration.
API keys kept out of configuration files
Store the badge provider API key in a secrets manager and inject it into the LMS and Credentials processes at runtime, rather than writing it into Tutor configuration, settings files or container images that may be committed to version control. Check that the key does not appear in the rendered configuration, container logs or the admin interface. Confirm how your Tutor version reads secrets from the environment before you rely on it.
Separate staging and production credentials
Issue one credential for staging and another for production, each tied to its own badge provider account or group, so that test issuance never creates public credentials and a leaked staging key cannot issue production badges. Confirm that the staging environment points at a sandbox or test organization where the provider offers one. Keep the two credentials in separate secret paths with separate access grants.
Credential rotation procedure
Write a rotation procedure that issues a new credential, updates the secret store, restarts the affected services and then revokes the old credential, in that order. Test the procedure in staging first and confirm that the provider lets you hold two active credentials during the switch. Set a rotation interval and an emergency revocation path that names who can trigger it.
Restricted editing of badge templates
Limit edit rights on badge templates, criteria text and group mappings to a named set of administrators, and separate those rights from the rights to change LMS course settings. Review who holds Django staff or superuser access in the LMS and Credentials, because those roles can alter the mapping from course completion to badge issuance. Confirm which roles the provider console and the Open edX admin pages each expose.
Minimal personal data in badge metadata
Limit badge metadata to the recipient identifier and the fields the credential needs, such as course name, issue date and criteria. Avoid placing national identifiers, date of birth, grades beyond what the criteria state, or free-text learner data in badge descriptions, because issued badges are often publicly verifiable. Review the field mapping with your privacy officer and confirm which fields the provider publishes.
Audit logging of issuance events
Log each badge issuance, revocation and template change with the time, the acting service account, the recipient reference and the template identifier, and forward those entries to your central log store. Confirm which events Open edX emits at the default log level and which ones need the badge integration's own logging enabled. Test that a revoked badge produces a traceable entry so that an incident review can reconstruct what was issued.
Common failures when issuing badges from Open edX
This table lists the failures operators most often meet when issuing badges from Open edX to Credly or Accredible, with the likely cause, the first place to check and the fix. Read the rows in the order of the award lifecycle: credentials and identifiers first, then learner data, then retries and backfills, and finally delivery. Most of these problems appear in LMS or worker logs before a learner reports them, so confirm the first check before changing configuration.
| Failure | Likely cause | Check first | Fix |
|---|---|---|---|
| Rejected credentials | Service account key or client secret is expired, revoked, or pasted with extra characters | Provider API responses in LMS logs and the key settings in the provider account | Generate a new key, update the stored secret, and confirm the account can still issue awards |
| Template or group ID mismatch | Course points to a template or group from another provider account, a test environment, or a deleted template | Badge settings on the course and the template or group list in the provider dashboard | Copy the identifier from the live template, confirm the account owns it, and check test versus production |
| Learner missing required fields | Profile lacks a name or email value the provider requires, or the name differs from the one the provider expects | LMS logs for the rejected learner and the provider's rejected-record report | Confirm required fields with the provider, correct profile data, and reissue only for affected learners |
| Duplicate issuance after a retry | A timeout looked like a failure, so the task ran again and created a second award | Worker logs showing two attempts for one learner and course, and the provider's recipient list | Check for an existing award before issuing, record successful awards, and remove duplicates in the provider |
| Completions before the integration | Learners who finished before the badge mapping existed were never queued for an award | Completion records in the LMS compared with the badge issuance log | Agree a backfill rule in writing, run a limited backfill for that date range, and exclude learners who should not receive awards |
| Delivery failure from network or certificates | Firewall blocks the provider API host, proxy is not set, or the LMS does not trust the provider's certificate chain | Worker logs for connection or TLS errors, and a test request from the LMS host | Allow outbound access to the API host, set proxy values, install the required CA chain, then retry queued awards |
Testing Open edX digital badges before learners see them
Badge issuing is hard to undo cleanly once learners hold certificates with the wrong name, course or template, so the test plan should be agreed before the production switch is flipped. The core idea is to run the full path from course completion to a claimable badge in a non-production setting, using a provider sandbox or test group where one exists, and to record what each check proved. Availability of a sandbox or test group differs by vendor and plan, so confirm it with Credly and with Accredible before you design the rest of the plan, and confirm whether their test environments use separate API credentials, separate issuer or group identifiers, and separate badge templates from production.
Build dedicated test courses in a non-production Open edX instance, ideally one that mirrors the production LMS and Credentials configuration. Each course should map to one badge template or group so that a failure points at a single mapping. Create test learner accounts with distinct names and email addresses that are clearly synthetic, and never use real learner records in a sandbox. Give the test learners a mix of roles and enrollment paths, such as a standard enrollment, a verified enrollment if your site uses one, and an audit-only enrollment, so you can confirm which paths trigger issuance and which do not.
Check template selection, field values and claim delivery for every test course. For template selection, confirm that each completion lands on the intended badge and not a neighboring one. For field values, compare the learner name, course title, issue date, description and any criteria text in the badge against the source data in the LMS and Credentials, and confirm that the claim email or claim link reaches the test inbox with the correct recipient. Verify that the badge can be claimed or viewed and that its public or shared link behaves as your policy requires. Record the vendor-side identifiers for each issued badge so you can trace it back during support.
Run a repeat-completion test on the same learner and course, then a re-enrollment test if your course allows it. The expected result is that no second badge is issued, or that the behavior matches the rule you agreed, such as updating a single record. Test a learner who completes two courses that share a badge group to confirm the group logic. If the provider supports revocation, expiry or correction, run those tests too: revoke a test badge, correct a field where the provider allows edits, and confirm what the learner sees afterward. Where the provider does not support revocation through the integration, document the manual process your team will use instead and who approves it.
Finish with a written sign-off before production. The sign-off should list each test case, the result, the evidence (screenshots, identifiers, logs), the tester and the approver, and the known limitations that remain. Include the rollback or pause procedure for the integration, and confirm that production credentials, template identifiers and group identifiers are changed deliberately rather than copied from the test setup. Plan a short monitored period after go-live in which the first real completions are checked against the same criteria. Decisions about who signs off, and whether any test must be repeated after an Open edX or provider upgrade, should be made in advance.
Questions buyers ask about Open edX digital badges
What drives the cost of an Open edX digital badge integration?
The cost follows the configuration and testing the badge work needs, and it splits into two lines. The vendor account is a subscription you hold with Credly or Accredible, priced by that vendor and usually paid directly by your organization. The implementation work is the effort to create service accounts, build badge templates or groups, enable the feature in the LMS and Credentials, and map each badge to course completion. The main cost drivers are the number of courses and badge types, the complexity of completion rules, the number of environments, and whether issuance needs an approval step. Ask for any quote to list vendor fees separately from labor, and to state which items are one-time and which recur.
How long does setting up Open edX digital badges take?
Duration follows from scope, so it is best explained by counts. The variables that matter most are the number of courses that award badges, the number of distinct badge templates or groups, the number of environments that must issue badges (commonly a test environment and production), and how many completion rules need verification. Each course with its own badge adds design review, mapping and test cases. Timing also depends on how quickly your vendor account owner can provide access and how soon the approver can review templates and test results. Ask for a schedule that lists these counts and the agreed approval points before work starts.
What must our team provide before an Open edX badge project starts?
Before work starts, your team needs to provide five inputs. First, a course list that names each course that will award a badge and its completion rule. Second, badge designs, including artwork and the criteria text learners will read. Third, a vendor account owner who can create or administer the Credly or Accredible account and approve access for the service account. Fourth, a test environment that mirrors the LMS and Credentials setup, so issuance can be checked without sending badges to real learners. Fifth, a named approver who signs off on templates and on the test results. Missing any of these usually delays the schedule, so confirm ownership of each item in the written scope.
Can our in-house team set up Open edX digital badges themselves?
Yes, if your team has Open edX operations skills and its own vendor account. The required skills include running Tutor-based deployments, changing LMS and Credentials settings, handling service credentials securely, and reading platform logs. Before launch, the team should confirm that the service account can create and read badges, issue a badge to a test learner in a non-production environment, verify the completion mapping for each course, check that the badge displays and links correctly, and test the reissue or revocation path. Confirm the current vendor API features and account limits directly with Credly or Accredible, because those belong to the vendor and can change.
What recurring work follows the launch of Open edX badges?
Recurring work falls into three groups. The first is template maintenance: updating badge artwork, criteria text or group membership when courses change. The second is credential rotation: replacing the service account keys or tokens on the schedule your security policy sets, and updating every platform setting that holds them. The third is release upgrades. Open edX states that the latest named release is the only supported release and that it cannot support more than one release at a time, so upgrades recur, and badge settings and mappings must be retested after each one. Vendor subscription renewals also recur, and the vendor sets those terms, so confirm them in your quote.
Which Open edX settings must be enabled for badges to issue?
Badge issuance depends on enabling the badge feature in the LMS and in Credentials, then connecting each to the vendor account through the service account you create. Confirm the exact setting names and the versions of Open edX, Tutor and any badge plugin your release uses, because these change between named releases. Check that the service account holds only the permissions the integration needs, that the course-to-badge mapping is saved for each course, and that the LMS can reach the vendor API from its network. Keep these settings in version control so every change passes review and can be traced back to an approver.
What usually breaks in Open edX badge issuance?
Most failures trace to three sources. The first is expired or rotated service credentials, which stop issuance without an obvious error in the learner view. The second is a course-to-badge mapping that points at the wrong template after a course is copied, renamed or rebuilt. The third is drift between test and production, such as a setting changed in one environment only. Learners who completed a course before its mapping existed need a rule for issuance, so agree that rule with your approver before launch. After each course launch, review the issuance logs and set an alert on failed vendor API calls.
How DeployOpen scopes and supports Open edX badge integrations
DeployOpen treats Open edX digital badges as a written piece of work that covers the LMS, the Credentials service and the badge provider accounts in your environment. We set up service accounts, badge templates or groups and course completion mapping in infrastructure you control, then document and hand over the configuration.
How we scope
- The written scope names which provider, Credly or Accredible or both, issues badges for your learners
- It lists the courses and completion rules that trigger each badge and who approves them
- Engagements are fixed-scope, with deliverables and timelines agreed in writing before work starts
How we build
- Create the provider service accounts and confirm credentials are stored outside source control
- Build badge templates or groups in the provider and map each one to a defined course completion
- Enable the badge feature in the LMS and Credentials, then test issuance with a staging learner account
How we hand over
- Document each service account, template, completion mapping and setting, with a named owner for each
- Provide a test checklist covering badge issuance and the learner claim flow end to end
- Walk your operations team through credential rotation and where badge records are held
How we support
- Ongoing support, upgrades and testing are available as a retainer after handover
- Review badge mappings when course structure or the Open edX release in use changes
- Confirm each provider's current API and feature availability with the provider before scoping

