learndash/manage-notification creates a notification email or updates an existing one.
The title is the email subject and the body is its content.
At a glance
| Ability | learndash/manage-notification |
| Toolset | LearnDash — toolset/learndash |
| Group | LearnDash › Notifications |
| Requires | AcrossAI Pro, plus LearnDash LMS active on the site |
| Capability | manage_options |
| Safety | Writes data |
| Repeatable | Idempotent — running it twice leaves the same result |
| Ships in | AcrossAI Pro 0.9.16 and later |
How it works
LearnDash merge shortcodes such as [user_login], [course_title] and [quiz_title] work in the body and are stored raw, which is what makes the email personal rather than generic.
A body without them sends the same words to everybody, which for a completion email is a missed opportunity and for an assignment-approval email is confusing.
Status defaults to publish, because a draft notification never sends — the same reasoning as achievements. There is no useful staging state.
Scope it to a specific course, lesson, topic, quiz or group, or leave the scope empty to fire for all of them. Empty is the broader setting and the easier one to choose by accident.
delay with delay_unit sends it later rather than immediately, which is how a follow-up email is built.
Idempotent.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
action | string | Yes | create or update. |
notification_id | integer | For update | Which notification. |
title | string | For create | The email subject. |
trigger | string | For create | A key from learndash/list-notification-triggers. |
body | string | For create | The email content. Merge shortcodes are stored raw. |
recipient | string | No | Who receives it. |
scope | object | No | Restrict to a course, lesson, topic, quiz or group. |
delay | integer | No | Send this long after the trigger. |
delay_unit | string | No | The unit for the delay. |
status | string | No — defaults to publish | A draft notification never sends. |
What comes back
| Name | Type | What it is |
|---|---|---|
notification | object | The notification after the write. |
success | boolean | Whether the call completed. |
message | string | A one-line summary of what happened, suitable for showing a human. |
error_code | string | Present 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:
Email learners when they finish the onboarding course.
It resolves to one call:
{
"ability": "learndash/manage-notification",
"parameters": {
"action": "create",
"title": "You have finished [course_title]",
"trigger": "course_completed",
"body": "Well done [user_login] — your certificate is ready."
}
}Worth knowing
- Merge shortcodes are what make the email personal. Stored raw.
- Published by default, because a draft never sends.
- An empty scope fires for every course.
- A delay turns it into a follow-up.
Related abilities
- LearnDash List Notification Triggers — valid triggers
- LearnDash Get Notification — read the raw body first
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category