30 days free. No credit card. Full access from the moment you connect your site.

Start free trial

LearnDash Force Complete Step

learndash/force-complete-step marks a step complete while skipping every requirement LearnDash would normally enforce. It requires confirm_bypass_requirements=true.

The certificate consequence is the one people do not expect.

Before you run it

This records a completion the learner did not earn, skipping prerequisites, required quizzes, assignment approval and video progression. Completing the last step this way can issue a certificate — a document asserting they finished the course. Try learndash/mark-step-complete first: it reports plainly when a requirement is blocking, and that reason is usually worth knowing before overriding it.

At a glance

Abilitylearndash/force-complete-step
ToolsetLearnDash — toolset/learndash
GroupLearnDash › Progress
RequiresAcrossAI Pro, plus LearnDash LMS active on the site
Capabilitymanage_options
SafetyDestructive — records a completion the learner did not earn. Requires confirm_bypass_requirements.
RepeatableNot idempotent — each call changes the row set, so re-running is not a no-op
Ships inAcrossAI Pro 0.9.16 and later

How it works

Completing the final step of a course triggers course completion, and course completion issues the certificate if one is configured. Forcing that last step therefore produces a certificate asserting the learner finished — which is a document that leaves the site and may be shown to an employer.

That is occasionally exactly right. A learner who completed the work offline, or whose progress was lost in a migration, has genuinely earned it and the record is what is wrong.

It is wrong when it is used to get past a blocker that should have been fixed. An unapproved assignment needs approving; a broken video needs fixing; forcing past either leaves the underlying problem in place for everybody else.

So the ordering matters: learndash/mark-step-complete first, read the reason, then decide.

Not idempotent in the sense that it is a deliberate one-off act, though re-running produces the same completed state.

Input

NameTypeRequiredWhat it is
learnerstring | integerYesUser ID, login or email.
step_idintegerYesThe step.
course_idintegerYesThe course.
confirm_bypass_requirementsbooleanYes — must be trueAcknowledges that LearnDash’s requirements are being skipped.
confirmbooleanYes — must be trueThe irreversibility gate. Without it the call is refused before anything is touched.

What comes back

NameTypeWhat it is
completedbooleanWhether the step was marked complete.
certificate_issuedbooleanWhether course completion issued a certificate.
successbooleanWhether the call completed.
messagestringA one-line summary of what happened, suitable for showing a human.
error_codestringPresent only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation.

Example

Ask your assistant:

Force-complete that step for the learner whose progress was lost.

It resolves to one call:

{
  "ability": "learndash/force-complete-step",
  "parameters": {
    "learner": "sam@example.com",
    "step_id": 520,
    "course_id": 412,
    "confirm_bypass_requirements": true
  }
}

Worth knowing

  • The final step can issue a certificate the learner did not earn.
  • Legitimate for restoring lost progress; wrong for bypassing a fixable blocker.
  • Run the ordinary completion first and read its reason.
  • The record does not distinguish a forced completion from an earned one.

Related abilities


Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager

Browse the rest: Every ability, by category


Keep reading