Building an LMS With Certification and Recertification Tracking
A focused certification and recertification module bolted into an existing product runs $15,000 to $60,000. As part of a first release it lands at $50,000 to $130,000 over 10 to 16 weeks.
On this page
A focused certification and recertification module bolted into an existing product runs $15,000 to $60,000. As part of a first release it lands at $50,000 to $130,000 over 10 to 16 weeks. A full multi-tenant platform with proctoring, external evidence review and regulated audit trails runs $150,000 to $350,000 across 6 to 12 months. Those are Digital Heroes delivery bands across 2,000+ projects. The line item that blows every estimate is not the course player. It is the temporal rules engine that decides who is certified, on what date, under which version of the rule.
What certification tracking looks like once real users touch it
A safety manager opens the compliance dashboard on 3 March and exports the list of forklift-certified operators. In August, an inspector asks for that same list as it stood on 3 March. If your credentials table has an expiry column that gets overwritten every time someone recertifies, the question has no answer. You can produce today's truth and nothing else.
Now the ordinary version of worse. In May the client shortens the recert cycle from 24 months to 12. Someone edits the requirement record. Every operator's expiry recalculates overnight and 400 people are marked expired retroactively, including a dozen who certified under the old rule and had eight months left. Payroll blocks their shifts at 6am. That is not a rare failure. It is the default behaviour of a schema where the rule and the credential live in the same row.
The content standard is a decision, not a checkbox
"We'll support SCORM" hides three incompatible answers, and the one you pick determines whether you can host content on a CDN and whether the system can even tell you someone passed.
- SCORM 1.2 is still what most legacy vendor content ships as. It reports completion through
cmi.core.lesson_status, and itssuspend_datafield is capped at 4096 characters, which real courses overflow, silently losing bookmark state mid-module. - SCORM 2004 4th Edition raises suspend_data to 64000 characters and adds sequencing and rollup, at the cost of a specification most authoring tools implement partially.
- The deployment trap in both: the run-time environment is a JavaScript API the content discovers by walking the opener and parent chain looking for
window.API(1.2) orwindow.API_1484_11(2004). That means content must run in a same-origin frame. Push your packages to a CDN on another domain and tracking silently stops while the course still plays, which is the single most common "the LMS (Learning Management System) isn't recording completions" ticket. - xAPI sends statements to a Learning Record Store and gives you rich data and no verdict. Nothing in xAPI tells you a person is done. Something in your code still has to decide what counts.
- cmi5 is the one to choose for new content, because it defines both launch and an explicit
moveOncriterion per assignable unit: Passed, Completed, CompletedAndPassed, CompletedOrPassed, or NotApplicable. That single field is the completion verdict SCORM makes you infer and xAPI makes you invent.
Decide this before the estimate. Supporting SCORM 1.2 and 2004 and cmi5 is three run-times, three test matrices, and it is a real fraction of the build. If your content is all authored in-house, cmi5 alone is defensible and cheaper.
The rules engine is the product
Certification requirements are effective-dated data, not configuration. Store each requirement as a version with a valid-from date, and have every awarded credential reference the exact version it satisfied. When the cycle changes from 24 months to 12, you publish version 2 with an effective date and a transition policy, and version 1 credentials keep their original expiry until they renew. Without that, a rule edit is a retroactive mass expiry.
Then the credential history has to be append-only. Award, renew, revoke, suspend and reinstate are events, and the current state is a projection over them. That is the only structure that answers "who was certified on 3 March" in August, and it is the difference between passing an audit and rebuilding the system after one.
The expiry maths is where requirements meet reality, and every one of these is a decision someone has to make in writing:
- What does the expiry anchor to? Completion date plus 24 months, the end of the birth month, or a fixed organisational anniversary. All three exist in real compliance regimes and they are not the same code path.
- Early recertification. Someone recerts 30 days before expiry. Does the new expiry run from today, or from the old expiry? Anchor from today and you silently shorten every diligent person's cycle by a month, compounding every renewal. Almost every regulated body anchors from the old expiry if you renew inside the window. Pick, and write it down.
- The recert window. "Opens 90 days before expiry" means a completion outside the window is a fresh certification, not a renewal, with a different anchor.
- Grace periods. Is a person in grace certified, or not certified but not blocked? That is a different state, and downstream systems ask about it.
- Equivalency. An external certificate or a prior role counts toward an internal requirement. That is a mapping table plus a reviewer, not a checkbox, and it arrives in month three of every project.
The credential state machine and the notification pipeline
The states worth modelling explicitly: not_started, in_progress, awarded, expiring_soon, in_grace, expired, revoked, suspended. If a vendor shows you a boolean called is_certified, that is the whole review.
Notifications are where this goes wrong operationally. Do not enqueue delayed jobs at award time, because a rule change, an early renewal or a revocation invalidates every queued job and most job runners give you no reliable way to find and cancel one by business key. Run a sweeper that queries credentials falling inside each notification offset (90, 30, 7 days out, then overdue), and dedupe on a key of credential id plus rule version plus offset. Without that key, one re-run after a deploy blasts several thousand people twice, and the second most common consequence is that the client turns notifications off entirely.
Deliverability is a real engineering constraint here, not an afterthought. Certification lists are pulled from HRIS data full of stale addresses for people who left, and a bulk expiry blast to thousands of them spikes bounces. Amazon SES expects bounce rates under 5% and complaint rates under 0.1%, and crossing those puts sending under review, which means the compliance emails stop precisely when you need them. Validate against the HRIS on every sync, suppress hard bounces permanently, and never send an expiry blast from the same identity as transactional login mail.
Evidence, proctoring and the things that happen outside the LMS
Plenty of certifications are not earned by finishing a module. Someone uploads a photo of an external certificate, a supervisor signs off on an observed competency, or a training day happens in a room with no computers. Each of those needs a submission with its own review states (submitted, needs_info, approved, rejected), a named reviewer, a reason, and an expiry that comes from the evidence document rather than the completion date. That workflow is routinely a quarter of the build and is almost never in the brief.
If the credential has real value, someone will ask about proctoring. Integrate a vendor (Proctorio, Honorlock, ProctorU) rather than building it. The work on your side is a session handshake, a results webhook, and a decision nobody wants to make: what happens to an award when a proctoring flag lands after the certificate was already issued. You need the revoke path anyway.
If you plan to issue portable credentials, Open Badges 3.0 aligns with W3C Verifiable Credentials, which means you are signing assertions with a key. Now you own key rotation and a revocation mechanism, because a badge you cannot revoke is a badge you cannot audit. Do not add this in version one unless someone external actually consumes the badge.
Audit trails and regulated environments
If you are in pharma, medical devices, food or aviation, the compliance regime changes the cost shape rather than the feature list.
Under 21 CFR Part 11, an electronic signature must carry the printed name of the signer, the date and time, and the meaning of the signing (review, approval, authorship), and it must be linked to the record so it cannot be excised or copied. That is not a checkbox column. It also means the append-only ledger stops being an architectural preference and becomes a requirement.
The bigger number is validation. A GxP deployment needs IQ, OQ and PQ documentation, a traceability matrix from requirement to test, and a change control process that makes every future release slower. In our delivery experience that adds roughly 30 to 50% on top of the build, and it is documentation and process work, not code.
What this costs and what moves the number
Digital Heroes delivery bands from 2,000+ projects, not market averages.
Focused module inside an existing product: $15,000 to $60,000, roughly 5 to 9 weeks. You already have users, auth, org structure and an admin surface. We add the effective-dated rules engine, the append-only credential ledger, the state machine, the expiry sweeper with idempotent notifications, and audit reporting. Rules in code at the low end, admin-configurable at the high end.
Part of a first release: $50,000 to $130,000 over 10 to 16 weeks. Content playback for one standard, learner UI, admin, assignment rules by role or location, certification and recertification tracking, reporting, and one integration such as an HRIS.
Full platform: $150,000 to $350,000 over 6 to 12 months. Multi-tenant with per-tenant rule authoring, evidence review workflows, proctoring, multiple content standards, verifiable credentials, external reporting integrations, and the operational tooling to run it.
What drives this capability up, in order of impact:
- Regulated validation. 21 CFR Part 11 or GxP adds roughly 30 to 50%, almost all of it IQ/OQ/PQ documentation and change control rather than features.
- Per-tenant configurable rules. Rules in code are cheap. A rule-authoring UI that a non-engineer can use without retroactively expiring 400 people needs versioning, preview, an impact report and a dry run. It roughly doubles the rules engine cost.
- Evidence review workflows. External certificates, supervisor sign-off and offline training each bring their own submission states, reviewer queue and expiry source.
- Content standard count. Each additional run-time (SCORM 1.2, SCORM 2004, cmi5) is its own player, its own tracking semantics and its own QA pass.
- External reporting integrations. Pushing completions to a body such as CE Broker, or pulling org hierarchy from Workday or BambooHR, is 2 to 4 weeks each, and the org hierarchy is what your entire reporting model depends on.
When you should not build this
If your need is assigning courses to a few hundred employees and tracking who is out of date, buy. Absorb, TalentLMS, Docebo and Litmos all do assignment, expiry and reporting out of the box, and Moodle with Totara covers the open-source end. If you are already on Workday, Workday Learning is one procurement conversation rather than a project. Any of them is live in about three weeks and none of them will lose you a customer.
The honest test: if certification is an obligation your business carries rather than a thing your business sells, buy it.
Build when one of these is true. Certification depends on data that lives inside your own product, so the requirement is "certified operators can only be dispatched to jobs of type X", and round-tripping through a vendor API costs more than the build. The credential is what you sell, meaning learners pay for the certificate and your brand is on it. Or every tenant defines its own rules, which no packaged LMS models without becoming a consulting engagement.
Middle path most teams miss: buy the LMS for content delivery, build only the credential ledger and rules engine on top, and let the LMS post completions into it via xAPI or a webhook. That is the $15,000 to $60,000 band, and it is usually the right call.
How to brief and vet a developer for this
Bring these answers to the first call, because the estimate is fiction without them. What anchors an expiry: completion date, birth month, or a fixed anniversary. Does an early renewal run from today or from the old expiry. Is there a grace period, and is someone in it certified. What happens to existing credentials when a rule changes. Which content standards you must ingest and who authored them. Whether anything is signed under 21 CFR Part 11.
Then ask these:
- "The client changes the cycle from 24 months to 12. What happens tonight to the people already certified?" You want effective-dated rule versions and a transition policy. "Their expiry recalculates" is the whole answer you need to walk away.
- "An auditor asks who was certified on 3 March. Show me the query." Only an append-only ledger answers this. A current-state table with an expiry column cannot, at any price.
- "Someone recertifies 30 days early. What is their new expiry date?" If they have not thought about it, they will anchor from today and silently shorten everyone's cycle.
- "How does the expiry notification job avoid double-sending after a redeploy?" You want a sweeper with a dedupe key of credential, rule version and offset. Delayed jobs enqueued at award time is the wrong answer.
- "We host course packages on a CDN. Does SCORM tracking still work?" No, not without a same-origin proxy, because the content finds the API by walking the frame chain. Anyone who has shipped SCORM says this instantly.
- "SCORM 1.2 or cmi5, and why?" Listen for suspend_data limits and for moveOn. If they have no preference, they have not shipped either.
- "Show me the credential state machine." Count the states. If revoked, suspended and in_grace are missing, they have modelled a boolean.
- "Where does the expiry date come from when someone uploads an external certificate?" From the document, not the upload date. Silence here means evidence review was never scoped.
- "What's your plan when the HRIS sync brings in 300 dead email addresses?" You want suppression, separate sending identities, and an awareness that bounce rates gate deliverability.
One free filter: ask them to price the module with and without configurable rules. Anyone who quotes the same number for both has not built the configurable version.
When you are ready to turn this into a specification, Digital Heroes has delivered more than 2,000 projects with a named team you can speak to before you sign, rather than a bench you meet in month two. The document is yours whichever way you go.
The evidence behind this guide
Independent findings on why this investment pays off. Every link goes to the primary source.
- One in four US employees report lacking career advancement opportunities; 48% of employees who participated in mentorship programs report high job satisfaction versus 29% of non-participants, and access to advancement opportunities ranges from 33% at organizations under 10 employees to 74% at those with 1,000+. Source: Gallup (2025) →
- The average number of formal learning hours used per employee fell to 13.7 in 2024, down from 17.4 in 2023, a decline the report attributes partly to a shift toward informal and on-the-job learning not captured in the formal-hours metric. Source: Association for Talent Development (ATD) (2025) →
- A study (led by Prof. Pak-Lok Poon, published in Frontiers of Computer Science, 2024) reviewing decades of spreadsheet-quality research found that about 94% of spreadsheets used in business decision-making contain errors, illustrating the hidden risk of manual spreadsheet workarounds that custom software is built to replace. Source: Central Queensland University / phys.org (Prof. Pak-Lok Poon et al.) (2024) →
- This analysis cites IDC research that companies lose 20-30% of revenue annually to inefficiencies caused by data silos, Gartner's estimate that poor data quality costs organizations at least $12.9 million per year on average, and a Salesforce benchmark that 80% of IT leaders say data silos hinder digital transformation - illustrating the business case for integrating systems. Source: Cherry Bekaert (citing IDC, Gartner, Salesforce, DATAVERSITY) (2024) →
Frequently asked questions
How much does it cost to add certification and recertification tracking to an existing app?
$15,000 to $60,000 in Digital Heroes delivery experience, assuming you already have users, authentication and an admin surface. The spend goes into the rules engine, the credential state machine, the expiry notification pipeline and audit reporting, not the course player. It climbs past $60,000 once you need per-tenant configurable rules or a regulated audit trail.
How long does it take to build an LMS with certification tracking?
10 to 16 weeks for a first release covering content playback, admin, learner UI and one integration. A focused module inside an existing product is typically 5 to 9 weeks. A full multi-tenant platform with proctoring and evidence review runs 6 to 12 months.
Can you add certification tracking to our existing application?
Yes, and it is usually the cheaper path because auth, users and org structure already exist. The main constraint is whether your current data model can be made append-only for credential history. If completions are stored as mutable rows with an expiry column, expect a migration to an event ledger before anything else, which is normally 1 to 2 weeks of the estimate.
What breaks at scale?
Three things, reliably. Expiry notification jobs re-firing and double-blasting thousands of people because there is no idempotency key, email deliverability collapsing when stale HRIS addresses push bounce rates past the 5% threshold that triggers SES review, and point-in-time audit reports being impossible because history was overwritten rather than appended.
Should we use a third-party LMS instead of building?
If your need is assigning off-the-shelf courses and tracking expiry for a few hundred employees, yes. Absorb, TalentLMS, Docebo or Litmos will beat a custom build on cost and be live in about three weeks. Build only when certification depends on data that lives inside your own product, when the credential is what you sell, or when every tenant defines its own rules.
What can we realistically get for $25,000?
One tenant, one content standard, credential rules written in code rather than configurable by admins, an append-only history ledger, expiry notifications with idempotency, and two or three reports. You will not get proctoring, external evidence review workflows, verifiable credentials, or regulated audit trails at that number. The ledger is the part to insist on, because retrofitting it later costs more than it did originally.
Is $150,000 enough for a full certification platform?
It is the bottom of the realistic band for multi-tenant with per-tenant rule authoring, and it assumes no regulated validation work. If you need 21 CFR Part 11 or GxP validation, the IQ/OQ/PQ documentation alone commonly adds 30 to 50 percent, which puts you closer to $220,000 to $350,000. Each external reporting integration such as CE Broker or an HRIS adds 2 to 4 weeks on top.
Do we need SCORM, or is xAPI enough?
It depends on your content, not your preference. xAPI gives you a stream of statements into a Learning Record Store but no completion verdict, so something still has to decide what counts as done. If your content is modern, cmi5 is the better answer because it defines launch and an explicit moveOn criterion. If you are ingesting client-supplied legacy packages, you need SCORM 2004 4th Edition support regardless.
How do we prove someone was certified on a specific past date?
Only by keeping an append-only event ledger with effective-dated rule versions, so every award references the version of the requirement it satisfied and the date it was in force. A current-state table with an expiry column cannot answer the question at all once a rule changes. This is the single design decision that determines whether the system survives an audit, and it has to be made on day one.
Can I build my product on a no-code tool like Bubble instead of hiring developers?
For testing whether anyone wants the product, yes, and Bubble's paid plans start at $29 a month, which is the cheapest validation you will ever buy. The ceiling arrives with complex data relationships, heavy integrations, performance at a few thousand users, and the fact that you cannot export a Bubble app to servers you control. A path many Digital Heroes clients take: prove demand on no-code, then rebuild custom once revenue justifies it, treating the no-code version as a paid prototype rather than a foundation.
What questions should I ask a development agency on the first call?
Ask who exactly will build it, what happens when scope changes mid-project, what their maintenance terms are after launch, and what they will need from you every week. Then ask them to describe a project that went wrong and what they changed afterward; teams that have shipped at real volume have war stories, and teams claiming a perfect record are hiding something. The scope-change answer matters most: a disciplined shop describes a written change-order process, not a vague promise to be flexible.
Should I customize Moodle instead of building an LMS from scratch?
Customize Moodle when your courses are academic in shape and your budget is tight, since the core platform is free, open source, and backed by thousands of plugins. Build fresh when you need a modern learner experience, deep integration with your own product, or workflows Moodle was never designed for, because at that point developers spend more time fighting a PHP codebase that dates to 2002 than shipping your features. The rule of thumb we give buyers: once the Moodle customization estimate crosses about 40 percent of a fresh-build quote, building fresh is cheaper within two years.
What are the biggest mistakes companies make when building an LMS?
Four repeat offenders: deciding on SCORM or xAPI after the database schema is frozen, testing with 20 users and launching to 2,000, treating reporting as a final-sprint feature, and having no answer for who authors courses after launch. The most expensive is the first, because a content-standard retrofit means rebuilding the course runtime and migrating everything already published. All four are week-one decisions, which is why a paid discovery phase is worth it.
Should we launch an LMS MVP first instead of building everything at once?
Yes. The core loop of enroll a learner, deliver a course, track completion, and pull one report is shippable in 10 to 12 weeks and typically costs 40 to 50 percent of the full roadmap across Digital Heroes builds. Cut gamification, social features, and custom authoring (import SCORM packages from Articulate instead), but never cut the data model, SSO, or content-standard support, because those cannot be bolted on cleanly later.
How many developers does it take to build an LMS?
Four to five people is the working team size on Digital Heroes LMS builds: a project lead, a designer, two engineers, and QA, with part-time DevOps. Bigger teams do not ship an LMS faster, because the schedule is governed by decisions about roles, content standards, and reporting rather than typing speed. Be suspicious of a ten-person quote for a mid-size build, and equally suspicious of one person promising the whole thing.
Who can build a custom LMS software system?
Digital Heroes builds custom LMS software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.
Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.
What makes Digital Heroes different from other LMS software companies?
Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.
Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.
How can I check Digital Heroes is legitimate before getting in touch?
Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.
Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.
Related guides
Published · Last updated .