Generated by All in One SEO Pro v4.9.8, this is an llms-full.txt file, used by LLMs to index the site. # Uncanny Owl eLearning for WordPress ## Posts ### [Blog](https://www.uncannyowl.com/uncanny-blog/) **Published:** December 9, 2015 **Author:** Ryan Moore **Content:** # The Uncanny Blog --- ### [The 10 Best LearnDash Plugins for 2026](https://www.uncannyowl.com/the-10-best-learndash-plugins-for-2026/) **Published:** July 28, 2026 **Author:** Ken **Content:** *The best plugins to pair with LearnDash in 2026, covering quizzes, automation, ecommerce, reporting, CRM sync, and more*. [LearnDash 5.0](https://automatorplugin.com/share/learndash) shipped earlier this year and delivered some interesting changes behind the scenes, but it didn’t change a lot for end users or introduce any must-have features. It’s still a solid LMS platform, but what’s most interesting isn’t what’s happening in the core product, but what’s happening around it. Some of the most powerful and meaningful additions to LearnDash are coming from third-party developers. These are plugins built on top of LearnDash to do the heavy lifting for everything from assessment and reporting to ecommerce and automation. This post covers the top ten plugins that we recommend for anyone building or leveling up a LearnDash site in 2026. Some are absolute essentials for every LearnDash site, while others have a more niche audience but offer tremendous value. ## Uncanny Toolkit For LearnDash Since our team first introduced it 10 years ago, the [Uncanny Toolkit for LearnDash](https://wordpress.org/plugins/uncanny-learndash-toolkit/) has been a staple on new LearnDash sites. The free version has over 20,000 active installs and a 4.8 / 5 rating on WordPress.org, and the [premium version](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) has been one of the top paid plugins for LearnDash since its introduction. Combined, they add almost 50 new features to LearnDash sites, including a course timer, autocomplete support, email support for course and quiz certificates, user import, a course dashboard, and more. ## Uncanny Automator [Automator](https://automatorplugin.com/) is the plugin that turns the rest of the list from a collection of independent plugins into a unified stack. More than 50,000 sites use the free version, and Automator connects hundreds of plugins and apps to LearnDash. ![LearnDash automation recipe](https://www.uncannyowl.com/wp-content/uploads/2026/06/eLearning-recipe-example-1030x772.png "eLearning-recipe-example - Uncanny Owl")For [LearnDash](https://automatorplugin.com/integration/learndash/) specifically, [Uncanny Automator](https://automatorplugin.com/) has the deepest integration of any automation tool (and it should, given our history with LearnDash plugins). With over 40 triggers and actions, every facet of the student experience can be linked to automated workflows, and the comprehensive set of actions let you do everything from enroll students in courses to awarding credits and resetting progress. ## Woo [Woo](https://automatorplugin.com/share/woocommerce/) (a.k.a. WooCommerce) is the most-installed ecommerce plugin for WordPress, and while there are ecommerce options you can use with LearnDash (especially through Uncanny Automator), WooCommerce remains the most popular. It has a huge ecosystem of add-ons to support almost any scenario imaginable, and LearnDash offers a native integration at no extra cost. LearnDash sites use Woo instead of the LearnDash native billing system because it offers a lot of must-have extra features, including tax support, additional payment gateways, bundles, and more. It also allows the use of other plugins that can complement LearnDash sites, like [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/), which allows selling LearnDash groups and seats for organizations. ## PressPrimer Quiz One of the most interesting new plugins in the LearnDash space this year is [PressPrimer Quiz](https://pressprimer.com/?ref=31), a free quiz plugin built by one of Uncanny Owl’s co-founders. The [free version](https://wordpress.org/plugins/pressprimer-quiz/) covers more than what most paid quiz plugins offer, from AI question generation and anti-cheat protections to multiple scoring models and save-and-resume across devices. Its [premium add-ons](https://pressprimer.com/pressprimer-quiz-pricing/?ref=31) offer what’s been missing from native LearnDash quizzes, including pre/post-test analysis, question analytics, branching logic, spaced repetition, xAPI support, curve grading, proctoring, and over a dozen reports. More than another basic quiz tool that just outputs a score, it helps students learn and retain information using learning science principles. ![Pre/post quiz analysis](https://www.uncannyowl.com/wp-content/uploads/2026/06/pre-post-test-comparison-uo.png "pre-post-test-comparison-uo - Uncanny Owl")It’s also fully integrated with LearnDash, and its LearnDash quiz import tool makes it easy to switch from LearnDash quizzes to PressPrimer. ## Tin Canny Report for LearnDash The [Tin Canny Reporting plugin](https://www.uncannyowl.com/downloads/tin-canny-reporting/) is about a lot more than LearnDash analytics; it also bundles a SCORM and xAPI content uploader, a native Learning Record Store (LRS) for WordPress, and a suite of LearnDash reporting tools. For organizations that author SCORM and xAPI packages from products like Articulate Storyline and Adobe Captivate, no tool is more convenient for enabling LearnDash integration than Tin Canny. Beyond supporting portable elearning modules from popular authoring tools, Tin Canny includes front and back-end reports for LearnDash course and user records, as well as other useful reports for LearnDash quiz question quality, lesson completion, and topic completion. ## BuddyBoss For any LearnDash site that needs community features (including discussions, social feeds, member profiles, and more), [BuddyBoss](https://automatorplugin.com/share/buddyboss/) has been the standard for almost a decade. The complete stack is four pieces: a free BuddyBoss Platform plugin, a Pro plugin, a theme, and a white-labeled mobile app. While it’s one of the most expensive add-ons on this list (starting at $299 for the theme and Pro plugin only), it offers substantial value for sites where community engagement is important. ## Gravity Forms [Gravity Forms](https://automatorplugin.com/share/gravityforms) is the standard form builder we use on sites, and has our deepest integrations, but there are a variety of form builders we strongly recommend on LearnDash sites. [WPForms](https://automatorplugin.com/share/wpforms) and [Formidable Forms](https://automatorplugin.com/share/formidable) are also great options and integrate well with LearnDash, particularly when used in combination with Uncanny Toolkit Pro for LearnDash. If you’re wondering why a good form plugin is important on LearnDash sites, here are a few use cases: - Login and registration forms - Course surveys - Student file uploads - Simple ecommerce purchases ## WP Fusion The moment a LearnDash site needs to sync with a CRM (including ActiveCampaign, Hubspot, Keap, Salesforce, and more), [WP Fusion](https://automatorplugin.com/share/wpfusion) is typically the answer. [Uncanny Automator](https://automatorplugin.com/) can handle simple CRM use cases and complements WP Fusion well, but WP Fusion has deeper bidirectional sync, controls inside LearnDash post types for tighter tag and list controls, and full event tracking. While there is sometimes some overlap in their basic functions, we see the plugins as complementary, not competitive, and WP Fusion and Automator together make a powerful combination. ## Presto Player Many LearnDash sites offer video lessons, and most of those just embed YouTube or Vimeo videos as iframes. That means students see other recommended videos between lessons, there’s no link between video activity and course progress tracking, and the branding is all wrong. [Presto Player](https://automatorplugin.com/share/prestoplayer) fixes these problems, offering full LearnDash integration, save-position resume, full branding, support for other platforms like Bunny.net, and even self-hosted video. There’s a free plugin to get started, which currently has over 100,000 active installs. ## PressPrimer Assignment Rounding out the top 10 list is [PressPrimer Assignment](https://pressprimer.com/pressprimer-assignment/?ref=31), the only LearnDash add-on dedicated to essay and file-based assessment for LearnDash. Where LearnDash offers basic file uploads and no easy way for instructors to review or grade files, PressPrimer Assignment fills in the gaps and turns assignments into a viable system for learning and assessment inside LearnDash. The free version supports unlimited assignments via file upload or a native text editor, a side-by-side grading system for instructors (with inline viewers for PDF, Word, image, and other text files), and personalized feedback support. The premium add-ons include support for student groups and assignments, inline annotations, AI-assisted grading and proofreading, plagiarism detection, and more. ![PressPrimer Assignment AI Grading](https://www.uncannyowl.com/wp-content/uploads/2026/06/pressprimer-assignment-ai-grading-1030x689.png "pressprimer-assignment-ai-grading - Uncanny Owl")## Building Your LearnDash Stack This post covers 10 of the best plugins for [LearnDash](https://automatorplugin.com/share/learndash) in 2026. None are required, but including them on your LearnDash site can turn a basic courseware site into something that feels really professional and comprehensive. What’s also worth noting is how many of these plugins (eight of the ten) offer free versions, most of which are extremely capable on their own. You can start improving your WordPress site in minutes—without spending a penny. If you’re new to LearnDash, we recommend starting with the Uncanny Toolkit, then give the other plugins a try as you identify gaps and need to improve your platform. Once you start building out your stack, you’ll find the individual pieces a lot more valuable when you start connecting them together. Everything recommended above connects seamlessly with [Uncanny Automator](https://automatorplugin.com/), helping you build out powerful workflows for your LearnDash website. Happy building! **Categories:** LearnDash --- ### [How to Create an Online Course In WordPress: A Practical Walkthrough](https://www.uncannyowl.com/how-to-create-an-online-course-in-wordpress/) **Published:** July 3, 2026 **Author:** Brendan Da Costa **Content:** *Create an online course in WordPress with this step-by-step LearnDash guide. Plan your structure, build lessons and quizzes, then publish and test your course.* You’ve got expertise and knowledge people would pay to learn. You probably also have opinions on how it should be taught. So the real question was never, “Should I build an online course in WordPress?”—of course you should! Instead, the question that has probably led you here is, “How can I create an online course without first having to take a course in web development myself?” You’ve maybe even landed on a few pages before this one that have “build an online course” in the title only to find that those guides skip the part you actually came for: the building. This post, I promise, doesn’t do that. Whether you are a total WordPress novice or someone with some CMS experience, this guide will take you from “I have an idea” to “I have a published course”, step by step. The content and the teaching will still be yours—you’ll just have a new skill to deliver it. A quick note on scope before we start. I’ll be using LearnDash for this walkthrough, but the fundamentals here transfer to any major WordPress LMS plugin. (An LMS, or learning management system, is the software that hosts your lessons, tracks learner progress, and handles enrollments.) Also, this guide focuses on the build itself; selling the course is its own topic, and I’ll point you to it at the right moment. One more thing worth noting up front: everything we’re about to do can be done with **Uncanny Agent, an AI assistant for WordPress**. We’ll build the course manually first so you understand every piece. Then, at the end, I’ll show you how Uncanny Agent could have built the same thing through plain text conversation in less than half the time. *Want to see what a finished LearnDash course looks like before you build one? Spin up our* [*LearnDash demo site*](https://learndash.uncannyowl.com) *>>>* ## **First things first: choosing the right platform for your online courses** Before you create your first lesson, there are two decisions you’ll have to make. I’ll cover them quickly, because most readers have already made at least one of them. ### **Decision 1: WordPress or a hosted platform?** You’re reading a guide about building an online course in WordPress, so you’re likely already leaning this way—but it’s worth a quick gut-check. **WordPress** wins when you want **full control** over your data, content, branding, site features, and per-student cost structures as you scale, with no platform taking a cut of every sale. Hosted platforms like Teachable, Thinkific, and Kajabi win when you’d rather someone else handle hosting, updates, and infrastructure, and you’re happy working within their templates and pricing. Neither is wrong, it just depends on how much control over your online courses you need and what your growth plans look like. ### **Decision 2: Which WordPress LMS plugin?** If you’ve settled on WordPress, the second decision is which LMS plugin to use as the platform for your courses. The major options include **LearnDash**, **MemberPress Courses**, **LifterLMS**, **Tutor LMS**, and **Sensei**, among others. Here’s the reassuring part: the fundamentals are common across all of them. Courses, lessons, topics, quizzes, certificates, and enrollments work the same way conceptually no matter which plugin you pick. The differences show up in the details—admin experience, reporting depth, group and team features, and the size of the surrounding ecosystem. For this walkthrough I’ll be using **LearnDash**. It’s the most widely deployed WordPress LMS with the most extensible ecosystem for customization and expanded functionality. Most importantly, the build pattern you’ll learn below transfers cleanly to other plugins if you eventually pick differently. ## **What you’ll need before you start** Building an online course in WordPress is like building anything else: you need to gather your materials first. If you already have a WordPress site running, you can clear this in a few minutes. - **A WordPress site.** If you don’t have one yet, you’ll need WordPress hosting and a domain first. That’s its own decision and the right host depends on your budget and traffic plans, so I won’t push one here ([I break down the options in this guide to the best WordPress web hosts](https://automatorplugin.com/the-best-wordpress-web-hosts/)). - **The LearnDash plugin.** Worth being upfront: LearnDash is a paid plugin, not free. You can [buy and download it directly from the LearnDash website](https://automatorplugin.com/share/learndash). For most beginner course creators, the Essentials license is the right place to start—you can always move up a tier later. [![LearnDash homepage on Liquid Web with the headline 'Turn knowledge into learner outcomes that last' and Try the live demo and See pricing buttons, beside a course interface mockup showing an Entrepreneurship Basics course with progress, modules, and student engagement stats.](https://www.uncannyowl.com/wp-content/uploads/2026/07/learndash-homepage-1030x757.webp "learndash-homepage")](https://www.uncannyowl.com/wp-content/uploads/2026/07/learndash-homepage.webp) - **A LearnDash-compatible theme.** Most well-maintained themes built for online courses or membership sites work fine, so I won’t single one out. If your current theme is actively maintained, it’s very likely already compatible. Once you’ve purchased LearnDash, installing it takes about a minute. From your WordPress Admin Dashboard, go to **Plugins > Add New > Upload Plugin**, select the LearnDash .zip file you downloaded after your purchase, then **Install** and **Activate**. Finally, add your license key under **LearnDash LMS > Settings > Licensing**. That’s everything you need in place. Now, before you click “Add New” on anything, let’s plan. ## **Plan your online course structure before you click anything** The single biggest mistake new course creators make—and why most of them never finish—is opening LearnDash and clicking buttons without a plan. But that’s not you. Spend 30 minutes on paper (or a blank doc), outlining your course first. It will save you hours and headaches later. Here’s what to sketch out before you touch the admin dashboard to make creating an online course in WordPress feel as easy as it should be: - **Your course title and a one-sentence promise.** What does the learner walk away knowing or able to do? If you can’t say it in one sentence, the course isn’t ready to build yet. - **A lesson framework** that moves the learner from where they start to where they want to end up. Think of each lesson as one meaningful step on that journey. - **Topics inside each lesson, if you need them.** A topic is a sub-unit *inside* a lesson—useful for breaking a long lesson into shorter, more digestible learning sessions. Small courses often don’t need them at all, while large courses only feel digestible with them. - **Quiz checkpoints** to reinforce the material that matters most before learners continue to the next lesson or topic. - **A completion certificate**, if it’s relevant to your audience and market. To keep every step in this walkthrough concrete, I’ll build a real course right alongside you. My course is for “Outdoorsman University”, a fictional educational institution for outdoor enthusiasts. Here’s the plan for my first course: - **Course:** *National Parks of Canada* - **Promise:** Learn how Canada’s national parks have evolved from prehistory to the present day, and discover the landscapes, ecosystems, wildlife, climates, and visitor experiences that make each park a must-visit destination for the committed outdoorsman. - **Lessons:** 48 lessons, one for each of Canada’s national parks and national reserves. - **Quizzes:** 288 quizzes, one quiz per topic within a lesson. - **Certificate:** the *Certificate of Completion*, awarded on any course completion. With that structure on paper, every click that follows has a clear purpose. Now, we build… ## **Creating an online course in WordPress with LearnDash** You have your materials and your blueprint—now it’s time to build. In LearnDash and other WordPress LMS plugins, courses are the top-level containers for everything else. Your lessons, topics, quizzes, and certificates all live inside the course or are associated with it, so this is where we start. ### **Step 1: Add a new course** From your WordPress Admin Dashboard, navigate to **LearnDash LMS** > **Courses** and then click **+ Add New Course**. ### **Step 2: Add your title, description, and featured image** LearnDash will take you to the “Course Page” tab. You can think of this tab as the one where you create your course’s front-facing identity. Start by entering your course title—in my case, “*National Parks of Canada*”. Then add a course description. Course descriptions are very much like product descriptions; they are marketing copy that also explain to prospective learners what they’d be signing up for by enrolling. Lead with your one-sentence promise, followed by a few short paragraphs. Finally, add your course’s featured image. [![LearnDash course page editor for 'National Parks of Canada' with the title, description, and course settings panel highlighted, showing a featured image of a mountain landscape with the course title overlaid and a Draft status.](https://www.uncannyowl.com/wp-content/uploads/2026/07/national-parks-of-canada-course-featured-image-1030x703.webp "national-parks-of-canada-course-featured-image")](https://www.uncannyowl.com/wp-content/uploads/2026/07/national-parks-of-canada-course-featured-image.webp) ### **Step 3: Configure the course settings and save** Next, you’ll want to configure your course settings. The **Settings** tab is where you’ll determine how the course behaves: - **Course enrollment.** This is how learners get in. Out of the box, LearnDash gives you five options: open, free, buy now, recurring, and closed. Select the one that best suits how you plan on enrolling learners. For now, I’ve left mine set to the default which is “Free”. - **Display and content options.** This controls the look and feel of the course. - **Access settings.** Determines who can access the course and for how long. Determine whether the course has prerequisite requirements and the period of time for which new enrollees have access to the course or whether the course is only available for a specified time period. - **Completion awards.** This is where you set the certificate and whether or not and how many course completion points the course is worth. You can leave this blank for now as we haven’t yet built a certificate. - **Course navigation settings.** This determines whether the course enrollees must move through the material in a linear fashion, or if they can jump around. For most courses, linear progression makes the most sense. - **LearnDash course grip settings.** Determines the values that are displayed on the front-end of your site within the LearnDash course grid. Once you’ve configured your course settings, click **Save draft**. Every step that follows will build off of this course, so you’ve just laid the foundation. ## **Building your first lesson** A lesson is a major unit of content inside a course—one meaningful step in the learner’s journey. In my running Outdoorsman University example, the first lesson in the “National Parks of Canada” course is “Banff National Park”. I’ll walk through building this first lesson in full; after that, you’ll repeat the same pattern for each lesson in your plan. ### **Step 1: Add a new lesson** From your WordPress Admin Dashboard, navigate to **LearnDash LMS** > **Lessons** and then click **+ Add New Lesson**. ### **Step 2: Add your title and featured image** Just as with your course, you’ll want to name your lesson and possibly give it a featured image so you can always identify it. ### **Step 3: Add your lesson content** Use the standard WordPress block editor to build the lesson body—the same editor you’d use for any page or post. Add text, images, video embeds, and any other blocks your teaching calls for. This is where your actual content lives, so take your time here. [![LearnDash lesson editor for a Banff National Park lesson showing the title, introductory text, and an embedded Parks Canada video, with the lesson settings panel displaying a featured image.](https://www.uncannyowl.com/wp-content/uploads/2026/07/banff-national-park-lesson-1030x654.webp "banff-national-park-lesson")](https://www.uncannyowl.com/wp-content/uploads/2026/07/banff-national-park-lesson.webp) ### **Step 3: Associate the lesson with your course** Open the lesson’s **Settings** tab and scroll down to **Lesson Access Settings**. In the dropdown next to “Associated Course” select the course(s) that this lesson should be a part of. In my running example, that’s “*National Park of Canada*”. This is the step that tells LearnDash where the lesson belongs—miss it and your lesson floats unattached to any course. ### **Step 4: Publish the lesson** Once the content and course association(s) are set, click **Publish**. (Publishing the lesson is fine—learners still can’t see it until the course itself is published and they’re enrolled.) That’s the full pattern for a LearnDash lesson. Repeat these steps for each lesson in your course plan. If your course is anything like mine—48 lessons and counting—you’re probably wondering if there’s a better way to build it. And there is… *Looking for a faster way to create online courses? Build courses in WordPress using Uncanny Agent* *Instead of opening a blank editor over and over again, just tell Uncanny Agent, your AI assistant in WordPress:* *“Draft 48 lessons—one for each national park and national preserve in Canada—and set the associated course for each lesson to ‘National Parks of Canada’.”* *Agent will spin up the lessons for you in a fraction of the time.* [*Try Uncanny Agent for yourself >>>*](http://automatorplugin.com/pricing) ## **Add topics inside lessons** A topic is a sub-unit *inside* a lesson—a way to break a long lesson into shorter, more digestible learning sessions. Topics are optional. A short, focused lesson may not need any; a long one is far easier to work through when it’s split into a few topics. Use topics when a lesson is long enough that a learner would naturally want to break it across multiple sittings, or when a single lesson contains a few distinct sub-concepts you’d like to track completion on individually. ### **Step 1: Add a new topic** From your WordPress Admin Dashboard, navigate to **LearnDash LMS** > **Topics** and then click **+ Add New Topic**. ### **Step 2: Add content and associate it** Build the topic content in the block editor exactly as you did for the lesson. Then, under the topic’s **Settings** tab, set both its **Associated Course** and its **Associated Lesson**—this is the only real difference from building a lesson. The topic needs to know which lesson it lives under. [![LearnDash topic access settings with the Associated Course set to National Parks of Canada and Associated Lesson set to Banff National Park highlighted, above topic release schedule options set to Immediately.](https://www.uncannyowl.com/wp-content/uploads/2026/07/learndash-topic-associated-course-and-lesson-1030x725.webp "learndash-topic-associated-course-and-lesson")](https://www.uncannyowl.com/wp-content/uploads/2026/07/learndash-topic-associated-course-and-lesson.webp) ### **Step 3: Publish your topic** Once you’ve added your content and associated the topic with the right course(s) and lesson(s), click **Publish**. Topic configuration is identical to lesson configuration—only the parent association differs. Add as many topics under each lesson as your structure calls for, or skip topics entirely if your lessons are short enough to stand on their own. ## **Build your first quiz** A quiz is an assessment unit. In LearnDash you can attach quizzes to lessons, topics, or have them sit at the course level on their own. Quizzes reinforce learning, can gate progression (a learner has to pass before moving on), and—for some courses—feed into a grade or certificate. Building a quiz is a two-part job: first the quiz container, then the questions inside it. ### **Step 1: Create the quiz container** From your WordPress Admin Dashboard, navigate to **LearnDash LMS** > **Quizzes** and then click **+ Add New Quiz**. Give the quiz a title—for me, that’s “History of Banff National Park”. Under the **Settings** tab, set the **Associated Course** and, if it belongs to a specific lesson, its **Associated Lesson**. Configure the basics here too: passing score, whether learners can retake it, etc. ### **Step 2: Build your quiz** To start creating your quiz, navigate to the **Builder** tab and click **New Question**. LearnDash and other LMS plugins give you options for the kinds of questions that your quizzes can have. Select from: - Single choice (one right answer from a selection) - Multiple choice (one or more right answers from a selection) - “Free” choice - “Sorting” choice - “Matrix Sorting” choice - Assessment - Fill in the blank - Essay / Open answer [![LearnDash quiz builder for 'History of Banff National Park' showing a single-choice question about what led to the park's creation, with four answer options and the Cave and Basin hot springs discovery marked correct, alongside the quiz settings panel in Draft status.](https://www.uncannyowl.com/wp-content/uploads/2026/07/history-banff-national-park-quiz-question-1030x854.webp "history-banff-national-park-quiz-question")](https://www.uncannyowl.com/wp-content/uploads/2026/07/history-banff-national-park-quiz-question.webp) Add as many questions as your assessment calls for—typically 5 to 15 for a lesson-level quiz, more for a course-level final. Then create additional quizzes using the same container-then-questions pattern: one quiz per lesson plus a cumulative final, in our running example. **Save** the quiz once your questions are in. ## **Set up a completion certificate** A certificate gives your learners something tangible to walk away with—and, for some audiences, something to share on LinkedIn or submit for professional credit. Here’s how to create one and attach it to your course. ### **Step 1: Create the certificate** From your WordPress Admin Dashboard, navigate to **LearnDash LMS** > **Certificates** and then click **+ Add New Certificate**. ### **Step 2: Design it** Use the visual editor or the code editor to style your certificate. For a full walkthrough on designing certificates in LearnDash, [check out this detailed guide from Liquid Web](https://www.liquidweb.com/help-docs/software/learndash/certificate/create-certificate/#previewing_certificates). [![LearnDash certificate editor for 'Certificate of Completion: National Parks of Canada' showing the Outdoorsman University certificate design with a display_name shortcode for the recipient, published and set to public.](https://www.uncannyowl.com/wp-content/uploads/2026/07/certificate-of-completion-national-parks-of-canada-1030x634.webp "certificate of completion-national-parks-of-canada")](https://www.uncannyowl.com/wp-content/uploads/2026/07/certificate-of-completion-national-parks-of-canada.webp) ### **Step 3: Attach it to your course** Save the certificate, then go back to your course at **LearnDash LMS > Courses** and select the course that you just built. In the **Settings** tab, scroll down to **Completion Awards** and set the “Course Certificate” to the one you just created. [![LearnDash Completion Awards settings with the Course Certificate set to 'Certificate of Completion: National Parks of Canada' and Course Completion Points set to 1 point.](https://www.uncannyowl.com/wp-content/uploads/2026/07/completion-awards-certificate-1030x320.png "completion-awards-certificate")](https://www.uncannyowl.com/wp-content/uploads/2026/07/completion-awards-certificate.png) **Save** your course. Now learners who complete the course will now earn the certificate automatically. (Certificates can also be attached to individual quizzes, which is useful if you want to reward intermediate milestones as well as full completion.) ## **Set up enrollment** Enrollment is how a learner gets access to your course. LearnDash gives you several enrollment modes, and the right one depends entirely on your business model: - **Open:** anyone with the URL can enroll, no account required. - **Free:** requires a free account, but no payment. The default for genuinely free courses. Good for free lead-generation courses. - **Buy now:** a one-time purchase. Requires an integrated payment processor (Stripe, PayPal) or WooCommerce. - **Recurring:** a subscription. Same payment-integration requirements as “Buy now”. - **Closed:** manual enrollment only; you add learners yourself. Common for corporate and B2B training. ### **Step: Set your access mode** For this walkthrough, we’ll use **Free**, so you can publish and test the whole course without setting up payment plumbing first. Open your course settings, find **Access Mode**, select **Free**, and save. ## **Publish and test** You’ve built everything. It’s almost time to teach—but first, let’s pretend to be students. Open your course at **LearnDash LMS > Courses**, switch its status from **Draft** to **Published**. Now test it as a learner, not as an admin—this is the step most people skip and later regret: - Log out, or open an incognito/private window. - Create a test account on your site. - Enroll in the course. - Walk through a lesson, complete a topic, take a quiz, and confirm the certificate fires correctly on completion. Almost every new course creator catches at least one configuration issue during this test pass—a missing association, a quiz that won’t unlock, a certificate that doesn’t trigger. Far better to find it yourself than to hear about it from your first paying student. ## **A faster way: building courses with Uncanny Automator and Uncanny Agent** Up to this point, I’ve assumed that you’ve been clicking through every step of building an online course in WordPress with me. While it’s good to work your way through building courses manually to understand their structure, after a few lessons and topics, the process gets tedious. And time consuming. There is, thankfully, a faster path for course creators who’d rather focus more on content and less on clicking. That faster path involves using **Uncanny Agent**, the most capable AI assistant for WordPress sites. ![](https://www.uncannyowl.com/wp-content/uploads/2026/06/automator-homepage-tagline.gif "automator-homepage-tagline") **Uncanny Automator** is the #1 AI + automation plugin for WordPress. Using combinations of triggers and actions called *recipes*, Automator connects all of your favorite apps and plugins to execute workflows and automate repetitive tasks. For course creators, that means automating tasks like “when a learner enrolls in a course, add them to a **Mailchimp** list and tag them based on the course they signed up for”. **Uncanny Agent** is the AI assistant for WordPress that works alongside Automator’s recipes. Agent can build your recipes from plain text, complete tasks on your tasks, and surface your site data from simple questions. For course creators, that means you can build LearnDash courses, lessons, and topics through plain conversation instead of clicking through menus yourself. You can even give Agent your research and teaching materials and tell it to add the content to your courses, all from plain-language prompts. The click-by-click LearnDash build is straightforward, but it’s slow and tedious—my course had almost 50 lessons! Instead of trying to create all of those lessons myself or uploading a CSV and praying that it imports properly, I just asked Uncanny Agent to build the lessons for me. With those lessons built, I was able to simply click into them and start adding the content that I’m actually passionate about. You still review and refine everything; Agent drafts, you polish. But the time saved on setup is real. Three things Agent and Automator are especially good at during course creation: - **Scaffolding course structures from a brief.** *“Create a course with these six lessons and these quiz checkpoints”* → Agent does the clicks. - **Drafting first-pass content.** Lesson outlines, topic descriptions, quiz questions, certificate copy—Agent generates the starting material; you edit. - **Wiring up enrollment workflows.** *“When a new learner enrolls, add them to my CRM, post a message to the sitewide BuddyBoss activity channel, and create and email a unique coupon code to them three weeks after their enrollment for 25% off of the “National Parks of the World” course”*. Agent works with the Recipe Builder to create your automated workflow. [*Try Uncanny Automator Lite (free for life)*](https://wordpress.org/plugins/uncanny-automator/) *or get a* [*Pro license and start handing off work to Uncanny Agent >>>*](http://automatorplugin.com/pricing) ## **Teaching beyond the course** Up to this point, you’ve built a basic online course in WordPress. That’s enough to get you started. But I’m willing to bet my new certificate that you want to build more than just one course. And you want your courses to be as dynamic, flexible, and powerful as your teaching style. For that, you’ll need to extend the capabilities of LearnDash with plugins that enhance the experience for everyone: your learners, instructors, group leaders, and (not least of all) yourself! Here’s the shortlist of the best plugins to extend your WordPress LMS course capabilities, organized by who benefits and what changes for them. ### **For learners — a smoother experience** **[Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/)** adds dozens of modules that close common LearnDash front-end gaps: a course dashboard, learner transcripts, login redirects, autocomplete features, enhanced course grids, and bulk certificate generation. **[Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/)** turns LearnDash groups (LearnDash’s term for a cohort of learners under a shared group leader) into real cohorts with peer identity, group-leader visibility, and group-only features including dedicated forums. ### **For instructors and admins — better visibility and control** **[Tin Canny Reporting for LearnDash](https://www.uncannyowl.com/downloads/tin-canny-reporting/)** delivers detailed learner analytics and supports SCORM (a standard format for eLearning content from authoring tools like Articulate Storyline or Adobe Captivate) and xAPI (the modern successor to SCORM, capable of tracking richer learner activity). If you need to know what’s going on inside your courses, this plugin is essential. **[Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/)** tracks and awards continuing education credits (CEUs, CPDs, CLEs, CMEs, and others, depending on industry). If you teach in a regulated profession or need a robust learning record store (LRS) within WordPress, this is the piece that makes your course count. ### **For scaling to organizations** **[Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/)** also powers B2B sales. Sell seat-based licenses to organizations, give their admin a front-end management page, and let them manage their own learners without ever touching your WordPress admin. **[Uncanny Redemption Codes](https://www.uncannyowl.com/downloads/uncanny-codes/)** enables code-based bulk enrollment. Ideal for promotional campaigns, event giveaways, or distribution to organizations that handle their own provisioning. ### **For automating everything else** **[Uncanny Automator](https://automatorplugin.com/)** connects LearnDash to hundreds of other plugins and apps—Mailchimp, Stripe, Discord, Slack, Google Sheets, Asana, LinkedIn, OpenAI, and more. Automator’s deep integration with LMS plugins like LearnDash lets you even create automations based on quiz results. From enrollment to alumni, take the tedium out of managing your online courses with Uncanny Automator. ### **Get the LearnDash stack as a bundle** [The **All Access Pass**](https://www.uncannyowl.com/all-access-pass/) bundles every premium Uncanny Owl LearnDash plugin—Toolkit Pro, Uncanny Groups, Tin Canny, Uncanny CEUs, and Uncanny Codes—at a significant discount. (You’ll also get a special discount on Uncanny Automator.) It’s the natural choice once you know you want more than one. ## **Final thoughts** You’ve built a complete WordPress course from zero—LearnDash for the foundation, your own expertise for everything that matters. More importantly, you now know the build pattern: course, lesson, topic, quiz, certificate, enrollment. That pattern doesn’t change. You can repeat it for every course you ever build on this stack. One honest thing to carry with you: your first version isn’t the version your students will remember. Course creation is iterative. Ship it, watch how real learners move through it, see where they get stuck or drop off, and refine. The stack you’ve just built is made for exactly that kind of iteration and tools like Uncanny Agent make each round of changes faster than the last. So don’t wait for perfection: build your first online course in WordPress today and let your students teach you the rest. ## **Frequently Asked Questions** **How can I build online courses with AI?** AI is a real shortcut for the structural work of course building—scaffolding outlines, drafting lessons and topics, generating quiz questions, and writing learner-facing copy. The most direct path on WordPress is **Uncanny Agent**, an AI assistant for WordPress powered by **Uncanny Automator**. Agent completes tasks alongside your automations—building LearnDash courses from prompts, drafting content, generating quiz questions, and wiring up enrollment workflows. You still review and polish the output, but Agent handles the click-heavy scaffolding so you can focus on the teaching. **How long does it take to build an online course on WordPress?** The technical build—the part this post covers—usually takes a few hours once your plan is solid (less if you scaffold it with Agent). The slow part is creating the content itself: writing lessons, recording video, and designing quizzes that actually assess what you intend. Most new course creators spend roughly 80% of their time on content and 20% on the platform. Plan accordingly. **Can I switch LearnDash for a different WordPress LMS plugin later?** Usually yes, with some effort. Most LMS plugins share the same core concepts (courses, lessons, quizzes), but migrating between them means remapping content and re-enrolling learners. Pick the plugin you intend to stay on for at least the next two to three years. For most WordPress course creators that’s LearnDash, but explore alternatives if you have specific requirements it doesn’t serve well. **Can I run my course as a free trial, then convert students to paid?** Yes. The simplest pattern is a short, free “trial course” that teaches enough to be genuinely useful and ends with a clear invitation to enroll in the full paid course. LearnDash’s enrollment modes support this directly. **How do I make my course look and feel professional?** Three things matter most: a clean, well-maintained WordPress theme; consistent branding across your lessons, quizzes, and certificate; and a polished learner-facing front end. For that last one, **Uncanny Toolkit Pro** is the most common upgrade. Toolkit Pro provides professional features like a Course Dashboard, autocompletion options for lessons and topics, enhanced grids, and learner transcripts. Even the free version of Uncanny Toolkit adds features like login redirect to improve the user experience. Those are the features that make your courses feel like they are part of a real LMS rather than a WordPress site with courses bolted on. **I teach a regulated profession (healthcare, legal, real estate, etc.)—does LearnDash support continuing education credits?** LearnDash doesn’t handle continuing education credits on its own. **Uncanny Continuing Education Credits** is the standard add-on for awarding and tracking CEUs, CPDs, CLEs, CMEs and the like, with printable certificates and credit-tracking reports that map to common compliance requirements. **Categories:** eLearning --- ### [10 Years of the Uncanny Toolkit: A Decade of LearnDash Innovation](https://www.uncannyowl.com/10-years-of-the-uncanny-toolkit-a-decade-of-learndash-innovation/) **Published:** June 22, 2026 **Author:** Ken **Content:** Ten years ago, we [introduced the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/uncanny-learndash-toolkit/) to the WordPress.org repository — a small, free collection of modules designed to close the gaps in LearnDash and give course creators a better learner experience out of the box. We had no idea what it would grow into. A decade later, Toolkit is the #1 LearnDash addon, trusted by more than 20,000 businesses, and it sits at the center of an [eLearning plugin suite](https://www.uncannyowl.com/all-access-pass/ "All Access Pass") serving organizations around the world. To celebrate this anniversary, we’re walking back through the most important moments of the last decade — the moments in which you helped shape not just our product line, but the broader eLearning space in WordPress. (Plus, we’ve got a sneak preview of what the next 10 years could look like.) Grab a coffee. This is going to be a fun trip. --- ## Year 1-2 (2016-2017): Laying the foundation This is where our story started; with a free plugin, a paid upgrade, and the first WordPress plugin to bring real xAPI and SCORM support to LearnDash. - [**A free toolkit arrives for LearnDash**](https://www.uncannyowl.com/uncanny-learndash-toolkit/) — Uncanny Toolkit launches on WordPress.org with a collection of essential enhancements: front-end login, log-in/log-out menu links, course resume, breadcrumbs, conditional content, and more. An immediate and polished upgrade for any LearnDash site, no code required. ![Uncanny LearnDash Toolkit 3.0](https://www.uncannyowl.com/wp-content/uploads/2019/01/Uncanny_LearnDash_Toolkit_3_0.png "Uncanny_LearnDash_Toolkit_3_0 - Uncanny Owl") - [**A premium toolkit launches for serious LearnDash sites**](https://www.uncannyowl.com/uncanny-learndash-toolkit-pro/) — Uncanny Toolkit Pro debuts with advanced modules for organizations that need more than what the free edition offered. This was the start of a paid product line built entirely on customer feedback—your feedback. - [**The first xAPI Learning Record Store for WordPress**](https://www.uncannyowl.com/tin-can-lrs-learndash-report-toolkit/) — Tin Canny Reporting launches with a native Tin Can (xAPI) LRS, drill-down learner reports, and support for Storyline, Captivate, and H5P content. WordPress gained a real enterprise-grade eLearning reporting platform for the first time. - [**Native SCORM support for LearnDash**](https://www.uncannyowl.com/introducing-native-scorm-support-wordpress/) — Tin Canny expands beyond xAPI to handle SCORM content natively. Corporate training teams could finally deliver their existing authoring-tool output inside a WordPress LMS. - [**Bulk user import with course enrollment**](https://www.uncannyowl.com/import-learndash-users/) — Import hundreds or thousands of learners from a CSV file and auto-enroll them in courses and groups or import user info to custom user fields. A feature that has been a lifesaver for many organizations that need to manage bulk enrollments. --- ## Year 3-4 (2018-2019): The suite takes shape–and Uncanny Automator is born With the foundation in place, we expanded into three new product categories — B2B group management, code-based enrollment, and compliance credits — and modernized the whole suite for Gutenberg. - [**A B2B management layer for LearnDash groups**](https://www.uncannyowl.com/learndash-group-management/) — Uncanny Groups launches with front-end group management, seat tracking, and group leader reports. This turned LearnDash into a real B2B training platform and opened up selling courses to organizations rather than just individuals. ![LearnDash Group Management](https://www.uncannyowl.com/wp-content/uploads/2017/09/LearnDash_Group_Management.png "LearnDash_Group_Management - Uncanny Owl") - [**Code-based self-enrollment for LearnDash**](https://www.uncannyowl.com/uncanny-learndash-codes/) — Uncanny Codes launches with generated redemption codes that enroll users in courses or groups. Delivered voucher programs, bulk sales, reseller distribution, promotional course promo codes and more. - [**A dedicated plugin for CE credit tracking**](https://www.uncannyowl.com/continuing-education-credits-for-learndash/) — Uncanny Continuing Education Credits launches, with credit assignment per course, compliance reporting, and CE certificates. Built for professional associations and regulated industries with input from our growing user base. - [**Subscription-based group licensing**](https://www.uncannyowl.com/uncanny-learndash-groups-part-2/) — Uncanny Groups introduces recurring group licenses via WooCommerce Subscriptions. Training companies could now sell ongoing team access rather than only one-time purchases. - [**Uncanny Automator launches**](https://www.uncannyowl.com/uncanny-automator-is-here/) — After nine months of development, Uncanny Automator, the first Automation plugin for WordPress, shipped with 65 triggers and actions across 15 plugins, plus Zapier webhook support. --- ## Year 5-6 (2020-2021): Scale, polish, and Codes expands By year five, our suite was running on serious production sites. This chapter is about making it faster, more modern, and deeply connected — including one of the most consequential changes we’ve made: tying Codes to Uncanny Automator. - [**A modern front-end login experience**](https://www.uncannyowl.com/announcing-the-uncanny-learndash-toolkit-version-3-0/) — Uncanny Toolkit reimagined Frontend Login with reCAPTCHA support, modern styling, AJAX submission, modal support, and a Gutenberg block. Learners get a faster, more polished first touchpoint. - [**Sell redemption codes through WooCommerce**](https://www.uncannyowl.com/uncanny-codes-4-0-for-wordpress/) — Uncanny Codes added a dedicated WooCommerce product type for selling code batches directly to customers – the first plugin to enable the sale of redeemable codes on WordPress. - [**Trigger Automator recipes from a code redemption**](https://www.uncannyowl.com/uncanny-codes-4-0-for-wordpress/) — Uncanny Codes was also extended to connect deeply to Uncanny Automator, so a code redemption can fire any combination of actions across hundreds of integrated apps. Uncanny Codes evolved from a LearnDash enrollment tool into a general-purpose access-granting engine. - [**Award CE credits for virtually anything**](https://www.uncannyowl.com/award-ceu-credits-for-anything/) — CEUs added the ability to manually enter CE credits for anything – making it a much more versatile solution. It was also integrated with Uncanny Automator, so credits could be automatically awarded for submitting a form, earning a badge, making a donation, or attending a live event — not just course completion. CE tracking expanded well beyond LearnDash. - [**Full xAPI and SCORM dispatch file support**](https://www.uncannyowl.com/expanded-scorm-and-xapi-tin-can-support-for-learndash/) — Tin Canny was updated to handle virtually any standards-compliant eLearning module, including dispatch files. LearnDash became a drop-in destination for content produced by any major authoring tool. --- ## Year 7-8 (2022-2023): Certificates, commerce, and compliance Our suite matured into enterprise territory. This chapter is defined by bulk operations, multi-license purchases, and compliance records that survive real-world course retakes. - [**Tin Canny gets Automated**](https://automatorplugin.com/tin-canny-ifttt-integrately-webhooks-and-more/) — Uncanny Automator gave Tin Canny its own integration with a trigger that fires when a learner hits a specific score on an interactive module (Storyline, Rise, Captivate, iSpring, and more). Module scores could now drive any downstream action — unlocking remedial or advanced content, awarding credits, or firing completions in another platform. - [**Automated LearnDash Group Management arrives**](https://automatorplugin.com/knowledge-base/integration/uncanny-groups/) — Uncanny Groups also got its own Automator integration with triggers for group creation, group key redemption, and seat changes, plus actions to create groups and add or remove seats. - [**Preserve CE records across course resets**](https://www.uncannyowl.com/uncanny-ceus-archive-quiz-results/) — CEUs was updated to keep historical credit records intact when learners reset or retake courses. A compliance-critical change for associations running annual recertification programs. - [**Bulk certificate downloads**](https://www.uncannyowl.com/toolkit-pro-4-0-generate-learndash-certificates-in-bulk/) — Toolkit Pro now let administrators download ZIPs of PDF certificates for entire groups, courses, or quizzes. Replaced what used to be a multi-hour manual export job with one click. ![Generate LearnDash Course Certificates](https://www.uncannyowl.com/wp-content/uploads/2023/04/Generate-Bulk-LearnDash-Certificates.png "Generate Bulk LearnDash Certificates - Uncanny Owl") - [**Single-page LearnDash courses**](https://www.uncannyowl.com/single-page-learndash-courses-now-available/) — A free Toolkit module enabled single-page courses with no lessons or topics. Now a standard layout option used on thousands of sites for microlearning or SCORM/xAPI-powered courses. - [**Per-group topic drip scheduling**](https://www.uncannyowl.com/drip-learndash-topics-autocomplete-formidable-forms/) — On top of group-based lesson drip, Toolkit Pro added group-based topic dripping so different cohorts could get access to topics on different calendar dates. - [**Front-end learner transcripts for group leaders**](https://www.uncannyowl.com/transcripts-for-group-leaders-live-timer/) — Toolkit Pro gave group leaders direct access to printable transcripts for everyone in their group, without handing them WordPress admin access. A key B2B reporting unlock. --- ## Year 9-10 (2024-2026) and beyond: Foundations for the next decade The most recent chapter is about rebuilding the oldest parts of the suite so they’re ready for the next ten years — new reporting architectures, new admin UIs, and new commercial flexibility. - [**A full core rework of Tin Canny’s reporting engine**](https://www.uncannyowl.com/tin-canny-reporting-5-0-a-major-milestone-in-learndash-reporting/) — Tin Canny got a reporting core rebuilt from the ground up with all major libraries updated. The biggest Tin Canny release since native SCORM support arrived, and the foundation for the next generation of reporting features. - [**A new standardized admin UI**](https://www.uncannyowl.com/uncanny-redemption-codes-5-0-enhanced-flexibility-performance-and-a-visual-overhaul/) — Uncanny Redemption Codes debuted a new admin interface design that will roll out across the full Uncanny Owl suite. A consistent, modern user experience across every plugin. ![](https://www.uncannyowl.com/wp-content/uploads/2026/03/uncanny-codes-ui-update.png "uncanny-codes-ui-update - Uncanny Owl") - [**Shareable public transcript links**](https://www.uncannyowl.com/whats-new-in-uncanny-toolkit-and-toolkit-pro/) — Uncanny Toolkit Pro introduced shareable learner transcript URLs, so employers or licensing bodies could easily verify course completion without granting site access. - [**Course timer with automatic logout**](https://www.uncannyowl.com/whats-new-in-uncanny-toolkit-and-toolkit-pro/) — The Simple Course Timer now logged inactive learners out automatically, protecting accurate time-on-task tracking for compliance training. --- ## Ten years in Looking back at this list, the thing that stands out isn’t any single release. It’s the pattern: every major feature in Toolkit, Toolkit Pro, Tin Canny, Groups, Codes, and CEUs came from real customer feedback — requests that grew into modules, modules that grew into plugins, plugins that grew into a platform. A lot of what’s now taken for granted in LearnDash started as a feature request from someone running a training business. To everyone who’s built a course, run a compliance program, launched a training business, or filed a feature request on our site: thank you. Our plugin suite is what it is because of you. Here’s to the next ten years. --- *The free Uncanny Toolkit remains available on* [*WordPress.org*](https://wordpress.org/plugins/uncanny-learndash-toolkit/)*. For Uncanny Toolkit Pro and the rest of the suite, see the* [*All Access Pass*](https://www.uncannyowl.com/all-access-pass/)*.* **Categories:** Uncategorized --- ### [How to Add a Community to Your Online Courses in WordPress (Without Switching Platforms)](https://www.uncannyowl.com/how-to-add-a-community-to-your-online-courses-in-wordpress-without-switching-platforms/) **Published:** June 5, 2026 **Author:** Brendan Da Costa **Content:** Adding community to your online courses is a proven way to increase engagement, build trust, and improve completion rates. Students who feel connected to other learners—and to someone actively facilitating the experience—show up more often, finish what they started, and come back for more. The harder question is how to deliver that on WordPress. **LearnDash** and other LMS plugins like **Tutor LMS** or **LearnPress** handle the actual content delivery—courses, lessons, quizzes, certificates, basic group structure. But they aren’t community platforms. So how do you add community elements like forums, chats, webinars, and the like to your LMS? And how do you get all of those pieces to stay in sync as enrollments shift? The good news is that WordPress has lots of plugins designed to help you build a thriving community around your online courses. You don’t have to migrate to Circle, Skool, or Mighty Networks to build an engaging digital campus life. In this article, I’ll show you how **Uncanny Groups** for LearnDash and **Uncanny Automator** work together to help you build the community your learners have been asking for.*Want to start building your online course community right now?* [***Get Uncanny Groups***](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/)***and*** [***download Uncanny Automator***](https://wordpress.org/plugins/uncanny-automator/) ***for free >>>*** ## **The two components of online course communities** No two communities are the same—but the **infrastructure** that supports them and the **experience** that they deliver usually are. First, the infrastructure of your LMS—whether that’s LearnDash, LearnPress, or another plugin—needs to reflect the community that you want to build. This controls everything from how and where learners enroll in courses, to what they can see and interact with. LearnDash has some limited group functionality, but it’s a far cry from the full scaffolding you need to support an online community. Next, you need the experience that sits on top of that infrastructure—the actual place your members come together and talk to each other, whether on your WordPress site or in a separate community platform.In short, **Uncanny Groups** handles the “infrastructure” side of things, creating the framework for your community on the back-end and operational side of your site. What you learners experience—the seamless sync between enrollments and platforms like BuddyBoss—is handled by **Uncanny Automator**. ## **Three types of community to consider before you build** As I said before, no two communities are the same. Some online course communities revolve around webinars. Others center around lively forums. A growing number of them resemble full-fledged social platforms with profiles, chats, feeds, and more. Broadly speaking, you can break these down into three types of communities. ### **Cohorts and Learning Groups** These types of communities consist of groups of learners moving through the same material together—a January 2026 cohort working through your flagship program, the Acme Corp leadership team rolling out compliance training, for example. Cohorts matter most when the people buying course access are already buying in groups. These are usually B2B sales where one company purchases batches of seats for employees, or firms in regulated industries like healthcare and financial services. In all of those cases, the cohort isn’t just a roster of names—it’s the unit of sale and the unit of operation. ### **Forums and Discussions** Forums provide learners with a platform where they can come together to discuss course material, learning experiences, and share insights. Someone gets stuck on a specific lesson, and another learner who got past that same point last week answers the question. Forums and discussion boards are what many course creators and eLearning admins rely on to turn static course material into interactive learning experiences. ### **Membership Hubs** Membership hubs (BuddyBoss, PeepSo, etc.) create the social space your learners spend time in beyond any one course. They provide real-time chat, member profiles, activity feeds, and a brand presence that lives between your course offerings. Membership hubs are what most people have in mind when they say they want to build “a community” around their work, not just around one program. The elements of each type of online course community that you want to implement on your own site will determine which tools you need and how you use them. ## **Building cohorts and learning groups with** [**Uncanny Groups**](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) **for LearnDash** Cohorts are where most online course communities start. LearnDash has a built-in concept of a group (its term for a cohort of learners sharing access to a set of courses), but the built-in functionality is bare-bones. You can create a group, assign courses, and add learners by hand. That’s about where it ends. Uncanny Groups for LearnDash extends that starting point into a full cohort management system you can actually sell from, operate in, and report on. [![Uncanny Groups for LearnDash landing page with feature icons for B2B sales, reporting, seat management, and group hierarchies, plus a Get Uncanny Groups Now button.](https://www.uncannyowl.com/wp-content/uploads/2026/06/uncanny-groups-page-1-1030x681.png "uncanny-groups-page")](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) ### **Group leaders and front-end management** A group leader—LearnDash’s term for a designated cohort facilitator—is the person who actually runs the cohort day-to-day. With Uncanny Groups, group leaders work from a front-end dashboard on your site, not from WordPress admin. They can add and remove learners, view individual and group progress, grade assignments, and pull reports on their cohort’s activity. [![Uncanny Groups front-end report for Acme Corp. showing three LearnDash courses, a user table with nine members and their progress statuses, and a group leaders section listing one leader.](https://www.uncannyowl.com/wp-content/uploads/2026/06/uncanny-groups-front-end-report-767x1030.webp "uncanny-groups-front-end-report")](https://www.uncannyowl.com/wp-content/uploads/2026/06/uncanny-groups-front-end-report-scaled.webp) For a B2B sale, this is the feature that lets your client manage their own people. A training coordinator at Acme Corp logs in, sees who’s stalled, and follows up directly. You’re not in the middle of it. For a compliance program, the same dashboard is what lets a designated training officer prove who completed what and when, without asking you for CSV exports every quarter. ### **Group registration and B2B licensing** Group registration allows communities within your broader platform to stick together from the beginning. Uncanny Groups adds pre-configured group licenses through WooCommerce, allowing group leaders to purchase seats in bulk. Group leaders then download enrollment keys for their cohort and distribute them to learners, who self-register and redeem the key on your registration form. ### **Native BuddyBoss group sync** If your community ends up living on BuddyBoss, Uncanny Groups syncs LearnDash group membership to BuddyBoss social groups natively. When a learner joins a LearnDash group, they’re added to the corresponding BuddyBoss social group automatically. When they leave, they’re removed. If you’re already running a BuddyBoss community alongside LearnDash, this is the missing piece that connects learning to social engagement. Cohorts stay in sync without you doing anything. ## **Adding forums and discussions** Cohorts give your community a shape. Forums and discussions give it a voice. The lightweight option is to use **bbPress forums** (it’s [free to download from the WordPress.org repository](http://wordpress.org), by the way), which Uncanny Groups can attach directly to a LearnDash group. When you turn on group forums, every member of that cohort gets access to a private discussion space tied to their courses. New members are added automatically when their seat is assigned. When they’re removed from the group, they lose access to the forum too. No second user database, no second login. [![Acme Corp. Team Forum powered by bbPress showing ten discussion topics from group members about LearnDash courses and Automator workflows, with a new topic creation form below.](https://www.uncannyowl.com/wp-content/uploads/2026/06/uncanny-groups-bbpress-forums-631x1030.webp "uncanny-groups-bbpress-forums")](https://www.uncannyowl.com/wp-content/uploads/2026/06/uncanny-groups-bbpress-forums-scaled.webp) For organizations that want richer conversation than bbPress provides—threaded replies, mentions, reactions, media uploads—**BuddyBoss** is usually the next step up. BuddyBoss adds full social-network functionality to WordPress: profiles, activity feeds, real-time notifications, private messaging, and group-level forums that look and feel closer to Facebook Groups than a traditional bulletin board. [![This is where the infrastructure and experience layers we mentioned earlier start to separate cleanly. Uncanny Groups owns the infrastructure: who’s in which cohort, what courses they have access to, when their access expires. BuddyBoss owns the experience: where they actually talk to each other. Uncanny Groups’ BuddyBoss sync keeps the two in lockstep so no one falls through the cracks. If you want forums but don’t want a separate community plugin, bbPress through Uncanny Groups is enough to get started. If you want feeds, messaging, and a real social experience, BuddyBoss is the natural pairing—and the sync between the two is already built.](https://www.uncannyowl.com/wp-content/uploads/2026/06/buddyboss-homepage-1030x588.webp "buddyboss-homepage")](https://www.uncannyowl.com/wp-content/uploads/2026/06/buddyboss-homepage.webp) ## **Building membership hubs with Uncanny Automator** Cohorts and forums are scoped to a specific course or program. Membership hubs are evergreen—the space members spend time in for as long as they’re members, regardless of which course they’re working through this month. A membership hub usually lives on a BuddyBoss social group, a Discord server, a Slack workspace, or something similar. The challenge isn’t picking the platform—it’s keeping membership accurate and the activity meaningful as people move through your courses. That’s where [**Uncanny Automator**](https://www.automatorplugin.com) earns its place in the stack. [![](https://www.uncannyowl.com/wp-content/uploads/2026/06/automator-homepage-tagline.gif "automator-homepage-tagline")](https://www.uncannyowl.com/wp-content/uploads/2026/06/automator-homepage-tagline.gif) Automator is the experience-layer connector. It sits between LearnDash and your community platform of choice and uses no-code recipes (i.e., automations) to wire them together. A few examples of what that looks like in practice: - **Auto-enroll new members in your hub.** When a learner is added to a LearnDash group (or purchases a course, completes onboarding, or submits a registration form), Automator adds them to the right BuddyBoss group, Discord channel, or Slack workspace in the same step. [![Uncanny Automator recipe that adds users to the automator Slack channel when they enroll in the Content Automation for Creators LearnDash course, with both trigger and action set to Live.](https://www.uncannyowl.com/wp-content/uploads/2026/06/add-learndash-user-to-slack-channel-1030x614.webp "add-learndash-user-to-slack-channel")](https://www.uncannyowl.com/wp-content/uploads/2026/06/add-learndash-user-to-slack-channel.webp) - **Promote learners as they progress.** When a member completes a foundational course, Automator can move them into an “alumni” group, set the user’s Xprofile data in BuddyBoss and tag them as an alumni in your CRM. - **Celebrate milestones in the feed.** When someone passes a certification quiz or earns a certificate, Automator can post a congratulatory update to the activity feed, mentioning the learner—turning private achievements into community moments. - **Re-engage quiet members.** Use a scheduled recipe to contact learners who have fallen behind and send a nudge to the leader’s Slack channel, or email them a relevant new lesson. - **Remove access cleanly.** When a group license expires, Automator can remove the user from BuddyBoss groups, revoke their Discord access, and tag them in your CRM as a re-engagement target—all in one recipe. Automator integrates natively with **BuddyBoss**, **BuddyPress**, **bbPress**, **PeepSo**, **wpForo**, **Discord**, **Slack**, **Telegram**, and **WhatsApp**, alongside hundreds other WordPress and cloud apps. If the community platform has a way in, Automator usually has a recipe for it. ## **How your online course community actually works** If you’re building a community for your online courses with all three elements—cohorts, forums, and a membership hub—the stack ends up looking like this: - **LearnDash** delivers courses, lessons, quizzes, and certificates. - **Uncanny Groups for LearnDash** turns those courses into managed cohorts, with group leaders, B2B licensing, and other group management tools. - **bbPress** forum sync that powers cohort-level discussion. - **BuddyBoss** (or your social platform of choice) hosts the evergreen membership experience. - **Uncanny Automator** keeps all of it in sync—enrolling, promoting, removing, and notifying members based on what they do in their courses. You don’t have to build all three at once. Most of the LearnDash sites we work with start with cohorts and group forums, then add a membership hub later once they have enough members to make it worthwhile. The point is that nothing here requires leaving WordPress. The same admin, the same user database, the same hosting, the same login—just more capability layered on top. *Want to see how Uncanny Owl addons and plugins improve your WordPress community?* [***Try it out live on our demo site >>>***](https://learndash.uncannyowl.com/) ## **A note on hosted alternatives** It’s fair to ask: why not just move to Kajabi, Teachable, Thinkific, or Mighty Networks, which bundle community features in the box? If a hosted platform fits your needs, that’s a legitimate choice. The tradeoff is the one you already know—you rent your platform instead of owning it, your data and members live inside their walls, your pricing scales with the number of users (or arbitrarily based on their roadmap), and your customizations are limited to what they expose. For creators and organizations that want full control over the learning experience, the member data, the integrations, and the long-term cost curve, building on WordPress with LearnDash and the Uncanny stack remains the more durable path. You’re not just adding community to your courses—you’re keeping the keys to your digital castle. ## **Bringing it together** Adding community to your online courses doesn’t have to mean migrating off WordPress, learning a new platform, or paying per-seat for software you’ll outgrow. The pieces already exist in the LearnDash ecosystem. [**Uncanny Groups**](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) gives you the cohort infrastructure and group forums. **BuddyBoss** (or bbPress, for lighter needs) gives you the social experience. **Uncanny Automator** connects everything together so membership, progress, and engagement stay in sync without anyone manually moving users from list to list. Or, if you already know you want the whole stack, the **All Access Pass** bundles Uncanny Groups with Tin Canny Reporting, Uncanny Toolkit Pro, CEUs, and Codes at a single annual price—along with a discount on Uncanny Automator to bring it all together. [**Get the All Access Pass >>>**](https://www.uncannyowl.com/all-access-pass/) ## **Frequently Asked Questions** **Do I need BuddyBoss to add community features to LearnDash?** No. If your needs are limited to per-cohort discussion, the bbPress forums integration in Uncanny Groups is enough. bbPress forums are free, lightweight, and tied directly to LearnDash group membership through Uncanny Groups. BuddyBoss makes sense when you want activity feeds, private messaging, member profiles, and a richer social experience on top of the cohort layer. **Can I use Uncanny Automator with a community platform that isn’t BuddyBoss?** Yes. Automator integrates with BuddyPress, bbPress, PeepSo, wpForo, Discord, Slack, Telegram, and WhatsApp natively, plus anything you can reach with a webhook. The same recipe patterns work across platforms—you’re just swapping out the action. **Do cohorts in Uncanny Groups have to be tied to a paid product?** No. You can create groups manually as an administrator and add learners directly, or sell group licenses through WooCommerce as one-time products or subscriptions. You can even [let Group Leaders create their own groups](https://www.uncannyowl.com/knowledge-base/front-end-learndash-group-creation/), if that’s your desired workflow. Cohorts work the same way regardless of how members got into them. **What’s the difference between a LearnDash group and a BuddyBoss group?** A LearnDash group is a learning unit—it controls which learners have access to which courses. A BuddyBoss group is a social unit—it controls who can post in a feed, see a forum, and message each other. Uncanny Groups’ BuddyBoss sync keeps the two aligned automatically, so adding someone to a LearnDash group adds them to the matching BuddyBoss group in the same step. **Can group leaders manage the community side too, not just the course side?** Group leaders manage their cohort from the front-end Group Management page that Uncanny Groups installs—adding and removing learners, viewing progress, grading assignments, and downloading reports. Once those members are synced into BuddyBoss, the group leader can also act as a BuddyBoss group organizer if you give them that role, letting them moderate discussions and post announcements from the same login. **Will this work if I’m using Tutor LMS or LearnPress instead of LearnDash?** Uncanny Groups is LearnDash-specific. Uncanny Automator, however, integrates with LearnDash, Tutor LMS, LearnPress, LifterLMS, MasterStudy LMS, and WP Courseware, so you can still wire course events to a community platform—you’d just lose the native cohort infrastructure Uncanny Groups provides. **Categories:** Uncanny Groups --- ### [What's New in Uncanny Toolkit and Toolkit Pro](https://www.uncannyowl.com/whats-new-in-uncanny-toolkit-and-toolkit-pro/) **Published:** April 10, 2026 **Author:** Ken **Content:** Whether you’re building courses for your own audience or managing LearnDash sites for clients, the tools you rely on every day should keep getting better. Over the past year, we’ve shipped meaningful updates to both [Uncanny Toolkit](https://en-ca.wordpress.org/plugins/uncanny-learndash-toolkit/) and [Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/ "Uncanny LearnDash Toolkit Pro"), from a completely refreshed admin experience and a modern login form designer to shareable learner transcripts and smarter CSV imports. Here’s a look at what’s changed and how it helps you and your learners. --- ## [](#a-fresh-admin-experience-across-the-board)A Fresh Admin Experience The first thing you’ll notice after updating is that the admin interface looks different — and that’s intentional. Both Toolkit and Toolkit Pro now share a redesigned, unified admin UI with updated Uncanny Owl branding. Settings pages are cleaner, navigation is more consistent, and everything feels more polished. ![](https://www.uncannyowl.com/wp-content/uploads/2026/04/uncanny-toolkit-learndash-updated-ui-1030x674.png "uncanny-toolkit-learndash-updated-ui - Uncanny Owl")This isn’t just cosmetic; it’s part of a user interface overhaul for all of our plugins. A consistent interface across all Uncanny Owl plugins means less time figuring out where settings live and more time getting things done. ## [](#a-modern-login-form-your-students-will-actually-enjoy)A Modern Login Form The Front End Login module in Uncanny Toolkit has always been one of our most popular free features. It lets you replace the default WordPress login with something that actually fits your site. Now it’s even better. ![](https://www.uncannyowl.com/wp-content/uploads/2026/04/modern-login-form-500x456.png "modern-login-form - Uncanny Owl")The new **Modern theme** gives you a redesigned login form with built-in color customization. Pick colors that match your brand, and the form handles the rest. No CSS overrides, no child theme edits — just choose your colors and publish. ![](https://www.uncannyowl.com/wp-content/uploads/2026/04/front-end-login-options-356x500.png "front-end-login-options - Uncanny Owl")We’ve also improved **two-factor authentication compatibility** with Melapress WP 2FA (two-factor authentication), switching to a REST API approach that’s more reliable and avoids conflicts. If you’ve been hesitant to add 2FA to your front-end login, now’s a great time to revisit it. ## [](#shareable-learner-transcripts-toolkit-pro)Shareable Learner Transcripts (Toolkit Pro) This one has been a popular request. The Learner Transcript module in Toolkit Pro now supports **public transcript access with shareable links**. Your learners can generate a link to their transcript and share it with an employer, a licensing board, or on LinkedIn with a single click using the **Share** button. ![](https://www.uncannyowl.com/wp-content/uploads/2026/04/shareable-course-transcript-learndash-500x340.png "shareable-course-transcript-learndash - Uncanny Owl")For organizations running certification or compliance training, this is a practical way for learners to prove course completion without requiring admin involvement. For course creators, it adds real marketing value: learners can showcase what they’ve accomplished. ## [](#smarter-csv-imports-toolkit-pro)Smarter CSV Imports (Toolkit Pro) If you’ve ever imported users via CSV and hit formatting issues because your spreadsheet tool exported with semicolons instead of commas, you’ll appreciate this update. The **Import Users** module now supports **multiple delimiters**: comma, semicolon, tab, and pipe with **automatic detection**. Upload your CSV and Toolkit Pro figures out the format. No more reformatting files or troubleshooting failed imports. ## [](#simple-course-timer-logout-and-redirect-on-expiry-toolkit-pro)Simple Course Timer: Logout and Redirect on Expiry (Toolkit Pro) The Simple Course Timer module now includes the option to **automatically log out learners and redirect them when their timer expires**. This is particularly useful for timed assessments, proctored exams, or any scenario where you need to enforce strict time limits and ensure learners can’t continue working after time is up. ![](https://www.uncannyowl.com/wp-content/uploads/2026/04/learndash-inactive-logout-465x500.png "learndash-inactive-logout - Uncanny Owl")## [](#under-the-hood-developer-improvements)Under the Hood: Developer Improvements For developers building custom LearnDash solutions, we’ve added several hooks and filters across both plugins: - **`login_form` action hook** in the Front End Login templates making it easier to extend the login form with custom fields or integrations - **`uo_pro_transcript_cell_$key` filter** in the Transcript module lets you make course titles linkable or customize individual transcript cells - **Group Registration action hooks** for adding custom fields to signup forms - **WordPress 6.8+ compatibility** improvements across Toolkit Pro ## [](#bug-fixes-and-stability)Bug Fixes and Stability Every release also includes fixes that make the plugins more reliable: - Front End Login password fields now work correctly on iPhone - Autocomplete Lessons and Topics handles completion processing more reliably - Course Dashboard category IDs work properly in the Gutenberg block - Email Course Certificates uses dynamic paths instead of hardcoded ones - Gravity Forms integration hook priority conflicts resolved - Various PHP warning and deprecation fixes --- ## [](#try-it-out)Try It Out All of these updates are available now. If you’re already running Uncanny Toolkit or Toolkit Pro, update to the latest version to get everything listed above. If you’re using the free Toolkit and want access to shareable transcripts, smarter imports, and the course timer [check out Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/ "Uncanny LearnDash Toolkit Pro") or grab the [All Access Pass](https://www.uncannyowl.com/all-access-pass/) to get our full plugin suite at the best value. Have questions about any of these features? Our [knowledge base](https://www.uncannyowl.com/knowledge-base/) has detailed documentation, and our support team is always happy to help. **Categories:** Uncategorized --- ### [WordPress LMS Showdown: Sensei vs. LearnDash](https://www.uncannyowl.com/wordpress-lms-showdown-sensei-vs-learndash/) **Published:** August 21, 2014 **Author:** Ryan Moore **Content:** ![WordPress LMS](https://www.uncannyowl.com/wp-content/uploads/2014/08/WordPress-LMS.png "- Uncanny Owl")I recently decided to build a new [LMS demo site](https://sensei.uncannycloud.com) with [WooThemes Sensei](https://www.woothemes.com/products/sensei/), which gave me the opportunity to spend a lot of time setting Sensei up and integrated it into an existing site for this review. Since most of [Uncanny Owl’s](https://www.uncannyowl.com) platform consulting work involves [LearnDash](https://www.uncannyowl.com/share/learndash/), it was great to explore a different approach to a WordPress LMS solution. In this quick review I’ll discuss some of what I really liked about Sensei (compared to LearnDash) and where I have concerns about using the plugin to deliver training. First, some history. Uncanny Owl started working with [WordPress LMS products](https://learnpresslms.com/) just over a year ago. At that time we did a very comprehensive internal review of what was available and settled on the one we platform we thought was best—LearnDash. We actually purchased a copy of Sensei to try over a year ago, used it for a week, and then asked for a refund after finding it couldn’t deliver what we needed. A lot has changed over the past year, however, and our excitement about some of the new Sensei features encouraged us to see how far they’ve come. Both Sensei and LearnDash do a great job of doing what they need to do: structuring courses and lessons, tracking learning progress and delivering a good user experience. This review is focused on the differences between the products and what did and didn’t work for me as a WordPress user extending my site with an LMS plugin. ### What I Like About Sensei *Reporting*. The first thing I checked out after installing Sensei (and its associated free plugins) was the admin interface, and it was great to see reporting at the top. Sensei gave me a good overview of my course content and enrolled users, and I loved being able to drill down to see more detail. This is a lot easier to work with than the CSV export that LearnDash produces that includes very limited information. Having said that, I don’t like how Sensei scores things. More on that later. *Messaging*. I really like that Sensei includes more notification types, especially compared to LearnDash (where reporting is limited). It’s also nice to see private messaging that doesn’t require another plugin and is built around facilitated programs. Having said that, Sensei does go a bit overboard with notifications. Getting an email every time a lesson was completed was painful. I just want them for quizzes! (Sensei quizzes have to be included in lessons, which may be part of why emails go out for all lessons.) *Sharing*. It’s great to have social sharing available for learning programs and to be able to see and retrieve certificates easily. These things are much easier to set up with Sensei than LearnDash. *Certificates—for some things*. Speaking of certificates, Sensei has a much better way to design certificates than LearnDash. Getting text elements laid out correctly in LearnDash is painful, while Sensei doesn’t required you to tweak HTML and CSS until things are just right. It’s also nice to see that certificates are available on course completion rather than having to be associated with quizzes. (Of course, I’d rather Sensei also make them available for quizzes.) ### What I Didn’t Like *Cost*. An unlimited license for LearnDash is $79. Sensei starts at $149 for 1 site and goes up to $299 to use on 25 sites. But it doesn’t stop there. If I want to sell access to courses with recurring subscriptions, the solution suggested by WooThemes requires almost $300 in additional plugins. LearnDash includes integrations with free membership plugins. Want BadgeOS for gamification? With LearnDash the integration is free, with Sensei it’s paid. Given the trouble I had getting Sensei working with our third-party theme, picking up a WooThemes WordPress theme is recommended and another expense. The extra costs really add up. [![Broken Link](https://www.uncannyowl.com/wp-content/uploads/2014/08/The_page_you_were_looking_for_doesn_t_exist_–_Help_Desk-300x167.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2014/08/The_page_you_were_looking_for_doesn_t_exist_–_Help_Desk.png)My WooThemes Support Ticket*Support*. LearnDash has a fantastic support site. There’s a very active user community with lots of solutions and user-contributed content; there’s also comprehensive documentation with screencasts. When I post in the forum or send in a support request, I generally hear back the same day. Sensei? There’s a much smaller forum. Documentation is rough and incomplete. (A quick example: out of the box my system emails were broken because font size is 350% and line height is 100%, so wrapping is a mess. [This page](https://docs.woothemes.com/document/sensei-email-notifications/) talks about customizing emails and then links to a page for more info, but that page that doesn’t even mention emails. The guidance about changing code to display sidebars properly was also incorrect for my theme.) And as for support, well, it’s really lacking. I’m still waiting on a reply to some followup questions that I submitted over a week ago. When I click the link to the ticket in my email, I see the page above. I get the feeling that means my questions won’t get answered. *Learner Workflow*. LearnDash handles lessons the way I’d expect. If there’s no quiz or assignment, click a button to indicate completion and move to the next lesson. If there’s a quiz, advance after passing the quiz. With Sensei passing a lesson is really celebrated. You click a button, just like LearnDash, but this time there’s a big message congratulating you for finishing a lesson—which might have been as basic as reading a paragraph. Then you’re encouraged to share it on social media (I want this in some places, just not every lesson). Then you have to hunt around beneath those things to figure out how to manually navigate to the next lesson. [![Customizing Sensei](https://www.uncannyowl.com/wp-content/uploads/2014/08/Sensei_Demo_LMS___Lesson_with_Text_and_Images_-_Sensei_Demo_LMS-300x185.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2014/08/Sensei_Demo_LMS___Lesson_with_Text_and_Images_-_Sensei_Demo_LMS.png)Lots of customization needed*Designed for WooThemes*. Setting up LearnDash doesn’t generally break sites. Setting up Sensei broke my site. First my sidebar was gone, then it was beneath the rest of my content, and I ended up spending hours on PHP and CSS changes to get the look & feel I wanted restored. WooThemes has documentation for the sidebar issue, but it suggests copying some div containers from a theme PHP file which, at least in my case, turned out to not include enough containers. I don’t like the forced title at the top of every page either, and why does Sensei want to make its widgets to look so different than the ones I already have? *Less Intuitive*. I’ve used a lot of WordPress plugins, including some LMS ones, and I start using them by exploring rather than reading a manual. That led to a lot of frustration with Sensei. I wanted a new certificate, so I went to **Lessons > Certificates > Add New Certificate**. No, that doesn’t work, and I still have no idea why there’s a way to add certificates there (the section is for displaying earned certificates). What I actually wanted was a certificate template. When I started to create learning objects, I figured the first thing I would need is a course, and the **Lessons** menu included entries for courses, lessons and certificates. There was only one “Add New” entry, however, and it turned out that was just for lessons. I got confused again when I wanted to add a quiz to a lesson and Sensei told me to add one from the *Lesson Quiz* box when it really meant *Quiz Questions*. Over in the **Sensei** menu, I’m still getting used to **Certificate Templates** being highlighted no matter what section I’m actually in. *Less Scalable*. I’ve worked on programs with up to 10 courses, each with an average of 10 lessons. During development, I disable lesson progression to make testing and review easy; with LearnDash, it’s a simple switch within courses. With Sensei, every lesson has a prerequisite and there’s no central switch for progression. Furthermore, the list of prerequisites includes lessons for all courses, so hundreds of lessons could potentially be displayed in a drop-down list. I can’t imagine how confusing it must be to go from no prerequisites to lesson progression when going live with a complex program . The default styling for Sensei also seems intended for a handful of courses and lessons, not dozens. *Quizzes and Score Tracking*. I really don’t like the way Sensei captures completion data. When learners complete a lesson, Sensei marks it as passing with a score of 100%. It’s a very strange approach. As for quizzes, which should actually track scores, what’s available is very limited compared to LearnDash. There are no sorting or multiple answer question types, which I really tend to rely on for variety. HTML is similarly excluded, which adds a lot of flexibility in LearnDash. Sensei also has far less control, including for pagination, statistics, providing feedback and reinforcement to learners, etc. *Certificate Names*. When learners complete a course, they should be recognized for their accomplishment and certificates are a great way to do this. Unfortunately, Sensei doesn’t seem to want to actually put their names on them. Sensei can only put the user’s “display name” on a certificate, so the documentation suggests advising users to update their profiles and change their “display name” to their first and last name. That’s completely impractical. ### Sensei or LearnDash? If you’re already embedded in the WooThemes ecosystem and use WooCommerce and their themes, it probably makes a lot of sense to go with Sensei. The [Sensei demo site](https://demo2.woothemes.com/sensei) by WooThemes looks great, so if your needs are basic, picking up the Hub theme they use along with Sensei is likely a good choice. Import the dummy data, customize as needed and you’re off and running. For other sites, like you can see with Uncanny Owl’s [Sensei demo site](https://sensei.uncannycloud.com), expect a bit more work. With better reporting, notifications and messaging, I can also see appeal for sites providing instructor-led virtual programs exclusively. If you typically spend time on the admin side of WordPress, have notifications enabled and have a relatively small group of learners, then I feel like it might be easier to stay connected with their activities using Sensei. (LearnDash does offer a Pro Panel for additional insight, but it’s quite limited.) LearnDash is likely a better choice for everyone else, especially when you factor in cost and support. At Uncanny Owl we support clients on both platforms, but for most new projects, we expect LearnDash to continue being the better fit. **Categories:** Learning --- ### [How to Reduce Cheating in your WordPress Course](https://www.uncannyowl.com/how-to-reduce-cheating-in-your-wordpress-course/) **Published:** March 17, 2026 **Author:** Ken **Content:** If you offer online courses on your WordPress site, your students are probably cheating more than you might expect. A [2024 study](https://link.springer.com/article/10.1007/s10805-023-09485-5) found that nearly 45% of students self-reported cheating on online exams. Artificial Intelligence is making the problem worse, as the majority of students now use generative AI for academic work and even test-taking. With online courses, it’s impossible to eliminate cheating entirely, but there are steps you can take and tools you can use that reward genuine understanding and reduce the feasibility of cheating. In this post, we’ll look at some of the ways you can make your WordPress courses more cheat-resistant. ## How Students Cheat in WordPress Courses Reducing the likelihood of cheating starts with understanding how your students are doing it. Here are some common ways that students cheat in online courses: **Viewing answers in the page source**. Some WordPress quiz plugins send correct answers to the browser before users answer questions. By inspecting the page, tech-savvy students can trace the answer key with minimal effort. And no, blocking students from right-clicking on your pages doesn’t really help. **Brute-forcing quizzes**. When quizzes allow unlimited attempts, students can retake a quiz over and over again, noting correct answers each time until they pass. **Sharing answers**. Easy screenshots, group chats, and discussion forums make it easy for students to share their answers. It’s even easier to share if quizzes offer the same questions in the same order to all students. **Using AI tools**. Students can copy questions into their favorite AI tool and get an answer in seconds. This is especially effective against recall-based multiple choice questions, which are what most WordPress quizzes use. **Skipping course content**. When course progress isn’t enforced, students can treat the quiz as the only thing that matters and skip everything else. ## Start With Your LMS Settings If you’re using [LearnDash](/share/learndash/) (and if you’re visiting this website, there’s a good chance that you are!), there are a variety of built-in features that can help to reduce cheating. Set course progression to [Linear](https://learndash.com/support/kb/core/courses/course-progression/#h-what-is-course-progression), which requires that students complete lesson and topic content in a specific order. Enable [forced lesson timers](https://learndash.com/support/kb/core/lessons/lesson-display-content/#h-adding-a-forced-lesson-timer) so that students must spend a minimum amount of time on a page before they can mark it as complete. Then over on the quiz side, you can limit the number of allowed attempts (limiting the risk of brute-force test-taking), add a time limit (so users have less time to share answers and look things up), and randomize questions and answers (to also reduce the risk of sharing). These are all features built into LearnDash, and only take a few minutes to configure when you set up new quizzes. ## Extend Protections with Uncanny Owl Plugins The built-in settings offered by LearnDash are a great foundation, but third-party tools can help to fill additional gaps. We offer several plugins that reduce cheating opportunities. The [Simple Course Timer module](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) in [Uncanny Toolkit Pro](https://www.uncannyowl.com/plugins/) tracks cumulative active time across an entire course (not just per lesson or topic), and it includes a setting to block access to quizzes unless users have spent a minimum amount of time in a course. This way, you can make sure users spend enough time looking at course content before they can attempt a quiz and mark a course as complete. And don’t worry, it includes idle detection so that users can’t just load up a lesson and leave it onscreen to accumulate time. ![Simple Course Timer settings modal](https://www.uncannyowl.com/wp-content/uploads/2019/01/simple-course-time-settings-500x405.png "simple course time settings - Uncanny Owl") The [Tin Canny Reporting plugin](https://www.uncannyowl.com/downloads/tin-canny-reporting/) adds support for SCORM and xAPI content, which also provides a means of controlling the Mark Complete button in a LearnDash course. By using uploaded assets, you can also control a user’s path and progression in a course. ## Use a Quiz Plugin That Prioritizes Security The assessment platform you choose for your online course is an important consideration—and one of the best ways to control the risk of cheating during a test. One example of a quiz plugin that integrates with LearnDash and offers robust anti-cheat controls is [PressPrimer Quiz](https://pressprimer.com/). Designed with assessment integrity in mind, here are some of the ways it can offer protection for your LearnDash course beyond what LearnDash quizzes can natively offer: 1. **Tight availability windows**. Assign quizzes with precise start and end times. If a quiz starts at 10:00 a.m. and is set to end at 10:30 a.m., and a student doesn’t start until 10:15 a.m., they only have 15 minutes to complete it before it’s automatically submitted. This significantly limits sharing opportunities. ![Quiz Availability Limits Cheating](https://www.uncannyowl.com/wp-content/uploads/2026/02/quiz-availability-482x500.png "quiz-availability - Uncanny Owl") 2. **Large question banks with dynamic generation**. If you generate quiz questions from a pool of 3 banks of hundreds of questions each, there’s very little opportunity to share results when every attempt is virtually unique. 3. **Attempt limits with forced delays**. By controlling how long users have to wait between retakes, there’s much less risk of them brute-forcing attempts. 4. **Question analytics that reveal problems**. With reports for question quality, you can evaluate difficulty and distractor effectiveness to make sure quizzes are effective and properly measure student performance and learning in a course. ![Question Quality Report](https://www.uncannyowl.com/wp-content/uploads/2026/02/question-quality-1-1030x376.png "question-quality - Uncanny Owl") 5. **Proctoring tools**. Alert instructors when cheating behaviors are likely taking place by detecting how often students are changing tabs or exiting full-screen mode for quizzes. ## Putting It All Together No single WordPress plugin or platform eliminates cheating, but taking a layered approach with the right tools make it a lot harder and less tempting to cheat. By configuring your LMS plugin settings properly, extending protections with Uncanny Owl plugins, and considering additional tools like [PressPrimer Quiz](https://pressprimer.com/), your courses will soon be locked down and experience far fewer instances of cheating. When the effort to cheat is greater than the effort needed to learn the material, most students will choose the honest path. **Categories:** Best Practices, LearnDash --- ### [Uncanny Redemption Codes 5.0: Enhanced Flexibility, Performance and a Visual Overhaul](https://www.uncannyowl.com/uncanny-redemption-codes-5-0-enhanced-flexibility-performance-and-a-visual-overhaul/) **Published:** March 9, 2026 **Author:** Ken **Content:** [Uncanny Redemption Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/ "Uncanny LearnDash Codes") version 4.x was already the **most powerful code redemption plugin available for WordPress**. With the release of Uncanny Redemption Codes 5.0, we’ve added enhancements that make managing and distributing codes even more flexible. So whether you’re managing course or group enrollments with an LMS like LearnDash, or distributing codes for promotional campaigns, or automating custom code redemption workflows with Uncanny Automator, this release will have something for you. ## **What’s New in Version 5.0** ### **Individual Code Date Modification** One of our most requested features is here! You can now modify expiration dates for **individual codes**, giving you granular control over code expiry. No more bulk operations when you need to extend a single code’s validity—simply edit the date for that specific code and you’re done. This enhancement addresses a long-standing limitation and provides the flexibility many of you have been asking for. ![](https://www.uncannyowl.com/wp-content/uploads/2026/03/edit-code-expiry.png "edit-code-expiry - Uncanny Owl")### **Smarter LearnDash Validation** Version 5.0 introduces intelligent validation for LearnDash code redemptions. The system now checks whether users attempting to redeem codes are *already enrolled* in the associated course(s) or group(s). This prevents duplicate enrollments and wasted codes, while providing clearer feedback to users about their enrollment status. It’s a small change that makes a big difference in preventing confusion and support tickets. ### **Visual Updates** The entire Uncanny Redemption Codes UI has been updated with modern visuals, including admin screens as well front-end registration and redemption forms. The new forms look fantastic, but **if you have previously customized the forms on your site with CSS**, you should test the update on a staging site prior to updating on your live site (we recommend this as a best practice for all major plugin updates). ![](https://www.uncannyowl.com/wp-content/uploads/2026/03/uncanny-codes-ui-update-1030x972.png "uncanny-codes-ui-update - Uncanny Owl")### **Performance Under the Hood** We’ve enhanced performance significantly by adding a *code\_id* index to the usage table. For sites managing thousands or even millions of codes, this optimization dramatically improves database query performance. Large-scale operations that previously took seconds will now complete in milliseconds, making the plugin more responsive for high-volume users. ### **A new name** You may have noticed the plugin is now called **Uncanny *Redemption* Codes**. We discovered that some users were a bit confused by the “Uncanny Codes” name, thinking the plugin might be similar to WP Code, or Code Snippets, having something to do with programming or custom code. Adding “Redemption” to the name makes it clear that the plugin is all about giving users the ability to redeem codes for access, rewards, store credit, achievements, and lots more. ### **Other updates:** - Gravity Forms – Code redemption moved to gf\_pre\_handle\_confirmation hook – ensures that codes are processed at the right moment in the form submission workflow, eliminating some edge cases making code redemptions more predictable and consistent. - Fixed Text domain warning on WordPress 6.7+ websites - Woo – Edit product – Automator codes product type no longer breaks the edit product page layout on some sites ## **Get Version 5.0 Today** These updates improve every aspect of Uncanny Redemption Codes. From more flexible individual code management, to performance improvements for large installations, to a fresh, modern design, version 5.0 can handle your code distribution workflows at any scale. Ready to upgrade? Current users can update directly from their WordPress admin panel. New users can [purchase Uncanny Redemption Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) and start leveraging these powerful features today! For a complete list of all changes, visit our [detailed changelog](https://www.uncannyowl.com/knowledge-base/uncanny-codes-changelog/). **Categories:** Uncategorized --- ### [The Uncanny Glow-Up: A New Look, a New Chapter](https://www.uncannyowl.com/the-uncanny-glow-up-a-new-look-a-new-chapter/) **Published:** February 25, 2026 **Author:** Ken **Content:** It’s hard to believe it’s been almost *13 years* since Ryan and I launched Uncanny Owl back in May 2013. Back then, we did a lot of the design work ourselves, including our logo and website. And while they served us well for over a decade, we were long overdue for an update. After sweating the details for months, our team is excited to launch our new, modernized website and updated branding including a new, simplified logo and a loveable new mascot. ## **Why Now?** The short answer: because where we’re headed demands it. When we started Uncanny Owl, LearnDash was a young plugin and WordPress eLearning was still finding its footing. We built our reputation by filling the gaps — [better reporting](https://www.uncannyowl.com/downloads/tin-canny-reporting/ "Tin Canny LearnDash Reporting"), [better group management](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/ "Uncanny LearnDash Groups"), [WordPress automation](https://automatorplugin.com "WordPress automation") (we were really the first in this space!), and [everything else](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/ "Uncanny LearnDash Toolkit Pro") that LearnDash site owners actually needed to run their businesses. That mission hasn’t changed, but it has grown. This rebrand is the first step in a renewed commitment to providing the best add-ons for LearnDash *and* a deliberate expansion of our solutions and expertise into the broader WordPress LMS ecosystem. We have a clear picture of where we’re taking Uncanny Owl, and now we have the website and branding to match. ## **What’s New** **A modernized logo.** Our original logo was created in an illustrative style and had character (I’m biased). The new one was created in a graphic design style and is sharper, cleaner, and easier to scale across every context — from plugin headers to conference banners. ![](https://www.uncannyowl.com/wp-content/uploads/2026/02/new-logo-1.png "new-logo - Uncanny Owl")**A redesigned website.** The new uncannyowl.com makes it easier to find what you’re looking for. Whether you’re a solo course creator, an agency building client sites, or an L&D team managing thousands of learners, the new site gets you to the right answer faster. **Meet our new mascot.** Every good brand needs a face, and ours is a friendly owl who represents what we’ve always been about: helping people learn and teach more effectively. You’ll see it across our site, our documentation, and our plugins going forward. We think it captures the personality of our brand: approachable, knowledgeable, and just a little bit playful. A name is in the works! ![](https://www.uncannyowl.com/wp-content/uploads/2026/02/UncannyOwl-Main-Pose-1-448x500.png "UncannyOwl - Main Pose - Uncanny Owl")## **Plugin Updates: More Than Skin Deep** The glow-up isn’t limited to just our website. We’re rolling out visual updates across our entire plugin suite, and planning longer-term architecture improvements under the hood. We’ve already completed a full visual overhaul of **[Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/ "Uncanny LearnDash Toolkit Pro")** and **[Uncanny Redemption Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/ "Uncanny LearnDash Codes")**, with refreshed, modern interfaces. Other plugin overhauls are in the works — stay tuned for those. ## **Something Big Is Coming to Uncanny Automator** We’ve been working on something we’re not quite ready to fully unveil, but I’ll say this: [Uncanny Automator](https://automatorplugin.com) has always been the best way to automate your WordPress site. Soon, it’s going to be more than that. Much more. Imagine you could hire a full-time WordPress assistant that can build automations for you, but also completely understands your site, can answer questions about it and take care of a lot of those tasks you still do manually. Now imagine this assistant does all of this for just pennies a day. That’s what we’re building. Some tasks need an automation. Some just need to get done. We’re expanding Uncanny Automator to handle both. More details are coming very soon. If you’re an Automator user, you’ll want to pay attention. ## **Announcing Our Partnership with Team Tangible** Over the years, we’ve shifted our focus entirely to building and improving our plugins. But we’ve always known that many LearnDash site owners need more than plugins — they need expertise to help build the right learning experience. That’s why we’re officially announcing a partnership with [**Tangible Inc**](https://teamtangible.com/uncanny-owl-learndash-development/), one of the most accomplished LearnDash consulting agencies in the WordPress ecosystem. With over 400 clients and a team of more than 30 LearnDash experts, Tangible delivers everything from complete LearnDash builds to custom integrations, SCORM/xAPI support, enterprise-grade performance, and ongoing support. They’ve even built [hosting infrastructure specifically designed for demanding LearnDash and WordPress LMS sites](https://tangiblexp.com/?ref=info82). We’ve seen dramatic performance improvements on sites that have moved to their platform — the kind of speed gains that directly impact learner experience and completion rates. We’ll share the full details of this partnership in a separate blog post. For now, if you need expert LearnDash development or consulting, [head to our consulting page](https://www.uncannyowl.com/consulting/) to learn more about what Tangible can do. ## **Celebrate with Us: The Uncanny Glow-Up Sale** To mark The Uncanny Glow-Up, we’re running a sale on the **[All Access Pass](https://www.uncannyowl.com/all-access-pass/ "All Access Pass")** — our bundle of all five premium LearnDash plugins (Uncanny Toolkit Pro, Tin Canny Reporting, Uncanny Groups, Uncanny Redemption Codes, and Uncanny Continuing Education Credits), plus a 60% off coupon for Uncanny Automator Pro – Plus. The standout deal: the **10-site pass is just $299/year** (normally $699) — that’s over $1,800 in annual savings compared to buying plugins individually. The 2-site pass starts at $299 as well. [**Check out the Uncanny Glow-Up Sale →**](https://www.uncannyowl.com/all-access-pass/) ## **What’s Ahead** The Uncanny Glow-Up is a beginning, not a finish line. Over the coming months, you’ll see continued plugin overhauls, the launch of some groundbreaking new capabilities in Uncanny Automator, deeper investment in the LearnDash ecosystem, and the start of our expansion into the broader WordPress LMS space. We’ve been building eLearning tools for WordPress since 2013, but the best is still ahead of us. — Ken Young, Co-Founder, Uncanny Owl **Categories:** News --- ### [Tin Canny Reporting 5.0: A Major Milestone in LearnDash Reporting](https://www.uncannyowl.com/tin-canny-reporting-5-0-a-major-milestone-in-learndash-reporting/) **Published:** June 24, 2025 **Author:** Ken **Content:** When we set out to reimagine Tin Canny Reporting for LearnDash, we knew we weren’t just releasing another update. We were laying the foundation for the future of LearnDash reporting—and today, we’re thrilled to announce that Tin Canny Reporting 5.0 is here. This isn’t just an incremental update. It’s a complete transformation that brings massive performance improvements, a streamlined architecture, and the building blocks for exciting innovations to come. If you’ve been waiting for reports that load faster, work smoother, and scale better, your wait is over. ## What’s New in Version 5.0 and Above ### Lightning-Fast Performance, and a Foundation Built for the Future Remember waiting for reports to load while you grabbed another cup of coffee? Those days are behind you. Version 5.0 introduces massive performance improvements across all reports. The Course Report, User Report, Tin Can Report, and xAPI Quiz Report have all been refactored from the ground up. We’ve optimized database queries and improved caching, delivering reports that load in seconds, not minutes—even on sites with thousands of learners. Under the hood, we’ve completely overhauled Tin Canny’s core architecture. We’ve also updated all major libraries to their latest versions, including charting, DataTables, lightbox, and module search components. This isn’t just about making things run faster today (though it definitely does that). It’s about making it easier to maintain, extend, and enhance Tin Canny Reporting in the future. This means faster bug fixes, smoother updates, and more innovative features coming your way. ### Modernized Experience The Manage Content page got a complete visual overhaul with a modernized design that’s both beautiful and functional. We’ve added new columns showing upload dates and file sizes for each module, making it easier than ever to manage your e-learning content library. The Tin Canny front end Group Quiz Report now includes caching to dramatically improve load times, plus a loading animation to enhance the user experience. No more wondering if the report is working—you’ll see exactly what’s happening. ### Smarter Data Management New in version 5.0, you’ll find powerful options for managing your Tin Canny data: - Course and User Report settings to select default groups and page lengths - User Report added “Completion date” column for lessons/topics and “Start date” for courses - Smart fallback for statement capture when email data is unavailable - Purge specific statement types instead of all-or-nothing - Option to remove all Tin Canny data on plugin deletion ## What This Means for You If you’re a LearnDash site administrator dealing with hundreds or thousands of learners, version 5.0 is a game-changer. Reports that you had to wait for now load in seconds. Data that was difficult to access is now at your fingertips. For developers and agencies, the simplified architecture means easier customization and fewer compatibility issues. The improved performance means happier clients and fewer support tickets. And for everyone, the modernized interface and enhanced features mean a better experience every time you use Tin Canny Reporting. ## A Note About Testing Because version 5.0 is such a major update, we strongly recommend testing it on a staging site before deploying to your live environment. While we’ve tested extensively, every site is unique, and it’s always better to be safe than sorry. ## Looking Ahead Version 5.0 isn’t the end of our journey—it’s just the beginning. With this new foundation in place, we’re already working on new features that will make Tin Canny Reporting even more powerful and intuitive. We’re committed to making Tin Canny Reporting the most comprehensive, reliable, and user-friendly reporting solution for LearnDash. Version 5.0 is a major step toward that goal. ## Ready to Upgrade? Tin Canny Reporting for LearnDash version 5.0 is available now. Check out the [full changelog](https://www.uncannyowl.com/knowledge-base/tin-canny-learndash-reporting-changelog/) for all the details, and remember to test on a staging site first. We can’t wait to hear what you think of the new version. Your feedback has been instrumental in shaping these improvements, and we’re always listening for ways to make Tin Canny Reporting even better. --- *Have questions about upgrading to version 5.0? Check out our [knowledge base](https://www.uncannyowl.com/article-categories/tin-canny-learndash-reporting/) or [open a support ticket](https://www.uncannyowl.com/my-account/submit-a-request/). We’re here to help make your upgrade as smooth as possible.* **Categories:** eLearning, LearnDash, Tin Can --- ### [Use LearnDash Groups? You Need This.](https://www.uncannyowl.com/learndash-group-management/) **Published:** September 29, 2017 **Author:** Ryan Moore **Content:** We heard your requests for better group management in [LearnDash](https://www.uncannyowl.com/share/learndash/) and we listened! Today we’re releasing our [Uncanny LearnDash Groups plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/), and it’s going to completely change what you and your Group Leaders can do with LearnDash groups. The plugin adds features in 3 main areas to your LearnDash elearning sites: 1. Selling courses and seats to organizations. 2. Managing groups in the front end. 3. Front end reports for Group Leaders. This plugin has something for everyone—maybe you just need front end group reports, or maybe you simply need a way to sell custom course bundles to organizations that you support. Use as much or as little as you need. Here’s a video that explains how the plugin adds new opportunities for using LearnDash Groups on your site: ### Group Management Made Easy If you currently manage groups or support Group Leaders, Uncanny LearnDash Groups will make your life a lot easier. After installing the plugin your Group Leaders can do everything *themselves*. No more emails to you and spending your time settings things up! Whether groups are set up through a purchase or by you, Group Leaders can add or remove users (with limits; no-one can cheat the system) and monitor progress. There are lots of options for making group management easy, including code-based invitations and redemptions, CSV uploads, and manual user changes. [![LearnDash Group Management](https://www.uncannyowl.com/wp-content/uploads/2017/09/LearnDash_Group_Management.png "LearnDash_Group_Management - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/09/LearnDash_Group_Management.png) In the screenshot above you can see how easy it is for Group Leaders to manage everything from one place. See how many seats are available; review what courses the group has access to; add individual users; upload users; download codes users can redeem for group and course access; buy more seats for the group; add and pay for more courses for the group; see progress for group members at the course level; review all quiz completions and drill down into individual results; and manage group leaders (not shown). All of this is possible from a single page and from the front end of the site. We know many site owners don’t like giving access to the back end to Group Leaders, and this plugin goes a long way towards making that possible. ### Easy Front End LearnDash Reporting Uncanny LearnDash Groups makes the reports people ask for most—course progress and quiz results—available in the front end to Group Leaders. No more working with CSV files or confusing widgets. Choose a group (if a Group Leader has more than one), the course or quiz, and get instant results. [![LearnDash Group Course Report](https://www.uncannyowl.com/wp-content/uploads/2017/09/Group_Course_Report.png "Group_Course_Report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/09/Group_Course_Report.png) The course report is the easiest way for Group Leaders to track progress at a glance, especially with the filtering and search options available. The quiz report adds drill-down capabilities to see all quiz details for a learner, including how they answered LearnDash quiz questions and how long it took them. ### Sell to Organizations Without Lifting a Finger Wish there was a better way to sell to organizations that didn’t require you to create a group, create a Group Leader, invoice the organization offline, add their courses, upload their users and explain how everything works? (And yes, that’s usually what’s required for every group you add.) Uncanny LearnDash Groups integrates with WooCommerce to let organizations create their own groups with as many courses and licenses as they need. And they can do all of it completely independently. [![Buy LearnDash Group Licenses](https://www.uncannyowl.com/wp-content/uploads/2017/09/Buy_LearnDash_Group_Licenses.png "Buy_LearnDash_Group_Licenses - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/09/Buy_LearnDash_Group_Licenses.png) The screenshot above is what users see when they’re buying a course. They set the group name, how many seats they need, and what courses they want for their learners. But the best part is that *they can add more seats and courses later*. Groups created with our plugin are completely flexible and organizations can change them themselves as their needs change. No other plugin can do this. It’s an entirely new way of selling to organizations that want your courses, and it’s finally feasible to sell to hundreds of organizations without needing a full-time resource to manage everything. There’s a lot more to it (including an amazing shortcode to show different course content to different groups!), but we’ll leave the finer details to our [Knowledge Base](https://www.uncannyowl.com/article-categories/uncanny-learndash-groups/). We know this plugin will help a lot of LearnDash users and we’re excited to finally get it out to the public! **Categories:** LearnDash --- ### [An Uncannily Outstanding 2024: How Stewardship Powered Innovation](https://www.uncannyowl.com/an-uncannily-outstanding-2024-how-stewardship-powered-innovation/) **Published:** December 31, 2024 **Author:** Brendan Da Costa **Content:** *Inspired by our trip to the Canadian Rockies, stewardship and innovation guided the Uncanny Owl team through 2024. And we can’t wait to show you what lies ahead for 2025.* When the Uncanny Owl team came together in the Canadian Rockies earlier this year, we had no idea how that trip would shape the future of our company. But the breathtaking beauty of the Rocky Mountains (somewhere I’m lucky enough to call home) instilled in the Uncanny team a deep **sense of stewardship**. Just as we sought to protect the pristine cerulean blue waters of the glacial-fed lakes, and the untrammeled wildlife of the alpine forests, we returned to our desks with a keen desire to be dutiful caretakers of another ecosystem: **the e-learning WordPress ecosystem**. If you’re familiar with any of our e-learning addons, then you already know that the Uncanny Owl team is no stranger to big projects and bold initiatives. But—not to sound too bragadocious—in 2024, we embraced innovation as a primary driver of our renewed spirit of stewardship and climbed to new heights for our users. [![lake-louise](https://www.uncannyowl.com/wp-content/uploads/2024/12/lake-louise-1030x773.jpg "lake-louise")](https://www.uncannyowl.com/wp-content/uploads/2024/12/lake-louise-scaled.jpg) Here’s a look back at some of our most exciting achievements and innovations from 2024, and a glimpse into what’s ahead for 2025. ## **Uncanny Toolkit Pro for LearnDash: Elevating the User Experience** At nearly 4,000 meters, Mount Robson is the highest peak in the Canadian Rockies. And we wanted to help Toolkit Pro users summit that peak for their learners—figuratively speaking, of course. In the spirit of stewardship within the WordPress space, the user experience is front and center. So, in 2024, the Uncanny Owl team focused on elevating the user experience to positively atmospheric heights. Here are just a few of the e-learning peaks we managed to summit in 2024: - **Historical Course Records in Transcripts:** If you ever go on a trip to the Rocky Mountains, you’ll want to keep a detailed record of your adventures. Similarly, we know that your learners want to keep a detailed record of their academic adventures. Recognizing the importance of comprehensive learner records, we enabled the inclusion of historical course completions in learner transcripts. This feature, integrated with Uncanny Continuing Education Credits, allows students to access a complete history of their learning activities, even after course resets. - **Live Course Timer:** In the wilderness of the Canadian Rockies, you only need the movement of the sun across the sky to track the time and seasons. But, in the e-learning space, you need something slightly more sophisticated than a sundial. In light of this, we gave our users an accurate way to track time spent within courses with a live course timer. This tool provides real-time tracking, allowing learners to monitor their progress dynamically without the need to refresh pages. - **Cloudfare Turnstile (free version of Toolkit):** Learning to identify various plant and animal species unlocks worlds of wonder in the Canadian Rockies. But how can you tell the difference between a foxtail pine and a western white pine? Short of making some recommendations for books on arbology, we can’t really help you there. But, when it comes to telling the difference between bots and real learners, we’ve got you covered. This year, we introduced Cloudflare Turnstile support so you can more easily tell the difference between learner and a loon. [![a-bird-flies-over-grassi-lakes](https://www.uncannyowl.com/wp-content/uploads/2024/12/a-bird-flies-over-grassi-lakes-1030x687.jpg "a-bird-flies-over-grassi-lakes")](https://www.uncannyowl.com/wp-content/uploads/2024/12/a-bird-flies-over-grassi-lakes-scaled.jpg) ## **Uncanny Groups for LearnDash: Empowering Group Leaders** Mountain excursions and e-learning enterprises have something in common: they both require group leaders. The more capable the leader, the more capable the group. That was part of our motivation for giving Uncanny Groups some substantial enhancements in 2024; to facilitate better group management and reporting. - **Access to Learner Transcripts:** We gave Group Leaders the ability to view detailed learner transcripts directly from the Group Course report. This addition offers a comprehensive overview of individual learner progress and achievements, fostering more effective oversight. - **Support for Multiple Group Purchases:** For organizations managing multiple teams, we introduced the ability to purchase multiple groups in a single transaction. This feature simplifies the procurement process and enhances flexibility in group management. [![three-sisters-cropped](https://www.uncannyowl.com/wp-content/uploads/2024/12/three-sisters-cropped-1030x872.jpg "three-sisters-cropped")](https://www.uncannyowl.com/wp-content/uploads/2024/12/three-sisters-cropped-scaled.jpg) ## **Uncanny Continuing Education Credits: Smarter Reporting and Control** One of the key lessons for our team in the Canadian Rockies was that, however beautiful the landscape and captivating the wildlife, they are every bit as dangerous as they are mesmerizing. The Rocky Mountains around Banff and Jasper are accessible, but they are also treacherous and filled with predators such as mountain lions and grizzly bears. Even snowstorms and wildfires can turn calming hikes into perilous misadventures with a subtle change in the wind. However, in the spirit of innovation and stewardship, experienced mountaineers have learned the importance of one key safety measure: reports. Whether it’s a smoke map, an avalanche warning, or a grizzly bear notification, reports help outdoor enthusiasts enjoy the mountains responsibly. [![sun-breaking-through-storm-banff-gondola](https://www.uncannyowl.com/wp-content/uploads/2024/12/sun-breaking-through-storm-banff-gondola-1030x773.jpg "sun-breaking-through-storm-banff-gondola")](https://www.uncannyowl.com/wp-content/uploads/2024/12/sun-breaking-through-storm-banff-gondola-scaled.jpg) Similarly, for e-learning educators and administrators, reports are an effective tool for spotting trouble areas before they become a problem. In 2024, we improved our Continuing Education Credits plugin to provide administrators with more insightful reports and greater control. - **Enhanced Credit Reports:** From new and improved front-end reports to enhanced Gutenberg block settings, we overhauled the Credit Report feature. The new, revamped credit reports include performance options for a better user experience, new settings for report defaults, new filters, more export options, and new tools for editing and deleting credits. - **Historical Data Management:** Building on our commitment to comprehensive learner records, we improved the handling of historical data, ensuring that all course completions are accurately archived and accessible for reporting purposes. ## **Uncanny Automator: Expanding WordPress Horizons** Whenever you reach the peak of one mountain, there’s always another one just on the horizon, begging to be summited. That’s how the Uncanny Owl team has spent 2024; leaping from summit to summit. Throughout 2024, as we made significant improvements to our LearnDash addons, stewarding the e-learning environment onwards and upwards, we did the same for our other popular WordPress plugin: Uncanny Automator. We expanded our list of **deep integrations**, introduced a bevy of new triggers and actions, and added features like CSV, JSON, and XML **file imports**, as well as email attachment support and even **custom actions**. And that’s just the false peak. Want to know more about Automator’s amazing 2024? **[Read all about Automator’s uncanny year >>>](https://automatorplugin.com/an-uncanny-year-in-review-and-what-lies-ahead-for-2025)** ## **Looking Ahead to 2025** As we prepare for the new year, our map through the mountains includes further enhancements to our LearnDash plugins, and maybe even venturing beyond the LearnDash ecosystem into the LMS wilderness beyond. With a keen sense of stewardship, we remain dedicated to providing reliable tools that empower educators and learners and foster continuous improvement and success. Before we say goodbye to 2024, the whole team at Uncanny Owl would like to extend our heartfelt thanks to our users and partners for their continued support. Your feedback and engagement fueled us throughout the old year, and propels us into the new one. Here’s to a prosperous and transformative 2025! **Categories:** News --- ### [Customize Your Uncanny Groups + LearnDash Course Reports](https://www.uncannyowl.com/customize-your-uncanny-groups-learndash-course-reports/) **Published:** May 18, 2023 **Author:** Brendan Da Costa **Content:** *Add your own columns and data to Uncanny Groups and LearnDash course reports and empower your Group Leaders with the tools they need.* ![add-custom-columns-to-ld-reports-featured-image](https://www.uncannyowl.com/wp-content/uploads/2023/05/Add-Custom-Columns-to-LD-Reports-Featured-Image.png "add-custom-columns-to-ld-reports-featured-image - Uncanny Owl")As an e-learning educator or administrator, you know how important it is to have accurate and detailed course reports. And while LearnDash has some built-in reporting tools, oftentimes, you need additional information. Custom data fields such as a user’s job title, age, department/organization or even last login date can be invaluable for administrators, instructors and LearnDash Group Leaders. So, if you’ve been looking for a way to add more columns and custom data to your Uncanny Groups and LearnDash course reports, then you’ve found the right page. In this article, we’ll show you a few simple ways to customize your Uncanny Groups and LearnDash course reports. We’ll also show you how to make those reports visible right from your WordPress dashboard so that Group Leaders can access them. Trust us, this will be the easiest course you take all day. ## **Custom Columns in CSV Files for Administrators** For WordPress and LearnDash administrators, one of the simplest reporting tools available are LearnDash’s native CSV reports. These reports provide administrators with the ability to export basic information on users’ course and quiz data to CSV files where they can perform in-depth analysis and keep track of their KPIs. As useful as these native CSV reports are, however, they don’t always contain the information that you’re looking for. Enter [Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/). To customize your LearnDash user reports, follow these simple steps. 1. **Download** [**Uncanny Toolkit Pro**](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) As the leading add-on for LearnDash users, [Uncanny Toolkit](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) expands and improves upon the features and functionalities of your LMS website. If you’ve ever found yourself wishing that LearnDash could do “X” (such as report customization) or show you “Y” (such as unique metadata), Uncanny Toolkit is the add-on you need. With 30+ modules and first-in-class support, you’ll have total control over your ability to customize your LearnDash site and your users’ e-learning experience. ![download-uncanny-toolkit-for-learndash](https://www.uncannyowl.com/wp-content/uploads/2023/05/1-—-download-uncanny-toolkit-for-learndash.png "download-uncanny-toolkit-for-learndash - Uncanny Owl")To gain access to additional modules, such as the *Enhanced LearnDash CSV Reports* module that we’ll be using to improve LearnDash Reports, you’ll need the Pro version of Uncanny Toolkit. [Click here](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) to download Uncanny Toolkit Pro. 2. **Select the *Enhanced LearnDash CSV Reports* Module** After downloading Uncanny Toolkit Pro, from your WordPress dashboard, navigate to *Uncanny Toolkit* > *Modules*. Scroll down to *Enhanced LearnDash CSV Reports* and toggle the module “On”. The toggle switch will appear green when enabled. ![enhanced-learndash-csv-reports](https://www.uncannyowl.com/wp-content/uploads/2023/05/2-—-enhanced-learndash-csv-reports.png "enhanced-learndash-csv-reports - Uncanny Owl")3. **Configure the Module Settings** To add columns to LearnDash user reports, click on **Settings** in the *Enhanced LearnDash CSV Reports* module. A pop-up window will appear where you can select from predefined columns such as *Username*, *Language* and *Website*. ![enhanced-learndash-csv-reports-settings](https://www.uncannyowl.com/wp-content/uploads/2023/05/3-—-enhanced-learndash-csv-reports-settings.png "enhanced-learndash-csv-reports-settings - Uncanny Owl")If you scroll down, you’ll also see that Toolkit Pro lets you add user and course metadata as columns when you enter the meta key. These fields are particularly useful when you want to include custom metadata. For example, we have created the custom metadata *department*, *job title*, *age* and *last login* to better understand our user engagement and performance. ![enhanced-learndash-csv-reports-settings-usermeta](https://www.uncannyowl.com/wp-content/uploads/2023/05/4-—-enhanced-learndash-csv-reports-settings-usermeta.png "enhanced-learndash-csv-reports-settings-usermeta - Uncanny Owl")Having entered the meta key into the *Usermeta Key* fields, we were able to add those keys as columns in our exported CSV reports. ![learndash-csv-report-custom-columns](https://www.uncannyowl.com/wp-content/uploads/2023/05/5-—-learndash-csv-report-custom-columns.png "learndash-csv-report-custom-columns - Uncanny Owl")If you don’t know how to create and retrieve custom metadata on WordPress, jump down to the section **Create Custom Metadata for WordPress**. We’ve seen how, with the Toolkit Pro add-on for LearnDash, you can drastically improve your LearnDash course reports. But CSV files don’t suit everyone’s workflows. Not to mention, Group Leaders and other instructors without administrator access to the back-end of your WordPress website won’t be able to retrieve their own LearnDash course reports. If you’re using the [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) add-on, however, you can add columns to reports on the front-end of your WordPress website for Group Leaders and instructors to access. Furthermore, you’ll be able to export the reports to Excel if that format suits your workflows better than CSV files. ## **Custom Columns for** [**Uncanny Groups**](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) **Course Reports** If you’ve been using the [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) add-on then you already know about all of the amazing features such as front-end management and reporting tools for Group Leaders. However, sometimes, your Group Leaders will need more information than what the default reports contain. Fortunately, there’s an easy way to add custom columns and data to your Uncanny Groups course reports. Follow these steps to help your Group Leaders drill down into their course and user data. We’ll also show you how easy it is to export course reports to Excel so that Group Leaders can track their KPIs and customize their analytics. 1. **Add Column Titles** First, you’ll need to add the titles of your custom columns to your Uncanny Groups course reports. To do this, you’ll need to add some code to the functions.php file of your child theme. The code snippet to add column titles to Uncanny Groups course reports is: ``` add_filter( 'ulgm_group_course_report_columns', function ( $columns ) { //Add new column(s) $columns['custom_key'] = ‘My custom column'; return $columns; }, 99, 1 ); ``` In the code snippet above, *$columns\[‘custom\_key’\] = ‘My custom column’* is where you can input the column title that you want. For example, we would like to add the column title *Last Login* so our code snippet would look like this: ``` add_filter( 'ulgm_group_course_report_columns', function ( $columns ) { //Add new column(s) $columns['leardash-last-login'] = 'Last Login'; return $columns; }, 99, 1 ); ``` Of course, you’d rarely only want to add only one column to your Uncanny Groups course reports. If you’d like to add multiple columns, simply include additional lines as follows: ``` add_filter( 'ulgm_group_course_report_columns', function ( $columns ) { //Add new column(s) $columns['learndash-last-login'] = 'Last Login'; $columns['age'] = 'Age'; $columns['organization'] = 'Organization'; $columns['job_title'] = 'Job Title'; return $columns; }, 99, 1 ); ``` 2. **Add Column Values** Now that you’ve added the column titles to your Uncanny Groups course reports, it’s time to add the values. To input the values of your custom columns into your Uncanny Groups course reports, add the following code snippet to the functions.php file of your child theme: ``` add_filter( 'ulgm_group_course_report_user_data', function ( $user_data, $user_id, $group_id, $course_id ) { // Add additional keys and add data like $user_data['custom_value'] = get_user_meta( $user_id, 'custom_value', true ); return $user_data; }, 99, 4 ); ``` In the code snippet above, *$user\_data\[‘custom\_value’\] = get\_user\_meta( $user\_id, ‘custom\_value’, true );* is the line that will retrieve the user’s metadata that you want included in your Uncanny Groups report. In our example, with the meta values for all of our corresponding column titles, the code snippet would look like this: ``` add_filter( 'ulgm_group_course_report_user_data', function ( $user_data, $user_id, $group_id, $course_id ) { // Add additional keys and add data like $user_data['learndash-last-login'] = get_user_meta( $user_id, 'learndash-last-login', true ); $user_data['age'] = get_user_meta( $user_id, 'age', true ); $user_data['organization'] = get_user_meta( $user_id, 'organization', true ); $user_data['job_title'] = get_user_meta( $user_id, 'job_title', true ); return $user_data; }, 99, 4 ); ``` Note: The snippet *$user\_data\[‘learndash-last-login’\] = get\_user\_meta( $user\_id, ‘learndash-last-login’, true );* will return a timestamp value. If you want your course report to return the *learndash-last-login* value as the date format from your WordPress settings, you can use this code snippet: ``` add_filter( 'ulgm_group_course_report_user_data', function ( $user_data, $user_id, $group_id, $course_id ) { $date_format = get_option( 'date_format' ); $login_timestamp = get_user_meta( $user_id, 'learndash-last-login', true ); // Add additional keys and add data like $user_data['learndash-last-login'] = wp_date( $date_format, $login_timestamp ); return $user_data; }, 99, 4 ); ``` 3. **Export Uncanny Groups Reports to Excel** Navigate to the page(s) where you have your Uncanny Groups course reports. Note, you can include Uncanny Groups course reports on any page with the shortcode: \[uo\_groups\_course\_report\]. As you can see in the image below, our custom columns along with the corresponding metadata have been added to our course report. ![uncanny-groups-reports-custom-columns](https://www.uncannyowl.com/wp-content/uploads/2023/05/6-—-uncanny-groups-reports-custom-columns.png "uncanny-groups-reports-custom-columns - Uncanny Owl")To export the report to Excel, simply click **Excel export** in the upper right-hand corner. ![uncanny-groups-reports-excel-export](https://www.uncannyowl.com/wp-content/uploads/2023/05/7-—-uncanny-groups-reports-excel-export.png "uncanny-groups-reports-excel-export - Uncanny Owl")That’s all it takes! ## **Create Custom Metadata for Your LearnDash Reports** By default, WordPress stores a lot of data about your users. But it’s not always the data that you’re looking for. Throughout this article, we’ve been using custom WordPress metadata that suit our specific needs and workflows. Perhaps you’re already doing this on your site, like capturing “job title” or “department” in registration forms from your favorite form plugin, or a plugin like Advanced Custom Fields that adds extra data to users and posts. But, for greater control and management over your user and content records, you might need some additional help. One popular solution for creating and manipulating custom WordPress metadata is our [Uncanny Automator](https://automatorplugin.com/pricing/) plugin. With Automator, you can craft recipes to create and alter unique metadata that you wouldn’t otherwise be able to. For example, we could help our Group Leaders by putting some key analytics right at their fingertips. ![uncanny-automator-custom-user-metadata](https://www.uncannyowl.com/wp-content/uploads/2023/05/8-—-uncanny-automator-custom-user-metadata.png "uncanny-automator-custom-user-metadata - Uncanny Owl")The recipe pictured above is the same one that we used to create some of the unique user metadata that you saw throughout this article. Whenever a user registers with our WPForms registration form, Automator creates the user meta *organization* and *job\_title* along with the three unique key/value pairs *quiz\_100, quiz\_85* and *quiz\_60* to track the number of quizzes a user passes with a given percentage score. We can then use subsequent recipes to alter that metadata, saving our Group Leaders hours of administrative work. ![uncanny-automator-custom-user-metadata-recipe](https://www.uncannyowl.com/wp-content/uploads/2023/05/9-—-uncanny-automator-custom-user-metadata-recipe.png "uncanny-automator-custom-user-metadata-recipe - Uncanny Owl")With these recipes and the ability to add custom columns to Uncanny Groups course reports, Group Leaders can easily keep track of their learners’ progress. If you want to learn how to create your own WordPress metadata with Automator, then [download the plugin](https://automatorplugin.com/pricing/) and read [a brief tutorial](https://automatorplugin.com/knowledge-base/user-meta-tokens/) on mastering WordPress metadata. **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Uncanny CEUs 5.0: Smarter Reports, More Control](https://www.uncannyowl.com/uncanny-ceus-5-0-smarter-reports-more-control/) **Published:** October 30, 2024 **Author:** Ryan Moore **Content:** If you’re a fan of our [Continuing Education Credits plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/), hold on to your hats! The 5.0 release is here, and it’s packed with new features that will make managing CEUs and credits smoother than ever before. Whether you’re an admin in need of more flexible reports or you have Group Leaders begging for more data, 5.0 is sure to win you over with its enhanced functionality, user-friendly updates, and a sprinkle of our signature Uncanny efficiency. ### Front End reporting: Now even more comprehensive The [Continuing Education Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/) has been the backbone of our plugin’s reporting system, but in 5.0, we gave it a major upgrade. If you’re used to the old report, you’ll be pleasantly surprised by the new, enhanced front-end version. Not only does it look slicker, but it’s also far more customizable than ever before. To use the new report, just add this shortcode with the new “enhanced” attribute to a page: \[uo\_ceu\_report enhanced=”on”\] Now, you can filter columns, adjust the displayed data, and configure the report to show exactly what you need. The update allows you to integrate the report seamlessly into your site’s layout without needing to code a thing. It’s fast, it’s efficient, and it’s designed with user experience in mind. As a quick reminder, here’s what the old report looked like: [![Uncanny CEUs report](https://www.uncannyowl.com/wp-content/uploads/2024/10/Uncanny-CEUs-report-1030x244.png "Uncanny CEUs report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2024/10/Uncanny-CEUs-report.png) And here’s the new one (with some optional features turned on): [![Uncanny CEUs enhanced report](https://www.uncannyowl.com/wp-content/uploads/2024/10/Uncanny-CEUs-enhanced-report-1030x385.png "Uncanny CEUs enhanced report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2024/10/Uncanny-CEUs-enhanced-report.png) Notice anything different? Yes, it’s basically a new report. New filters, new exports, data for multiple users at once, support for adding, editing and deleting records support for custom columns, etc. Check out the [Knowledge Base article](https://www.uncannyowl.com/knowledge-base/continuing-education-report/) for a complete rundown of everything you can do with the new report! ### Group Hierarchy support: Perfect for child groups Do you manage a large LearnDash group with a complex hierarchy of child groups? Then you’re going to love the new setting that allows front-end and admin reports to include data from child groups. This means you can pull one comprehensive report without needing to run multiple reports for each subgroup. Whether you’re running continuing education programs for multiple departments or managing different courses across varied locations, you now have one unified report to rule them all. And as they say in the world of admin tasks: less is more. Here’s the new setting that makes it all possible: [![CEU child group data](https://www.uncannyowl.com/wp-content/uploads/2024/10/CEU-child-group-data.png "CEU child group data - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2024/10/CEU-child-group-data.png) ### Editable CEUs and Credits Admins, rejoice! You now have full control over your CEUs and credits—yes, you read that right. With the 5.0 update, you can *edit* and *delete* credits as needed, both in the front and back end. Whether you’ve entered the wrong amount or simply need to tidy things up, this new feature puts the power back in your hands. Got a user who completed half a course but didn’t earn the full credit? No problem. Want to remove a credit that was incorrectly assigned? Easy. This is what continuing education administration should look like—clear, simple, and stress-free. ### New Gutenberg block We understand that not everyone is a coding whiz, and that’s okay. With our new Gutenberg block for the Continuing Education report, adding and configuring reports on your site has never been easier. Forget shortcode gymnastics—just drag and drop the block onto your page, tweak the settings, and voila! A fully-functional, customized CEU report in no time at all. ### 5.0 is the update you didn’t know you needed If you’re already using the [Continuing Education Credits plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/), you’re going to love how 5.0 simplifies your life. From editable credits to comprehensive reporting with Excel/CSV exports and child group data, the updates in this release are designed to give you more control and save you time. Managing continuing education has never been easier or more efficient. For those of you who haven’t yet purchased this plugin, now’s the perfect time to jump in. These new features make the Continuing Education Credits plugin a must-have for organizations that need to track CEUs and manage reports efficiently. And trust us—once you experience the ease of the new enhancements, you’ll wonder how you ever managed without it. For a full list of updates in Uncanny CEUs 5.0, make sure to check out the [changelog](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-changelog/). **Categories:** Continuing Education, News --- ### [Toolkit Pro 4.0: Generate LearnDash Certificates in Bulk](https://www.uncannyowl.com/toolkit-pro-4-0-generate-learndash-certificates-in-bulk/) **Published:** April 11, 2023 **Author:** Ryan Moore **Content:** It’s here! The Uncanny Owl team is thrilled to announce that version 4.0 of the [Uncanny Toolkit Pro plugin for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) is now available. The latest update to the most popular third-party premium add-on for LearnDash adds 1 new module and a huge number of new features and improvements. Let’s jump right in to what’s new. ### Generate LearnDash Certificates in Bulk It’s a question LearnDash users have been asking for years: How can my Group Leaders and I download certificates for all of our students? Until today, you couldn’t. You had to look up records for one user at a time, find the right course or quiz, then generate a new certificate. It was time-consuming to the point of being completely impractical for large groups of users and courses. With the new [Download Certificates in Bulk](https://www.uncannyowl.com/knowledge-base/download-certificates-in-bulk/) module, grabbing a large batch of certificates is as easy as adding a shortcode to a page. When viewed by an admin or Group Leader user (the Group Leader must, of course, be the leader of one or more groups), it’s possible to download a zip file with Group, Course or Quiz certificates. To get started, add \[uo\_download\_certificates\] to a page and choose the type of certificate to download: [![Download LearnDash Certificates](https://www.uncannyowl.com/wp-content/uploads/2023/04/Download-LearnDash-Certificates-1.png "Download LearnDash Certificates - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/04/Download-LearnDash-Certificates-1.png) Depending on the type of certificate, you might be prompted to choose a group, course and/or quiz. As long as whatever you select has quizzes associated it, you will see an option to generate certificates. Here’s an example for bulk course certificate generation: [![Generate LearnDash Course Certificates](https://www.uncannyowl.com/wp-content/uploads/2023/04/Generate-Bulk-LearnDash-Certificates.png "Generate Bulk LearnDash Certificates - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/04/Generate-Bulk-LearnDash-Certificates.png) In the above example, the module will look up all students in the Uncanny Owl group, see who has completed the “Intro to Bulk Certificates” course, and then create a zip file for all students that have earned a certificate. Inside the zip file will be a set of certificate files in PDF format. One important thing to note is that all certificates in LearnDash are generated dynamically, and we rely on LearnDash for this generation. Because some criteria might generate hundreds, or even thousands, of certificates, we push processing to the background and send an email when the generation is complete along with a link to download the certificates. This process can be slow, perhaps upwards of 10 minutes if there are a lot of certificates to generate. There are a number of settings available in this new module, including the free space required in the environment to allow certificate generation, email notification settings and an option to delete all temporary certificate zip files. (Certificate zip files are automatically purged after 12 hours to ensure that sites don’t run out of space. ) [![LearnDash Certificate Download Settings](https://www.uncannyowl.com/wp-content/uploads/2023/04/LearnDash-Certificate-Download-Settings.png "LearnDash Certificate Download Settings - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/04/LearnDash-Certificate-Download-Settings.png) ### Other Toolkit Pro Enhancements Uncanny Toolkit Pro for LearnDash 4.0 also includes several other noteworthy improvements, including the following: - The [Transcript](https://www.uncannyowl.com/knowledge-base/learner-transcript/) module adds support for category attributes (e.g. \[uo\_transcript ld\_category=”all” category=”all”\]), so you can more easily control exactly what’s output in a transcript. Perhaps sample or hidden courses should be excluded from the report. - Notification emails for the [Group Expiration module](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) include several new filters for overriding the header, subject and message programmatically, like: $headers = apply\_filters( ‘uo\_ld\_expire\_group\_email\_headers’, $headers ); $message = apply\_filters( ‘uo\_ld\_expire\_group\_email\_message’, $message, $user, $group\_id ); $sub = apply\_filters( ‘uo\_ld\_expire\_group\_email\_subject’, $email\_title, $user, $group\_id ); - The [Import Users module](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) ignores blank rows, so users with empty rows they didn’t realize they included in the CSV file will no longer see errors. - The PDF export for the LearnDash Transcript module now supports RTL languages. - The [Reset Progress button module](https://www.uncannyowl.com/knowledge-base/learndash-reset/) now supports deleting time records from the [Simple Course Timer module](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) by using this filter: apply\_filters( ‘uo\_course\_timer\_data\_reset\_enabled’, false, $course\_id, $user\_id ) - Pages created by the [Group Registration module](https://www.uncannyowl.com/knowledge-base/group-sign-up/) are now hidden by default from search engines. - The Group Registration module adds improved WPML support. We hope you find the update useful! A full list of changes can be found in the Toolkit Pro [changelog](https://www.uncannyowl.com/knowledge-base/learndash-toolkit-pro-change-log/). **Categories:** LearnDash, News, Uncanny LearnDash Toolkit --- ### [What's New in Uncanny Groups 6.0](https://www.uncannyowl.com/whats-new-in-uncanny-groups-6-0/) **Published:** January 31, 2024 **Author:** Ryan Moore **Content:** [Uncanny Groups 6.0](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) is a huge release that adds some big features that we’ve been planning for years. The biggest features are support for purchasing multiple groups in a single transaction and new Woo settings, but there’s a *lot* more in this release. ### Sell multiple LearnDash Groups By far the biggest feature in 6.0 is support for multiple groups in a single purchase. Previously, we ran into too many issues trying to offer this type of support, like, how to capture names for different groups as part of the checkout workflow, how to handle bulk and other discounts, scenarios involving users adding courses they choose to groups, etc. It took a lot of hard work and plugin changes to pull it off, and yes, you will notice a lot of differences as a result. As an example, you will now see group name fields on product and cart pages, like this: [![Group Name Product Page](https://www.uncannyowl.com/wp-content/uploads/2024/01/Group-Name-Product-Page.png "Group Name Product Page - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2024/01/Group-Name-Product-Page.png)Maybe you don’t want the new options to buy multiple group products in 1 transaction and to see group name fields everywhere? In that case, we have these new options in WooCommerce Settings: - Hide “Group Name” field(s) on checkout page - Hide “Group Name” field on product page - Do not make the “Group Name” field editable on cart page One note here is that while someone can buy multiple groups linked to different products in the same transaction, you cannot buy multiple groups *linked to the same product.* That remains a Woo limitation, as trying to add a higher quantity linked to an existing product ID in your cart will just add more seats to the group; it can’t be an independent group. Certainly this is a huge change, and will affect existing sites, so this may be a feature you want to test in a Staging environment before you deploy 6.0 to a live environment. ### New tax support Group products now support their own tax class and status. This allows groups that are generated dynamically, like from the Buy Courses page where users can choose courses for their groups, to support a default tax class and status. You’ll find these new options in the *WooCommerce Settings* under *Uncanny Groups > Settings*, and they look like this: ### [![Group Tax Options](https://www.uncannyowl.com/wp-content/uploads/2024/01/New-Group-Tax-Options-1030x459.png "New Group Tax Options - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2024/01/New-Group-Tax-Options.png) ### Group Progress search Searching for users on the [Manage Progress](https://www.uncannyowl.com/knowledge-base/manage-learner-progress/) page is now much easier, with autocomplete now supported as you enter a user name, email address key, or ID. It looks like this: [![Manage Progress select users](https://www.uncannyowl.com/wp-content/uploads/2024/01/Manage-Progress-user-selection-1030x369.png "Manage Progress user selection - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2024/01/Manage-Progress-user-selection.png) ### Accessibility improvements We had some WCAG-related concerns raised a few months ago from one of our users, so we have been gradually working on enhancements to overall accessibility. This includes: - Better keyboard navigation in the front end. - Making it easier for screen readers to detect values in drop-down lists. - Adding some labels where the purpose of a field wasn’t clear. ### Other improvements The [bulk discount system](https://www.uncannyowl.com/knowledge-base/configure-bulk-discounts/) has been rebuilt so that the license price is discounted directly instead of adding a negative fee to the order. This improves compatibility with other plugins that may have trouble accounting for a negative fee (including several PDF invoice plugins), which are now compatible with Uncanny Groups. For sites with huge essay volumes (and we’ve seen several with hundreds of thousands), there’s a new load\_on\_render=”no” attribute for the [Front End Essay Question Management shortcode](https://www.uncannyowl.com/knowledge-base/front-end-essay-question-management/) (as well as a Gutenberg block panel) that you can use to not load any essays on page visit, like this: \[uo\_groups\_essays load\_on\_render=”no”\] When this is enabled, it means essays will only be loaded *after* the user has set up filters and initiated the query. This means report loading time will be faster and won’t fail on very high-volume sites. New compatibility options with AffiliateWP have been added, so now the referral amount applies to the order total after the discount (if one exists). That covers the highlights of the [Uncanny Groups 6.0](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) release. We hope you enjoy all of the new features! **Categories:** LearnDash, News --- ### [Transcripts for Group Leaders, Live Timer](https://www.uncannyowl.com/transcripts-for-group-leaders-live-timer/) **Published:** February 7, 2024 **Author:** Ryan Moore **Content:** The [Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) 4.2 release is a big one that adds several new features and a number of enhancements across several modules. Let’s jump in to what’s new. ### Group Leader access to Transcripts Last week we released an [Uncanny Groups update](https://www.uncannyowl.com/whats-new-in-uncanny-groups-6-0/) that now allows you to connect the [Group Course report](https://www.uncannyowl.com/knowledge-base/group-leader-reports/#the-group-course-report) to [student transcripts](https://www.uncannyowl.com/knowledge-base/learner-transcript/), and with today’s Toolkit Pro release completing the support, it’s now possible for Group Leaders to see a complete transcript for any of their students. This is of course an optional tool, but it makes it far easier for Group Leaders to get a printable report of student activity and accomplishments. Adding support for transcript access on your site is easy. Simply edit the Group Course report page and add this attribute to the \[uo\_groups\_course\_report\] shortcode: transcript-page-id=”123″ Replace “123” with the ID of your transcript page. You might then end up with a shortcode that looks like this: \[uo\_groups\_course\_report transcript-page-id=”2780″\]. (And yes, this attribute is also supported in the block editor.) Now when Group Leaders or admins view the Course report, they will see a new column to access student transcripts, like this: [![Group Leader LearnDash Transcripts](https://www.uncannyowl.com/wp-content/uploads/2024/02/Group-Leader-Transcripts-1030x118.png "Group Leader Transcripts - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2024/02/Group-Leader-Transcripts.png) Please note that the transcript view that Group Leaders will see *exactly* matches the [transcripts](https://www.uncannyowl.com/knowledge-base/learner-transcript/) students see. This means it includes all learning records, not just ones associated with courses linked to groups associated with the Group Leader. It might also include custom CEU records. ### Simple Course Timer: Live timer The [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) has long been used by LearnDash sites as a way to track active time inside a course. Rather than simply looking at a user’s start and end dates to determine time in a course, this Toolkit Pro module tracks the actual time spent in a course, lesson, topic or quiz. While we do have shortcodes that can show users the time they have spent on a page or an entire course, it has always been a static value. On page load we output that value and it doesn’t change, so if users wanted to see an updated record of their course time, they needed to reload the page. This was particularly painful when sites used our option to restrict access to quizzes until a certain amount of time had elapsed in the course. Today’s Toolkit Pro release adds a new shortcode for this module: \[uo\_time\_live\] When added to any LearnDash post type, it will output the user’s current cumulative time spent in the course, and then it will count up. This new tool makes it far easier for a student to see exactly how much time they have spent in a course without having to reload the page. ### Other improvements The [Enhanced Course Grid module](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/) adds a new “taxonomy\_relation” attribute that you can set to AND or OR. We ran into some situations on user sites where they might specify both WordPress *and* LearnDash categories in the shortcode, and we always treated the course output as using “OR” operators for the taxonomies. Now you can set taxonomy\_relation=”AND” in the shortcode and the courses returned will match all taxonomy rules. The [Enhanced Lessons/Topics Grid](https://www.uncannyowl.com/knowledge-base/enhanced-lessontopic-grid/) gained a new setting for showing quizzes in grids. This makes it possible to show quizzes alongside lessons or topics when they’re set at the same level. It looks like this: [![Quizzes in LearnDash grids](https://www.uncannyowl.com/wp-content/uploads/2024/02/Include-quizzes-in-LearnDash-grids.png "Include quizzes in LearnDash grids - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2024/02/Include-quizzes-in-LearnDash-grids.png) In the [Duplicate Pages & Posts module](https://www.uncannyowl.com/knowledge-base/duplicate-pages-posts/), we have changed the minimum role capability required to duplicate posts to “edit\_published\_posts”. This will make it easier for non-admin roles to use this tool. The [Import Users](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) module emails have a new %Password Reset URL% token for including a plain text copy of the URL in emails. While there was an existing token that linked to the password page, it relied on an HTML link and was problematic in situations where a plain text URL would be more appropriate. And in the [Group Registration](https://www.uncannyowl.com/knowledge-base/group-sign-up/) module, there are new filters for uo\_ld\_group\_signup\_registered\_message, uo\_ld\_group\_signup\_joined\_remove\_previous\_group\_message and uo\_ld\_group\_signup\_joined\_message to override standard module messages. That covers the highlights of the [Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) release! We hope you the new features are useful to you. **Categories:** LearnDash, News --- ### [New LearnDash Quiz Report](https://www.uncannyowl.com/new-learndash-quiz-report/) **Published:** February 8, 2024 **Author:** Ryan Moore **Content:** [Tin Canny 4.4](https://www.uncannyowl.com/downloads/tin-canny-reporting/) is now available, and the biggest new feature is the addition of a new type of LearnDash quiz report. There are also a number of usability improvements for existing Tin Canny users. ### LearnDash Detailed Quiz Report Yes, we have the [Group Leader Quiz report](https://www.uncannyowl.com/knowledge-base/front-end-quiz-reports/) in Tin Canny, and the [Group Quiz report](https://www.uncannyowl.com/knowledge-base/group-leader-reports/#the-group-quiz-report) in Uncanny Groups, but we still invariably had requests for more quiz data presented in different ways. If an admin wanted to see records for users not in groups, or to identify users that hadn’t yet taken a quiz they were assigned, for example, it was very difficult to retrieve this data. The new LearnDash Detailed Quiz reports offer a new alternative that removes some of these constraints. This is what it looks like: [![LearnDash Detailed Quiz Report](https://www.uncannyowl.com/wp-content/uploads/2024/02/LearnDash-Detailed-Quiz-Report-1030x452.png "LearnDash Detailed Quiz Report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2024/02/LearnDash-Detailed-Quiz-Report.png) There are a few key things to note in the screenshot above that differ from other quiz reports: - In the “Group” drop-down list, you can either choose a group or admins can show records for any group *as well as users not in a group*. This is a key difference, because most other reports are group-based. - There is no course selection. The report shows *all* records for a quiz, even if it’s included in multiple courses. - Columns are customizable. - Records are shown for all users with access to a quiz, not just users with quiz attempts. This makes it easy to identify users that haven’t yet completed quizzes but are assigned to them. If you don’t want this behaviour, you can easily turn it off by adding this filter to the functions.php file of your child theme: add\_filter( ‘uotc\_quiz\_report\_hide\_unattempted\_users’, ‘\_\_return\_true’ ); - All attempts are shown, not just the highest-scoring quiz attempt. To use the new report, add this shortcode to any page: ``` [uotc_ld_quiz_report] ``` Besides the new report, there are a number of minor improvements, including showing the maximum file upload size when uploads are via full zip files, and removing the cancel button for full zip uploads (since the upload can’t actually be cancelled). **Categories:** LearnDash, News, Tin Can, Uncategorized --- ### [Import Student Records Into LearnDash with Uncanny Toolkit Pro](https://www.uncannyowl.com/import-student-records-into-learndash-with-uncanny-toolkit-pro/) **Published:** February 9, 2024 **Author:** Brendan Da Costa **Content:** Have you recently switched your LMS platform over to **LearnDash**? Or maybe you’re just in the beginning stages of considering a migration. Either way, you’ll eventually be faced with the question: how do I import my students’ records into LearnDash? First things first, bookmark this page! You’ll be glad you did when it comes time to transfer those records. While there are plenty of options out there for transferring course and quiz content over to LearnDash, carrying forward your students’ academic records isn’t always so simple. That’s where [**Uncanny Toolkit Pro**](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/#pricing) and [**Uncanny Automator Pro**](https://www.automatorplugin.com/pricing) come in handy. With these two plugins, you can easily transfer your students’ records from any old LMS to your new LearnDash platform with just a few clicks. Without further ado, let’s get started making that migration. ## **Introduction** We probably don’t have to tell you; maintaining meticulous records is a must for any elearning business. However, solutions for migrating student progress aren’t as obvious or seamless as solutions for migrating course and quiz content. Unless you have the right tools for the job. In this guide, we’ll show you how to import your students’ course and quiz completion data using **Uncanny Toolkit Pro** and **Uncanny Automator Pro**. We’re certain that you’ll find this to be the easiest, most secure and quickest way to migrate your students’ progress to your new LearnDash platform. First, let’s take a look at the tools we’ll be using. ## [Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/#pricing) Uncanny Toolkit Pro is a feature-rich addon that expands LearnDash’s functionality. Improve the student experience with modules such as lesson drips and course access expiry counters. Simplify life for instructors with features such as group registration, certificate previews and improved CSV reports. [![uncanny-toolkit-pro-homepage](https://www.uncannyowl.com/wp-content/uploads/2024/02/uncanny-toolkit-pro-homepage-1030x486.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/uncanny-toolkit-pro-homepage.png) Of course, administrators will also love Toolkit Pro features such as the “Import Users” and “Learner Transcripts” modules. We’ll be using the “Import Users” feature in this guide as the first step in transferring our student records. [**Grab Toolkit Pro now so you can follow along.>>>**](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/#pricing) ## [Uncanny Automator Pro](https://www.automatorplugin.com/pricing) [**Uncanny Automator**](https://www.automatorplugin.com/pricing) is the #1 automation and integration tool for WordPress websites. Using simple combinations of triggers and actions, you can automate repetitive tasks (such as transferring student records) and connect your favorite apps and plugins. [![automator-homepage](https://www.uncannyowl.com/wp-content/uploads/2024/02/automator-homepage-1030x529.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/automator-homepage.png) Automator Pro gives you access to WordPress user meta where you can safely and securely store your students’ academic progress. With the click of a button, you’ll be able to update thousands of student records at once. [**Get your Automator Pro license now so you can streamline your administrative workflows.>>>**](https://www.automatorplugin.com/pricing) ## **Import Student Course Completions to LearnDash** Now that you have all of the tools you need, it’s time to get those records into LearnDash. The process of transferring student course and quiz completion data can be broken down into three (3) basic steps: 1. Create one or more CSV files containing the relevant student information 2. Import users to WordPress (or update existing users) with Toolkit Pro 3. Mark courses and/or quizzes complete for select students with Automator Pro Using Automator logs (which we’ll show you towards the end of this tutorial) you’ll be able to review the transfer process to ensure that your records are accurate. First, let’s start with creating and formatting our CSV file. **1. Create a CSV File** The first step in importing student records to LearnDash is to create a CSV file that contains all of the student information that you wish to transfer. The “User Import” module that we’ll demonstrate in the next step allows you to create user meta fields (where plugins like LearnDash store user data) by adding columns in your CSV file. For example, in our CSV file, we created the column, “course\_completion\_3550” where the number “3350” is the course ID of the LearnDash course for which we want to transfer student progress. (Note: [Click here](https://www.learndash.com/support/docs/faqs/find-course-id/?gad_source=1&gclid=Cj0KCQiAzoeuBhDqARIsAMdH14GQntDVDC5582S7_Gqbd1lEPyxKXvy8YidSz7xH90q4LJrueig_u74aAh7ZEALw_wcB) if you do not know how to find the course ID for your LearnDash courses.) [![csv-file-custom-user-meta-fields](https://www.uncannyowl.com/wp-content/uploads/2024/02/csv-file-custom-user-meta-fields-1030x690.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/csv-file-custom-user-meta-fields.png) If you arrange the rows of your CSV file by user under a column heading such as “user\_email” or “display\_name”, you can add as many columns to create as many unique user meta fields as is needed to transfer all of a students’ records. If you’re uncertain how exactly to format your CSV table, download the sample table under *Users* > *Import Users* from your WordPress Admin Dashboard and use that as a template. You can then add your own column headings such as “job\_title” or “department” to transfer more user data. **2.** [**Import Users**](https://www.uncannyowl.com/knowledge-base/import-learndash-users/?utm_source=uncanny_toolkit_pro&utm_medium=modules&utm_content=learn_more-import_users) **with Toolkit Pro** Once you have created a CSV file with all of the relevant student information, you can import the new users (or update existing ones) with the “Import Users” module. From your WordPress Admin Dashboard, navigate to *Users* > *Import Users*. This screen contains instructions for configuring your Toolkit Pro settings to personalize the import process. **In our experience, most users prefer to disable email notifications for the import process to avoid confusing their students, group leaders and administrators.** If you would like more detailed instructions on configuring your Toolkit Pro settings and how those settings may impact your users’ experience, [click here](https://www.uncannyowl.com/knowledge-base/import-learndash-users/?utm_source=uncanny_toolkit_pro&utm_medium=modules&utm_content=learn_more-import_users).) After configuring these settings under the *Options* and *Email Settings* tabs, navigate to the *Import Users* tab and **upload the CSV file**. Once Toolkit Pro completes the upload process, new users will be created if they don’t already exist while existing users will be updated with the new information from the CSV file. The new custom meta fields (i.e. what were the column headings in your CSV file) will have values that correspond to the cell value at the intersection of the user’s row and the meta field column. **3. Mark Course/Quiz Completions for Select Students** Now, this is where the magic happens. We’re going to create an Automator recipe (i.e. combination of triggers and actions) to update all of our student records at once. First, from your WordPress Admin Sidebar, navigate to *Automator* > *Add new recipe*. In the pop-up window that appears, select *Everyone*. [![select-recipe-type-everyone](https://www.uncannyowl.com/wp-content/uploads/2023/11/select-recipe-type-everyone-1030x1023.png)](https://www.uncannyowl.com/wp-content/uploads/2023/11/select-recipe-type-everyone.png) Give your recipe a name that makes it easy to recognize at a glance. For example, we’ve named the recipe “Mark 3550 Course Completions”. From the menu of available integrations, select **Run now** then select *Trigger recipe manually* from the drop-down list that appears. [![run-now-integration](https://www.uncannyowl.com/wp-content/uploads/2024/02/run-now-integration.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/run-now-integration.png) In the *Actions* panel, click **Add** and select *User loop* from the drop-down list. [![add-user-loop](https://www.uncannyowl.com/wp-content/uploads/2024/02/add-user-loop-1030x307.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/add-user-loop.png) By default, Automator will run user loops on all users who do not have the role “Administrator” in WordPress. You can, however, change the user loop filter by hovering over it, clicking on the **Edit filter** icon and changing the conditions of the filter. For example, we have altered the conditions so that the user loop will only run on users with the role “Subscriber”. [![user-loop-filter-has-role-subscriber](https://www.uncannyowl.com/wp-content/uploads/2024/02/user-loop-filter-has-role-subscriber-1030x525.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/user-loop-filter-has-role-subscriber.png) Next, within the user loop, click **Add action** and select **LearnDash** from the menu of available integrations. [![learndash-integration](https://www.uncannyowl.com/wp-content/uploads/2023/11/learndash-integration.png)](https://www.uncannyowl.com/wp-content/uploads/2023/11/learndash-integration.png) From the drop-down list that appears, select *Mark a course complete for the user*. [![learndash-action-mark-a-course-complete-for-the-user](https://www.uncannyowl.com/wp-content/uploads/2024/02/learndash-action-mark-a-course-complete-for-the-user-1030x444.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/learndash-action-mark-a-course-complete-for-the-user.png) Automator will prompt you to select the course you would like to mark complete. For your convenience, the course list will have the course title as well as the course ID. [![learndash-course-3550-photography-101](https://www.uncannyowl.com/wp-content/uploads/2024/02/learndash-course-3550-photography-101-1030x415.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/learndash-course-3550-photography-101.png) Once you have selected the course, click **Save**. Your user loop should now look something like this: [![user-loop-learndash-action-mark-course-complete-live](https://www.uncannyowl.com/wp-content/uploads/2024/02/user-loop-learndash-action-mark-course-complete-live-1030x531.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/user-loop-learndash-action-mark-course-complete-live.png) Needless to say, it’s unlikely that all of your users will have completed all of your courses. That’s why we created the user meta “course\_completion\_3550”. We can now use this metadata in our recipe to differentiate between the users who have completed the course and those who have not. Hover over the LearnDash action that you just created and click **Filter**. [![user-loop-learndash-action-mark-course-complete-filter](https://www.uncannyowl.com/wp-content/uploads/2024/02/user-loop-learndash-action-mark-course-complete-filter-1030x529.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/user-loop-learndash-action-mark-course-complete-filter.png) In the *Condition* window that appears, select *A token meets a condition*. [![filter-a-token-meets-a-condition](https://www.uncannyowl.com/wp-content/uploads/2024/02/filter-a-token-meets-a-condition-1030x787.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/filter-a-token-meets-a-condition.png) Automator will prompt you to configure the rule that defines the condition for the token. In the *Token* field, click the **Asterisk** and select *Advanced* > *User meta* from the drop-down list that appears. [![user-meta-token-for-filter-condition](https://www.uncannyowl.com/wp-content/uploads/2024/02/user-meta-token-for-filter-condition-1030x865.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/user-meta-token-for-filter-condition.png) Automator will now prompt you to enter the user meta field that you wish to target (which, in our example, is “course\_completion\_3550”). Next, configure the rule that the meta field value must satisfy for the action to run on the user. In our example, this value is “Yes” (i.e. the value in our CSV file that we used to indicate whether or not a user had completed a course). [![course-completion-3550-user-meta-is-yes](https://www.uncannyowl.com/wp-content/uploads/2024/02/course-completion-3550-user-meta-is-yes.gif)](https://www.uncannyowl.com/wp-content/uploads/2024/02/course-completion-3550-user-meta-is-yes.gif) Once you’re finished, click **Save filter**. Your user loop should now look something like this: [![user-loop-learndash-action-mark-course-complete-with-filter-live](https://www.uncannyowl.com/wp-content/uploads/2024/02/user-loop-learndash-action-mark-course-complete-with-filter-live-1030x919.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/user-loop-learndash-action-mark-course-complete-with-filter-live.png) Once you click **Run now**, Automator will cycle through every user on your WordPress website that satisfies the user loop filter(s) and mark the LearnDash course complete for them if they have the user meta value(s) that you’ve specified. Of course, you’ll want to review the successful transfer of your student records, but you likely don’t have time to do this individually. Thankfully, you can check the recipe logs for a summation of the actions taken. Simply click **View logs** in the recipe panel and review that the correct user(s) have had their academic records updated. [![mark-3550-course-completions-recipe-logs](https://www.uncannyowl.com/wp-content/uploads/2024/02/mark-3550-course-completions-recipe-logs-1030x732.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/mark-3550-course-completions-recipe-logs.png) Automator allows you to add as many actions and filters to recipes as you want. You can choose to use a single recipe to import all course completions to LearnDash or unique recipes for each course. It’s up to you. Just know that the more actions and/or users you include in a single recipe, the longer it will take to execute the recipe. Additionally, the recipe logs may not be as easy to review. ## **Import Student Lesson and Quiz Completions to LearnDash** Chances are, when you migrate your LMS to LearnDash, most if not all of your students will be in the middle of their education. Thankfully, Automator gives you the ability to transfer your student records on a more granular level. Simply add lesson and quiz level data in your CSV file as you did for courses. Then, recreate the Automator recipe we configured above but use the *Mark a lesson complete for the user* and the *Mark a quiz complete for the user* actions instead. [![mark-lesson-3722-complete-recipe](https://www.uncannyowl.com/wp-content/uploads/2024/02/mark-lesson-3722-complete-recipe-1030x982.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/mark-lesson-3722-complete-recipe.png) ## **Conclusion** Hopefully now, you feel confident in safely, securely and speedily transferring your student records into LearnDash. What we showed you in this brief guide, however, was just the beginning of what you can do with Toolkit Pro and Automator to improve your and your users’ LearnDash experience. Keep coming back to learn more about how Uncanny Toolkit Pro and Automator can enhance your LMS website. Still not sure how to import some of your students’ academic progress to LearnDash? Drop us a line in the comments section below. The learning never stops! **Categories:** Uncanny LearnDash Toolkit --- ### [H5P for LearnDash: How to Create Interactive and Engaging Course Content](https://www.uncannyowl.com/h5p-for-learndash-how-to-create-interactive-and-engaging-course-content/) **Published:** August 7, 2024 **Author:** Brendan Da Costa **Content:** *Learn how to integrate H5P and LearnDash to create fully immersive and interactive course content. Plus get Tin Canny for detailed course and quiz reports.* H5P can transform the e-learning experience, making it more engaging and effective for learners of all kinds. If you’ve been wondering how to integrate **H5P** interactive content with your LearnDash courses, then this is the guide for you. In this walkthrough, we’ll take you from installation to implementation and beyond so you can harness the power of H5P for [**LearnDash**](https://www.uncannyowl.com/share/learndash/). Learn how to create interactive and dynamic content that engages your learners and delivers results. Finally, we’ll introduce you to [**Tin Canny Reporting for LearnDash**](https://www.uncannyowl.com/downloads/tin-canny-reporting/), the most comprehensive LearnDash course and quiz reporting tool, to track your learners’ progress through your augmented content. Get ready to elevate your e-learning game and captivate your students like never before. ## **Benefits of Integrating H5P and LearnDash** According to [this 2023 study](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10019397/), learners who engaged with H5P interactive content “reported a positive experience and indicated a preference for more interactive elements”. But an enhanced user experience is just one of a host of benefits that comes from integrating H5P with LearnDash. Here are some more of the key advantages: 1. **Increased Engagement:** H5P allows you to create interactive content like quizzes, interactive videos, drag-and-drop activities, and more. These elements engage learners actively, making the learning process more enjoyable and effective. 2. **User-Friendly Interface:** H5P’s intuitive, browser-based editor makes it easy for educators to design and integrate rich media elements into their content—no coding skills required. This ease of use can encourage educators to make frequent and meaningful updates and customizations to course material​. 3. **Enhanced Learning Outcomes:** By combining different content types, H5P supports varied learning styles and fosters deeper comprehension. 4. **No Additional Cost:** H5P is FREE to use! Educators looking to enhance their content can do so without taking on an additional financial burden. 5. **Compatibility with LearnDash and Tin Canny:** H5P content is fully compatible with LearnDash, and when used with Tin Canny Reporting, provides detailed insights into learner performance. This integration helps educators track progress, identify learning gaps, and tailor instructions to meet the needs of their students​. 6. **Versatility and Flexibility:** H5P supports a wide range of content types, including interactive presentations, memory games, fill-in-the-blanks, and more. This versatility allows educators to create diverse learning experiences that can adapt to various educational contexts, environments and objectives​​. By leveraging the power of H5P, educators can create more interactive, engaging, and effective online courses in LearnDash, leading to improved learner outcomes and satisfaction. In the next section, we’ll talk a little bit more about what, exactly, H5P is and how it integrates with LearnDash. Then we’ll start creating some H5P content. ## **H5P, xAPI, LearnDash: What You Must Know** Before we start creating interactive content, there are a few things you should know about H5P, xAPI and how these tools integrate with LearnDash. ### **Introduction to H5P** H5P (HTML5 Package) is an open-source content collaboration framework for creating and sharing interactive content. [![h5p-homepage](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-homepage-1030x523.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-homepage.png) This tool supports various types of content, such as interactive videos, quizzes, presentations, and more, making learning experiences more engaging and dynamic. ### **What is xAPI?** Want to know how, exactly, H5P integrates with LearnDash? In a word: xAPI. The Experience API (xAPI), also known as Tin Can API, is a specification for learning technologies that enables tracking and recording of learning experiences across diverse platforms and environments. In other words, xAPI is the mechanism that communicates H5P data to LearnDash. [![xapi-homepage](https://www.uncannyowl.com/wp-content/uploads/2024/08/xapi-homepage-1030x540.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/xapi-homepage.png) xAPI statements are structured as “Noun, Verb, Object” (for example, “John passed the quiz” or “John completed the course”) and provide detailed information about learner interactions. Each statement can contain additional information such as scores and timestamps. As an educator or educational administrator, that’s all you’ll really need to know about xAPI. However, if you would like to know more about xAPI, you can [dive into the details here](https://xapi.com/overview/). ### **H5P Content Types with xAPI Support** Not all H5P content types have xAPI support. This means that not all of the interactive content that you create with H5P can contribute to a learner’s progression through a LearnDash course, lesson or topic. Below, you can find a list of H5P content types with documented xAPI support. **Drag and Drop** A free HTML5-based drag and drop question type allowing creatives to create many forms of drag and drop using only a web browser. **Drag the Words** A free HTML5 based question type allowing creatives to create text based challenges where users are to drag words into blanks in sentences. Excellent for language training among other things. ****Fill in the Blanks**** A free HTML5 based question type allowing learners to fill in the blanks, also known as cloze tests, with H5P in publishing systems like WordPress. ****Find the Hotspot**** A free HTML5 based question type allowing creatives to create an image based test where the learner is to find the correct spot on an image. ****Mark the Words**** A free HTML5 based question type allowing creatives to create challenges where the user is to mark specific types of verbs in a text. ****Multiple Choice**** A free HTML5 based question type allowing creatives to create challenges where the user is to identify one or more correct choices. ****Quiz (Question Set)**** A free HTML5 based content type allowing creatives to create quizzes. Many question types are supported like multiple choice, fill in the blanks, drag the words, mark the words and regular drag and drop. ****Single Choice Set**** A free HTML5 based content type allowing creatives to create simple and smooth quizzes consisting of single choice questions. ******Summary****** A free HTML5 summary builder. This content type allows creatives to create challenges where the user is to choose between statements and build the correct summary. ********Interactive Video******** An HTML5-based interactive video content type allowing users to add multiple choice and fill in the blank questions, pop-up text and other types of interactions to their videos using only a web browser. **********Course Presentation********** A free HTML5-based presentation content type which allows users to add multiple choice questions, fill in the blanks, text, and other types of interactions to their presentations using only a web browser. Note: These are simply the H5P content types with documented xAPI support at the time of writing. Some additional content types might have xAPI support that is not explicitly stated and/or documented. It is recommended to always test content types with your LearnDash courses, lessons and topics before publishing them to learners. Note as well that **Tin Canny Reporting** can still track some interactions that do not contribute to course completion. For example, **Tin Canny** can track a user’s interaction with the H5P content type “Accordion”. We’ll explore more of this in a later section. ### **LearnDash Post Types and H5P Content** Even if a H5P content type has xAPI support, it may not necessarily contribute to a learner’s progress **depending on the LearnDash post type in which the H5P content is embedded.** In essence, LearnDash has four post types: Courses, Lessons, Topics and Quizzes. **Only Lesson and Topic** post types will support embedded H5P content that contributes to LearnDash course progress. However, if you have the **Uncanny Toolkit Pro** plugin and enable the “Single Course Page” module, you can embed H5P content directly into LearnDash courses. We will talk more about that “uncanny” feature in a later section. ## **Integrate H5P and LearnDash: Download, Install and Engage** Now that we know a little bit more about H5P and how it integrates with LearnDash, let’s get started creating some engaging interactive content. **Step 1: Install H5P** From your WordPress Admin Dashboard, navigate to *Plugins* > *Add New Plugin*. Search for the H5P plugin and click **Install Now**. [![install-h5p-plugin](https://www.uncannyowl.com/wp-content/uploads/2024/08/install-h5p-plugin-1030x605.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/install-h5p-plugin.png) Once you’ve installed the H5P plugin, click **Activate**. [![activate-h5p-plugin](https://www.uncannyowl.com/wp-content/uploads/2024/08/activate-h5p-plugin.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/activate-h5p-plugin.png) **Step 2: Select H5P Content Type** From your WordPress Admin Dashboard, navigate to *H5P Content* > *Add New*. A panel *may* appear in the new screen, explaining that you will need to install a content type before continuing. If the panel did appear, click **I consent, give me the Hub!** [![h5p-connect-to-hub](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-connect-to-hub-1030x332.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-connect-to-hub.png) A panel *may* appear in the new screen, explaining that you will need to install a content type before continuing.If the panel did appear, click **I consent, give me the Hub!** Select the type of interactive content that you want to create. For example, we have selected “Fill in the Blanks”. [![fill-in-the-blanks-h5p-content-type](https://www.uncannyowl.com/wp-content/uploads/2024/08/fill-in-the-blanks-h5p-content-type-760x1030.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/fill-in-the-blanks-h5p-content-type.png) **Install** the content type if you haven’t already then click **Use**. **Step 3: Create H5P Content** Regardless of the content type that you have selected, H5P will have instructions on how to create your interactive content. For example, if you have selected “Fill in the Blanks” as we have, you will see these instructions: [![h5p-fill-in-the-blanks-instructions](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-fill-in-the-blanks-instructions-1030x327.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-fill-in-the-blanks-instructions.png) Or, if you had selected the “Interactive Video” content type, you would see these instructions: [![h5p-interactive-video-content-type](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-interactive-video-content-type.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-interactive-video-content-type.png) Once you’re finished, click **Create**. H5P will generate the content for you and provide you with a shortcode that you can use to embed it in your LearnDash courses, lessons, topics and quizzes. (Recall, however, that embedded H5P content will only contribute to learner progress in lessons and topics unless you have the **Uncanny Toolkit Pro** plugin.) [![shortcode-for-h5p-content](https://www.uncannyowl.com/wp-content/uploads/2024/08/shortcode-for-h5p-content-1030x178.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/shortcode-for-h5p-content.png) Not sure where to start? You can download sample content from H5P [**here**](https://h5p.org/content-types-and-applications). Select the type of content you want to sample and click **Reuse** on the content page. [![h5p-sample-content](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-sample-content-1030x643.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-sample-content.png) **Step 4: Embed H5P Content Into LearnDash** After creating your H5P content, **Copy** the shortcode. Open the lesson or topic you want to embed the content in. In the Lesson or Topic page, click the **Plus sign “+”** to add a block and select the **Shortcode** block. [![learndash-lesson-builder-shortcode-block](https://www.uncannyowl.com/wp-content/uploads/2024/08/learndash-lesson-builder-shortcode-block-1030x536.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/learndash-lesson-builder-shortcode-block.png) **Paste** the H5P shortcode into the space provided. [![h5p-shortcode-in-learndash-lesson-builder](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-shortcode-in-learndash-lesson-builder-1030x288.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-shortcode-in-learndash-lesson-builder.png) Complete building the rest of your lesson/topic. Once you’re finished, click **Publish** (or **Save** if you had previously published the post.) **Step 5: Test Your Interactive Content** You’re just about done! Add the lesson/topic to one of your courses from the LearnDash course builder. Before you open the enrollment process to your learners, we recommend testing your new interactive content. [![interactive-fill-in-the-blanks](https://www.uncannyowl.com/wp-content/uploads/2024/08/interactive-fill-in-the-blanks.gif)](https://www.uncannyowl.com/wp-content/uploads/2024/08/interactive-fill-in-the-blanks.gif) Great! Now that your interactive content is up and running, you’re probably wondering, “How can I track my learners’ progress?” In the next section, we’ll take a look at the only tool that can track your learners’ progress as well as their interactions with H5P content and generate detailed reports. ## [ Tin Canny Reporting ](https://www.uncannyowl.com/downloads/tin-canny-reporting/) for LearnDash and H5P Interactive Content Integrating H5P interactive content with your LearnDash courses adds another dimension to your LMS data. [**Tin Canny Reporting for LearnDash**](https://www.uncannyowl.com/downloads/tin-canny-reporting/) is the advanced reporting tool that provides in-depth insights into learner activities and engagement with interactive content. By integrating with H5P content, Tin Canny extends the capabilities of LearnDash, allowing educators to track detailed learner engagement and performance metrics. This section explores how Tin Canny Reporting works with H5P content and highlights its key features. ### **Detailed xAPI and H5P Reports** Tin Canny captures detailed xAPI statements from H5P content, providing granular insights into learner interactions. This includes tracking quiz responses, video interactions, and other H5P activities. For example, the “Tin Can Report” allows us to track our users’ engagement with all kinds of H5P content, even if it does not contribute to course progression. [![tin-can-report-all-interactions](https://www.uncannyowl.com/wp-content/uploads/2024/08/tin-can-report-all-interactions-1030x660.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/tin-can-report-all-interactions.png) The “xAPI Quiz Report” is another powerful tool for tracking even more granular xAPI data such as a learner’s responses to H5P interactive content. [![tin-canny-xapi-quiz-report](https://www.uncannyowl.com/wp-content/uploads/2024/08/tin-canny-xapi-quiz-report-1030x617.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/tin-canny-xapi-quiz-report.png) Tin Canny includes useful filters so that you can generate reports based on types of interactions, users, courses groups and more. With Tin Canny, educators can generate comprehensive progress reports that detail each learner’s journey through a course. These reports include data on which H5P activities have been completed, scores achieved, responses given, time spent on each activity and much more. [**Get Tin Canny Reporting for LearnDash so you can upgrade your LearnDash reports and incorporate H5P and xAPI content data>>>.**](https://www.uncannyowl.com/downloads/tin-canny-reporting/) ## [ Uncanny Toolkit Pro ](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/): Integrating H5P Content in LearnDash Courses Without Lessons [**Get Tin Canny Reporting for LearnDash so you can upgrade your LearnDash reports and incorporate H5P and xAPI content data>>>.**](https://www.uncannyowl.com/downloads/tin-canny-reporting/) So far, we’ve looked at embedding H5P interactive content into two types of LearnDash posts; lessons and topics. But what if you wanted to embed H5P content directly into a LearnDash course post type? This would be the case if you had a simple course that did not consist of lessons and its subordinate topics. On their own, H5P and LearnDash can’t accommodate such a scenario. But, with the [**Uncanny Toolkit Pro**](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) plugin, you can unlock more learning possibilities. [![uncanny-toolkit-pro-homepage](https://www.uncannyowl.com/wp-content/uploads/2024/02/uncanny-toolkit-pro-homepage-1030x486.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/uncanny-toolkit-pro-homepage.png) The Toolkit Pro plugin is designed specifically for augmenting and expanding LearnDash’s already impressive capabilities. If you’ve ever thought, “I sure wish LearnDash could do this,” there’s a good chance that the feature you’re looking for is in the toolkit—the Uncanny Toolkit. “Modules” such as “Group Expiration” and “Simple Course Timer” add much-needed functionality to a LearnDash website. However, it’s the “Single Course Pages” module that H5P users will find particularly interesting. [![toolkit-pro-single-course-page-module](https://www.uncannyowl.com/wp-content/uploads/2024/08/toolkit-pro-single-course-page-module-1030x551.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/toolkit-pro-single-course-page-module.png) The module makes it possible for users to create LearnDash courses that do not include lessons or topics. With this module enabled, users can embed H5P/xAPI supported content directly into a LearnDash course and still track progress and completions. Want to make a course out of an interactive video? Or an interactive video paired with a quiz that included a question set? You can make that happen with Tin Canny Reporting. ## More H5P and LearnDash Integrations with [ Automator ](https://www.automatorplugin.com/pricing) Still looking for more ways to integrate H5P and LearnDash? The [**Uncanny Automator**](https://www.automatorplugin.com/pricing) plugin may just be the tool you’re looking for. [![Automator Mascot Icon 512px](https://www.uncannyowl.com/wp-content/uploads/2022/12/Automator-Mascot-Icon-512px.png)](https://www.uncannyowl.com/wp-content/uploads/2022/12/Automator-Mascot-Icon-512px.png) Automator is the #1 automation and integration tool for WordPress websites, allowing you to connect H5P content to your whole LMS ecosystem. Using simple combinations of triggers and actions, you can do anything from sending an email in your preferred CRM to creating a card or task in Trello or ClickUp based on a learner’s journey. In the recipe pictured below, for example, we’re able to send an email to learners who score at or below a threshold with links to remedial content. [![h5p-automations-1](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-automations-1-1030x634.png)](https://www.uncannyowl.com/wp-content/uploads/2024/08/h5p-automations-1.png) We could also choose from any number of LearnDash specific actions, from adding learners to groups or enrolling them in courses based on their H5P content completions. [![learndash-actions](https://www.uncannyowl.com/wp-content/uploads/2024/08/learndash-actions.gif)](https://www.uncannyowl.com/wp-content/uploads/2024/08/learndash-actions.gif) [**Want to see how much more you can do with H5P and LearnDash? Get an Automator Pro license and integrate interactive content with your whole WordPress website>>>.**](https://www.automatorplugin.com/pricing) ## **Best Practices and Frequently Asked Questions** By now, you’re ready to create just about any kind of interactive content and integrate it with your LearnDash courses. But, as you continue to use H5P and LearnDash together, here are some best practices to keep in mind. **1. All H5P Interactive Content Has a Place** Different types of H5P content serve different purposes. Even if a content type does not have xAPI support and will not contribute to course progression, it may still be a valuable tool for reaching course objectives. **2. Test Compatibility and Functionality** Before deploying H5P content in live courses, thoroughly test each interactive element to ensure it functions correctly within the LearnDash environment. Verify that xAPI statements are being correctly sent and received, and that the content tracks learner progress accurately. **3. Use Tin Canny Reports to Monitor Engagement** Regularly review the data and reports generated by Tin Canny Reporting for LearnDash to monitor learner engagement with your interactive elements. You can use engagement metrics to inform content creation in the future and improve learner performance. **1. All H5P Interactive Content Has a Place** **How can I integrate H5P content with my LearnDash courses?** To embed H5P content into a LearnDash course: 1\. **Install** and **activate** the H5P plugin on your WordPress website. 2\. Create H5P content from the **H5P Content** menu. 3\. **Copy** the generated shortcode for the H5P content. 4\. **Paste** the shortcode into the LearnDash lesson(s) and/or topic(s) where you want the content to appear. 5\. **Add** the lesson(s) and topic(s) with your H5P content to a LearnDash course. This process allows you to integrate interactive H5P content seamlessly into your LearnDash courses, enhancing the learning experience. **Does progress in H5P and/or xAPI supported content equal progress in a LearnDash course?** Completion of H5P and/or xAPI supported content **does not** necessarily equal completion of a LearnDash course. LearnDash course progression is measured strictly by completion of the course’s lessons and subordinate topics. In other words, if a learner completed 50% of a lesson’s H5P/xAPI supported content, they would not have completed 50% of the course. This is true even if you are using the [**Uncanny Toolkit Pro**](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) plugin with the “Single Course Pages” module activated. ****Which H5P content types can I use with LearnDash?**** Technically, you can use any H5P content type with LearnDash. However, only the content types with xAPI support will contribute to LearnDash course progression. Check out our list of H5P content types with documented xAPI support above. Note, however, that this list is not exhaustive and subject to change with updates. ******What is Tin Canny Reporting and why do I need it for H5P and xAPI content?****** [**Tin Canny Reporting for LearnDash**](https://www.uncannyowl.com/downloads/tin-canny-reporting/) is an advanced reporting tool that provides in-depth insights into learner activities and engagement with interactive content. It is the only plugin for LearnDash-powered websites that will capture, collate and combine your LearnDash data with H5P and xAPI supported content data. **2. Test Compatibility and Functionality** ## **Conclusion** **3. Use Tin Canny Reports to Monitor Engagement** In this post, we’ve shown you how integrating H5P with LearnDash adds another dimension to your e-learning platform with interactive and engaging learning experiences. This comprehensive guide walked you through the essential steps to integrate H5P content, explained the significance of xAPI, and highlighted the importance of tracking learner progress with Tin Canny Reporting. **Ready to elevate your LearnDash content?** Record learner interactions with H5P and xAPI supported content with [**Tin Canny Reporting for LearnDash**](https://www.uncannyowl.com/downloads/tin-canny-reporting/). Then, unlock additional features for your LearnDash site with [**Uncanny Toolkit Pro**](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/). And don’t forget that more H5P integrations are waiting for you with an [**Uncanny Automator Pro license**](https://www.automatorplugin.com/pricing). Until next time, keep up the learning! **Ready to elevate your LearnDash content?** **Categories:** Best Practices, LearnDash, Tin Can --- ### [New Group Management & Transcript Features](https://www.uncannyowl.com/new-group-management-transcript-features/) **Published:** July 11, 2024 **Author:** Ryan Moore **Content:** To support several new features for [LearnDash](/share/learndash/) group management and transcripts, today we released updates for [Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/), [Uncanny Toolkit for LearnDash](https://en-ca.wordpress.org/plugins/uncanny-learndash-toolkit/), [Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) and [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/). There are also multiple quality of life improvements that will make things easier for users of those 4 plugins. ### Show archived data in transcripts Our [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) plugin has long offered a way to archive LearnDash course completions, so that when progress gets reset, there was still a record of those completions. It wasn’t always easier for students themselves to see those records, however, so today’s releases of Uncanny CEUs and Toolkit Pro make it possible to show those records in learner transcripts with this new setting: [![Show archived course completions in transcripts](https://www.uncannyowl.com/wp-content/uploads/2024/07/Show-archived-course-completions-in-transcripts-1.png "Show archived course completions in transcripts - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2024/07/Show-archived-course-completions-in-transcripts-1.png) This tool is optional, and only available when we detect that Uncanny Continuing Education Credits is active, but when enabled students will be able to see all course completion records, both current and archived. It now represents the best way for students to see a consolidated view of their current and historical learning activities. ### New features in Uncanny Groups for LearnDash The existing user upload tool on the [Group Management page](https://www.uncannyowl.com/knowledge-base/group-management-page/) can be limiting, which was done intentionally to make sure Group Leaders could make changes that had the potential to introduce security or privacy risks. Going forward, Group Leaders can now add additional records to CSV upload files: - Including a “user\_login” column in the upload file allows Group Leaders to set the WordPress account username for new users. - User meta keys can be added as column headings and the contents of those columns will be added as meta values. These are still advanced capabilities for Group Leaders, so most will not (and probably should not) be using these tools, but they are available now for situations where they can provide value. In the [Group Course report](https://www.uncannyowl.com/knowledge-base/group-leader-reports/), there’s a new “Time” column for courses that can be optionally included if you use the [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) module in Uncanny Toolkit Pro. Over in the Group Quiz report, we have had a number of requests to remove columns completely so they’re simply no longer available. There are now options to set or unset columns with a filter, as in this code snippet example: ``` add_filter( 'ulgm_quiz_report_table_columns', function( $columns ) { if ( isset( $columns['quiz_modal'] ) ) { unset( $columns['quiz_modal'] ); } if ( isset( $columns['quiz_score'] ) ) { //unset( $columns['quiz_score'] ); } if ( isset( $columns['user_email'] ) ) { //unset( $columns['user_email'] ); } if ( isset( $columns['quiz_date'] ) ) { //unset( $columns['quiz_date'] ); } return $columns; } ); ``` Finally, groups gain a new option to set a group-specific email template for the “Send enrollment key” email. From LearnDash group edit pages, you can now set an override to send out emails unique to the group when enrollment keys are sent out to invited users. Additional improvements and fixes for today’s 4 plugin releases are covered in their respective changelogs: [Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/knowledge-base/learndash-toolkit-changelog/) [Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/learndash-toolkit-pro-change-log/) [Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-changelog/) [Uncanny Continuing Education Credits](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-changelog/) **Categories:** LearnDash, News --- ### [The Uncanny Ecosystem: How to Use Uncanny Plugins Together](https://www.uncannyowl.com/the-uncanny-ecosystem-how-to-use-uncanny-plugins-together/) **Published:** May 2, 2024 **Author:** Brendan Da Costa **Content:** *Discover more incredible ways to use the Uncanny Owl addons and plugins that you already have! Get better LearnDash reports, more control over your groups and much more!* Since its inception, the team at Uncanny Owl has been dedicated to helping build the **[LearnDash](https://www.uncannyowl.com/share/learndash/)** community. As such, over the years, we’ve been proud to develop some of the highest-rated addons and plugins in the LMS ecosystem. Of course, each of our plugins and addons are standalone products that can enhance the user experience and save site administrators countless hours. But, if you’re reading this article, you probably already knew that. After all, **Uncanny Toolkit** is the #1 free plugin for LearnDash websites and **[Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/#pricing)** is the top paid third-party addon. However, we also designed our plugins and addons to work together in surprising ways that even experienced LearnDash web developers might not know. In this article, we want to explore the ways in which the Uncanny ecosystem of addons and plugins can improve your LearnDash LMS. We bet you didn’t even know you had these hidden tools at your fingertips the whole time! Let’s take a look. ## **[Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/#pricing) + [Tin Canny Reporting](https://www.uncannyowl.com/downloads/tin-canny-reporting/#pricing): Course Timer** **[Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/#pricing)** is a LearnDash addon that enhances the functionality of your LMS. With the simple click of a button, you can add any number of features (what we call modules) to your LearnDash website. [![uncanny-toolkit-pro-homepage](https://www.uncannyowl.com/wp-content/uploads/2024/02/uncanny-toolkit-pro-homepage-1030x486.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/uncanny-toolkit-pro-homepage.png) Want to preview certificates, add a course expiration countdown, import users, restrict access or create custom group logos? All of that and more is possible with the Toolkit Pro addon. Similarly, **[Tin Canny Reporting](https://www.uncannyowl.com/downloads/tin-canny-reporting/#pricing)** puts your LearnDash user, course and even quiz data right at your fingertips. If you’re looking for a data-driven approach to improve the learner experience and inform educators and group leaders, then Tin Canny Reporting is a must-have. [![tin-canny-reporting-homepage](https://www.uncannyowl.com/wp-content/uploads/2024/04/tin-canny-reporting-homepage-1030x397.png)](https://www.uncannyowl.com/wp-content/uploads/2024/04/tin-canny-reporting-homepage.png) Toolkit Pro and Tin Canny Reporting work best together with Toolkit Pro’s **Simple Course Timer** module. [![toolkit-pro-simple-course-timer-module](https://www.uncannyowl.com/wp-content/uploads/2024/04/toolkit-pro-simple-course-timer-module-1030x587.png)](https://www.uncannyowl.com/wp-content/uploads/2024/04/toolkit-pro-simple-course-timer-module.png) When you activate this module, Toolkit Pro will automatically track the amount of time that a student spends on a course. The module also detects idle time and gives you the ability to restrict access to quizzes until a student spends a minimum amount of time in a course. With the Tin Canny Reporting addon, the **Simple Course Timer** adds two columns to your LearnDash course reports: *Time to Complete* and *Time Spent*. [![tin-canny-reporting-course-report-with-time-columns](https://www.uncannyowl.com/wp-content/uploads/2024/04/tin-canny-reporting-course-report-with-time-columns-1030x219.png)](https://www.uncannyowl.com/wp-content/uploads/2024/04/tin-canny-reporting-course-report-with-time-columns.png) You can use these columns to assess course difficulty, identify stragglers and optimize content for your learners. Additionally, thanks to Tin Canny’s one-click export features, you can download your course reports in a CSV file and analyze your metrics in **Google Sheets**, **Numbers** or any spreadsheet of your choosing. ## **Toolkit Pro + [Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/#pricing): Enhanced CSV Reports** The **[Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/#pricing)** addon gives LearnDash administrators the ability to award certificates based on credits. If you’ve ever wanted to create a dynamic degree or offer the elearning equivalent to your in-person programs, this is the addon you’ve been looking for. [![continuing-education-credits-homepage](https://www.uncannyowl.com/wp-content/uploads/2024/04/continuing-education-credits-homepage-1030x400.png)](https://www.uncannyowl.com/wp-content/uploads/2024/04/continuing-education-credits-homepage.png) Pairing the **Continuing Education Credits** addon with Toolkit Pro’s **Enhance CSV Reports** module also improves some of LearnDash’s core reporting features. [![toolkit-pro-enhanced-csv-reports](https://www.uncannyowl.com/wp-content/uploads/2024/04/toolkit-pro-enhanced-csv-reports-1030x463.png)](https://www.uncannyowl.com/wp-content/uploads/2024/04/toolkit-pro-enhanced-csv-reports.png) LearnDash’s *User Course Data* and *User Quiz Data* are both great reporting tools on their own. Just as with Tin Canny Reporting, one-click export and download to a CSV file format makes analyzing your LMS data that much easier. However, when you pair Uncanny’s **Enhanced CSV Reports** module with the **Continuing Education Credits** addon, you get some additional LMS data. After you’ve activated the module, click **Settings** and check the box next to *Uncanny CEU*s. [![enhanced-learndash-csv-reports-ceus](https://www.uncannyowl.com/wp-content/uploads/2024/04/enhanced-learndash-csv-reports-ceus-641x1030.png)](https://www.uncannyowl.com/wp-content/uploads/2024/04/enhanced-learndash-csv-reports-ceus.png) From now on, your LearnDash course and quiz reports will include a column with the learner’s CEUs. This enhanced report can help educators and administrators in segmenting learners, tracking learners’ progress and fulfilling educational targets. ## **Toolkit Pro + Continuing Education Credits: Learner Transcripts** The **Enhanced CSV Reports** that we explored in the previous section added a CEUs column for site administrators and educators. But students also have a vested interest in tracking their credits and monitoring their progress. That’s where the **Learner Transcripts** module in Toolkit Pro comes in. [![toolkit-pro-learner-transcript-module](https://www.uncannyowl.com/wp-content/uploads/2024/04/toolkit-pro-learner-transcript-module-1030x363.png)](https://www.uncannyowl.com/wp-content/uploads/2024/04/toolkit-pro-learner-transcript-module.png) When paired with the **Continuing Education Credits** addon, the **Learner Transcripts** module adds a CEUs column to the front-end of your website. [![learner-transcript-module-ceus-addon](https://www.uncannyowl.com/wp-content/uploads/2024/04/learner-transcript-module-ceus-addon-1030x759.png)](https://www.uncannyowl.com/wp-content/uploads/2024/04/learner-transcript-module-ceus-addon.png) To add this student transcript to your LearnDash website, simply insert this shortcode on any page (likely the user’s Account page): ``` [uo_transcript] ``` Your learners will now have easy access to a report that includes all of their progress to-date so they can better manage their own educational goals. ## **Toolkit Pro + [Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/): Registration with Seat Limits** The **[Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/)** addon is the best way to manage organizations within your LearnDash LMS. Give your group leaders access to management and reporting tools without compromising your site security. Sell group access licenses so that organizations can manage themselves and create group hierarchies. [![uncanny-groups-for-learndash-homepage](https://www.uncannyowl.com/wp-content/uploads/2024/02/uncanny-groups-for-learndash-homepage-1030x407.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/uncanny-groups-for-learndash-homepage.png) Toolkit Pro’s **Group Registration** module adds another must-have feature to the Uncanny Groups addon for easier, hands-off group management. ![toolkit-pro-group-registration-module](https://www.uncannyowl.com/wp-content/uploads/2024/04/toolkit-pro-group-registration-module-1030x416.png) By creating unique registration URLs, the **Group Registration** module allows users to register for groups themselves when creating their accounts. Additionally, users can change groups or join new ones by visiting the unique registration URLs. Most importantly, with the **Uncanny Groups** addon and the **Group Registration** module working together, you can ensure that seat limits are never exceeded. If an unregistered or existing user visits a group’s unique registration URL when that group is full, they will see a simple message informing them that there are no available seats. ## **[Uncanny Automator](https://www.automatorplugin.com/pricing) + Everything!** For all other symbiotic relationships in the Uncanny ecosystem, there is **[Uncanny Automator](https://www.automatorplugin.com/pricing)**. As the #1 automation and integration plugin for WordPress websites, Automator can connect all of the various apps and plugins that you use to enhance your LearnDash LMS. [![learndash-and-uncanny-integrations-in-automator](https://www.uncannyowl.com/wp-content/uploads/2024/04/learndash-and-uncanny-integrations-in-automator.png)](https://www.uncannyowl.com/wp-content/uploads/2024/04/learndash-and-uncanny-integrations-in-automator.png) With **[Uncanny Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/#pricing)** and **Uncanny Groups**, for example, Automator can register users for a group when they redeem a code. [![uncanny-codes-and-learndash-recipe](https://www.uncannyowl.com/wp-content/uploads/2024/04/uncanny-codes-and-learndash-recipe-1030x625.png)](https://www.uncannyowl.com/wp-content/uploads/2024/04/uncanny-codes-and-learndash-recipe.png) Alternatively, Automator can add and remove seats from a group in **Uncanny Groups** with code redemption to help organizations within your LMS to promote courses and groups. [![uncanny-codes-and-uncanny-groups-recipe](https://www.uncannyowl.com/wp-content/uploads/2024/04/uncanny-codes-and-uncanny-groups-recipe-1030x694.png)](https://www.uncannyowl.com/wp-content/uploads/2024/04/uncanny-codes-and-uncanny-groups-recipe.png) Or, how about awarding unique LearnDash certificates based on a learner’s **Uncanny CEUs** credits? [![uncanny-ceus-and-learndash-certificates-recipe](https://www.uncannyowl.com/wp-content/uploads/2024/04/uncanny-ceus-and-learndash-certificates-recipe-1030x582.png)](https://www.uncannyowl.com/wp-content/uploads/2024/04/uncanny-ceus-and-learndash-certificates-recipe.png) All of these integrations between Uncanny Owl plugins and addons are possible with **Automator**—plus a whole lot more! With dozens of triggers, actions and filters to choose from you can create just about symbiotic integration between **LearnDash** and **Uncanny Owl** plugins and addons that you can dream of. ## **Conclusion** In this post, we explored some of the hidden ways that Uncanny Owl plugins and addons work together. In the end, we briefly explored how Uncanny Owl’s Automator plugin can create even more powerful integrations between your favorite LearnDash addons and plugins. You should now have a better understanding of how the Uncanny ecosystem ties together. Of course, we’re always looking for more ways to help you manage your WordPress website. Don’t see an integration that you’re desperate to have? Unsure how some of these integrations work? Drop us a line in the comments section below and we’ll get back to you. **Categories:** Best Practices, LearnDash --- ### [Share LearnDash Quiz Results with Students & Educators](https://www.uncannyowl.com/share-learndash-quiz-results-with-students-educators/) **Published:** February 29, 2024 **Author:** Brendan Da Costa **Content:** *Give your students a new way to study and learn. Share LearnDash quiz results directly with students and give group leaders access to insightful quiz reports with Uncanny Groups, Tin Canny Reporting and Uncanny Automator.* Are you looking for a way to share your students’ quiz results? Or, maybe you want to give your group leaders and educators access to powerful reporting tools so that they can analyze quiz data. Regardless of the reason, if you want to do more with your LearnDash quiz results, you’ve landed on the right page. In this article, we’ll show you how three plugins—[**Uncanny Groups**](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/#pricing), [**Tin Canny Reporting**](https://www.uncannyowl.com/downloads/tin-canny-reporting/#pricing), and [**Uncanny Automator**](https://www.automatorplugin.com/pricing)—can help you make the most of your LearnDash data. Let’s get to it. ## **Introduction** In this article, we’ll show you a handful of different ways to use your LearnDash data to empower group leaders and educators and optimize student learning. By the end of this article, you’ll have solutions for: - sharing quiz records with students and instructors via email, and/or private message in **[BuddyBoss](https://www.uncannyowl.com/share/buddyboss/)**, **[SMS](https://automatorplugin.com/share/twilio/)**, **[WhatsApp](https://automatorplugin.com/share/whatsapp/)**, and more, - building your own quiz reports in **[Google Sheets](https://automatorplugin.com/share/google/)** and/or **[Airtable](https://automatorplugin.com/share/airtable/)**, - making essays and assignments easier for educators to access and grade via front-end tools, - analyzing quiz question quality to improve question sets, and - reviewing results in front-end reports. We’re certain that you’re eager to learn more about implementing these solutions, so let’s take a closer look at the plugins we’ll be using. ## [Uncanny Automator](https://www.automatorplugin.com/pricing) [**Uncanny Automator**](https://www.automatorplugin.com/pricing) is the #1 automation and integration plugin for WordPress websites. Using simple combinations of triggers and actions, you can create seamless workflows across your entire website. [![automator-homepage](https://www.uncannyowl.com/wp-content/uploads/2024/02/automator-homepage-1030x529.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/automator-homepage.png) When it comes to disseminating LearnDash quiz data, Automator offers unparalleled flexibility. Instantaneously share quiz results with students, group leaders and/or administrators across any number of your chosen platforms, including emails, **[BuddyBoss](https://www.uncannyowl.com/share/buddyboss/)**, **[Slack](https://automatorplugin.com/share/slack/)**, **[WhatsApp](https://automatorplugin.com/share/whatsapp/)**, **[Twilio](https://automatorplugin.com/share/twilio/)** and more. In later sections, we’ll show you how simple it is to integrate your LearnDash LMS with your communication and reporting tools of choice. For now, **[grab your Automator Pro license and unlock a whole world of WordPress possibilities.>>>](https://www.automatorplugin.com/pricing)** ## [Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/#pricing) LearnDash Groups are an essential component of any LearnDash-powered elearning platform. For those administrators looking to improve the student and educator experiences, however, the [**Uncanny Groups**](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/#pricing) plugin adds invaluable features. [![uncanny-groups-for-learndash-homepage](https://www.uncannyowl.com/wp-content/uploads/2024/02/uncanny-groups-for-learndash-homepage-1030x407.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/uncanny-groups-for-learndash-homepage.png) Uncanny Groups gives LearnDash Group leaders, students and administrators new tools such as: - front-end group reporting, including essay and assignment management, - control for Group Leaders to add, edit and remove users, - individual and group sales for ecommerce (sell licenses to organizations and schools that they can manage themselves!) - progress overrides and, - optional email capabilities for Group Leaders. [**Get your Uncanny Groups license now so you can implement better reporting solutions.>>>**](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/#pricing) ## [Tin Canny Reporting](https://www.uncannyowl.com/downloads/tin-canny-reporting/#pricing) [**Tin Canny**](https://www.uncannyowl.com/downloads/tin-canny-reporting/#pricing) is a powerful plugin, optimally designed to revolutionize the way elearning platforms track, disseminate and analyze data within their LMS. Developed with a focus on user-friendly functionality and robust data insights, Tin Canny puts detailed LearnDash data at your fingertips. You can also leverage SCORM / xAPI records and H5P data to drill down into quiz-level analytics and/or get summary level data. [![tin-canny-homepage](https://www.uncannyowl.com/wp-content/uploads/2024/02/tin-canny-homepage-1030x408.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/tin-canny-homepage.png) With Tin Canny Reporting, users can seamlessly extract, manipulate, and visualize data from their LMS in as many ways as they choose. Whether it’s monitoring learner progress, assessing course effectiveness, evaluating engagement metrics or drilling down into quiz questions, Tin Canny Reporting provides the tools you need. [![tin-canny-recent-activities-report](https://www.uncannyowl.com/wp-content/uploads/2024/02/tin-canny-recent-activities-report-1030x419.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/tin-canny-recent-activities-report.png) Empower your educators and administrators with Tin Canny Reporting to gain deeper insights into your LearnDash data. [**Get Tin Canny Reporting now to optimize your student learning and group management experience.>>>**](https://www.uncannyowl.com/downloads/tin-canny-reporting/#pricing) ## **Send Students a Copy of Their LearnDash Quiz Results with Automator** Quiz data can be an invaluable study aid for students and an important resource for educators. Automator puts that all-important quiz data right at your fingertips to disseminate as you choose. [![email-learndash-quiz-results-to-students](https://www.uncannyowl.com/wp-content/uploads/2024/02/email-learndash-quiz-results-to-students-1015x1030.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/email-learndash-quiz-results-to-students.png) In the Automator recipe pictured above, for example, we’re able to email quiz results directly to our students so that they can keep a record for themselves as a study guide for later on. We can then use features like [*tokens*](https://automatorplugin.com/action-tokens/) and [*filters*](https://automatorplugin.com/knowledge-base/action-filters-conditions/) to customize the email content (including which datum to send) and create a personalized learning experience. Additionally, we can use Automator to help our students find immediate remedial assistance. For example, in the recipe pictured below, we’re able to notify a student’s group leader if/when they fail a quiz. Using tokens, we can include information about the student’s quiz experience—such as how long it took them to complete the quiz and the number of times they’ve attempted it—to help group leaders give their students the assistance they need. [![notify-learndash-group-leaders-about-quiz-fail](https://www.uncannyowl.com/wp-content/uploads/2024/02/notify-learndash-group-leaders-about-quiz-fail-1030x709.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/notify-learndash-group-leaders-about-quiz-fail.png) Recipes like these ones are just simple examples of how you might choose to share LearnDash quiz data with your students and educators. You can even integrate quiz results into your CRM, such as **[ActiveCampaign](https://www.uncannyowl.com/share/activecampaign)**, **[Groundhogg](https://automatorplugin.com/share/groundhogg)** and **[HubSpot](https://automatorplugin.com/share/hubspot/)** to launch personalized engagement and improvement campaigns. Want to give your students even more options for reviewing their LearnDash data? Scroll down to the **[Front-End Reports section](#anchor)** for solutions that keep your students on your LearnDash-powered site. ## **Create Custom LearnDash Reports in Google Sheets and Airtable with Automator** External apps such as Google Sheets and Airtable allow you to perform powerful analyses of your LearnDash quiz data. With Automator, you can easily send all of your quiz results to these analysis-focused apps to keep track of your metrics, create custom reports and optimize your quizzes for student learning. [![connect-learndash-to-google-sheets](https://www.uncannyowl.com/wp-content/uploads/2024/02/connect-learndash-to-google-sheets-1011x1030.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/connect-learndash-to-google-sheets.png) In the recipe pictured above, for example, we’re able to store all of our students’ quiz attempts in Google Sheets. We can store minute data such as their answers to specific questions and broader data such as the number of correct answers. Keeping track of metrics such as the average amount of time it takes our students to complete a quiz and the number of attempts they’ve made can help us to optimize our quiz content. Additionally, Automator allows you to store your LearnDash quiz data in a relational database like Airtable so you can visualize quiz results in any number of ways. Click the image below to learn how to connect your WordPress website to Airtable. [![Connect-Your-WordPress-Website-to-Airtable-with-Automator-Feature-Image](https://www.uncannyowl.com/wp-content/uploads/2024/02/Connect-Your-WordPress-Website-to-Airtable-with-Automator-Feature-Image.png)](https://automatorplugin.com/connect-your-wordpress-website-to-airtable-with-automator/) **[Connect Your WordPress Website to Airtable with Uncanny Automator>>>](https://automatorplugin.com/connect-your-wordpress-website-to-airtable-with-automator/)** ## **Front-End Essay and Assignment Management with Uncanny Groups** Particularly in B2B sales, LearnDash group leaders often need greater access and control over their group’s content than administrators can reasonably give. Fortunately, Uncanny Groups takes essay question and assignment access and grading out of the back-end of your WordPress website (i.e., out of /wp-admin/) and puts it comfortably on the front-end. Using a simple shortcode, you can give your LearnDash group leaders greater control of essay questions and assignments. [**Essay Question Management**](https://www.uncannyowl.com/knowledge-base/front-end-essay-question-management/)**:** With the front-end management solution, group leaders can review essay questions submitted by users in their group, access the associated lesson, course, quiz or comments, grade and assign points to essay questions submitted by users in their group, and do a whole lot more. [![LearnDash Essay Question Management](https://www.uncannyowl.com/wp-content/uploads/2019/02/essay-questions-1030x323.png)](https://www.uncannyowl.com/wp-content/uploads/2019/02/essay-questions.png) [**Assignment Management**](https://www.uncannyowl.com/knowledge-base/front-end-learndash-assignment-management/)**:** Similarly, with the front-end management solution for assignments, group leaders can download and review assignments submitted by users, approve and assign points to assignments submitted by users, filter assignments by group, course, lesson and status (approved/not approved), and do a whole lot more. [![LearnDash Assignment Management](https://www.uncannyowl.com/wp-content/uploads/2019/02/assignment-management-1030x482.png)](https://www.uncannyowl.com/wp-content/uploads/2019/02/assignment-management.png) ## **Front-End Reporting with Tin Canny** Tin Canny puts versatile user, group, course and even question level reports directly on the front-end of your LearnDash-powered WordPress website. Click the links below to learn how to implement these solutions on your site for your students, group leaders and administrators. (Spoiler Alert: you’ll only need to copy and paste a shortcode or two!) [**LearnDash Quiz Question Report**](https://www.uncannyowl.com/knowledge-base/learndash-quiz-question-analysis-report/)**:** Ever wanted to optimize your LearnDash quiz questions? Want to know which single-choice, multiple-choice or true/false questions are too difficult or too easy? The Quiz Question Analysis Report gives LearnDash group leaders and WordPress administrators question-level data so they can optimize questions and improve student learning. [![LearnDash Quiz Question Analysis Report](https://www.uncannyowl.com/wp-content/uploads/2022/03/LearnDash_Quiz_Question_Analysis-1030x562.png)](https://www.uncannyowl.com/wp-content/uploads/2022/03/LearnDash_Quiz_Question_Analysis.png) [**Front-End Quiz Report for Group Leaders**](https://www.uncannyowl.com/knowledge-base/front-end-quiz-reports/): The front-end Quiz Report allows administrators and group leaders to view consolidated quiz data. If you’ve enabled quiz statistics, there will also be a link to detailed quiz results for that user and quiz attempt. [**Front-End Quiz Report for Students**](https://www.uncannyowl.com/knowledge-base/front-end-quiz-reports/)**:** The User Quiz Report outputs LearnDash quiz scores across all courses for the user viewing the page. This report can be used by students, Group Leaders and administrators to see a consolidated list of results. [![Tin Canny User Quiz Report](https://www.uncannyowl.com/wp-content/uploads/2018/07/tincanny-user-quiz-report-1030x408.png)](https://www.uncannyowl.com/wp-content/uploads/2018/07/tincanny-user-quiz-report.png) [**Detailed Quiz Report**](https://www.uncannyowl.com/new-learndash-quiz-report/)**:** If educators need to see all data for a quiz, across all courses and groups, the Detailed Quiz Report is the best option. This report outputs all quiz attempts by all students, and shows the most complete set of results for a specific quiz. [![LearnDash Detailed Quiz Report](https://www.uncannyowl.com/wp-content/uploads/2024/02/LearnDash-Detailed-Quiz-Report-1030x452.png)](https://www.uncannyowl.com/wp-content/uploads/2024/02/LearnDash-Detailed-Quiz-Report.png) ## **Conclusion** In this article, we introduced you to Uncanny Automator, Uncanny Groups and Tin Canny Reporting; three powerful tools for gathering, disseminating and analyzing your LearnDash quiz data. We showed you some of the simple ways to share quiz data with your students and group leaders and store it in external apps such as Airtable. Next, we covered some of the versatile reporting features of Uncanny Groups and Tin Canny, including the types of data that you can collect and where you can include these reports. Hopefully, you’re now feeling confident in your ability to gather the elearning data that matters most to you and your students. However, if you’re uncertain how exactly to generate the kind of data that you’re looking for, drop us a line in the comments section below. Until then, happy learning! **Categories:** Best Practices, LearnDash, Tin Can, Uncanny Automator --- ### [2023 - Year in Review](https://www.uncannyowl.com/2023-year-in-review/) **Published:** December 21, 2023 **Author:** Ryan Moore **Content:** 2023 has been a huge year for Uncanny Owl and there’s a lot for our team and customers to celebrate. From plugin releases to WordCamp Europe to customer support, the year was packed with milestones and accomplishments. 🥳🥳 ### Plugin releases So far in 2023 we have released a total of **90** plugin updates, with 1 or 2 more expected before year-end. (Yes, that does mean we released a plugin update more frequently than once every 3 business days!) Here’s the breakdown: - [Uncanny LearnDash plugins](https://www.uncannyowl.com/plugins/): 41 releases - [Uncanny Automator](https://wordpress.org/plugins/uncanny-automator/): 30 releases - [Uncanny Automator Pro](https://automatorplugin.com/pricing/): 17 releases - New [Custom User Fields Addon for Automator](https://automatorplugin.com/custom-user-fields-addon/): 2 releases - New [Restrict Content Addon for Automator](https://automatorplugin.com/restrict-content-addon/): 1 release Every single one of our plugins gained new features this year. Here are some of the highlights: - Uncanny Automator: Webhook retries and response support, [new log system](https://automatorplugin.com/automator-4-15-logs-gpt4-charitable-msteams/), [robust OpenAI support](https://automatorplugin.com/integration/openai/), [>30 integrations](https://automatorplugin.com/integrations/) - Uncanny Automator Pro: [User Loops](https://automatorplugin.com/knowledge-base/user-loops/), [Post Loops](https://automatorplugin.com/knowledge-base/post-loops/), [Run Now](https://automatorplugin.com/knowledge-base/run-now/), [the Formatter](https://automatorplugin.com/knowledge-base/the-formatter-action/) - Uncanny Toolkit Pro: New modules for [Drip Topics by Group](https://www.uncannyowl.com/knowledge-base/drip-topics-by-ldgroup/), [Bulk Certificate Download](https://www.uncannyowl.com/knowledge-base/download-certificates-in-bulk/), [Autocomplete on Fluent Forms](https://www.uncannyowl.com/knowledge-base/ffforms-auto-completes-lessons-topics/) and [Formidable Forms](https://www.uncannyowl.com/knowledge-base/formidable-auto-completes-lessons-topics/) submission - Tin Canny Reporting: New module upload system, new [lesson and topic completion reports](https://www.uncannyowl.com/knowledge-base/lesson-and-topic-completion-reports/) - Uncanny Groups: [Manage group hierarchy relationships in the front end](https://www.uncannyowl.com/uncanny-groups-5-4-front-end-group-hierarchy-management/), [new front end edit group wizard](https://www.uncannyowl.com/uncanny-groups-new-edit-group-wizard/), email support for child groups, [set fixed group price and minimum/maximum seat quantities](https://www.uncannyowl.com/knowledge-base/creating-pre-configured-learndash-group-licenses/#fixed-pricing-and-quantity-overrides) - Uncanny Codes: Support for replacing, cancelling & deleting individual codes Those are just the biggest new features, of course; changelogs across our various releases had over 650 total entries. For Automator plugins alone, there were over 250,000 code changes! 🤯 The [Automator 5.0 releases](https://automatorplugin.com/introducing-loops/) along with its two new addons represented a big expansion of Automator’s capabilities, evolving it from a pure integration and workflow tool toward a complete WordPress site development platform. Where customers used to think, “How can I connect these 2 things together?”, it’s starting to shift to, “Do I really need all these other things anyway if Automator and its addons can do it all for me?” [![Automator Loops](https://www.uncannyowl.com/wp-content/uploads/2023/12/Automator-Loop-Email-Notification-1030x387.png "Automator-Loop-Email-Notification - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/12/Automator-Loop-Email-Notification.png) In addition to the work on our own plugins, our developers made core contributions to *several* releases of WordPress itself! 👊 ### Plugin support Our Help Desk has been busier than ever, sending over 14,000 replies (from January 1 to November 30) and resolving well over 6,000 tickets. Here are just a few of the comments from customers this year: - *You responded very quickly, took my ticket seriously… and offered me a solution within 24 hours. Thank you for great customer service!* - *These guys just get better and better. Very glad I chose Uncanny Owl.* - *This is probably the most thorough, specific and tailored technical assistance I’ve ever had from a plugin support team.* - *Far beyond what I was actually expecting. \[Uncanny Owl\] went the extra mile and assisted me with a mostly unrelated issue that will save me quite a bit of time in my general business.* - *I am blown away by the capabilities of this plugin. I have been able to achieve things across multiple sites that I didn’t think possible. It was simple to use and when I did hit a snag, the support was incredible. They did everything they could to drill down on the issue.* - *Outstanding – fast, competent, responsive. Superb as ever.* - *More great support from Uncanny Owl – consistently some of the best customer service I’ve encountered in any industry. Great work guys.* - *These guys are just unreal – SUCH an impressive level of support and expertise. Truly exceptional. Keep up the great work, y’all. Cheers* - *You can remove the Help Scout form’s buttons for “okay” and “not good”. They seem unnecessary for a company like Uncanny Owl. 😉* - *The feedback received was clearly documented and helped a great deal with resolving multiple issues. Thank you very much! Ps. Your solution is amazing too 🙂* ### Install growth It was a big year for all of our plugins, but of course the star was [Uncanny Automator](https://automatorplugin.com/). We increased Automator’s install base by over 50%, moving from 20,000 active installs to over 30,000 in less than a year. It’s also up to over 750,000 downloads. While the install count is still just behind our [Uncanny Toolkit for LearnDash](https://wordpress.org/plugins/uncanny-learndash-toolkit/) plugin, Automator will eclipse the Toolkit in about 3 months. Beyond just the growth in the number of sites using Automator, we’ve also seen growth in how much Automator is used on each site. Over the past year, Automator users have run *over 50 million recipes* (and that’s just from sites that are sharing analytics data; the actual number is much higher)! The average site now also has over 5 active recipes (up from about 3.5 in 2022). [Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) remains our most popular premium plugin, crossing the 8,000 sales threshold this year, and it’s thrilling that all of our premium plugins have now sold *thousands* of copies each! ### New plugins Late this year we were thrilled to announce 2 brand new plugins for Uncanny Automator: the Custom User Fields addon and the Restrict Content addon. [Custom User Fields](https://automatorplugin.com/custom-user-fields-addon/) makes it really easy to add new fields for user profiles, display and manage the data, and incorporate those fields into your Automator recipes. It’s also fully compatible with any other plugin that adds custom fields to user meta. [![Automator Custom User Fields](https://www.uncannyowl.com/wp-content/uploads/2023/12/User-fields-for-WordPress-profiles.png "User-fields-for-WordPress-profiles - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/12/User-fields-for-WordPress-profiles.png) [Restrict Content](https://automatorplugin.com/restrict-content-addon/) is a simple but powerful plugin that makes it easy to set up access/membership levels, manage them for users, then control access to blocks, posts, pages, and shortcode content. It’s all tightly connected to Automator, so it’s easy to manage access levels using recipes. [![WordPress Accessl Levels](https://www.uncannyowl.com/wp-content/uploads/2023/12/WordPress-Access-Levels-1030x424.png "WordPress-Access-Levels - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/12/WordPress-Access-Levels.png) Both are free tools for anyone with a [Business or Agency annual license for Automator](https://automatorplugin.com/pricing/). ### Plugin ratings Beyond the feedback we received in our Help Desk, Uncanny Automator and the Uncanny Toolkit received lots of new [5-star reviews on WordPress.org](https://wordpress.org/support/plugin/uncanny-automator/reviews/?filter=5). In fact, over 97% of reviews in 2023 were 5 stars! Here’s a sample of some of the feedback we received: - *We had a quote for customisation – approx £2,500 – way out of our reach as a tiny charity. But a few days work with Uncanny Automator Pro, MemberPress, Google Sheets and MailChimp and we have a fully functional automated system for a fraction of the cost, and we’re identifying other opportunities on a daily basis.* - *WOW! It was the best decision ever. This PLUGIN is great, I’m in love with the things you can do and to be honest I haven’t explored half of it.* - *This plugin has been absolutely brilliant, any automation process I’ve needed it has fulfilled. Without a doubt, I’d recommend this plugin to anyone that needs automation built into their WordPress site.* - *Uncanny Automator is super powerful with so many integration one can not fathom how powerful this plugin can be. It is definitely one of my top 3 plugins to install on all my WordPress websites.* - *This is a MUST HAVE plugin for any WordPress site, especially those utilizing LMS or WooCommerce!* It’s also been a thrill to be featured on more “best WordPress plugins” lists than we can count! 😎 ### New content It’s been a busy year for the writers at Uncanny Owl, with more than enough new blog posts and knowledge base articles to fill a book or two. In our goal to make our plugins as useful and well documented as possible, we published over 60 new [blog posts for Uncanny Automator](https://automatorplugin.com/blog/), a dozen for [Uncanny Owl](https://www.uncannyowl.com/uncanny-blog/), plus several dozen new Knowledge Base articles. We know that all of the new content is helpful, but we’re also aware that it makes discovery challenging and that it’s a lot of text to go through. With almost 250 total Knowledge Base articles, in 2024 we’ll implement more ways to quickly find content that’s relevant to you. ### Team meetups In our first big meetup post-COVID, most of the Uncanny team was able to travel to Athens in June for WordCamp Europe. It was an incredible opportunity for our team, families and peers to connect in a gorgeous location. From left to right, here’s a picture of David, Ken, Dani, Brendan, Nastia, Agus, Manal, Saad and Ryan in front of the Athens conference centre: [![WCEU 2023 Uncanny Owl](https://www.uncannyowl.com/wp-content/uploads/2023/12/WCEU-2023-Uncanny-Team-1.jpeg "WCEU-2023-Uncanny-Team-1 - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/12/WCEU-2023-Uncanny-Team-1.jpeg) For even more details about our WordCamp Europe adventure, check out the full [blog post](https://automatorplugin.com/wordcamp-europe-2023/). In December, we met up with the Toronto-area team for lunch and some bowling. In 2024 we’ll get more of the team over to Canada for a meetup in May! [![Uncanny Holiday Lunch](https://www.uncannyowl.com/wp-content/uploads/2023/12/Uncanny-Holiday-Lunch.jpg "Uncanny Holiday Lunch - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/12/Uncanny-Holiday-Lunch.jpg) ### What’s next for 2024? We’ve made some tremendous advances in 2023 that will allow us to push the boundaries of WordPress automation in 2024. While we typically don’t talk about what’s coming, certainly some of our priorities will be obvious, including: - Recurring recipes, scheduled recipes, and better support for nesting of conditions, delays and loops. - Another addon or two for Automator. - Lots of new integrations, surpassing the 200 mark in the next few months. - An overhaul of this website, because yes, we know that it’s very, very overdue. We also expect to expand the team in early 2024 to grow our capabilities related to support, front end development and LearnDash development. If you’re interested, you know where to [find us](https://www.uncannyowl.com/contact-us-2/)! **Categories:** News, Uncanny Automator, Uncanny LearnDash Toolkit --- ### [How to Reset LearnDash Course Progress](https://www.uncannyowl.com/how-to-reset-learndash-course-progress/) **Published:** November 14, 2023 **Author:** Brendan Da Costa **Content:** *Let’s go back to the beginning! Reset LearnDash course progress with Uncanny Automator for all of your compliance, education, training and certification needs.* Going back to where you started isn’t always a bad thing. Just think of what happens every time you pass “Go” in Monopoly! LearnDash LMS users know, better than most, the value of starting over again. Especially in the realms of compliance training and recertification, the ability to hit the reset button is vital for learners and administrators alike. That’s why so many LearnDash users trust [**Uncanny Automator**](https://www.automatorplugin.com). In this comprehensive guide, we’ll walk you through the step-by-step process of resetting your LearnDash users’ progress with the #1 teacher’s assistant, Uncanny Automator. Provide your learners with the chance to start their educational journeys anew while simultaneously streamlining tasks for your busy course administrators. Without further ado, let’s push that reset button! ## [Uncanny Automator](https://automatorplugin.com/pricing) for LearnDash LearnDash is the #1 LMS for WordPress users. Likewise, [**Uncanny Automator**](https://www.automatorplugin.com) is #1 automation and integration tool for WordPress. Together they make an unbeatable elearning platform! Using combinations of triggers and actions, Automator can help you streamline your administrative workflows, save time and reduce costs. ![automator-homepage](https://www.uncannyowl.com/wp-content/uploads/2023/11/automator-homepage-1030x524.png "automator-homepage - Uncanny Owl")Furthermore, Automator seamlessly integrates LearnDash with all of your other favorite apps and plugins. This means that you can connect course progress to your CRM, ecommerce platform and even external apps like Google Sheets. Resetting course progress is an Automator Pro feature, meaning that you’ll need to get a Pro license. Fortunately, a Pro license unlocks tons of powerful features that will make managing your LearnDash courses much easier. Take advantage of a 14-day money back guarantee and [**get started with Automator Pro so you can follow along.>>>**](https://www.automatorplugin.com) ## [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/): Create a Permanent Record of Course Completions We know that just because you want to reset a user’s course progress in LearnDash doesn’t mean that you don’t want to keep some record of their academic progress. That would be like giving up all of your Monopoly money every time you passed “Go”! For this reason, we have developed the [**Uncanny Continuing Education Credits**](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) plugin (Uncanny CEUs). This plugin has tons of amazing features for the LearnDash LMS but the standout feature is its ability to create a permanent record. ![uncanny-ceu-plugin-homepage](https://www.uncannyowl.com/wp-content/uploads/2023/11/uncanny-ceu-plugin-homepage-1030x438.png "uncanny-ceu-plugin-homepage - Uncanny Owl")Uncanny CEUs stores LearnDash course completions independently of LearnDash itself. This means that you can reset course progress as many times as you want and still maintain a record of your users’ course completion. For WordPress developers and/or educators with more than one LearnDash site, we highly recommend getting the Uncanny CEUs plugin as part of [**Uncanny Toolkit Pro All Access Pass**](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/). In addition to all of the amazing features in Uncanny CEUs, you’ll also gain access to Tin Canny, Groups, and Codes along with a whole suite of powerful modules. ## **Reset LearnDash Course Progress for Compliance Training** One of the many reasons why you might want to reset your users’ LearnDash course progress is for annual compliance training purposes. With Uncanny Automator, you can easily reset LearnDash course progress for multiple users with the click of a button. ![reset-learndash-course-progress-compliance-training](https://www.uncannyowl.com/wp-content/uploads/2023/11/reset-learndash-course-progress-compliance-training-997x1030.png "reset-learndash-course-progress-compliance-training - Uncanny Owl")In the recipe pictured above, we’re able to single out all of our LearnDash users with a specific email domain and reset their course progress in bulk. In the next steps, we’ll walk you through how to recreate that recipe—and how to customize it to suit your learners’ needs! **Step 1: Create and Name a New Recipe** From your WordPress Admin Sidebar, navigate *Automator* > *Add New*. In the pop-up window that appears, select *Everyone*. ![select-recipe-type-everyone](https://www.uncannyowl.com/wp-content/uploads/2023/11/select-recipe-type-everyone-1030x1023.png "select-recipe-type-everyone - Uncanny Owl")Give your new recipe a name that makes it easy to recognize at a glance. For example, we’ve named this recipe *Reset LearnDash Course Progress: Compliance Training*. **Step 2: Configure Your Trigger(s)** In the *Triggers* panel, from the menu of available integrations, select **Run now**. ![run-now-integration](https://www.uncannyowl.com/wp-content/uploads/2023/11/run-now-integration.png "run-now-integration - Uncanny Owl")From the drop-down list that appears, select *Trigger recipe manually*. **Step 3: Configure Your Action(s)** In the *Actions* panel, click **Add** > **User loop**. ![add-user-loop](https://www.uncannyowl.com/wp-content/uploads/2023/11/add-user-loop-1030x265.png "add-user-loop - Uncanny Owl")In the *Loop* panel, click **Add action** and select **LearnDash** from the menu of available integrations. ![learndash-integration](https://www.uncannyowl.com/wp-content/uploads/2023/11/learndash-integration.png "learndash-integration - Uncanny Owl")From the drop-down list that appears, select *Reset the user’s progress in a course*. You can also select *Reset the user’s progress for all courses associated with a group* if your compliance training consists of more than one course. ![learndash-action-reset-the-users-progress-in-a-course](https://www.uncannyowl.com/wp-content/uploads/2023/11/learndash-action-reset-the-users-progress-in-a-course-1030x441.png "learndash-action-reset-the-users-progress-in-a-course - Uncanny Owl")Automator will prompt you to select a course. Once you’re finished, click **Save**. Your *Loops* panel should look something like this: ![learndash-action-reset-the-users-progress-in-a-course-live](https://www.uncannyowl.com/wp-content/uploads/2023/11/learndash-action-reset-the-users-progress-in-a-course-live-1030x522.png "learndash-action-reset-the-users-progress-in-a-course-live - Uncanny Owl")**Step 4: Add a Filter** By default, Automator will reset the course progress for all users who are not Administrators. More often than not, however, you’ll want to target a specific subset of users. You can do this using *filters*. In our example, we’re targeting a subset of users from a particular organization using their email domain. To add a filter, hover over the LearnDash action and click **Filter**. A window, labeled *Condition*, will appear. Select *A token meets a condition*. ![a-token-meets-a-condition](https://www.uncannyowl.com/wp-content/uploads/2023/11/a-token-meets-a-condition-1030x786.png "a-token-meets-a-condition - Uncanny Owl")A new window, labeled *Configure the rule*, will appear. In the field labeled *Token* click the **Asterisk** and select *User email*. (Note: In Automator, *tokens* are dynamic data pulled from your WordPress website or even from within recipes.) ![token-user-email](https://www.uncannyowl.com/wp-content/uploads/2023/11/token-user-email-1030x550.png "token-user-email - Uncanny Owl")After selecting the *User email* token, you can fill out the remaining fields, *Criteria* and *Value*, to target specific users. ![configure-the-rule](https://www.uncannyowl.com/wp-content/uploads/2023/11/configure-the-rule-1030x550.png "configure-the-rule - Uncanny Owl")Once you’re finished, click **Save filter**. **Step 5: Hit the Reset Button!** You’re just about to reset your users’ LearnDash progress. All that’s left for you to do, is to click the **Run now** button! ![reset-learndash-course-progress-compliance-training-run-now](https://www.uncannyowl.com/wp-content/uploads/2023/11/reset-learndash-course-progress-compliance-training-run-now-997x1030.png "reset-learndash-course-progress-compliance-training-run-now - Uncanny Owl")Whoever said that there are no “do-overs” in real-life never used Uncanny Automator! In fact, there’s more than just one way to reset LearnDash course progress with Automator. ## **Reset LearnDash Course Progress Individually** You won’t always want to reset your LearnDash users’ course progress in bulk. Even if you are running a compliance training program, you may have users with individualized learning schedules. Fortunately, there’s an Automator recipe for that too! ![reset-learndash-course-progress-individually](https://www.uncannyowl.com/wp-content/uploads/2023/11/reset-learndash-course-progress-individually-1030x584.png "reset-learndash-course-progress-individually - Uncanny Owl")With the recipe pictured above, we’re able to reset LearnDash course progress on an individual basis, one year after each user completes the course. Here’s how to recreate this recipe. **Step 1: Create and Name a New Recipe** From your WordPress Dashboard, navigate to *Automator* > *Add New*. In the pop-up window that appears, select *Logged-in users*. ![select-recipe-type-logged-in-users](https://www.uncannyowl.com/wp-content/uploads/2023/11/select-recipe-type-logged-in-users-1030x1024.png "select-recipe-type-logged-in-users - Uncanny Owl")We’ve named this recipe *Reset LearnDash Course Progress Individually*. **Step 2: Configure Your Trigger(s)** In the *Triggers* panel, from the menu of available integrations, select **LearnDash**. From the drop-down list that appears, select *A user completes a course*. ![learndash-trigger-a-user-completes-a-course](https://www.uncannyowl.com/wp-content/uploads/2023/11/learndash-trigger-a-user-completes-a-course-1030x424.png "learndash-trigger-a-user-completes-a-course - Uncanny Owl")Automator will prompt you to select a course. Once you’re finished, click **Save**. **Step 3: Configure Your Action(s)** In the *Actions* panel, click **Add action** and select **LearnDash** from the menu of available integrations. From the drop-down list that appears, select *Reset the user’s progress in a course*. Once again, Automator will prompt you to select a course. Once you’re finished click **Save**. **Step 4: Add a Delay** Likelier than not, you won’t want to reset the user’s LearnDash course progress immediately after they complete it. As such, we’ll need to add a *delay*. Simply hover over the LearnDash action and click **Delay**. ![automator-learndash-action-filter-and-delay](https://www.uncannyowl.com/wp-content/uploads/2023/11/automator-learndash-action-filter-and-delay-1030x390.png "automator-learndash-action-filter-and-delay - Uncanny Owl")A pop-up window will appear where you can set a delay or schedule a specific date and time to execute the action. In our example, we’ve configured a one-year delay. ![automator-delay-1-year](https://www.uncannyowl.com/wp-content/uploads/2023/11/automator-delay-1-year-1030x840.png "automator-delay-1-year - Uncanny Owl")Once you’re finished, click **Set delay**. **Step 5: Go Live!** Recipes that don’t use the **Run now** trigger can either be in *Draft* or *Live*. To automate the reset process, simply toggle the recipe from *Draft* to *Live*. ![reset-learndash-course-progress-individually-live](https://www.uncannyowl.com/wp-content/uploads/2023/11/reset-learndash-course-progress-individually-live-1030x584.png "reset-learndash-course-progress-individually-live - Uncanny Owl")With this recipe, you can set individualized learning schedules for your WordPress users. But, trying to remember all of those dates can be a challenge. Once again, Automator is there to help. You can add reminders for you and your LearnDash users with your CRM of choice or take advantage of Automator’s built-in **Emails** integration. ![reset-learndash-course-progress-individually-email-reminder](https://www.uncannyowl.com/wp-content/uploads/2023/11/reset-learndash-course-progress-individually-email-reminder-1030x678.png "reset-learndash-course-progress-individually-email-reminder - Uncanny Owl")## **Reset LearnDash Course Progress with Ecommerce** Automator also allows you to integrate your ecommerce platform, such as **WooCommerce**, with LearnDash. ![woocommerce-learndash-integration-certification](https://www.uncannyowl.com/wp-content/uploads/2023/11/woocommerce-learndash-integration-certification-1030x815.png "woocommerce-learndash-integration-certification - Uncanny Owl")A recipe like the one pictured above is great for certification purposes. Every time a user purchases access to a certification course, Automator will reset their course progress. Try adding filters and delays to a recipe like the one pictured above in order to suit your learners’ needs. ## **Conclusion** Hopefully, now, you have everything you need to reset LearnDash course progress in whichever way suits your workflows. Whether you want to reset users’ progress in bulk, individually or in connection with other actions on your WordPress website. If you have any questions, don’t hesitate to drop us a line in the comments section below. Until then, just remember: it’s never too late to hit the reset button as long as you have Automator at your fingertips! **Categories:** Uncanny Automator --- ### [Uncanny CEUs: LearnDash Credit Report overhaul](https://www.uncannyowl.com/uncanny-ceus-learndash-credit-report-overhaul/) **Published:** November 8, 2023 **Author:** Ryan Moore **Content:** WordPress sites offering continuing education credit programs with [LearnDash](/share/learndash/) tend to collect a lot of data about course completions. Our [Uncanny Continuing Education Credits plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) makes it easy to track and manage CEUs and other credits, but over time, all of the user activity can generate a lot of data, sometimes tens of thousands, or even hundreds of thousands, of records. Loading this volume of data in a single report can sometimes be taxing on site resources, so in today’s Uncanny Continuing Education Credits 4.1 release, we’re excited to offer new reporting solutions targeted at performance. ### Faster LearnDash credit reports In the Uncanny CEUs 4.1 release, you’ll see a new Credit Report Settings section under Uncanny CEUs > Settings in /wp-admin/: [![LearnDash Credit Report Settings](https://www.uncannyowl.com/wp-content/uploads/2023/11/LearnDash-Credit-Report-Settings.png "LearnDash Credit Report Settings - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/11/LearnDash-Credit-Report-Settings.png) Loading avatars for a large volume of users is slow, so you can disable that for better performance. Next we have 3 new options for “Report Mode”: - Legacy: The system and queries that existed before 4.1. Should only be used for compatibility, like if you customized report output and credit capture outside of our plugin. - Performance: The new default option, captures some data during user updates so some data is effectively “prefetched” and reduces user queries. - Ludicrous: Generates cached credit data hourly based on a cron, then loads the data from the cached record in the report. Can be refreshed on demand if data is stale. There are also new settings for Default Date Range and Default Page Length. Once again, loading less data when the report is first opened (with a smaller date range and a shorter default page length) can improve performance and reduce memory usage. ### Other LearnDash credit updates While the changes to the credit report are the biggest update in 4.1, there are also several important changes for [Uncanny CEUs](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) users: 1. There’s a new **Reset** button on the credit report page to reset filters. this makes it easier to generate new reports. 2. Dates and times are now aligned with LearnDash times. 3. There is better support in the reports when LearnDash is not active (yes, Uncanny Continuing Education Credits does *not* require LearnDash to be active, and can be used to capture credit data from other sources only, typically with Uncanny Automator acting as an intermediary). 4. There is improved PHP 8.2 compatibility to align with the LearnDash 4.10 release. 5. There are new filters available for awarding CEU certificates to allow email header overrides: uo\_group\_leader\_mail\_headers, uo\_admin\_mail\_headers and uo\_user\_mail\_headers. For full details about the changes, make sure to review the [Uncanny CEUs changelog](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-changelog/). **Categories:** LearnDash, News --- ### [Uncanny Groups 5.4: Front End Group Hierarchy Management](https://www.uncannyowl.com/uncanny-groups-5-4-front-end-group-hierarchy-management/) **Published:** November 1, 2023 **Author:** Ryan Moore **Content:** We’re excited to announce the release of [Uncanny Groups 5.4](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/), which includes several significant new features for users of the #1 plugin for the sale, management and reporting of [LearnDash](/share/learndash/) groups. This release includes 5 key new additions to make group management even easier. ### Front End Group Hierarchy Management When group hierarchies are enabled in LearnDash settings, the Edit Group and [Create Group tools](https://www.uncannyowl.com/knowledge-base/front-end-learndash-group-creation/) in Uncanny Groups now support the ability to choose a parent for the selected group. To make this option available, just add the parent\_selector=”show” attribute to the shortcode, like this: \[uo\_groups\_create\_group parent\_selector=”show”\]. Once that’s done, a new drop-down list for the parent group selection will be added to the form: [![Choose a LearnDash Parent Group](https://www.uncannyowl.com/wp-content/uploads/2023/11/Choose-a-Learndash-Parent-Group.png "Choose a Learndash Parent Group - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/11/Choose-a-Learndash-Parent-Group.png) For Group Leaders, of course, any group parent options must be groups that exist and the user must be a leader of the group. Group Leaders can only see groups that they’re associated with. This new functionality allows scenarios where Group Leaders have more control over their users, access and reporting. With the wizard to create a group enabled, Group Leaders could choose to set up new child groups for more granular access over courses and reporting rather than using a single large, top-level group. ### Group refund changes In previous versions of Uncanny Groups, the refund behaviour assumed that groups would always be fully refunded, so the group itself would no longer be needed and users would lose access. Based on customer feedback, we realized that this was not sufficient; more support was needed for partial refund scenarios as well as more control over what happened when an order was fully refunded. That led us to add the following changes to the Uncanny Groups > Settings page: [![Refund Uncanny Groups](https://www.uncannyowl.com/wp-content/uploads/2023/11/Refund-LearnDash-Groups.png "Refund LearnDash Groups - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/11/Refund-LearnDash-Groups.png) Now, when an order is partially refunded and the first option is checked, we will adjust the seat count for the associated group accordingly. And if the order is fully refunded, we can just move the group itself to the trash. ### Reset quiz retakes Our [Manage Learner Progress tool](https://www.uncannyowl.com/knowledge-base/manage-learner-progress/) is a really popular way for Group Leaders and admins to update and track user progress in the front end. While the ability to mark quizzes as complete or incomplete has existed for a long time, we didn’t offer a way to also reset *attempts* and records for a quiz. Where quiz retakes are limited, offering the option to reset attempts for a quiz became more important. Now, when a quiz is marked incomplete by a Group Leader or admin, they will be presented with this option: [![Reset LearnDash Quiz Attempts](https://www.uncannyowl.com/wp-content/uploads/2023/11/Reset-LearnDash-Quiz-Attempts.png "Reset LearnDash Quiz Attempts - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/11/Reset-LearnDash-Quiz-Attempts.png) Users can click “yes” to remove *all* records related to the quiz for a user, effectively allowing them to start over, or they can choose “no” to keep the records and simply mark the quiz as incomplete. ### Other updates The Uncanny Groups 5.4 release adds the ability for Group Leaders to also email users in *child* groups when emails are sent from the parent group. This functionality relies on our [Email Users tool](https://www.uncannyowl.com/knowledge-base/group-management-page/#emailing-group-members), and when a group has child groups, the following checkbox will be added to the modal window to email users: [![Send emails to child group members](https://www.uncannyowl.com/wp-content/uploads/2023/11/Send-emails-to-child-group-members.png "Send emails to child group members - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/11/Send-emails-to-child-group-members.png) Finally, we have relaxed requirements for the upgrade and downgrade functionality on group edit pages in /wp-admin/. (Upgrades and downgrades refer to adding support for seats and enrollment keys to LearnDash groups.) All groups, regardless of how they were created, can now be upgraded or downgraded. That covers the highlights of the new [Uncanny Groups 5.4 release](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/), but for full details of the changes, please see the [changelog](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-changelog/). **Categories:** LearnDash --- ### [Uncanny Groups: New Edit Group Wizard](https://www.uncannyowl.com/uncanny-groups-new-edit-group-wizard/) **Published:** August 15, 2023 **Author:** Ryan Moore **Content:** The [Uncanny Groups for LearnDash 5.3 release](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) is now available! This update to our popular group management plugin for LearnDash adds 1 key new feature: a way to edit LearnDash groups in the front end. It’s an optional new tool that will make group edits a lot easier for many sites (and reduce the need for admin support). ### Edit LearnDash Groups in the Front End Uncanny Groups has supported [front end LearnDash group creation](https://www.uncannyowl.com/knowledge-base/front-end-learndash-group-creation/) for several years. Group editing was a much more difficult piece to tackle, as we had to consider implications for groups created via ecommerce, how to limit course access, what fields should and shouldn’t be available for editing, etc. In the 5.3 release, we’re adding a new shortcode and a new Gutenberg block to make group editing possible. Here’s the shortcode and the attributes it supports: ``` [uo_groups_edit_group group_name="show" total_seats="show" group_courses="show" category="" course_category=""] ``` There’s a lot to explain here, so let’s tackle each attribute. The first attribute, group\_name, determines whether or not the user editing the group (i.e. the Group Leader or admin) can modify the group name from the group edit page. If the group supports seats, the total\_seats attributes determines whether or not the user editing the group can change the number of seats for the group (keep in mind, of course, that the number cannot be less than the number of students in the group. The next attribute, group\_courses, allows Group Leaders or admins to change (so add or remove) courses from the group. But which courses are available to the group? That’s where the category and course\_category attributes come in; when included in the shortcode or block, *only* courses matching the category or course\_category settings will be available. (To include multiple categories, separate the category slugs by comma.) Here’s what a group edit page that supports changing name, seats and courses looks like: [![Edit LearnDash Groups](https://www.uncannyowl.com/wp-content/uploads/2023/08/Edit-LearnDash-Groups-1030x599.png "Edit LearnDash Groups - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/08/Edit-LearnDash-Groups.png) ### Link LearnDash Group Editing to Group Management You’re probably now wondering how you choose a group to edit and how your Group Leaders will find this tool. There are 2 steps to enabling the optional front end group editing tool on your website: 1. Create a new page with the \[uo\_groups\_edit\_group\] shortcode. 2. Update your Group Management page shortcode to link to the group edit page. To link the Group Management page to the edit group page, there’s a new attribute for \[uo\_groups\], so it must be updated to look like this: ``` [uo_groups edit_url="/front-end-learndash-group-edit/"] ``` The edit\_url attribute defines where the edit group page set up in the section above is located. When it’s defined, the Group Management page will display an **Edit group** button next to the group name. It will look like this: [![Edit Group button](https://www.uncannyowl.com/wp-content/uploads/2023/08/Edit-Group-button-1030x166.png "Edit Group button - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/08/Edit-Group-button.png) The Edit Group feature is a really powerful new addition for Uncanny Groups, and we hope you find it useful. ### Other Uncanny Groups additions The new Edit LearnDash Group wizard is certainly the highlight of [Uncanny Groups 5.3](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/), but there are a number of new important enhancements. There’s better support for formatting when RTL languages are used, the “Add and invite users” is set as the default option when users are imported via CSV file (for consistency with other methods to add users). We hope you find the additions useful! **Categories:** LearnDash --- ### [Better Notifications for LearnDash](https://www.uncannyowl.com/better-notifications-for-learndash/) **Published:** February 5, 2023 **Author:** Brendan Da Costa **Content:** *With the LearnDash Notifications add-on and Uncanny Automator, students and staff can stay in touch, communicate more and learn together.* In self-directed elearning courses, it can be difficult for instructors to stay engaged with their students. While reports help instructors gather summary-level details on their students’ progress, they don’t keep educators in the loop as the learning unfolds. The LearnDash Notifications Add-On, however, addresses some of the challenges associated with real-time feedback. Even so, the LearnDash Notifications Add-On can’t quite always accommodate the needs of both students and instructors. For example; how do students become aware of new course availability, new feedback from instructors, or new group discussions? To promote engagement and increased learning, elearning websites require a way to reach out to students beyond the website itself. Whether you’re looking to enhance the LearnDash Notifications Add-On or replace it altogether, you’ve found the perfect solution. ### LearnDash Notifications Add-On In the LearnDash ecosystem, the easiest and most common way to send notifications to students and instructors (typically “Group Leaders” in LearnDash) is by email using the free LearnDash Notifications Add-On. It’s a powerful add-on that allows key LearnDash events, like course completion or assignment approval, to trigger email notifications to students, Groups Leaders and administrators. And with the new (at the time of publication) 1.6 release, it even adds conditions, so you can choose to send notifications only to users in certain groups, who have not completed a quiz, who are enrolled in a course, etc. LearnDash Notifications is a great plugin that supports email notifications for a variety of scenarios, and since it’s free, it makes sense to use it on most LearnDash sites. It even has support for dozens of shortcodes so that you can include dynamic content (like the user’s name or course name) in the emails. ![Better LearnDash Notifications - LearnDash Notification Add-On Triggers](https://www.uncannyowl.com/wp-content/uploads/2023/02/CleanShot-2023-02-07-at-13.59.37@2x.png "Better LearnDash Notifications 1 - Uncanny Owl") With over 15 trigger types, a dozen conditions and dozens of shortcodes, there’s support for the most common email notification scenarios. But what if you want to reach out to students via more than just email? And what if instead of a few dozen options, you had hundreds of triggers, multiple communication channels and thousands of conditions? ### Enter Uncanny Automator Uncanny Automator is our no-code automation platform for WordPress that we originally created as a way to personalize elearning for LearnDash. A little more than five years later, it has evolved into a robust system that connects LearnDash activity to more than 100 other plugins and apps. If the LearnDash Notifications Add-On gives you the ABCs of email notifications, then Uncanny Automator gives you the post-doctoral thesis in elearning linguistics. But while an actual PhD in linguistics night cost you an arm and a leg, there’s even a FREE version of Automator that connects some of the core LearnDash (and other plugins!) triggers to email and other channels! ### More triggers The LearnDash Notifications Add-On covers 15 basic scenarios. But what if you wanted more? Uncanny Automator gives you the ability to customize your LearnDash notifications, far beyond what the LearnDash Notifications Add-On can do. These are just some of the notifications you can send with Automator: - A user achieves a percentage, score or point value above or below a certain amount (“passing” or “failing” a quiz is great, but what if you want certain notifications based on score instead, like maybe notify the Instructor the first time only that someone gets a perfect score on a quiz?) - A new course, lesson or topic is created–or perhaps a new course is added to a group - A Group Leader is added or removed from a Group (keep other instructors in the loop about teaching staff changes) - A user completes a group’s courses - A user is removed from a group or course But that’s just the start. No LearnDash site runs with the LearnDash plugin alone; it takes several, maybe even dozens, of plugins to run a LearnDash site effectively. Want to know when new feedback forms are submitted for your course, but only on completion of the course? Here’s a recipe that notifies Group Leaders when the feedback form has been submitted and the user has completed the course: ![Better LearnDash Notifications Automator WPForms/LearnDash Recipe](https://www.uncannyowl.com/wp-content/uploads/2023/02/CleanShot-2023-02-07-at-14.44.39@2x.png "Better LearnDash Notifications 2 - Uncanny Owl") Maybe Group Leaders need to know when students have attended a live onboarding seminar that also enrolls the student in the next course? There’s a recipe for that too: ![Better LearnDash Notifications Events Calendar/LearnDash recipe](https://www.uncannyowl.com/wp-content/uploads/2023/02/CleanShot-2023-02-07-at-14.51.46@2x.png "Better LearnDash Notifications 3 - Uncanny Owl") Perhaps students receive a special certificate of congratulations after attending a live event that follows a course, so both LearnDash course completions and the Group Leader marking them attended triggers a special certificate: ![Better LearnDash Notifications Events Calendar/LearnDash recipe graduation](https://www.uncannyowl.com/wp-content/uploads/2023/02/CleanShot-2023-02-07-at-15.04.36@2x.png "Better LearnDash Notifications 4 - Uncanny Owl") ### More channels Sending email notifications is great, but what if it’s not the best or only way to reach your students? By connecting LearnDash to Uncanny Automator, you can open up new channels of communication with your staff and students. If your instructors work at a large institution, they’re likely flooded with emails everyday—and sending even more emails only results in more noise that gets ignored. But, if you had a dedicated support channel in Slack, you could get live updates any time users in a particular group fail a quiz or receive a low grade: ![Better LearnDash Notifications LearnDash Slack recipe](https://www.uncannyowl.com/wp-content/uploads/2023/02/CleanShot-2023-02-07-at-15.25.56@2x.png "Better LearnDash Notifications 5 - Uncanny Owl") Alternatively, certain scores on a quiz might open a ticket directly in your Help Desk system so important updates are easily tracked and followed up on. And one of our favorite examples for students who prefer more social messaging applications such as WhatsApp, SMS messages via Twilio or forums and groups in BuddyBoss, you can celebrate student achievements by sharing them with other students and staff. Perhaps, like in the example below, your students can celebrate their course completion or high grades in a specific group’s activity feed in BuddyBoss (and add multiple triggers to mark each accomplishment): ![Better LearnDash Notifications LearnDash BuddyBoss recipe](https://www.uncannyowl.com/wp-content/uploads/2023/02/CleanShot-2023-02-07-at-15.38.36@2x.png "Better LearnDash Notifications 6 - Uncanny Owl") With your students’ consent (perhaps via an opt-in form when they register), some site admins might even choose to share key accomplishments such as certification on social media in a private Facebook group. ### More conditions Adding filters to notifications is a great way to ensure that notifications only go to the right people at the right time. Conditions are a very recent addition to the LearnDash Notifications Add-On, and at the time of writing, supported conditions are: - User is enrolled to a group - User is enrolled to a course - User has completed a course - User has completed a lesson - User has completed a topic - User has submitted a quiz - User has completed a quiz - Essay has just been submitted - Essay question has just been put into graded status - User has uploaded an assignment - User’s assignment has been approved - User has not completed a quiz It’s a great list, and on the LearnDash side of things, it absolutely covers the highlights. So what can Uncanny Automator bring to the table that LearnDash Notifications doesn’t have? - A lot of “not” in or “not” completed conditions. Maybe a notification simply doesn’t apply to a tester group. Instead of explicitly adding all of the *other* groups to the notification, you can just say “this notification applies to everyone except members of this group”. - Group hierarchy support. Maybe you support a hospital network with multiple departments and divisions, and maybe a certain notification applies only to members of one specific organization. If they have 50 groups in their group hierarchy, and perhaps those groups sometimes change, managing notifications for those groups would be a nightmare. With Automator, you can just set up a condition to have a notification run for everyone in a selected group *and its children*. Of course, your LearnDash site is likely running more plugins than just LearnDash. What if you only want notifications to go out to users with a certain membership level in MemberPress, a matching WordPress role or a specific CRM tag via WP Fusion? No problem. Taking things a bit to the extreme, here’s a WhatsApp notification that will only go out to users with an uncannyowl.com email address that have an “opt-in” tag in FluentCRM and are active Platinum members in MemberPress: ![Better LearnDash Notifications WhatsApp Action with Automator conditions](https://www.uncannyowl.com/wp-content/uploads/2023/02/CleanShot-2023-02-07-at-15.51.56@2x.png "Better LearnDash Notifications 7 - Uncanny Owl") You can keep notifications as simple or as advanced as you want in Uncanny Automator. You can even schedule and delay them. ### More data Suppose you want to send a confirmation notice to students when they complete a course—some type of congratulatory message. The LearnDash Notifications Add-On makes this really easy, and in the email you can include details like first name (or really any user data) as well as the course name. For many sites, this is enough. Uncanny Automator, of course, currently has support for over 5,000 unique tokens. Some are based on user and system data, some based on the trigger, others even based on data in other actions in the same recipe. Here are just a handful of examples of other types of data you could include in the notification above if you used Automator instead of the LearnDash Notifications Add-On: - The number of courses the user has completed. - Custom meta for the course, like continuing education credits earned, course duration or course author. - The course expiry date. Or you could just do more with it, like include a coupon code for the user’s next course purchase or attach a printable PDF certificate along with the notification. ### Get started for free Many of the notification types outlined in this article are fully available in the free version of Uncanny Automator and run without restrictions. Triggers related to quizzes and course, lesson and topic completions are unrestricted in the free version of Automator, as are sending emails to students, Group Leaders and admins. By signing up for a free account, you can also try out notifications via Slack, WhatsApp, Twilio and more with complimentary credits. With the right notification system in place, improved knowledge transfer and community building are just a few clicks away. Between the LearnDash Notifications Add-On and Uncanny Automator, LearnDash users have easy access to a class-leading notification system for elearning platforms. **Categories:** LearnDash, Marketing, Uncanny Automator --- ### [Tin Canny Update: New Uploader](https://www.uncannyowl.com/tin-canny-update-new-uploader/) **Published:** July 24, 2023 **Author:** Ryan Moore **Content:** Over the years, a common challenge elearning course authors have had with WordPress is uploading and managing really large files. It’s not uncommon to see xAPI and SCORM file sizes in the hundreds of MB, and a few weeks ago, we helped a user with a file that was over 5 GB in size. The WordPress upload system wasn’t really designed for files of this size, so a few months ago we started building a completely different upload system for our [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) users. ### Introducing the new Tin Canny Uploader We’re excited to include the new uploader in our [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) 4.3 release. This is what it looks like: [![Tin Canny Uploader](https://www.uncannyowl.com/wp-content/uploads/2023/07/Tin-Canny-Uploader.png "Tin Canny Uploader - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/07/Tin-Canny-Uploader.png) How it works is *very* different than the uploader in previous versions. Instead of relying on WordPress to upload a huge file to the website, then unzip and process it, the new uploader uses your browser to inspect files in the zip folder and upload them individually. For large files, they are uploaded in chunks. This approach ensures that all files, regardless of size, and even if the web server doesn’t support unzip extensions, should work without issue. The new uploader works in all editors and page builders we currently support, as well as the Manage Content page in /wp-admin/. Modules uploaded with the previous tool will continue to work as before; the uploader will be used for new uploads. ### Reporting tabs are separate pages To help with some performance in the back end, reports in the Tin Canny menu (so the Course, User, Tin Can and xAPI Quiz report tabs) are now set up as separate pages rather than just different tabs on the same page. Everything will look the same and work the same way, but behind the scenes there are some different URLs (this may affect links if you used direct links to tabs in /wp-admin/). Those are the highlights for the 4.3 release. We hope you find the changes helpful! **Categories:** News, Tin Can --- ### [Tin Canny 4.2: LearnDash Lesson & Topic Reports](https://www.uncannyowl.com/tin-canny-4-2-learndash-lesson-topic-reports/) **Published:** April 19, 2023 **Author:** Ryan Moore **Content:** We’re excited to announce that [Tin Canny 4.2](https://www.uncannyowl.com/downloads/tin-canny-reporting/) is now available. It’s a big release with several new reports, performance improvements, new options for SCORM and xAPI users and some behind-the-scenes enhancements. ### Lesson and Topic Completion Reports We know that LearnDash site owners have faced challenges for years getting consolidated records for lesson and topic completions. For course completions, there are reports everywhere; we have different types of course completion reports in 3 of our plugins alone ([Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/), [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) and [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/)). There’s no shortage of ways to find out whether or not a student has completed a course. For lessons and topics, we offered a few ways to look up completions by user, but never for a *group* of users or all users. That’s what we’re adding in today’s Tin Canny 4.2 release. To use the reports, just drop \[uotc\_lesson\_report\] or \[uotc\_topic\_report\] shortcodes onto a new page. Once that’s done, you’ll see something like this: [![LearnDash Lesson Completion Report](https://www.uncannyowl.com/wp-content/uploads/2023/04/LearnDash-Lesson-Completion-Report.png "LearnDash Lesson Completion Report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/04/LearnDash-Lesson-Completion-Report.png) It’s as easy to use as it seems. Administrators or Group Leaders can just select a group, course and lesson (or topic) to see a list of everyone that has access to that lesson or topic and their completion status. Need to know which users in your group haven’t completed a specific lesson yet? Now it’s easy. The new shortcodes even support choosing which columns to display–including time data, if the [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) module from Toolkit Pro is active. ### New Completion Condition options One issue we sometimes see on Tin Canny sites that use SCORM or xAPI assets is the uploaded modules not sending the verbs they expect, or no unique verb is sent at the end of a module. Maybe you’re one of those users and you have a module that just sends an “Experienced” verb for every slide, and what you really need is to tell Tin Canny, “Okay, I know every slide returns an Experience verb, but I need to unlock the Mark Complete button when there’s an Experienced verb for a specific slide.” To use this new combined verb/target condition, just enter the name of the slide and the verb you want to target in the [Completion Condition](https://www.uncannyowl.com/knowledge-base/tin-canny-learndash-mark-complete/#completion-condition) field of a lesson or topic page in this format: uotarget **`TARGET_NAME`**::**`VERB`** So if the slide name is “Slide 2” (make sure it matches what you see in the Tin Can report in the Target column) and the target verb is “attempted”, this would be your completion condition: uotarget Slide 2::experienced This is definitely for advanced users only, but it will help a lot of sites. ### What else is new? The [Tin Canny Course reports](https://www.uncannyowl.com/knowledge-base/course-report/) had some big updates that change how we retrieve and populate data. With the availability of new LearnDash functions in (somewhat) recent versions, we changed some old queries to take advantage of improvements on the LearnDash side. If you have a huge number of users and saw performance issues or memory errors in the past, we hope you’ll try again. Flywheel users will benefit from switching to a wp-load.php dependency to Ajax only for some xAPI and H5P behaviours, and there are several additional code improvements that will help all users. **Categories:** News, Tin Can --- ### [Uncanny Owl Turns 10](https://www.uncannyowl.com/uncanny-owl-turns-10/) **Published:** May 22, 2023 **Author:** Ryan Moore **Content:** Ten long years ago, on May 29, 2013, Ken and I (Ryan) cofounded Uncanny Owl. With absolutely no experience starting or managing a business, no clear direction, and 4 children under the age of 3 between us, walking away from our stable, mid-level jobs at great companies somehow seemed like a good idea. Here we are in our Toronto office in June 2013 (we ended up abandoning a physical office in 2018): [![Ryan & Ken at Uncanny Owl in 2013](https://www.uncannyowl.com/wp-content/uploads/2023/05/DSC00209-2013-06-10-1030x538.jpg "SONY DSC - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/05/DSC00209-2013-06-10-scaled.jpg) The first 3 years of the company largely consisted of experimenting with a lot of elearning ideas and taking on any consulting projects we could find. We had grand visions and aspirations, and we worked hard trying to build Uncanny Owl’s reputation in the elearning space. It wasn’t until almost a year after we started the company that we began focusing on WordPress and [LearnDash](https://www.uncannyowl.com/share/learndash/). That journey started when we built a website to showcase our *course* development expertise, but instead of asking us to build courses for them, visitors wanted us to build a copy of the website. We started showing a “Want us to build a site like this for you?” banner for visitors from LearnDash and our website, and the rest is history. ## Uncanny Owl Timeline So what happened over the first 10 years of Uncanny Owl? Here’s a timeline covering some of the highlights: - September 2013; We sent out our first invoice to a customer for a whopping **$67.80**. Work was slow and losses were high for the first 2 years. - March 2014: We took on our first LearnDash consulting project. [Justin Ferriman](https://justinferriman.com/) and his LearnDash team were a huge help with landing consulting projects for our first few years. - November 2014: We hired our first contractor so we could start taking on more development-heavy projects. - March 2016: We hired our first 2 employees **and** released [Uncanny Toolkit for LearnDash](https://wordpress.org/plugins/uncanny-learndash-toolkit/), our first (and still most popular) plugin. - July 2016: We released our first **premium** plugin: [Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/). It remains our most popular paid plugin and is the #1 premium add-on for LearnDash. From July 2016 through September 2017, we released 4 more LearnDash plugins: [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/), then [Uncanny Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/), [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/), and finally [Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/). - September 2018: We released [Uncanny Automator](https://automatorplugin.com/), our first non-LearnDash plugin and our fastest-growing product. Automator was originally intended as another add-on for LearnDash that could be used to personalize learning journeys. - November 2020: We joined the [WPBeginner Growth Fund](https://www.wpbeginner.com/news/welcome-uncanny-owl-and-automator-plugin-to-the-wpbeginner-growth-fund/) and expanded our network of partners. - Summer 2021: We finally exited LearnDash consulting to focus exclusively on plugin development and support. ## Uncanny Owl Today Uncanny Owl in 2023 looks nothing like in did in 2013, and that’s a good thing. It’s no longer just the 2 of us; we’re now up to 16 people—Ryan, Ken, Kimberly, David, Ajay, Saad, Curt, Dani, Agus, Manal, Joseph, Huma, Brendan, Nastia, Parthavi and Muneeb. Most of the team is in Canada (many of whom are pictured below at a recent lunch), but we also have staff in the Philippines, Greece, Pakistan and India. [![Eight people sit along a long wooden dining table in a modern restaurant, smiling with napkins and water glasses set before them.](https://www.uncannyowl.com/wp-content/uploads/2023/05/IMG_8909.jpg "IMG_8909 - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/05/IMG_8909.jpg) Ken and I are extraordinarily grateful to our team for making Uncanny Owl what it is today. We recognize how fortunate we are to have a great team and we treasure the capabilities, camaraderie and talent that everyone brings to the table every day. Here are some cool accomplishments that were made possible thanks to our team: - Getting over 1 million downloads of our free plugins - Helping Automator users run over 40 million recipes - Maintaining a 4.9/5.0 average rating of our plugins on WordPress.org - Having over 60,000 websites trust us to help run their businesses We appreciate the support of all of our users over the past 10 years and we hope the work we do has helped your company in some way. If you have your own Uncanny Owl experiences to share, we encourage you to post in the comments below! **Categories:** News --- ### [Toolkit Pro 4.1: Drip topics & Autocomplete with Formidable Forms](https://www.uncannyowl.com/drip-learndash-topics-autocomplete-formidable-forms/) **Published:** June 1, 2023 **Author:** Ryan Moore **Content:** We’re excited to announce another *big* release of our most popular premium plugin, [Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/). The 4.1 update adds 3 completely new modules for LearnDash users: Drip Topics by LearnDash Group, Autocomplete Lessons & Topics on [Fluent Forms](/share/fluent-forms/) Submission and Autocomplete Lessons & Topics on [Formidable Forms](/share/formidable-forms/) Submission. There are also a few enhancements for existing modules that we’re excited to share. ### Drip Topics by LearnDash Group Current Toolkit Pro users will already be familiar with our popular drip module for lessons, “[Drip Lessons by LearnDash Group](https://www.uncannyowl.com/knowledge-base/drip-lessons-by-ldgroup/)“. As you might expect, this new module is effectively the same thing as what we offer for lessons–except for topics. The settings will all be familiar, and there’s even support for the [LearnDash Notifications plugin](https://www.learndash.com/support/docs/add-ons/notifications/). [![LearnDash drip topic by group](https://www.uncannyowl.com/wp-content/uploads/2016/07/LearnDash-drip-topic-by-group-1030x436.png "LearnDash drip topic by group - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/07/LearnDash-drip-topic-by-group.png) ### Autocomplete Lessons & Topics on Form Submission The 2 new modules for [Formidable Forms](/share/formidable-forms/) and Fluent Forms mirror what we have for Gravity Forms and WPForms. With the new tools, we can detect when a Formidable Form or Fluent Form appears on a lesson or topic page, hide the Mark Complete button, and require the users to submit a form entry. In Formidable Forms (and other other form integrations), the user will be advanced to the next step in the course. Unfortunately, Fluent Forms *cannot* support automatic advancement, only completion of the lesson or topic, so users must manually advance if they are using this module with Fluent Forms (this is a Fluent Forms limitation). Settings are available for the new modules to control how to handle previous form entries and availability of the module (Formidable at the form level, Fluent at the global level, as Fluent can’t support custom form-level settings): [![Fluent Forms autocomplete LearnDash lessons & topics](https://www.uncannyowl.com/wp-content/uploads/2023/06/fluent-forms-autocomplete-learndash-lessons-topics-1030x542.png "fluent forms autocomplete learndash lessons topics - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/06/fluent-forms-autocomplete-learndash-lessons-topics.png) The modules are particularly useful for things like course feedback forms, and if added to the last lesson or topic of a course, they can be used as a final step to trigger course completion. ### Restrict Page Access based on course completion Our popular [Restrict Page Access](https://www.uncannyowl.com/knowledge-base/restrict-page-access/) tool gains a new option for page permissions: Course Completion. Here’s what the updated metabox looks like in Gutenberg: [![Restrict page access based on LearnDash course completion](https://www.uncannyowl.com/wp-content/uploads/2023/06/Restrict-page-access-based-on-LearnDash-course-completion.png "Restrict page access based on LearnDash course completion - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2023/06/Restrict-page-access-based-on-LearnDash-course-completion.png)This allows you to control any page or post type and base it on the user having a particular role, enrollment in a course, completion of a course, or enrollment in a group. You can also redirect users to a page explaining the restriction or just show a message to users that don’t have access. ### Enhanced CSV Reports: Start date Our Enhanced LearnDash CSV Reports module adds support for 1 new column type: Start date. Now it’s easy to see at a glance when users started a course (or gained access via a group). Those are the highlights of the new [Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) release. We hope you find them useful! **Categories:** LearnDash, News --- ### [How to Create & Sell LearnDash & WooCommerce Promo Codes](https://www.uncannyowl.com/how-to-create-sell-learndash-woocommerce-promo-codes/) **Published:** December 23, 2022 **Author:** Brendan Da Costa **Content:** *In this step-by-step guide, we’ll show you how to create and sell LearnDash and WooCommerce promo codes. Use them for course registrations, to sell event tickets or to unlock special features on your website.* So you want to be a master codebreaker, do you? Well, you’ve come to the right place. With Uncanny Codes, you can create and customize unique codes to sell, unlock or promote just about anything on your website. Whether you want to use codes for event registration, product tie-ins, or to run limited promotions, Uncanny Codes has you covered. In this quick guide, we’ll show you how to create and sell promo codes and feature some of the best ways to use them. Don’t worry, you won’t actually need to know anything about cryptanalysis in order to follow along. ## **What You’ll Need** If you want to “crack the code”, you’re going to need a supercomputer— or a cipher machine and a lot of time. But if you’re trying to make some unbreakable codes of your own, all you’ll need are these awesome WordPress plugins. ### **Uncanny Codes** Uncanny Codes is the best code management plugin for WordPress. Auto-generate dozens (or thousands) of codes with your own prefix, suffix, expiration date and usage rules. Native form-building integrations with Gravity Forms, WPForms and others makes Uncanny Codes easy-to-use on the front and end back end. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 1 — Uncanny Codes Features](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-LearnDash-_-WooCommerce-Promo-Codes-1-—-Uncanny-Codes-Features.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 1 — Uncanny Codes Features - Uncanny Owl") [Click here](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) to download the Uncanny Codes plugin. ### **Uncanny Automator** Uncanny Automator is the #1 WordPress automation plugin. Create combinations of triggers and actions across 100+ integrations to automate repetitive tasks, improve your workflows, and save time and money. ![Automator Mascot Icon 512px](https://www.uncannyowl.com/wp-content/uploads/2022/12/Automator-Mascot-Icon-512px.png "Automator Mascot Icon 512px - Uncanny Owl") Ironically, Automator has a no-code promise (the computer programming kind) that will make creating your own codes (the promotional kind) easier and a lot more fun than trying to crack the Caesar shift. And, not to mention, a lot cheaper than hiring a developer. [Click here](https://wordpress.org/plugins/uncanny-automator/) to download the Uncanny Automator plugin. ### **WooCommerce** As the most popular ecommerce plugin for WordPress, WooCommerce needs no introduction—but it’s a key tool in our codebreaking algorithm so we’ll introduce it anyway. In addition to stocking your digital shelves, WooCommerce can handle payment processing, shipping and tracking, marketing, memberships and more. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 2 — WooCommerce Homepage](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-2-—-WooCommerce-Homepage.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 2 — WooCommerce Homepage - Uncanny Owl") With countless extensions and tons of powerful themes, you can build and customize your ecommerce store anyway you’d like. It’s not an enigma why [more than 6.3 million websites](https://barn2.com/woocommerce-stats/) power their online shopping experience with WooCommerce. [Click here](https://wordpress.org/plugins/woocommerce/) to download the WooCommerce plugin. Now that you have Uncanny Codes, Automator, and WooCommerce, there isn’t a spy on earth who can make codes faster than you. In the next section, we’ll show you how to generate codes, create WooCommerce products to sell them and how to configure automations that fit into your workflows. ## **How to Sell Anything with Codes** In this example, we’ll show you how to generate batches of codes that future students can redeem to gain access to online courses—almost like a cryptographic key! Leverage partnerships with academic institutions, publishers and marketers and include these codes in printed textbooks and other hard copy content. Then, students and customers can register on your website to redeem the codes and gain access to supplementary material or special promotions. Alternatively, with just a few tweaks to this example, you can sell codes for event registration or as event tickets, to run limited promotions, or to unlock restricted (read: top secret) content. Here’s how it’s done. ### **Step 1: Generate Your Codes** From your WordPress Admin Sidebar, navigate to *Uncanny Codes* > *Generate codes*. You’ll be prompted to name the batch of codes that you want to create. We’ve named this batch of codes *Introduction to Cryptanalysis*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 3 — Uncanny Codes Name this batch of codes](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-3-—-Uncanny-Codes-Name-this-batch-of-codes.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 3 — Uncanny Codes Name this batch of codes - Uncanny Owl") Next, you’ll have to select a method for how you intend to use the codes. We want these codes to enroll users into LearnDash courses/groups when they are redeemed. However, we’ll be selling the codes to academic institutions, corporate entities and/or publishers to distribute to end-users on their own. In order to be able to sell the codes, we’ll have to select the *Uncanny Automator* option. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 4 — How are the codes going to be used](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-4-—-How-are-the-codes-going-to-be-used.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 4 — How are the codes going to be used - Uncanny Owl") Under *Code settings*, in the field labeled *Number of uses per code*, set the value to “1”. Setting the number of uses, or redemptions, per code to anything other than “1” will prevent you from being able to sell them. Set an expiration date and time. If you’re selling these codes to an academic institution or textbook publisher, you can set the expiration date and time to coincide with the academic year and/or the publication date of new textbook editions. Next, select *Auto-generate codes*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 5 — Uncanny Codes Code settings](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-5-—-Uncanny-Codes-Code-settings.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 5 — Uncanny Codes Code settings - Uncanny Owl") No two codes are alike—that’s what makes them so tough to crack. To auto-generate your codes, fill in the remaining fields as desired. For example, we’re creating 1,000 unique codes with the suffix “01” for our own internal record keeping purposes. Alternatively, someone selling event tickets in the form of codes might choose location prefixes or suffixes to denote cities, states, and/or countries. In later steps, you’ll see how you can use filters to sort users into different workflows based on data such as code prefixes and suffixes. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 6 — Uncanny Codes Code settings auto-generate codes fields](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-6-—-Uncanny-Codes-Code-settings-auto-generate-codes-fields.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 6 — Uncanny Codes Code settings auto-generate codes fields - Uncanny Owl") After you’ve configured your code settings, click **Generate codes and create a recipe**. ### **Step 2: Create a New Recipe** Once your codes have been created, Uncanny Codes will take you to an Uncanny Automator recipe editor screen that will look something like this: ![How to Create & Sell LearnDash & WooCommerce Promo Codes 7 — Uncanny Automator Uncanny Codes New Recipe Screen](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-7-—-Uncanny-Automator-Uncanny-Codes-New-Recipe-Screen.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 7 — Uncanny Automator Uncanny Codes New Recipe Screen - Uncanny Owl") Much like with your batch of codes, the first thing you’ll want to do is give your recipe a name that makes it easy to recognize at a glance. For example, we’ve named this recipe *Uncanny Codes—LearnDash: Introduction to Cryptanalysis*. Next, in the *Actions* panel, click **Add action**. From the menu of available integrations, click **LearnDash**. From the drop-down list that appears, select *Enroll the user in a course* and select the course that you want to associate with your new batch of codes. When you’re finished, click **Save**. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 8 — Automator LearnDash Action Enroll the user in a course](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-8-—-Automator-LearnDash-Action-Enroll-the-user-in-a-course.gif "How to Create & Sell LearnDash & WooCommerce Promo Codes 8 — Automator LearnDash Action Enroll the user in a course - Uncanny Owl") In the *Recipe* box in the upper right-hand corner, toggle the recipe from *Draft* to *Live*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 9 — Uncanny Codes—LearnDash Introduction to Cryptanalysis Recipe Live](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-9-—-Uncanny-Codes—LearnDash-Introduction-to-Cryptanalysis-Recipe-Live.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 9 — Uncanny Codes—LearnDash Introduction to Cryptanalysis Recipe Live - Uncanny Owl") This automation will ensure that end-users crack the code (i.e., get enrolled in your supplementary course when they enter a code). ### **Step 3: Create a New Product** In the Automator recipe editor screen, you would have seen a friendly reminder to create a product associated with your new batch of codes so that you can sell them in your WooCommerce store. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 10 — Uncanny Codes Reminder to Create Product](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-10-—-Uncanny-Codes-Reminder-to-Create-Product.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 10 — Uncanny Codes Reminder to Create Product - Uncanny Owl") After you’ve created your recipe, from your WordPress Admin Sidebar, navigate to *Products* > *Add new*. In the *Product data* panel, set the product type to *Codes for Uncanny Automator*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 11 — Product type Codes for Uncanny Automator](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-11-—-Product-type-Codes-for-Uncanny-Automator.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 11 — Product type Codes for Uncanny Automator - Uncanny Owl") Once you’ve set the product type to *Codes for Uncanny Automator*, the product will automatically be set to *Virtual*. Each unique code that is part of a batch is sold individually. As such, the *Regular price* reflects the price per code. We’ve selected our code batch, *Course Access*, and set the price per code at $5.00. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 12— WooCommerce Product settings](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-12—-WooCommerce-Product-settings.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 12— WooCommerce Product settings - Uncanny Owl") Finish configuring your product as desired, including setting the title, product description, low stock threshold, etc. When you’re finished, click **Publish**. Congratulations! You’re now ready to sell codes—just don’t get caught. ### **Step 4: Start Selling Codes** The next step in selling your codes is setting up a smooth workflow that minimizes friction for your customers and end-users and maximizes your sales. Based on our product configurations, this is how our customers (academic administrators, publishers, etc.) will view the product page for our access codes: ![How to Create & Sell LearnDash & WooCommerce Promo Codes 13 — Introduction to Cryptanalysis Product Page](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-13-—-Introduction-to-Cryptanalysis-Product-Page.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 13 — Introduction to Cryptanalysis Product Page - Uncanny Owl") Once this customer completes their shopping experience, they will pay $5.00 each for five (5) unique codes. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 14 — Introduction to Cryptanalysis Shopping Cart](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-14-—-Introduction-to-Cryptanalysis-Shopping-Cart.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 14 — Introduction to Cryptanalysis Shopping Cart - Uncanny Owl") After their order has been completed, the customer will land on a confirmation page with their purchased codes and a clickable **Download CSV** button. They’ll also receive an email with their codes along with a .csv file with the same information. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 15 — Purchased Codes](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-15-—-Purchased-Codes.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 15 — Purchased Codes - Uncanny Owl") If we return to the product editor screen after the customer’s purchase as a site administrator, we can see that our inventory of codes has been reduced by five (5) with 995 still available for sale. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 16 — Introduction to Cryptanalysis Available Codes](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-16-—-Introduction-to-Cryptanalysis-Available-Codes.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 16 — Introduction to Cryptanalysis Available Codes - Uncanny Owl") ### **Step 5: Create a Code Redemption Workflow** Once your customers have purchased their codes, they can decide their own method of distribution to the end-user. For example, textbook publishers can print one code in each textbook with instructions for code redemption. Marketers can do the same with their hard copy content or with user-restricted content on their own digital platforms. Academic institutions and office administrators can send the codes via email within their organizations. To finally crack the code, however, the end-users will need some help from you. If you are using the Gutenberg block editor, you can simply drag and drop the *User Redeem Code* block into the page you are editing. Alternatively, you can copy and paste the shortcode \[uo\_user\_redeem\_code\] into a shortcode block. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 17 — Gutenberg Block Editor Uncanny Codes User Redeem Code](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-17-—-Gutenberg-Block-Editor-Uncanny-Codes-User-Redeem-Code.gif "How to Create & Sell LearnDash & WooCommerce Promo Codes 17 — Gutenberg Block Editor Uncanny Codes User Redeem Code - Uncanny Owl") More advanced WordPress users can find alternate ways to incorporate code redemption into their workflows. For example, you can combine Uncanny Codes’ native WPForms integration along with Elementor Pro to create a sleek popup like the one below for users to redeem their codes. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 18 — Uncanny Codes WPForms Elementor Pop](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-18-—-Uncanny-Codes-WPForms-Elementor-Pop.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 18 — Uncanny Codes WPForms Elementor Pop - Uncanny Owl") Next, create an Uncanny Automator recipe that displays the Elementor popup after a user logs in to your website for the first time. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 19 — WordPress-Elementor First Time Login Popup Recipe](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-19-—-WordPress-Elementor-First-Time-Login-Popup-Recipe.gif "How to Create & Sell LearnDash & WooCommerce Promo Codes 19 — WordPress-Elementor First Time Login Popup Recipe - Uncanny Owl") Users might accidentally click out of your popup without having redeemed their code. Give users the option to recall the popup with an Automator magic button. In a new recipe editor, in the *Triggers* panel, select **Automator** from the menu of available integrations. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 20 — Automator Trigger Integrations Automator](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-20-—-Automator-Trigger-Integrations-Automator.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 20 — Automator Trigger Integrations Automator - Uncanny Owl") From the drop-down list that appears, select *A user clicks a magic button*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 21 — Automator Trigger A user clicks a magic button](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-21-—-Automator-Trigger-A-user-clicks-a-magic-button.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 21 — Automator Trigger A user clicks a magic button - Uncanny Owl") The trigger contains a shortcode that you can copy and paste to embed the magic button anywhere on your website—for example, a user account page. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 22 — Automator Trigger A user clicks a magic button Live](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-22-—-Automator-Trigger-A-user-clicks-a-magic-button-Live.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 22 — Automator Trigger A user clicks a magic button Live - Uncanny Owl") Recreate the Elementor Pro popup action from the previous recipe in the *Actions* panel and toggle your recipe from *Draft* to *Live*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 23 — Automator Elementor Code Redemption Popup Recipe](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-23-—-Automator-Elementor-Code-Redemption-Popup-Recipe.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 23 — Automator Elementor Code Redemption Popup Recipe - Uncanny Owl") Your new users will be cracking codes like chestnuts! ### **Bonus: Create a Code Tracking Network** Every master codebreaker knows; you’re only as good as your spy network. If you or your customers need to keep track of code usage—for example, a compliance officer tracking employee enrollment in your course(s)—you can set up this recipe or one similar to it. (Note: if you set up this recipe to track code usage, you can delete the recipe we made in “Step 2” once this one is *Live* as adding a user to a LearnDash group also gives them access to the courses associated with that group.) We’ll start by setting up a trigger and action that creates a LearnDash group when a user purchases codes. From your WordPress Admin Sidebar, navigate to *Automator* > *Add New*. In the pop-up window that appears, select *Logged-in users* and click **Confirm**. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 24 — Automator Recipe Type Selector Logged-in users](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-24-—-Automator-Recipe-Type-Selector-Logged-in-users.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 24 — Automator Recipe Type Selector Logged-in users - Uncanny Owl") Name your recipe. We’ve named this recipe *WooCommerce-LearnDash: Introduction to Cryptanalysis*. In the *Triggers* panel, from the menu of available integrations, click **WooCommerce**. From the drop-down list that appears, select *A user pays for, lands on a thank you page for an order with a product*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 25 — Automator WooCommerce Trigger A user completes, pays for, lands on a thank you page for an order with a product](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-25-—-Automator-WooCommerce-Trigger-A-user-completes-pays-for-lands-on-a-thank-you-page-for-an-order-with-a-product.gif "How to Create & Sell LearnDash & WooCommerce Promo Codes 25 — Automator WooCommerce Trigger A user completes, pays for, lands on a thank you page for an order with a product - Uncanny Owl") Next, in the *Actions* panel, click **Add action**. From the menu of available integrations, click **LearnDash**. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 26 — Automator Actions Integrations LearnDash](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-26-—-Automator-Actions-Integrations-LearnDash.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 26 — Automator Actions Integrations LearnDash - Uncanny Owl") From the drop-down list that appears, select *Create a group*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 27 — Automator Action LearnDash Create a group](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-27-—-Automator-Action-LearnDash-Create-a-group.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 27 — Automator Action LearnDash Create a group - Uncanny Owl") Automator will present you with an editor where you can configure the group settings. We’ve used a *token* (a dynamic piece of data pulled from our website) to complete the *Group name*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 28 — Automator LearnDash Action Create a group editor](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-28-—-Automator-LearnDash-Action-Create-a-group-editor.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 28 — Automator LearnDash Action Create a group editor - Uncanny Owl") When you’re finished with your configurations, click **Save**. Your action should look like this: ![How to Create & Sell LearnDash & WooCommerce Promo Codes 29 — Automator LearnDash Action Create a group Live](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-29-—-Automator-LearnDash-Action-Create-a-group-Live.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 29 — Automator LearnDash Action Create a group Live - Uncanny Owl") Now, to complete our “spy network” we’re going to add a second trigger and a second action along with a filter. In the *Triggers* panel, click **Add trigger** then click **WPForms** or whichever form-building plugin you used for your code redemption form. From the drop-down list that appears, select *A user submits a form* and select the form that contains the code redemption field. Click **Save**. At the top of the *Triggers* panel, ensure that the *Run recipe when* setting is set to *Any*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 30 — Automator WPForms Trigger A user submits a form](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-30-—-Automator-WPForms-Trigger-A-user-submits-a-form.gif "How to Create & Sell LearnDash & WooCommerce Promo Codes 30 — Automator WPForms Trigger A user submits a form - Uncanny Owl") In the *Actions* panel, click **Add action** then click **LearnDash**. From the drop-down list that appears, select *Add the user to a group*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 31 — Automator LearnDash Action Add the user to a group](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-31-—-Automator-LearnDash-Action-Add-the-user-to-a-group.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 31 — Automator LearnDash Action Add the user to a group - Uncanny Owl") Automator will prompt you to select a group. Because the group to which we will be adding these users has not yet been created (i.e., another user has not yet purchased the codes) we’re going to use a powerful feature called *action tokens* (dynamic pieces of data pulled from within the same recipe). In the *Group* field, select *Use a token/custom value*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 32 — Automator LearnDash Action Add the user to a group Group field](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-32-—-Automator-LearnDash-Action-Add-the-user-to-a-group-Group-field.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 32 — Automator LearnDash Action Add the user to a group Group field - Uncanny Owl") In the empty field that appears, click the **Asterisk**, the token symbol. Under *Actions*, select *Create a group* > *Group ID*. When you’re finished, click **Save**. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 33 — Automator LearnDash Action Add the user to a group Action tokens](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-33-—-Automator-LearnDash-Action-Add-the-user-to-a-group-Action-tokens.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 33 — Automator LearnDash Action Add the user to a group Action tokens - Uncanny Owl") With both actions, your *Actions* panel should look like this: ![How to Create & Sell LearnDash & WooCommerce Promo Codes 34 — Automator LearnDash Actions Create a group and Add the user to a group](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-34-—-Automator-LearnDash-Actions-Create-a-group-and-Add-the-user-to-a-group.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 34 — Automator LearnDash Actions Create a group and Add the user to a group - Uncanny Owl") In our example, the user who purchases our codes (administrators, publishers, etc.) is not the same user who will be enrolling in our course (students, employees, etc.). As such, we need a way to “filter” users into the correct set of actions. In the *Actions* panel, hover over the *Create a group* action and click **Filter**. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 35 — Automator LearnDash Actions Create a group Filter and Delay](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-35-—-Automator-LearnDash-Actions-Create-a-group-Filter-and-Delay.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 35 — Automator LearnDash Actions Create a group Filter and Delay - Uncanny Owl") In the *Conditions* window that appears, select *WooCommerce* > *The user has purchased a specific product*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 36 — Automator LearnDash Actions Create a group WooCommerce Condition The user has purchased a specific product](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-36-—-Automator-LearnDash-Actions-Create-a-group-WooCommerce-Condition-The-user-has-purchased-a-specific-product.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 36 — Automator LearnDash Actions Create a group WooCommerce Condition The user has purchased a specific product - Uncanny Owl") In the window labeled *Configure the rule*, select the product associated with your codes. In our example, that’s *Introduction to Cryptanalysis*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 37 — Automator LearnDash Actions Create a group Configure the rule](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-37-—-Automator-LearnDash-Actions-Create-a-group-Configure-the-rule.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 37 — Automator LearnDash Actions Create a group Configure the rule - Uncanny Owl") After you’ve selected your product, click **Save filter**. The action should now look like this: ![How to Create & Sell LearnDash & WooCommerce Promo Codes 38 — Automator LearnDash Actions Create a group Filter Live](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-38-—-Automator-LearnDash-Actions-Create-a-group-Filter-Live.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 38 — Automator LearnDash Actions Create a group Filter Live - Uncanny Owl") To ensure that group leaders are not included as group members, you can add another filter to the *Add the user to a group* action as follows: ![How to Create & Sell LearnDash & WooCommerce Promo Codes 39 — Automator LearnDash Actions Add the user to a group Filter Live](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-39-—-Automator-LearnDash-Actions-Add-the-user-to-a-group-Filter-Live.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 39 — Automator LearnDash Actions Add the user to a group Filter Live - Uncanny Owl") With these filters in place, Automator will sort users into groups to suit our workflow. To complete our “network” and notify the group leader whenever a code is redeemed, we can add another action. In the *Actions* panel, click **Add action** then click **LearnDash**. From the drop-down list that appears, select *Send an email to Group Leaders of a group*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 40 — Automator LearnDash Actions Send an email to Group Leaders of a group](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-40-—-Automator-LearnDash-Actions-Send-an-email-to-Group-Leaders-of-a-group.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 40 — Automator LearnDash Actions Send an email to Group Leaders of a group - Uncanny Owl") Automator will present you with an editor where you can configure the email message to send to group leaders whenever a user fills out the redemption form. Use tokens to include the user’s name and the code they redeemed. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 41 — Automator LearnDash Actions Send an email to Group Leaders of a group Email editor](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-41-—-Automator-LearnDash-Actions-Send-an-email-to-Group-Leaders-of-a-group-Email-editor.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 41 — Automator LearnDash Actions Send an email to Group Leaders of a group Email editor - Uncanny Owl") When you’re finished, click **Save**. Your *Actions* panel should look like this: ![How to Create & Sell LearnDash & WooCommerce Promo Codes 42 — Automator WooCommerce LearnDash Recipe Actions Panel](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-42-—-Automator-WooCommerce-LearnDash-Recipe-Actions-Panel.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 42 — Automator WooCommerce LearnDash Recipe Actions Panel - Uncanny Owl") Finally, in the *Recipe* box, click **Edit** next to *Times per user* and set the value to “1”. This will ensure that, if a user goes on to purchase more codes from this batch in a separate transaction, they won’t create duplicate groups. Toggle the recipe from *Draft* to *Live*. ![How to Create & Sell LearnDash & WooCommerce Promo Codes 43 — Automator WooCommerce LearnDash Introduction to Cryptanalysis Recipe Live](https://www.uncannyowl.com/wp-content/uploads/2022/12/How-to-Create-Sell-LearnDash-WooCommerce-Promo-Codes-43-—-Automator-WooCommerce-LearnDash-Introduction-to-Cryptanalysis-Rcipe-Live.png "How to Create & Sell LearnDash & WooCommerce Promo Codes 43 — Automator WooCommerce LearnDash Introduction to Cryptanalysis Rcipe Live - Uncanny Owl") ## **Keep Cool, Keep Coding** Now that you’re a master codebreaker, we bet there isn’t anything you can’t sell on your website with the right code, product and recipe settings. What are some of the codes that you need us to crack? Let us know in the comment section below. Until then, keep cool and keep coding! **Categories:** Best Practices, LearnDash, Uncanny Automator --- ### [Uncanny CEUs: Archive quiz results](https://www.uncannyowl.com/uncanny-ceus-archive-quiz-results/) **Published:** November 17, 2022 **Author:** Ryan Moore **Content:** The [Uncanny Continuing Education Credits plugin for LearnDash](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) is perhaps the #1 tool for archiving LearnDash course records. Out of the box, LearnDash on its own can only track the current attempt for a course. If users retake a course after a progress reset, all records of earlier course activity, including certificates, is wiped out. Uncanny Continuing Education Credits (a.k.a. Uncanny CEUs) was born out of a need to keep a record of all course activity. ### Introducing quiz record archives We have archived LearnDash course records for years. The completion records could be included in transcripts to give a complete record of a user’s learning activity as well as in admin and front end reports. For compliance and other periodic training, these permanent course records were invaluable, but they were just that–course records. With the release of Uncanny Continuing Education Credits 4.0, we’re adding support for *quiz* record archiving to the mix. Need to know how some students performed in final course quizzes 3 years ago? No problem. Concerned that our [Quiz Question Analysis Report](https://www.uncannyowl.com/knowledge-base/learndash-quiz-question-analysis-report/) in [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) has invalid results because it doesn’t captured archived quiz records? Not any more! ### Generate historical records Now that Uncanny CEUs can archive more than just quiz data, we had to rebuild some of the Settings page to support different data types. Here’s how things look now if you want to generated credit records, course records and quiz records: [![Archive LearnDash course and quiz results](https://www.uncannyowl.com/wp-content/uploads/2022/11/Achive-LearnDash-course-and-quiz-results.png "Achive LearnDash course and quiz results - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/11/Achive-LearnDash-course-and-quiz-results.png) Generating results really is as easy as clicking a button. It can take a few minutes with lots of results, but in the end you will have a complete set of data that will survive course and quiz progress resets. Of course, these steps are generally only needed when you first install the plugin. Once activated, Uncanny CEUs will automatically add all new course and quiz records to our special archive tables. When historical results are stored, our plugin is recording a permanent record of quiz dates, scores, and answers to multiple choice questions. ### Using historical records Tracking the data is one thing, but how do you go about using it? Archived quiz results are primarily for admin use, so once archived records have been stored, we add a new section to edit user pages in /wp-admin/ that shows these records. It shows up immediately beneath active quiz results in the Course Info section and looks like this: [![Archive LearnDash quiz results](https://www.uncannyowl.com/wp-content/uploads/2022/11/Archived-quiz-results.png "Archived quiz results - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/11/Archived-quiz-results.png) We also include quiz archive data in the Quiz Question Analysis Report. There are a few important things to keep in mind: - While quiz records are stored in the archive as they’re recorded, each quiz attempt will only show up ONCE on the edit user page and reports. In other words, after completion, the attempt would show up with regular quiz results only. It is only *after* a course progress reset wiped out quiz records that the attempt would be moved and show up in the “Archived quiz results” section instead. - It is not possible to delete archived quiz results. - Quiz certificates are not retained, only quiz scores, dates, and multiple choice answers. ### Other CEU additions Don’t worry, there are other new features in the 4.0 release as well! For anyone that works with [multi-course certificates](https://www.uncannyowl.com/knowledge-base/continuing-education-certificates/), access was always limited to email delivery and retrieving files from the web server. Now, for developers that need more flexibility and want to retrieve this certificate type with something user-facing, links to certificates are stored in user meta. Here’s how you can use them: - ceu\_multicert\_$certificate\_id\_course\_$course\_id = certificate path (certificate id and course id are actual certificate and course ids) - ceu\_multicert\_$certificate\_id\_course\_$course\_id\_earned = current timestamp (certificate id and course id are actual certificate and course ids) - ceu\_multicert\_$certificate\_id\_earned = current timestamp (certificate id is actual certificate id) - uo-ceu-multicert-$current\_time = possible array of all certificates generated - uo-ceu-multicert-linked-courses-$current\_time = all courses linked to certificate - uo-ceu-multicert-certificates-$current\_time = all certificates matching courses $current\_time and timestamps will be the same for all keys added above. If you’ve ever wanted to show credit values associated in a course on non-course post types, you could pass in a course ID, but that made it very difficult to use in sitewide elements like a sidebar. In the 4.0 release we have added detection to the [\[uo\_ceu\_available\] shortcode](https://www.uncannyowl.com/knowledge-base/continuing-education-shortcodes/#available-course-credits), so now if it’s used in a lesson or topic post type, it can look up the parent course and show the credit value for that course. That covers the highlights of the [Uncanny Continuing Education Credits 4.0](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) release. Make sure to check the [changelog](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-changelog/) for a complete set of updates. **Categories:** Continuing Education, LearnDash --- ### [How We Made LearnDash 75 Times Faster](https://www.uncannyowl.com/how-we-made-learndash-75-times-faster/) **Published:** October 31, 2017 **Author:** Ryan Moore **Content:** ***Important****: This article examines how we modified certain parts of LearnDash to improve performance on high volume/enterprise sites. LearnDash itself is not slow, but some parts of it are designed for convenience rather than performance. For the vast majority of LearnDash sites, the optimizations discussed below are unnecessary and could be dangerous. This article is intended for very large sites where scalability and performance are critical.* [![LearnDash Performance Tuning](https://www.uncannyowl.com/wp-content/uploads/2017/10/faster-learndash-performance.jpg "faster-learndash-performance - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/10/faster-learndash-performance.jpg)We see a lot of projects that really push [LearnDash](https://www.uncannyowl.com/share/learndash/) to its limits, and for a sub-$200 WordPress plugin, those limits are surprisingly high. LearnDash is generally an efficient plugin that serves the vast majority of its customers very well, but every so often, an organization wants to see how well it can really perform at scale. The typical LearnDash site we see might expect up to 15 simultaneous learners (even on sites with upwards of 1,000 users) and perhaps 200 LearnDash posts. We support several, however, that have *hundreds* of simultaneous learners and thousands of LearnDash posts (courses, lessons, topics and quizzes). At that level, everything gets harder and keeping everything running smoothly requires tuning performance wherever we can. What we observed on extremely large sites, especially after total courses crossed the 100 level, total quizzes exceeded 1,000 and we started going over the 100 simultaneous user mark, was that performance significantly deteriorated in 3 main areas: user profile pages in /wp-admin/, quiz listing pages, and quiz submissions. In some cases users and admins were even seeing 503 errors, which is catastrophic for any live LearnDash site, but especially ones with hundreds of people online at the same time. In user profiles we found that database operations could often exceed 150 seconds of processing times and require 10s of thousands of SQL queries to render (perhaps 200 queries is typical on most pages). What we found was that the “Course Progress Details” section of the profile page was looping through *all* courses to retrieve records for the user and the courses for every course the user was enrolled in. It was pulling everything down on page load too, so even if an admin were just going in to change a password or something else unrelated to LearnDash, the site would be affected by severe load. Loading all of this data does make things a lot more convenient for admins, and in most cases this section wouldn’t be an issue. But when loading tens of thousands of records on a site with lots of courses, it’s a problem. Fortunately, our developers were able to override this section completely with an alternative solution that combines queries and reduces loops when the admin drills down into that specific course. The approach means we only load data when it’s needed and only as much as is needed. We also removed the edit links to LearnDash posts from the profile page, which are generally rarely used, and we added some transients to speed things up further. The net effect of these changes? **We took profile page load time for admins from 150 seconds to 2 seconds.** The difference was night and day. It made profile pages usable again. The list of quizzes inside LearnDash was another interesting performance challenge. With well over 1,000 quizzes (and thousands of lessons and topics) on a site, just listing the quizzes was a 120 second exercise that adversely affected learners on the site at the same time. Why so slow? Well, LearnDash adds filters to quizzes to make it easy to choose a course (or something else) and only see quizzes under it. But to populate that list of filters, it needs to look up all the associations between quizzes, courses, lessons and topics—which takes a long time on a big site. This was a case where we really gave up convenience for performance. We didn’t care about only showing objects with quizzes in the filters. So instead we just loaded all courses, then on course selection in a filter we showed all lessons and topics. If the administrator filtered and there were quizzes, great. And if not, we just showed a message that there were no quizzes. **That change took loading the quiz listing from 120 seconds to 2 seconds.** It was well worth the slight inconvenience. [![LearnDash Quiz Performance](https://www.uncannyowl.com/wp-content/uploads/2017/10/learndash-quiz-performance.png "learndash-quiz-performance - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/10/learndash-quiz-performance.png) Next we looked at quiz submission performance. On sites with a lot of content, saving quiz answers that include essay questions can be extremely slow—in the case of a site with 120,000 rows in the wp\_posts table, it was taking 35 seconds to save quizzes with essay questions. Obviously that was trying learner patience and slowing down the site. To address this one we took a shortcut, and instead of looking for a matching post title or name to avoid duplicates when saving an essay answer, we skipped the check and just forced a unique post name. **That new approach took quiz saving time from 35 seconds to 3 seconds**. As you can see from our results, it is possible to significantly increase LearnDash performance on big sites. What’s especially nice is that LearnDash allows us to make 2 out of the 3 overrides above without changes to LearnDash code (and we’re hoping the third can be handled outside of LearnDash in a future LearnDash release if additional filters are added). This means it’s easy to bundle our performance improvements into a portable plugin and the optimizations will survive updates. Another factor that did help us really push LearnDash performance on these sites was assistance from [Pressidium](https://www.uncannyowl.com/share/pressidium), who are hosting the sites. They went out of their way to help us look at opportunities for performance enhancements and they applied some database changes to their environment to improve performance further. **Categories:** Best Practices, LearnDash --- ### [7 Cool Ways to Award LearnDash Certificates](https://www.uncannyowl.com/7-cool-ways-to-award-learndash-certificates/) **Published:** October 25, 2022 **Author:** Brendan Da Costa **Content:** Gold stars and extra credit are fun ways to motivate students and reward them for their hard work—but they don’t exactly speak to credentials. Certificates, however, give students something to work towards and serve as a tangible testament to their academic achievements. They also just look great hanging on the wall. In this step-by-step guide, we’ll show you how to improve student engagement using LearnDash certificates. Keep that certificate seal handy—with these eight cool ways to use LearnDash certificates, you’re going to need it! ## **What You’ll Need** Just like your students need tools for learning, you’re going to need some tools for awarding certificates and improving student engagement. Sadly, a laser pointer won’t do but we think you’ll find these plugins and add-ons much more helpful—and far less hazardous to your eyesight. They’re both easy to use and have a free version you can demo before making an investment. ### **Uncanny Toolkit Pro** [Uncanny Toolkit Pro](https://wordpress.org/plugins/uncanny-learndash-toolkit/) is the #1 must-have add-on for [LearnDash](https://automatorplugin.com/integration/learndash/) websites—probably because it’s a masterclass in “Saving Time for Your LMS”. In addition to features such as course dashboards and personalized logins, Toolkit improves the functionality of LearnDash certificates to make administration easy and improve the student experience. Enhance your certification process with modules to preview certificates, automatically email them to students and staff or let your students show off their credentials with a certificates widget. ![Uncanny Toolkit Pro](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-1.png "7 Cool Ways to Award LearnDash Certificates Image 1 - Uncanny Owl") Feel free to check out the full list of features and the Pro pricing schedule by [clicking here](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/). We’ll be using Toolkit Pro features in our examples but that doesn’t mean you can’t [download the free plugin](https://wordpress.org/plugins/uncanny-learndash-toolkit/) and try out core modules. ### **Uncanny Automator Pro** If you’re running an LMS WordPress website, then [Uncanny Automator](https://wordpress.org/plugins/uncanny-automator/) is the best way to save yourself time and money. Connect your various apps and plugins for enhanced functionality, automate repetitive tasks and workflows and eliminate bloat from your website. Specifically, Automator packs so many [LearnDash](https://automatorplugin.com/integration/learndash/) triggers and actions into even the free version of the plugin that you’ll feel like you’re cheating on an exam. ![Automator Homepage](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-7.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 7 - Uncanny Owl") With Automator’s no-code, click-and-configure interface, you’ll be able to email LearnDash certificates to anyone on your contact list for just about any interaction that occurs on your website. In case that wasn’t enough, you can connect your LearnDash certification process to databases like [Airtable](https://automatorplugin.com/integration/airtable/), CRM tools like [ActiveCampaign](https://automatorplugin.com/integration/activecampaign/), ecommerce plugins like [WooCommerce](https://automatorplugin.com/integration/woocommerce/) or even membership plugins like [Restrict Content Pro](https://automatorplugin.com/integration/restrict-content/). Definitely try out the [free Automator plugin](https://wordpress.org/plugins/uncanny-automator/) and its dozens of LearnDash actions and triggers. Then, when you’ve gotten the hang of it, [upgrade to Automator Pro](https://automatorplugin.com/pricing/) to make the most of your LMS. In addition to Toolkit Pro and Automator Pro, we’ll feature other commonly-used plugins and apps such as [WooCommerce](https://automatorplugin.com/integration/woocommerce/) and [The Events Calendar](https://automatorplugin.com/integration/the-events-calendar/) but these are only optional. ## **7 Cool Ways to Award LearnDash Certificates** Now that you’re all set up with the right tools, let’s look at these seven cool ways to award LearnDash certificates so that your students can start decorating their walls with their credentials. ### **1. Email LearnDash Certificates with Toolkit Pro** Uncanny Toolkit Pro allows you to email PDF copies of certificates to students and administrators with just a click. Here’s how it’s done: **Step 1:** From your WordPress Admin Sidebar, navigate to *Uncanny Toolkit* > *Modules*. **Step 2:** Scroll down to the modules titled *Send Course Certificates by Email* and *Send Quiz Certificates by Email* or type “certificates” into the search bar. ![Uncanny Toolkit Pro Send Certificate Modules](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-3.png "7 Cool Ways to Award LearnDash Certificates Image 3 - Uncanny Owl") **Step 3:** Toggle the button in the upper right-hand corner to the “On” position. **Step 4:** Click **Settings** to configure the module and draft the email. You can then decide who will receive the email and draft the title and content using dynamic data to personalize the message. ![Uncanny Toolkit Pro Send Certificate Module Email Editor](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-4.png "7 Cool Ways to Award LearnDash Certificates Image 4 - Uncanny Owl") **Step 5:** Once you’ve configured the settings and drafted your email message, click **Save module**. Your students will now receive automated emails with a PDF copy of their certificate, ready for printing and framing! ### **2. Email LearnDash Certificates with Shortcode and Magic** Using some “copy-and-paste” shortcode and a little magic, you can put the power of printing certificates in your students’ hands—or, more accurately, at their fingertips. Upon completion of a course, present your students with a button to click if they would like to receive an emailed copy of their certificate. Here’s how to cast the spell: **Step1:** From your WordPress Admin Sidebar, navigate to *Automator* > *Add New*. In the pop-up window that appears, select *Logged-in users*. ![Uncanny Automator Add New Recipe Logged-in Users](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-5.gif "7 Cool Ways to Award LearnDash Certificates Image 5 - Uncanny Owl") **Step 2:** Name your recipe something that makes it easy to remember, like… *Certified Magician*. ![Uncanny Automator Recipe Title](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-6.png "7 Cool Ways to Award LearnDash Certificates Image 6 - Uncanny Owl") **Step 3:** From the menu of available integrations, click **Automator**. ![Uncanny Automator Trigger Automator](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-7.png "7 Cool Ways to Award LearnDash Certificates Image 7 - Uncanny Owl") **Step 4:** From the drop-down list that appears, select *A user clicks a magic button*. ![Uncanny Automator A user clicks a magic button trigger](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-8.png "7 Cool Ways to Award LearnDash Certificates Image 8 - Uncanny Owl") **Step 5:** Your trigger should now look like this: ![Uncanny Automator A user clicks a magic button trigger Live](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-9.png "7 Cool Ways to Award LearnDash Certificates Image 9 - Uncanny Owl") Copy the bracketed text *\[acutomator\_button id=” xxxxx “ “ label=”Click here”\]* and save it to your clipboard. We’re going to embed this shortcode in the *Classic Editor* of the desired course. **Step 6:** From your WordPress Admin Sidebar, navigate to *LearnDash* > *Courses* and click **Edit** beneath the course for which you would like to offer certificates to students for course completion. ![LearnDash Course Editor](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-10.png "7 Cool Ways to Award LearnDash Certificates Image 10 - Uncanny Owl") **Step 7:** In the *Classic Editor* screen, click the **Add button** icon then click **Shortcode** and paste the magic button shortcode (the bracketed text we copied from Step 5) into the box. ![LearnDash Course Editor Shortcode](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-11.gif "7 Cool Ways to Award LearnDash Certificates Image 11 - Uncanny Owl") **Step 8:** Next, we’ll need some additional shortcode so that the Automator magic button only appears for students who have completed the course. Thankfully, LearnDash has a library of preset shortcodes for us to use. [Click here](https://www.learndash.com/support/docs/core/shortcodes-blocks/#learndash-course-complete-course_complete) for the *LearnDash Course Complete* shortcode or copy the bracketed text: \[course\_complete course\_id=”12″\]. Paste that shortcode above the Automator magic button shortcode. It should look like this: ![LearnDash Hide Until Course Completion Shortcode](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-12.png "7 Cool Ways to Award LearnDash Certificates Image 12 - Uncanny Owl") Note that we’ve changed the Course ID. The simplest way to find your Course ID, if you don’t know it, is to return to the Course page and hover over the course with your mouse. A box should appear on the bottom left-hand corner of your browser window. In that line of text, the number following *post=* is the Course ID. ![LearnDash Course ID URL](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-13.png "7 Cool Ways to Award LearnDash Certificates Image 13 - Uncanny Owl") **Step 9:** Below the Automator magic button shortcode, paste \[/course\_complete\] so that the finished block should now look like this: ![LearnDash Hide Automator Magic Button Shortcode](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-14.png "7 Cool Ways to Award LearnDash Certificates Image 14 - Uncanny Owl") The Automator magic button will now only appear to students who have completed the course. You can add a new block above this one, describing the purpose and function of the Automator magic button or you change the label itself to something more descriptive by simply replacing “Click here”. **Step 10:** Return to your Automator recipe by navigating to *Automator* > *All recipes* and clicking **Edit** beneath *Certified Magician*. **Step 11:** In the *Actions* panel, click **Add action** then click **LearnDash**. ![Automator Action LearnDash](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-15.png "7 Cool Ways to Award LearnDash Certificates Image 15 - Uncanny Owl") From the drop-down list that appears, select *Send a certificate*. ![Automator LearnDash Send a certificate Action](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-16.png "7 Cool Ways to Award LearnDash Certificates Image 16 - Uncanny Owl") Use tokens such as *User email*, *User first name*, etc. to send, draft and customize your email. ![Automator Send a certificate Action Email Editor](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-17.png "7 Cool Ways to Award LearnDash Certificates Image 17 - Uncanny Owl") Note: When formatting the *Certificate body*, do not use shortcodes. As in the image above, only use *tokens* by clicking on the **asterisk symbol**. You can use these *tokens* to include information such as dates, user first and last names and courses. **Step 12:** In the upper right-hand corner, toggle the recipe from *Draft* to *Live*. It should look like this: ![Automator Send a LearnDash Certificate from Magic Button Trigger](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-18.png "7 Cool Ways to Award LearnDash Certificates Image 18 - Uncanny Owl") “Abracadabra!” Just like that, your students can receive their certificate upon course completion with just a click. ### **3. Sell LearnDash Certificates with Automator and WooCommerce** Learning should be—and often is—totally free. But credentials often come with costs. With [Automator](https://wordpress.org/plugins/uncanny-automator/) and [WooCommerce](https://automatorplugin.com/integration/woocommerce/), you can offer paid [LearnDash](https://automatorplugin.com/integration/learndash/) certificates for free courses. Here’s the best way to sell those certificates: **Step 1:** The first thing you’ll want to do is to create a WooCommerce product. You’ll then connect this product to a LearnDash certificate using Automator. From your WordPress Admin Sidebar, navigate to *Products* > *Add New*. In the *Product data* panel, set the product to *Virtual*. ![WooCommerce Virtual Product](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-19.png "7 Cool Ways to Award LearnDash Certificates Image 19 - Uncanny Owl") Finish configuring your product as you’d like by setting the price, image(s), upsells, cross-sells, etc. Once the product is to your liking, click **Publish**. **Step 2:** In these next steps, we’ll create a recipe that connects your WooCommerce product to a LearnDash certificate. We’ll add an additional trigger so that only the students who have earned the certificate will receive it. From your WordPress Admin Sidebar, navigate to *Automator* > *Add New* and select *Logged-in users*. **Step 3:** Name your recipe. We’ve named this recipe *WooCommerce-LearnDash: Certificate Order*. **Step 4:** In the *Triggers* panel, click **LearnDash**. From the drop-down list, select *A user completes a course*. Select the course associated with the certificate and click **Save**. ![Automator LearnDash A user completes a course Trigger](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-20.gif "7 Cool Ways to Award LearnDash Certificates Image 20 - Uncanny Owl") **Step 5:** Still in the *Triggers* panel, click **Add trigger** then **WooCommerce**. From the drop-down list, select *A user completes, pays for, lands on a thank you page for an order with a product*. ![Automator WooCommerce A user completes, pays for, lands on a thank you page for a product Trigger](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-21.png "7 Cool Ways to Award LearnDash Certificates Image 21 - Uncanny Owl") **Step 6:** Automator will prompt you to configure the rest of the trigger settings. We selected *completes* then chose our newly created product from the drop-down list. Your finished triggers should look something like this: ![Automator LearnDash and WooCommerce Triggers](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-22.png "7 Cool Ways to Award LearnDash Certificates Image 22 - Uncanny Owl") **Step 7:** In the *Actions* panel, click **Add action** then click **LearnDash**. From the drop-down list, select *Send a certificate* and configure the rest of the settings. When you’re finished, click **Save**. Your action should look like this: ![Automator LearnDash Send a certificate Trigger Live](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-23.png "7 Cool Ways to Award LearnDash Certificates Image 23 - Uncanny Owl") **Step 8:** Toggle the recipe from *Draft* to *Live*. Here’s what the final recipe should look like: ![Automator LearnDash WooCommerce Recipe](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-24.png "7 Cool Ways to Award LearnDash Certificates Image 24 - Uncanny Owl") **Step 9:** Students can sometimes be forgetful—because their heads are full of knowledge. If you wanted to ensure that your students get the recognition they deserve, you could create a second recipe to send an email upon course completion with a link for them to purchase their certificate. Grab the product url from the product page and paste it into the *Email body* field of your Automator action. That recipe might look something like this: ![Automator Send a Certificate Upon Course Completion](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-25.png "7 Cool Ways to Award LearnDash Certificates Image 25 - Uncanny Owl") You could also use Automator’s tagging actions with CRMs like [Groundhogg](https://automatorplugin.com/integration/groundhogg/), [Mailchimp](https://automatorplugin.com/integration/mailchimp/) or [Mailpoet](https://automatorplugin.com/integration/mailpoet/) to send even more compelling emails and boost conversions. ### **4. Award LearnDash Certificates for Live Event Attendance** Who doesn’t love to have a perfect attendance record? You can use Automator to send certificates to attendees of live events as a way for your students to remember the occasion. Here’s how to send certificates as souvenirs of successful events: **Step 1:** From your WordPress Admin Sidebar, navigate to *Automator* > *Add New* and select *Logged-in users*. **Step 2:** Name your recipe. We’ve named this recipe *Special Event Attendance Certificate*. **Step 3:** In the *Actions* panel, click **The Event Calendar** and select *A user attends an event*. Automator will prompt you to select your event from a drop-down list. After you’ve selected your event, click **Save**. ![Automator The Events Calendar A user attends an event Trigger](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-26.gif "7 Cool Ways to Award LearnDash Certificates Image 26 - Uncanny Owl") **Step 4:** In the *Actions* panel, click **Add action** then click **LearnDash**. From the drop-down list, select *Send a certificate* and configure the rest of the settings. When you’re finished, click **Save**. **Step 5:** Toggle your recipe from *Draft* to *Live*. The finished recipe should look like this: ![Automator LearnDash Certificate for Event Attendance](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-27.png "7 Cool Ways to Award LearnDash Certificates Image 27 - Uncanny Owl") **Step 6:** Concerned about event certificates only being available by email and not from the website? One solution would be to [create a hidden course](https://www.learndash.com/creating-hidden-courses-in-learndash/) with an associated course certificate. Then, in our event attendance recipe, change the action so it completes the hidden course instead of sending the certificate via email. This way, the Toolkit Pro module to send a certificate can provide it by email, and the Show Certificates module in the free version of Uncanny Toolkit can show event certificates to students! ### **5. Credit & Course Group Based Certificates** Credit where credit is due—which, in this case, means awarding certificates. If you have purchased the [Uncanny Continuing Education Credits plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/), you can award certificates for groups of courses as well as for credits earned. Here’s how to claim the credit: **Step 1:** After downloading the Uncanny Continuing Education Credit plugin, navigate *Uncanny CEU* > *Settings*. **Step 2:** Scroll down to the section labeled *Certificate Email Settings*. Check the boxes next to *Enable Multi Course certificate* and *Enable CEU Credits certificate*. You can also choose to send the certificate to Site Administrators and Group Leaders as a prudent recordkeeping practice. ![Uncanny CEUs Email Certificate Settings](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-28.png "7 Cool Ways to Award LearnDash Certificates Image 28 - Uncanny Owl") **Step 3:** From your WordPress Admin Sidebar, navigate to *LearnDash* > *Certificates*. Select the certificate you would like to award based on credit or course groups or create a new one. On the right-hand side of the Classic Editor, you’ll see options to award the certificate based on CEU credits accumulated or courses completed. ![Uncanny CEUs Certificate for Multiple Course Completion](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-29.png "7 Cool Ways to Award LearnDash Certificates Image 29 - Uncanny Owl") Once you’ve finished configuring your certificate, click **Publish**. **Step 4:** Finally, navigate to *LearnDash* > *Courses*. From the Classic Editor within each course, you can set the CEU value. If you’re not certain how to do this—or would like to “continue” your Continuing Education Credits learning—[click here](https://www.uncannyowl.com/knowledge-base/continuing-education-certificates/). ### **6. Award LearnDash Certificates for Course Series with Automator** If you don’t have the [Uncanny Continuing Education Credits plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/), you can still award certificates to students who complete a series of courses using Automator. It’s a lot easier than building a curriculum, we promise. This recipe won’t differ much from previous set-ups using Automator. The only difference is that you’ll add multiple triggers; one for each course. The finished recipe should look something like this: ![Automator Send Certificate for Multiple Course Completion](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-30.png "7 Cool Ways to Award LearnDash Certificates Image 30 - Uncanny Owl") ### **7. Award LearnDash Certificates for Offline Learning Activities** Why just keep the classroom online? You can leverage the power of [LearnDash](https://automatorplugin.com/integration/learndash/), [Automator](https://wordpress.org/plugins/uncanny-automator/) and [Uncanny CEUs](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) to make changes in the real world! Combine Automator with any form-building plugin or web application such as [WPForms](https://automatorplugin.com/integration/wp-forms/) or [Forminator](https://automatorplugin.com/integration/forminator/) to award credits and send certificates following offline learning events. **Step 1:** You’ll need some method of verifying attendance for your offline learning activities—this will serve as the trigger for our Automator recipe. If you already have a verification process, you can skip to the next step. For our verification process, we’ve created a form. This form can be a simple registration form or a more complex form with information only the attendees would know. It’s up to you to configure as you’d like. **Step 2:** Create a new recipe in Automator, select *Logged-in users* and choose an appropriate title. **Step 3:** In the *Triggers* panel, configure your trigger according to your verification process. In our example, we’ve selected our form-building integration and the form associated with our offline learning activity. Click **Save**. **Step 4:** In the *Actions* panel, click **Uncanny CEUs** then select *Award a number of custom CEUs to the user*. Automator will prompt you to fill out the date, description and number of CEUs to award. When you’re finished, click **Save**. ![Automator LearnDash Certificate for Offline Learning](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-31.gif "7 Cool Ways to Award LearnDash Certificates Image 31 - Uncanny Owl") **Step 5:** Create a second recipe to send certificates or mark a hidden course complete (and send the certificate with Uncanny Toolkit) based on the total number of CEUs a student has earned. That recipe might look something like this: ![Automator LearnDash Certificate for Offline Learning Recipe Live](https://www.uncannyowl.com/wp-content/uploads/2022/09/7-Cool-Ways-to-Award-LearnDash-Certificates-Image-32.png "7 Cool Ways to Award LearnDash Certificates Image 32 - Uncanny Owl") ## **Keep Certifying** For students, certificates are as good as gold medals… if there was an Academic Olympics. And tools such as [Uncanny Automator](https://wordpress.org/plugins/uncanny-automator/) and [Uncanny Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/) help you leverage the certification process to improve your LMS and, ultimately, your students’ experience. Try out a few of the examples we provided in this post and we promise you’ll spend less time administrating and more time educating. Then, when you’re ready, upgrade to the [All Access Pass](https://www.uncannyowl.com/all-access-pass/) and get even more Uncanny plugins and add-ons, not to mention industry-leading support. Now that’s certifiably cool. **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Uncanny Groups for LearnDash 5.0](https://www.uncannyowl.com/uncanny-groups-for-learndash-5-0/) **Published:** October 4, 2022 **Author:** Ryan Moore **Content:** Yes, the [Uncanny Groups release](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) is *that big*. It deserves the 5.0 label, because this is a giant release with dozens of changes and over 100 hours of development and testing time. A lot of what’s new probably won’t even be on the radar of most users, so we’re hoping this release brings a lot of happy surprises! Ready for the list of what’s new? It’s a big list, but if you’re on Uncanny Groups user, we definitely recommend reading through to the end. ## Pooled seats Ever wish you could set up some groups in a hierarchy, and instead of having seats managed for each individual groups, the *entire* set of groups could draw from a shared pool of seats? That’s what this is. When enabled, groups that are connected together share their seats. Suppose you sell course access to a school and grant that school 1,000 seats to use at their discretion. They’re going to want to divide students up into classes for reporting purposes as well as to manage course enrollment. Instead of having to figure out how to assign 20 seats to one group and 30 to another, now the entire set of classrooms shares from a total pool of 1,000 seats. If a Grade 9 math class uses up 20 seats, then a grade 10 music class uses 30, other groups now have a pool of 950 available seats. That’s the simple introduction. We tried to keep it as straightforward as possible, but there’s a lot to consider when implementing pooled seats. To get started, you’ll have to think about whether you want to enable pooled seats for specific groups only, and let Group Leaders control that setting, or whether you want all group hierarchies to have pooled seats enabled. Here’s what it looks like: [![LearnDash Pooled Seats Settings](https://www.uncannyowl.com/wp-content/uploads/2022/10/LearnDash-Pooled-Seats-Settings.png "LearnDash Pooled Seats Settings - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/10/LearnDash-Pooled-Seats-Settings.png) Checkbox 1 allows Group Leaders to control whether or not to enable seat pooling at the individual hierarchy level by adding a checkbox to the Group Management page. This checkbox is only shown when a top-level group is selected in a hierarchy, and it looks like this: [![Top Level LearnDash Group Hierarchy](https://www.uncannyowl.com/wp-content/uploads/2022/10/Top-Level-LearnDash-Group-Hierarchy.png "Top Level LearnDash Group Hierarchy - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/10/Top-Level-LearnDash-Group-Hierarchy.png) If checkbox 2 is also selected on the settings page, this forces all groups in all hierarchies to use the pooling system. It means the setting for pooled seats is now longer managed at the hierarchy level and instead enables it globally. So how does it actually work, and what happens in various use cases? Let’s cover an example to make this more clear. Suppose you start with a parent group with 100 seats assigned, and that parent group has a child group that has 50 seats. If pooled seats are enabled for the hierarchy, both parent and child groups would immediately see that the *hierarchy* now has 150 seats. (And if you disabled the pool again, the seats would return to 100 and 50 respectively.) When viewing the parent or child groups in this situation, all would show the same number of total and available seats. In cases where enabling seat pooling results in no available seats, perhaps because of admin overrides, Uncanny Groups calculates the total pooled seats as the current number of users across all groups in the hierarchy and adds 10, but this default value can be overridden with a filter: ``` apply_filters( 'ulgm_pool_seats_add_extra_seats_in_parent', absint( 10 + $diff ), $diff, $group_id ) ``` Just a note too that for any of this to work, group hierarchies must first be enabled in LearnDash settings and relationships must be set up for groups by administrators. There is not yet any way to manage group relationships in the front end or by Group Leaders. ## New pricing options For a *very* long time now we’ve had requests to override pricing rules and quantities for seats. Typically requests would sound something like these: “I want to sell a group product for $999 that includes 100 seats, I don’t want users to have to choose a quantity of 100 and change my course prices to hit this pricing target.” “I only want to sell groups with a minimum of 5 seats, they shouldn’t be available when the quantity of seats is just 2.” We would always recommend WooCommerce pricing plugins that allowed easy overrides, but it wasn’t a great workaround. Today’s update adds native solutions to these problems to Uncanny Groups. Here’s what the pricing section now looks like when setting up a Group License product: [![LearnDash Group pricing rules](https://www.uncannyowl.com/wp-content/uploads/2022/10/LearnDash-Group-pricing-rules.png "LearnDash Group pricing rules - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/10/LearnDash-Group-pricing-rules.png) Normally, of course, the price is ignored for a Group License product, instead calculating the price based on the cost of each Group Course product and the number of seats purchased. But when “Fixed price” is checked, the “Regular price” field is used as the group cost *regardless of the number of seats purchased*. In the example above, we’re charging $100 for exactly 10 seats. Users cannot purchase another amount, they just buy a product here that includes 10 seats for that fixed cost. The “Minimum” and “Maximum” quantity fields can be used independently to set limits around seat purchases. These might even be used to set up more advanced pricing rules for different group types. ## New Gutenberg blocks One of our customers rightly pointed out that we had Gutenberg blocks in other plugins for redemption and registration shortcodes, but we didn’t for \[uo\_groups\_registration\_form\] and \[uo\_groups\_redemption\_form\]. Now we do! Look for the new blocks for “Enrollment Key Redemption” and “Enrollment Key Registration”. The new blocks add support for the normal shortcode attributes as well, so the registration block (for example) has settings for redirections, making the key optional, logging the user in automatically on submission and the default role. ## New report sort options We made it a lot easier to sort the various Uncanny Groups reports by different columns on load using shortcode attributes. There are a ton of new attributes here, so we’ll post the list with quick details: Group management `[uo_groups]` - Enrolled users - `enrolled_users_orderby_column` – The title of the column used to sort. Default: `First name` - `enrolled_users_order_column` – Designates the ascending or descending order of the `orderby` parameter (`asc`/`desc`). Default `asc`. - Group leaders - `group_leaders_orderby_column` Default: `First name` - `group_leaders_order_column` Default `asc` Course Report `[uo_groups_course_report]` - `orderby_column` Default: `Date Completed` - `order_column` Default: `desc` Quiz Report `[uo_groups_quiz_report]` - `orderby_column` Default: `Date` - `order_column` Default: `desc` Assignments Report `[uo_groups_assignments]` - `orderby_column` Default: `Date` - `order_column` Default: `desc` Essay Report `[uo_groups_essays]` - `orderby_column` Default: `Date` - `order_column` Default: `desc` For some of the above, please note that the values are stored in the browser cache, so you may not see changes immediately after updating shortcodes. Try a hard refresh or incognito mode for testing. ## Other important updates Group Leaders can now manage users and Group Leaders for child groups when they’re assigned to the parent group level. This makes it a lot easier to set Group Leaders up at the parent group only to manage hierarchies instead of adding them to every child group. In the [Manage Progress](https://www.uncannyowl.com/knowledge-base/manage-learner-progress/) report, we now show a spinner when a search is active to make the activity more clear to users on slower sites. A variety of WPML improvements are also now in the plugin. That wraps up the highlights for the [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) release! The full list of updates is available in the [changelog](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-changelog/). **Categories:** LearnDash, News --- ### [5 Ways to Create Free Trials of Your LearnDash Courses](https://www.uncannyowl.com/5-ways-to-create-free-trials-of-your-learndash-courses/) **Published:** September 30, 2022 **Author:** Brendan Da Costa **Content:** Everyone learns at their own pace. Some students can run through an entire course in a day. Others might need a few weeks to really comb through the material. That’s why creating free trials for your [LearnDash](https://www.uncannyowl.com/share/learndash/) courses is one of the best ways to serve your students. It’s also the best conversion-boosting tool you didn’t know you had! In this step-by-step guide, we’ll show you five different ways to set up free trials of your LearnDash courses. While all methods offer their own advantages, we’ll focus on the methods that give students the most flexibility to learn at their leisure. ## **Why Offer Free Trials?** If you trust your product, why not let it speak for itself? Limited trials are one of the strongest marketing tools at your disposal. #### **Try, Don’t Deny** Free trials offer no-risk, hands-on experience. Not only do your students get a taste of your course material but they can also immerse themselves in your community, giving them another reason to sign-up after their free trial expires. For once, your students will be the ones doing the testing—and we know that you’ll pass with flying colors! #### **Get a Lead, Guaranteed** More often than not, users have to register in order to start their free trial. These new registrants represent valuable leads and you can start to gather information on their needs and preferences such as their mobile versus desktop usage. Even if they don’t become a paying customer after their trial expires, you can still use their contact information to extend exclusive deals. #### **Remitment Commitment** Imagine getting married to a perfect stranger. You have no idea who could be waiting at the other end of the aisle! That’s kind of what it’s like when you purchase an item you’ve never sampled before—minus the unbreakable vows, expensive rings and joint tax filings. Free trials give customers the opportunity to get to know your product before they elated say, “Yes! I will mar—buy your product!” #### **No Lack for Feedback** Use your free trials as an opportunity to make improvements. When did most free trial registrants become paying customers? When did they fall out of the free trial? You can even send a post-trial survey, asking your customers what they enjoyed about the trial and what they would have done without. For the unconverted, offer a special discount if they complete the survey or an extended free trial for more feedback. Convinced that you absolutely must offer free trials? Here are four simple methods to get the job done. ## **Method 1: LearnDash Course Access Settings** For [LearnDash](https://www.learndash.com/?irclickid=ymz2Kd0sIxyNW16WFPw8L0HgUkDTKawa3zmMRA0&irpid=1212251&utm_medium=affiliate&irgwc=1) users who want to set up one or two simple free trial courses—separate from their regular course offerings—this is the most straightforward method. LearnDash has a feature called *Course Access Expiration* built right into the Course Editor. Though this feature was designed for content protection purposes, you can also use it to create dedicated free trial courses. Here’s how it’s done: #### **Step 1: Create Free Trial Course** From your WordPress Admin Sidebar, navigate to *LearnDash LMS* > *Courses*. In the upper right-hand corner, click **Add New** and create your dedicated free trial course. #### **Step 2: Configure Course Access Settings** In the Course Editor, navigate to *Settings* and scroll down to *Course Access Expiration*. Toggle the button to the *On* position and set the length of your free trial in days. ![LearnDash Course Access Settings](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-1.gif "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 1 - Uncanny Owl") That’s all! LearnDash will now grant access to the course for the specified number of days, starting on the user’s enrollment date. LearnDash also gives you a *Data Deletion* option so you can choose to either store or erase a registrant’s course data after their access has expired. ![LearnDash Data Deletion](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-2.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 2 - Uncanny Owl") The *Course Access Expiration* setting works universally, meaning that it will apply to all users who register for the course. If you’re trying to set up a free trial for your existing courses, this method won’t suit your needs as you’ll have to create clones for each course for which you would like to offer a free trial. Additionally, your trial registrants won’t be able to transfer their progress from the trial course to its paid counterpart. ## **Method 2: Sample Lessons** [LearnDash](https://www.learndash.com/?irclickid=ymz2Kd0sIxyNW16WFPw8L0HgUkDTKawa3zmMRA0&irpid=1212251&utm_medium=affiliate&irgwc=1) offers another very simple way for setting up free trials. Instead of time-limiting trial content, you can create lessons within courses that are free for anyone to sample. Here’s how it’s done: 1. From your WordPress Admin Sidebar, navigate to *LearnDash* > *Lessons*. 2. Select the lesson(s) you would like to offer as a free sample or create new ones. 3. In the Lesson Editor, navigate to *Settings* then scroll down to the *Lesson Access Settings* section. 4. Toggle the button next to *Sample Lesson* to the *On* position. 5. Sit back and let your courses sell themselves! ![LearnDash Sample Lesson Setting](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-3.gif "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 3 - Uncanny Owl") This method for creating free trials of your LearnDash courses is perfect for letting your students learn at their own pace. However, there’s no way to restrict your trial content to signed-in users only without using another plugin such as [Restrict Content Pro](https://restrictcontentpro.com/?irclickid=ymz2Kd0sIxyNW16WFPw8L0HgUkDTKaW63zmMRA0&irpid=1212251&utm_medium=affiliate&irgwc=1), [MemberPress](https://memberpress.com/?utm_medium=aff-uncannyowl&utm_content=%2F&utm_source=automatorplugin.com) or [WooCommerce Memberships](https://woocommerce.com/products/woocommerce-memberships/). Using this method, you won’t always be able to track progress and follow leads. ## **Method 3: WooCommerce Trial Subscriptions** We’re going to create a free trial using a subscription and the built-in free trial feature in WooCommerce. For this method, you’ll need [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/). ![WooCommerce Subscriptions](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-4.gif "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 4 - Uncanny Owl") After you’ve purchased WooCommerce Subscriptions, download the [LearnDash WooCommerce integration](https://www.learndash.com/add-on/woocommerce/) for free. It’s one of the easiest ways to improve your LMS functionality and improve your students’ experience. ![LearnDash WooCommerce Integration](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-5.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 5 - Uncanny Owl") You’ll need to have an active LearnDash license and be logged in to [download the plugin](https://www.learndash.com/add-on/woocommerce/). But once you integrate your LMS with your e-commerce platform, your students will be gobbling up your courses faster than you can make new ones. #### **Step 1: Configure LearnDash WooCommerce Integration** LearnDash offers a [detailed step-by-step guide](https://www.learndash.com/support/docs/add-ons/woocommerce/) for setting up the integration but here’s a brief walkthrough: 1. After downloading the LearnDash WooCommerce plugin, from your WordPress Admin Sidebar, navigate to *WooCommerce* > *Settings*. 2. Click on the **Accounts & Privacy** tab. 3. Deselect the *Allow customers to place orders without an account* option. 4. Select the *Allow customers to log into an existing account during checkout* option. 5. Select the *Allow customers to create an account during checkout* option. #### **Step 2: Configure Your Subscription Product** 1. From your WordPress Admin Sidebar, navigate to *Products* > *Add New*. 2. Name your product—we named our product *Free Trial Subscription*—then scroll down to the *Product data* panel. 3. From the drop-down list, select *Simple subscription* and click the box next to *Virtual*. 4. Set the price, billing frequency and expiration period. As this is intended to be a free trial, set the *Sign-up fee* to $0.00. 5. Set the length of your free trial in the *Free trial* field. For example, we set our free trial to 14 days. After that period, the payments will begin unless the user cancels their subscription. But with course material this good, why would they?! 6. Next, thanks to the LearnDash WooCommerce integration, you can decide which of your LearnDash groups and courses this subscription product grants access to. 7. Finish configuring your subscription product then click **Publish**. That’s it! The integration really does make it that easy. ![WooCommerce Subscription Product Settings](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-6.gif "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 6 - Uncanny Owl") To create even more dynamic free trials—and to save yourself a ton of time—there are a couple of other methods we highly recommend. ## **Method 4: Automated Free Trials for Courses** If you want to offer free trial access to an existing course, you could register and unregister students manually—but, between marking papers and offering extra lessons, who has time for all that busywork? Thankfully, there is a better way to offer free trial access to one of your existing courses where students can save their progress after their trial expires. In order to automatically enroll and unenroll students, you’ll need a little help from [Uncanny Automator](https://automatorplugin.com/pricing/) and [WooCommerce](https://automatorplugin.com/integration/woocommerce/). Automator is the #1 WordPress automation plugin. Using *recipes*—combinations of triggers and actions—you can connect your favorite plugins and apps and automate your workflows to save time and money. ![Automator Homepage](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-7-1030x582.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 7 - Uncanny Owl") To create free trials for your LearnDash courses using Automator, you’ll need the Pro version. While the free plugin won’t be able to optimize your free trial registration process, it still offers plenty of functionality for LearnDash users. So, while we’re on the topic of free trials, download the free Automator plugin and try it out before making a decision. When you’re ready to upgrade, [click here](https://automatorplugin.com/pricing/) for Automator’s full pricing scheduling. #### **Step 1: Create a New Recipe** Once you’ve downloaded the plugin and registered your account, navigate to your WordPress Admin Dashboard. From the sidebar, navigate to *Automator* > *Add New*. In the pop-up window that appears, select *Logged-in users*. ![Automator Recipe Type Selector](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-8.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 8 - Uncanny Owl") #### **Step 2: Name Your Recipe** Start by naming your recipe so that you can easily identify it later on. We’ve named this recipe *Free Trial Registration*. #### **Step 3: Configure Your Trigger** Automator lets you decide how you would like to register users for your free trial. You could create a sign-up sheet with [WPForms](https://wpforms.com/?sscid=91k6_12mxv2&) or [Formidable Forms](https://formidableforms.com/?sscid=91k6_12myg2) or you could even register students for a free trial of an advanced course if they passed its prerequisites. In this example, we’ve simply chosen to register all new students in our free trial. In the *Triggers* panel, click **WordPress**. Then, from the drop-down list that appears, select *A user is created with a specific role*. Select the role that you’ve assigned to designate students and click **Save**. ![Automator WordPress Trigger Configuration](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-9.gif "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 9 - Uncanny Owl") Make sure that your trigger is set to *Live* before continuing. #### **Step 4: Configure Your Action(s)** In the *Actions* panel, select **LearnDash**. ![Automator Action LearnDash](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-10.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 10 - Uncanny Owl") From the drop-down list that appears, select *Enroll the user in a course*. Automator will then prompt you to select the course for which you would like to offer a free trial. Click **Save**. ![Automator Action LearnDash Enroll the user in a course](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-11.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 11 - Uncanny Owl") Your action should look like this: ![Automator LearnDash Action Live](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-12.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 12 - Uncanny Owl") This action will get your new students started on their free trial—but how does it end? This is where the real magic of Automator comes in. Beneath this first action, click **Add another action** and **LearnDash** once again. From the drop-down list that appears, select *Unenroll the user from a course*. ![Automator Action LearnDash Unenroll the user in a course](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-13.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 13 - Uncanny Owl") Automator will prompt you to select a course. Choose the same course from your first action and click **Save**. Now you’ll want to make some minor adjustments to this second action so that it doesn’t fire until the end of your new student’s free trial. To do this, hover over the three dots in the right-hand corner of the action and click **Delay**. ![Automator Action Filter and Delay](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-14.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 14 - Uncanny Owl") An editor window will appear where you can choose to either schedule a date for the action to fire or set a time delay. To create a free trial, set a time delay. We’ve chosen a 14-day time delay to create a 14-day free trial. After you’ve set the length of your trial, click **Set delay**. ![Automator Action Delay Configuration](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-15.gif "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 15 - Uncanny Owl") Your recipe is now fully configured to automatically enroll and unenroll new students in your free trial. But what about those eager beavers who are so impressed with your course that they decide to purchase it before the end of their free trial? You can add a filter to the second action to unenroll students based on whether or not they’ve purchased course access. Once again, hover over the three dots in the right-hand corner of the second action but this time, click **Filter**. In the pop-up window that appears, select *WooCommerce* then, from the drop-down list, select *The user has not purchased a specific product*. Automator will prompt you to select the product associated with granting access to your LearnDash course. Once you’ve selected the correct product, click **Save filter**. ![Automator Action Filter WooCommerce The user has not purchased a specific product](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-16.gif "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 16 - Uncanny Owl") Your free trial actions are now fully figured. Your *Actions* panel should look something like this: ![Automator LearnDash Action Live](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-17.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 17 - Uncanny Owl") #### **Step 5: Start the Trials!** With this recipe, Automator can handle all of the busywork of registering and unregistering students in your free trial. All that you have to do now is to toggle the recipe from *Draft* to *Live*. It should look something like this: ![Automator LearnDash Recipe Live](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-18.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 18 - Uncanny Owl") ## **Method 5: Automated Free Trials for Groups** It’s important that your students receive a broad education—and that they get an accurate sample of your course offerings during their free trial. If you want to offer a more generous free trial package than a single course, you can use the LearnDash Groups function in conjunction with Automator to enroll free trial participants in a whole curriculum worth of courses. #### **Step 1: Create a Free Trial Group** From your WordPress Admin Sidebar, navigate to *LearnDash* > *Groups* and click **Add New** in the upper right-hand corner. In the *Edit Group* page, click on **Courses**. You can use the field labeled *Group Courses* to add and remove courses from your free trial offering. ![LearnDash Group Course Settings](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-19.gif "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 19 - Uncanny Owl") Once you’ve finished configuring the rest of your new trial group settings, click **Publish**. #### **Step 2: Create a New Recipe** Just as with the previous recipe, from your WordPress Admin Sidebar, navigate to *Automator* > *Add New*. In the pop-window that appears, select *Logged-in users*. #### **Step 3: Name Your Recipe** We’ve named this recipe *Free Trial Group Registration*. #### **Step 4: Configure Your Trigger** Just as with the previous recipe, you can choose to register trial participants using any number of apps and integrations. For this example, we’ve decided to register trial participants using [Fluent Forms](https://wordpress.org/plugins/fluentform/). ![Automator Fluent Forms Trigger Live](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-20.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 20 - Uncanny Owl") #### **Step 5: Configure Your Action(s)** In the *Actions* panel, click **LearnDash** then select *Add the user to a group*. Automator will prompt you to select the free trial group that you create in *Step 1* of this method. Once you’ve selected the correct group, click **Save**. ![Automator Action LearnDash Add the user to a group](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-21.gif "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 21 - Uncanny Owl") Beneath this first action to add the user to a group, click **Add another action**. From the options available, click **LearnDash** then, from the drop-down list, select *Remove the user from a group*. ![Automator LearnDash Action Remove the user from a group](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-22.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 22 - Uncanny Owl") Automator will prompt you to select a group. Once you’ve selected your free trial group, click **Save**. Next, hover over the three dots in the upper right-hand corner of this second action and click **Delay**. Set the delay for the duration of your free trial. You *Actions* panel should look like this: ![Automator Action LearnDash Group Enroll and Unenroll](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-23.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 23 - Uncanny Owl") #### **Step 6: Ready, Set, Trial!** We hope that your students are ready to sprint their way through your amazing free trial package! All you have to do now to start the learning marathon is toggle the recipe from *Draft* to *Live*. It should look like this: ![Automator Recipe Free Trial Group Registration Live](https://www.uncannyowl.com/wp-content/uploads/2022/09/5-Ways-to-Create-Free-Trials-of-Your-SaaS-LearnDash-Courses-24.png "5 Ways to Create Free Trials of Your SaaS LearnDash Courses 24 - Uncanny Owl") ## **Who Doesn’t Love Free Trials?** Whether you just wanted to set up a simple free trial course or wanted to offer total—albeit temporary—access to your online school, there’s a method that lets your students learn at their own pace. And, just as importantly, lets you work at your own pace. By setting up free trials with Automator, however, you can make the most of your free trials. Add free trial participants to your mailing list with [Groundhogg](https://www.groundhogg.io/aff/329/) or [MailChimp](https://mailchimp.com/en-ca/?currency=CAD). Automatically tag the participants who didn’t opt-in after their free trial expired. And why not follow-up with an auto-generated coupon code if, after a few weeks, they still haven’t signed-up? Send free trial data to [Airtable](https://airtable.com/invite/r/gmc4Gkix) so you can better understand what drives conversions. With [Automator](https://automatorplugin.com/pricing/), you can do all of that—and a lot more—and still save time and money. What kinds of free trials would you like to offer your students? Let us know in the comments section below. **Categories:** Best Practices, LearnDash --- ### [Uncanny Codes 4.2 includes our most requested feature!](https://www.uncannyowl.com/uncanny-codes-4-2-includes-our-most-requested-feature/) **Published:** September 1, 2022 **Author:** Ken **Excerpt:** Uncanny Codes gives you the ability to generate codes that users can redeem for almost anything on your WordPress site.  Originally built to provide a way for site admins to distribute codes for LearnDash course and group access, code redemption can now be redeemed for anything supported by Uncanny Automator, including memberships, achievements, store credit, coupon codes and much more. With the ability to generate hundreds or thousands of codes for use by businesses and organizations, one of our most requested features was the ability to cancel individual codes within a batch, without deleting the batch and associated records of redemption. **Content:** Uncanny Codes gives you the ability to generate codes that users can redeem for almost anything on your WordPress site. Originally built to provide a way for site admins to distribute codes for LearnDash course and group access, code redemption can now be redeemed for anything supported by Uncanny Automator, including memberships, achievements, store credit, coupon codes and much more. With the ability to generate hundreds or thousands of codes for use by businesses and organizations, one of our most requested features was the ability to cancel individual codes within a batch, without deleting the batch and associated records of redemption. Uncanny Codes version 4.2 now provides this feature, and it’s super easy to use. Simply go to **Uncanny Codes > Cancel codes**, then upload a CSV containing a column with the heading “code” and the list of codes to be cancelled. You can even upload the same file you download from a code batch. Uncanny Codes will ignore the other columns: ![](https://www.uncannyowl.com/wp-content/uploads/2022/09/cancel-codes.png "cancel-codes - Uncanny Owl") Once you’ve uploaded the .csv, you’ll see a confirmation of the codes that were cancelled: ![](https://www.uncannyowl.com/wp-content/uploads/2022/09/cancelled-codes-confirmation.png "cancelled-codes-confirmation - Uncanny Owl") Codes that have been cancelled can no longer be redeemed by users: ![](https://www.uncannyowl.com/wp-content/uploads/2022/09/cancelled-codes-message.png "cancelled-codes-message - Uncanny Owl") And that’s all there is to it! No more orphaned, valid codes floating around in the wild indefinitely or struggling to invalidate part of a code batch that has been refunded. Let us know what you think of the new feature in the comments below. **Categories:** LearnDash --- ### [Uncanny Codes: Form integrations and redemption updates](https://www.uncannyowl.com/uncanny-codes-form-integrations-and-redemption-updates/) **Published:** July 5, 2022 **Author:** Ryan Moore **Content:** It’s time for a big update to [Uncanny Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/), our popular platform for generating, tracking and redeeming codes that can do almost anything in WordPress. It’s been some a longer than usual time since our last update, so in today’s release, we’re adding a lot of really important features that will transform how it’s used on many WordPress sites. ## New form integrations Use [Fluent Forms](https://fluentsupport.com/?ref=2001) or [Forminator](https://wordpress.org/plugins/forminator/)? You’re in luck, the Uncanny Codes 4.1 release adds new integrations both popular form builders. Here’s what the field looks like in Fluent Forms: [![Uncanny Codes Fluent Forms Integration](https://www.uncannyowl.com/wp-content/uploads/2022/07/Uncanny-Codes-Fluent-Forms-Integration-496x500.png "Uncanny Codes Fluent Forms Integration - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/07/Uncanny-Codes-Fluent-Forms-Integration.png) And here it is in Forminator: [![Uncanny Codes Forminator Integration](https://www.uncannyowl.com/wp-content/uploads/2022/07/Uncanny-Codes-in-Forminator-440x500.png "Uncanny Codes in Forminator - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/07/Uncanny-Codes-in-Forminator.png) It works just like our current integrations with Gravity Forms, WPForms and Formidable. Add the field to a form and code redemption will be processed on form submission. You can use the new fields on everything from single-field redemption forms for logged in users to registration pages that require users to enter a valid code in order to register on a website. ## Allow users to redeem the same code multiple times This is a big new feature, one that we know caused some user frustration in our previous versions. Up until now, Uncanny Codes would only let a single user redeem a code once, even if the code was set up to allow multiple redemptions. Originally we believe this was a good rule to have in place, as it prevented accidental redemptions by the same person and made codes a lot easier to manage. Our customers pointed out, however, that this limitation didn’t always make sense. Maybe users repeated a course or needed to unlock something more than once, so instead of them having to juggle multiple codes and figure out what’s been used and what hasn’t, they get one code. When they’re ready to repeat whatever action the user performs (e.g. reset course progress to take it again, create a new job listing, add seats to a group), the user can just keep using the same code. In those situations, where the might be multiple iterations over time of the same action, multiple redemptions of the same code make a lot of sense. ![](https://www.uncannyowl.com/wp-content/uploads/2022/07/CleanShot-2022-07-05-at-14.13.09.png "CleanShot 2022-07-05 at 14.13.09 - Uncanny Owl") As there is some complexity here, this new feature is managed by batch and it’s not managed in the UI; it does require a snippet of code. Need more granular control or prefer to manage it at the code level? Here’s what you can leverage instead: ``` /** * Allow multiple code redemptions per user */ add_filter( 'ulc_codes_multiple_redemption_allowed', function ( $allowed, $codes_batch_id ) { /** * Only allow a certain number of times for certain batches. * Remove this "if" statement block to apply it globally. */ if ( 123 === $codes_batch_id ) { $allowed = true; // use true or false } return $allowed; }, 99, 2 ); /** * Number of times a code is allowed to be reused */ add_filter( 'ulc_codes_times_user_allowed_to_redeem', function ( $times, $codes_batch_id ) { /** * Only allow a number of times for certain batches. * Remove this "if" statement block to apply it globally. */ if ( 123 === $codes_batch_id ) { $times = 3; // any number can be used here } return $times; }, 99, 2 ); ``` The code examples above allow site owners to control whether or not code reuse by the same person is allowed, by code batch or globally, and if allowed, how many times a code in each batch can be reused by the same person. ## Override redemption limits When we originally introduced a way to sell codes generated by our plugin with WooCommerce, we intentionally built it to be simple and easy for purchasers to manage codes. We restricted purchased codes to a single use each, as that made it easier for purchasers to track redemptions and distribute codes. Based on customer feedback, however, sometimes some flexibility around the number of allowed redemptions is needed. With that in mind, today’s release allows an override for code redemption limits. This update leverages a new filter for maximum flexibility, so here’s a sample of how to use it: ``` add_filter( 'ulc_code_max_usage', function ( $max_usage, $type, $codes_group_id ) { // filter by a specific code batch, // or comment the restriction out for all batches // Automator type max usage // of 5 per code: if ( 10 === (int) $codes_group_id ) { return 5; } return $max_usage; // change to any number }, 99, 3 ); ``` With that snippet in place, you can unlock additional redemptions that would otherwise be allowed for the batch. We even change the output in the UI to make overrides and override values more obvious: ![](https://www.uncannyowl.com/wp-content/uploads/2022/07/CleanShot-2022-07-05-at-14.10.32.png "CleanShot 2022-07-05 at 14.10.32 - Uncanny Owl") That’s it for new features in the Uncanny Codes 4.1 release, though there are also a few fixes and improved PHP 8.1 compatibility. **Categories:** LearnDash, News --- ### [What's new with Uncanny Groups](https://www.uncannyowl.com/whats-new-with-uncanny-groups/) **Published:** June 16, 2022 **Author:** Ryan Moore **Content:** The Uncanny Owl team has been hard at work adding some interesting new features to our popular [Uncanny Groups plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) over the last few weeks. Given the scope of some of the changes, we want to walk users through and them outline how to use the new options. ## Group-specific welcome emails We’ve had feedback from some of our users that [global emails to welcome users to groups](https://www.uncannyowl.com/knowledge-base/configuring-group-emails/) just aren’t sufficient. Different groups may have different instructions and expectations, maybe an introduction by an instructor is warranted, perhaps it’s just different branding that’s important. Whatever the case, we have tried to address this gap by adding **group-specific welcome emails**. Now, when you edit groups, you’ll see a new section that looks like this on the edit group page in the *Group page* tab: [![Group-specific emails for LearnDash](https://www.uncannyowl.com/wp-content/uploads/2022/06/Group-specific_emails_for_LearnDash.png "Group-specific_emails_for_LearnDash - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/06/Group-specific_emails_for_LearnDash.png) It works just the way other welcome emails work on the Uncanny Groups > Settings page; the same tokens are also available. To use this new feature for specific groups: 1. Check the **Override “Add and invite (new user)” email** checkbox. This tells our plugin to use this email template instead of the global one. 2. Populate the *Subject* and *Body* areas with appropriate content. Now, when new students are added to this group, they’ll receive the contents of this email rather than the global one. If this section is not set up for any groups, we’ll just defer to the global email template. ## Group Leaders can send emails based on current course status This is a big change *that will affect your Group Leaders if you have granted access to send emails to students*. As a quick refresher, on the Group Management page you can add the group\_email\_button=”show” to your \[uo\_groups\] shortcode (or to the Gutenberg block) to expose a tool that Group Leaders can use to [send emails to students](https://www.uncannyowl.com/knowledge-base/group-management-page/#emailing-group-members). Up until Uncanny Groups 4.4, this email option let you target students by *group* progress (e.g. no group courses started, all group courses complete, group courses started but not complete) and send them emails. This was typically used to remind students that they needed to complete their assigned activities. What it lacked was a way to target specific courses only, like maybe a Group Leader only wanted to send reminders if users hadn’t finished any of 3 *specific* courses. Or maybe a Group Leader wanted to send a congratulations message to anyone who completed a specific course early. To address these other scenarios, here’s how the email tool has been changed: [![LearnDash Group Leader Email Tool](https://www.uncannyowl.com/wp-content/uploads/2022/06/LearnDash_Group_Leader_Email_System.png "LearnDash_Group_Leader_Email_System - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/06/LearnDash_Group_Leader_Email_System.png) Note the new *Group Courses* section. With it, you can choose 1 course, several courses, or the “Any course” option. This allows much better targeting of email recipients, but it is certainly a change to what Group Leaders are used to. There’s one other change here too: If there are multiple Group Leaders in a group, you can change the reply-to address. The Sender email always has to be the admin email address, since it should be linked to the site domain and will therefore improve email deliverability, but the reply-to address can be for the Group Leader of the sender’s choice. ## Required first and last names While first and last names were always required when Group Leaders added individual students to a group, the tool for bulk adding multiple students had those fields as optional. In today’s update, there’s a new attribute for the \[uo\_groups\] shortcode (and an option for the associated block): first\_last\_name\_required=”yes”. By adding that to the Uncanny Group Management page shortcode, the First and Last Name fields in the bulk add & invite users tool adds \* next to the associated column headings (to indicate those fields are mandatory) and values must be in those fields to add the users to the group. This change was suggested by Chris Hodgson at Discover Elearning to ensure that all users added to groups would have valid first and last names populated on the LearnDash certificates. ## Tighter Uncanny Automator integration If you’re not yet using [Uncanny Automator](https://www.uncannyowl.com/knowledge-base/group-management-page/#emailing-group-members), we have added a 1-click installer that installs and activates Automator with 1 click. Certainly Automator isn’t required, but given how much we keep adding to it for LearnDash groups, it has become an increasingly compelling option. Here are just a few of the Groups-related improvements we have added to Automator in the last week: - Run actions based on whether or not someone is a member of a group or its child groups (e.g. only send a certificate to a user that’s part of the Uncanny Owl group hierarchy, including users in the Dev Team group under the Uncanny Owl group parent) - Remove a user from **all** LearnDash groups in a single action/recipe - Remove the user as a leader of a group (perhaps a site sells Group Leader access to groups on a subscription basis, and when a subscription is cancelled or payment fails, there needs to be a way to remove Group Leaders from the group automatically) If that first example doesn’t sound possible, it might be because we only [added integration-specific conditions](https://automatorplugin.com/integration-specific-conditions-are-here/) to Automator Pro in May. With that support, now you can choose to only run actions if users: - Completed a specific LearnDash course - Enrolled in a specific LearnDash course - Are members of a LearnDash group - Are not in a specific LearnDash group - Are members of a group or its child groups - Are not members of a group or its child groups - Have not completed a specific LearnDash course [![LearnDash condition](https://www.uncannyowl.com/wp-content/uploads/2022/06/LearnDash_condition.png "LearnDash_condition - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/06/LearnDash_condition.png) ## And the rest It’s been some time since our last big update, so the Uncanny Groups 4.4 release has a lot of improvements behind the scenes, including: - The “[Group Product Swap](https://www.uncannyowl.com/knowledge-base/creating-pre-configured-learndash-group-licenses/#group-product-swap)” tool now supports Subscription product types as well as Group License products - Easier filter options to hook in and override column headings in the Group Course report (we’ll try to put together a blog post explaining how easy it is to add extra columns, like a certificate expiry date) - Improved WPML compatibility (including submission to WPML for certification) - Improved PHP 8.1 compatibility Full details are available in [the changelog](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-changelog/). **Categories:** LearnDash, News --- ### [Add Seats to Group Subscription, Excel Reports and More](https://www.uncannyowl.com/add-seats-to-group-subscription-excel-reports-and-more/) **Published:** April 20, 2022 **Author:** Ryan Moore **Content:** This is the [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) update that many of our customers have been eagerly anticipating. After months of development, we’re excited to introduce a feature unique to our plugin that will completely transform B2B group subscriptions for LearnDash: support for adding seats to existing subscription-based groups. We wrestled with the logic for months. How would someone manage multiple subscriptions linked to a single group? What if one of several subscriptions was cancelled? Could we minimize the confusion of having multiple subscriptions for individual groups? And would all of this be easy enough for end users to understand? In terms of the visible changes to Group Leaders and admins, it’s all very straightforward. Administrators see a new section under *Uncanny Groups > Settings* to enable the option (we don’t want it to appear with no context for existing sites) and to set up a link so users can learn more about adding seats to subscriptions. We do recommend setting a page up with more details because the behaviour will be different depending on your settings around synchronization in WooCommerce Subscriptions. [![WooCommerce Subscription Changes for Uncanny Groups](https://www.uncannyowl.com/wp-content/uploads/2022/04/Woo_Subscrition_Changes_for_Uncanny_Groups.png "Woo_Subscrition_Changes_for_Uncanny_Groups - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/04/Woo_Subscrition_Changes_for_Uncanny_Groups.png) And for Group Leaders, the Group Management page gets a new **Add Seats** button just like the one they’re probably used to seeing for groups purchased via one-time payment. It’s a powerful new module, but to make this work and to deliver what we think balances the user experience with technical restrictions, there are some tips to keep in mind as you use this new feature. Here are a few key points to consider: - Completing an order with additional seats for an existing group will create a new subscription in addition to the existing subscription. We strongly recommend enabling “Synchronise renewals” under WooCommerce > Settings > Subscriptions > Synchronization to align renewal dates across multiple subscriptions. This will avoid situations where customers are flooded with renewals on different days each month. - We modified subscription behaviour so that if 1 subscription associated with a group is cancelled, **all** subscriptions for that group are cancelled. We do warn Group Leaders about this at the time of cancellation, and it’s because there is no safe way to keep some seats active and not others. If a group with 20 students and 20 seats has a subscription for 4 seats cancelled, which 4 students would lose their seats? There’s no way to address this that would be intuitive to Group Leaders, so we cancel all subscriptions for the group. Similarly, when a subscription is *reactivated* for a group, we create a new, single subscription for the group that matches the number of seats required for the group. - The option to add seats to subscription-based groups is a global setting; it cannot be enabled and disabled for certain groups only. - It is *not* possible to add courses to subscription-based groups. That’s a different and more significant level of complexity that we may or may not be able to support in future. - The new functionality works with existing subscription-based groups, not only new groups. As this new feature is a huge change, we suggest testing it on a group before rolling it out and announcing it to all of your Group Leaders. ## It’s a big release We could have definitely made the Uncanny Groups 4.3 release a 5.0 update instead of 4.3, but we’re trying to keep numbering aligned with our other plugins. The new functionality for group-based subscriptions is amazing, but there are some other huge additions to this release. 1. **New report exports**. Many of the reports in Uncanny Groups previously had CSV export options. But why some and not others, and why CSV only? We conceded and added about 10 new export options to reports in Uncanny Groups. Please note that because these are new exports and new options, most are not shown by default and must be enabled using shortcode attributes. More information for each report is available in our Knowledge Base. 2. **New columns in the Course report**. It’s now possible to show the course enrollment date and group name in the Course report. These optional columns are invaluable with exports in particular, since group name is shown on the report inside WordPress but the export was missing the additional context. 3. **Choose score type in the Quiz report**. Would you rather show points in the quiz report instead of percentages? Now you can, thanks to the new “score-type” attribute. Use score-type=”percent” to show a percentage (the default) and score-type=”points” to show points instead. 4. **Automator set count updates**. The new version supports updating the seat count for a group when seats are removed via an Uncanny Automator action. 5. **Group subscription cancellation date** is now deferred until a subscription becomes *cancelled*, not just when it is *pending cancellation*. What this means is that users who cancel a subscription don’t lose the access they paid for immediately, instead the group access is only removed on the subscription end date. For a full list of updates and changes, make sure to check out the [Uncanny Groups changelog](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-changelog/). **Categories:** LearnDash --- ### [Q1 2022 Plugin Updates](https://www.uncannyowl.com/q1-2022-plugin-updates/) **Published:** March 31, 2022 **Author:** Ryan Moore **Content:** Our blog has been quiet this quarter, but that’s mostly because we’ve been so busy with updates. And just how busy have we been in Q1? Here’s a summary of our plugin releases: - [Uncanny Toolkit for LearnDash](https://en-ca.wordpress.org/plugins/uncanny-learndash-toolkit/): 1 release - [Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/): 2 releases - [Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/): 3 releases - [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/): 4 releases - [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/): 2 releases - [Uncanny Automator](https://wordpress.org/plugins/uncanny-automator/): 9 releases - [Uncanny Automator Pro](https://automatorplugin.com/pricing/): 4 releases In total, that’s a whopping **25 releases** this quarter. Many have been pretty big releases too, so in case you missed the updates, we’ll cover some of the most exciting highlights below. ## Uncanny Toolkit Pro Our most popular add-on for LearnDash, [Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) gained a number of new additions. There’s a new module for [Autocomplete Lessons and Topics on WPForms submission](https://www.uncannyowl.com/knowledge-base/wpforms-auto-completes-lessons-topics/). We had it for Gravity Forms, now we’re extending support to WPForms as well. This is one of our more popular modules and a great way to require users to submit evaluation and feedback forms before course completion. The [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) added 4 new shortcodes. Instead of only outputting time at the course level, now there’s a way to show time spent on topics, lessons and quizzes. And there’s an additional shortcode to show total time a user has spent across **all** courses on a LearnDash site. The [Group Expiration](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) module adds support for a new pre-text=”” attribute for the \[uo\_group\_expiration\_date\] shortcode. What this allows is for sites to show a text string before the expiration date, so instead of just showing the date, now it’s easy to add context to what it is. Finally, the [Enhanced LearnDash CSV Reports](https://www.uncannyowl.com/knowledge-base/enhanced-learndash-csv-reports/) gain support for new CEU and Course Meta columns. Yes, this one is *really* exciting. Beyond supporting additional records from our [Uncanny Continuing Education Units plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/), this means you can pull in course attributes as new columns. So if you ‘re storing data against courses like instructor name, course identifier, semester, credit value, number of LearnDash steps, or really anything else, now you can include that information in the CSV export with all other records. [![Course Meta CSV Report](https://www.uncannyowl.com/wp-content/uploads/2022/03/Enhanced_LearnDash_CSV_Report.png "Enhanced_LearnDash_CSV_Report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/03/Enhanced_LearnDash_CSV_Report.png) ## Tin Canny This announcement is going to surprise a lot of people: There is now a tool for administrators and group leaders to analyze quiz questions to assess performance and quality. We call it the [LearnDash Quiz Question Analysis Report](https://www.uncannyowl.com/knowledge-base/learndash-quiz-question-analysis-report/). Yes, it’s for multiple choice (“single choice”) question types only, and yes, it’s intended for text-based questions and answers. Still, for the majority of sites, that’s more than sufficient and it finally provides a way to see, at a glance, how users are answering quiz questions. This is what it looks like: [![LearnDash Quiz Question Analysis Report](https://www.uncannyowl.com/wp-content/uploads/2022/03/LearnDash_Quiz_Question_Analysis.png "LearnDash_Quiz_Question_Analysis - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/03/LearnDash_Quiz_Question_Analysis.png) In case it’s not clear, the report outputs every supported question in a quiz, the correct answer, the distractors, and the percentage of students that chose each possible answer. It supports search, sorting, and CSV export. For Group Leaders, as you might expect, the quiz list only incudes quizzes associated with courses in the user’s groups and it outputs data for students in those groups. There’s no extra cost for this report, it’s available now for [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) users. Other Tin Canny updates this quarter were more subdued. There’s a new shortcode parameter to launch uploaded modules to a specific slide, uploaded modules now support defined vw and vh values for better layout control, the group quiz report supports negative scores, and more. ## Uncanny Groups Updates this quarter for [Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) mostly focused on new developer tools and refinements to existing capabilities. There are 10 new filters, there was an overhaul to how user search works for the Manage Progress report and multiple improvements behind the scenes. And did we mention that support for adding more seats to *subscription*-based groups is finally coming in early April? It’s almost ready… ## Uncanny Automator Our [Uncanny Automator plugins](https://automatorplugin.com/) are, of course, where the big magic happened this quarter. And while it’s not *directly* LearnDash related, everything we keep adding to those plugins extends what you can do with LearnDash and opens up countless new use cases for LearnDash sites. Let’s start with the highlights in the free version, and remember, all of these additions happened in Q1: - New integrations or integration support for [IFTTT](https://automatorplugin.com/integration/ifttt/), [Integrately](https://automatorplugin.com/integration/integrately/), [Tin Canny](https://automatorplugin.com/integration/tin-canny-reporting-for-learndash/), [Amelia](https://automatorplugin.com/integration/amelia/), [Twilio](https://automatorplugin.com/integration/twilio/), [MemberPress Courses](https://automatorplugin.com/integration/memberpress-courses/), [GoTo Training](https://automatorplugin.com/integration/gototraining/) and [GoTo Webinar](https://automatorplugin.com/integration/gotowebinar/). - Over 20 new triggers and actions, plus dozens of new tokens. - A complete overhaul of webhook support, with tons of new data formats plus nesting, JSON and XML support. - New support for [*updating* Google Sheets records](https://automatorplugin.com/knowledge-base/google-sheets/), making it easier to build dashboard reports for LearnDash inside Google Sheets. - An overhaul of the integration settings pages for easier management and better education. And our [Pro version](https://automatorplugin.com/pricing/) gained lots of new features too: - A new integration for [OptinMonster](https://automatorplugin.com/integration/optinmonster/). - 16 new triggers and actions, including several for [LearnDash](https://automatorplugin.com/integration/learndash/), like triggering recipes when a user’s access to a course expires and being able to remove students and a Group Leader from a group *and all of its children*. And that’s what we’ve been up to this quarter. And through all of that heavy development work, our support team still managed to achieve a “happiness” score of 93 in Q1! **Categories:** LearnDash, Uncanny Automator, Uncanny LearnDash Toolkit --- ### [A Tin Can LRS and LearnDash Reporting for WordPress!](https://www.uncannyowl.com/tin-can-lrs-learndash-report-toolkit/) **Published:** August 22, 2016 **Author:** Ryan Moore **Content:** Uncanny Owl is very pleased to introduce the easiest way to incorporate [Articulate Storyline](https://www.articulate.com/products/storyline-why.php), [Adobe Captivate](https://www.adobe.com/products/captivate.html) and [H5P](https://h5p.org/) modules into [LearnDash](https://www.learndash.com) courses! We don’t just embed modules; we created the very first Tin Can (xAPI) Learning Record Store that’s *completely native to WordPress*. There are no other applications to install. No endpoints to configure, no complex upload tools, no segregated reporting or any of the other complications that have been historically required to track Storyline, Captivate and H5p modules in WordPress. Easy Tin Can/xAPI and LearnDash reporting is now available with the [Tin Canny LearnDash Reporting](https://www.uncannyowl.com/downloads/tin-canny-reporting/) plugin. The [Tin Canny LearnDash Reporting](https://www.uncannyowl.com/downloads/tin-canny-reporting/) plugin is more than just a Learning Record Store. Capturing Tin Can statements is of no value unless there’s a great way to present the data—so we built a very powerful reporting tool that combines Tin Can data with all the rest of your LearnDash course data. In fact, even without the Tin Can piece, this is the most comprehensive reporting platform available for LearnDash sites. And that’s still not all—we wanted LearnDash and Tin Can integration to be as seamless as possible, so we modified LearnDash **Mark Complete** button behaviours so that they only appear after a user has completed all Tin Can modules on the page. (It’s all automatic; if are Tin Can modules on a page, we monitor Tin Can verbs to unlock the **Mark Complete** button at the right time.)[![tin_can_report](https://www.uncannyowl.com/wp-content/uploads/2016/08/tin_can_report-1-1030x833.png "tin_can_report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/08/tin_can_report-1.png) Everything that’s needed for effective Tin Can use is included in the plugin, from a Storyline and Captivate upload tool (that detects Tin Can vs. non-Tin Can automatically and parses XML files for slide names) and a Learning Record Store to dashboard, course, user and Tin Can reports. Simply install the plugin and everything is ready to go. In fact, the only setting is to toggle whether or not to use Tin Can (as this plugin is also a fantastic LearnDash reporting tool without Tin Can). [![course_list](https://www.uncannyowl.com/wp-content/uploads/2016/09/course_list.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/09/course_list.png) The reporting capabilities really can’t be understated. Here are just a few new metrics that are available for LearnDash courses in the drill-down reporting tool: \[table id=4 /\] *\* Requires the [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) module from the [Uncanny LearnDash Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) modules.* And on the Tin Can side, all of the following are available as report filters: \[table id=5 /\] Head over to our [Knowledge Base articles](https://www.uncannyowl.com/article-categories/tin-canny-learndash-reporting/) to read more about how the upload tool, LRS and reporting tools work. [![tin_can_by_user](https://www.uncannyowl.com/wp-content/uploads/2016/08/tin_can_by_user.png "tin_can_by_user - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/08/tin_can_by_user.png) At the time of writing, this is the first release of a very large plugin. We wanted to get the plugin out to users as soon as possible, so there a few features that we’ll be adding in the near future to round out the plugin. They include the following: - Group Leader reports (right now they’re for administrators only) - Additional export functions - A report builder that lets you choose your own columns and filters - Controls for disabling the Mark Complete integration (it’s currently forced if Tin Can is on a page) These are all coming in the near future! We will also be making performance improvements to query millions of records in under 5 seconds. Development testing included data for 10,000 learners, but we know we can make report generation even faster. *Please also note that the Learning Record Store is ONLY for on-site use (there is no endpoint for external Tin Can data) and has been built specifically to support Storyline, Captivate and H5P modules only.* [Get the Tin Canny Reporting for Learndash plugin now!](https://www.uncannyowl.com/downloads/tin-canny-reporting/#pricing) **Categories:** eLearning, Tin Can --- ### [Plugin Update Roundup](https://www.uncannyowl.com/plugin-update-roundup/) **Published:** December 15, 2021 **Author:** Ryan Moore **Content:** Today we pushed updates to 3 of our plugins ([Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/), [Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) and [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/)) and a fourth plugin update is coming tomorrow. While most of the changes are small fixes and improvements, there are some larger enhancements that deserve a bit more attention. ## Uncanny Toolkit Pro for LearnDash Perhaps the most interesting update is that the plugin, and specifically the Import Users module, no long requires LearnDash. This was done primarily to allow [Uncanny Automator](https://automatorplugin.com/) users to run imports that trigger actions as part of our new support for [running actions on users in bulk](https://automatorplugin.com/run-actions-on-wordpress-users-in-bulk/). The Toolkit itself isn’t moving away from LearnDash, but this will be a big win for Automator users that aren’t necessarily using LearnDash. The [Enhanced CSV Reports](https://www.uncannyowl.com/knowledge-base/enhanced-learndash-csv-reports/) module doubles the number of custom usermeta columns to 10. You can now run some very big reports with this tool with a lot of custom user profile data. The [Enhanced Course Grid](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/) module has the most changes, including all of the following: - There’s a new “hide\_title” attribute to turn off course titles in the grid. - Multiple categories can now be defined for inclusion in the shortcode or block, separated by commas - There are 7 new action hooks, including the following: `uo_course_after_short_description`, `uo_course_before_short_description`, `uo_course_before_course_title`, `uo_course_after_course_title`, `uo_course_after_featured_image`, `uo_course_after_grid_ribbon_price`, and `uo_course_after_grid_ribbon_text`. Overall, these changes add significantly more flexibility to what’s an already very flexible model for outputting course objects in a grid. ## Uncanny Groups The big new feature in today’s [Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) release is support for switching products in someone’s cart based on quantity. Why is this important? In the current model, when a user buys a group product, it always creates a group and adds them as a Group Leader. This is true even if a user buys a single seat for the group. What this means is that there must be 2 workflows for course purchase, one for a group, one for personal use by a user. A site might then have a “Buy for myself” button as well as a “Buy for a group” button on a course, since they are different products. Having to make this decision is an extra step though, and buyers are often confused by it. The new option to swap products allows sites to present a single product to prospective buyers without having to choose whether it’s for a group or themselves. Instead, if the quantity is 1, the system (optionally) assumes the purchase is for themselves and can swap in a Course or other product. If the quantity is greater than 1, the Group License product is used. When a quantity is selected and the product added to the cart, the swap (if the quantity is 1) is automatic. Here’s what it looks like when editing a group product: [![Swap LearnDash group product](https://www.uncannyowl.com/wp-content/uploads/2021/12/Swap_course_product.png "Swap_course_product - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/Swap_course_product.png) For developers, the Uncanny Groups 4.2 release adds 2 new actions: `ulgm_before_license_group_is_inserted` and `ulgm_after_license_group_is_inserted`. There are also 3 new filters: `ulgm_license_group_linked_course_id`, `ulgm_license_group_courses_linked_in_order` and `ulgm_include_user_direct_enrolled_courses` (the latter for the Group Progress report). ## Other Improvements The [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) release adds new support for negative scores in the individual quiz report as well as support for SCORM module uploads that may be missing requirement elements, like a title. Across all plugin releases, there are also various compatibility fixes for LearnDash 3.6, PHP 8 and [WPML](https://wpml.org/). Yes, while our plugins have been translation friendly for years, we are starting to also add explicit WPML support where compatibility issues are reported. **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [How to Do More With LearnDash Achievements](https://www.uncannyowl.com/how-to-do-more-with-learndash-achievements/) **Published:** December 7, 2021 **Author:** Sandipan **Content:** [LearnDash](https://www.uncannyowl.com/share/learndash/) is one of the most popular LMS (Learning Management System) plugins in the WordPress industry. You can create and sell courses, award certificates, create quizzes, and much more using this powerful plugin. LearnDash offers a number of free and premium addons to enhance the functionality of your eLearning site. One such addon is **LearnDash Achievements**. It is a free plugin for LearnDash customers used for creating and displaying achievement banners on your eLearning site. In this article, we’ll introduce you to the LearnDash Achievements addon, discuss things you can do using this addon, and show how you can do more with the addon by connecting it to popular WordPress plugins. Let’s dive in. ## Introducing LearnDash Achievements Addon LearnDash introduced the [Achievements addon](https://www.learndash.com/add-on/achievements/) to add gamification features to your eLearning site. You can increase the engagement level of your students by awarding badges or points using this addon. It will also help you to improve the learning experience of your students. The Achievements addon offers a number of LearnDash course-specific triggers to choose from. Whenever a particular condition is triggered, the addon will automatically award points and/or a badge to the user. For example, you can award and show a specific achievement for completing a lesson or course. You can also display achievements for passing a quiz. You can even show an achievement banner when a student’s assignment is approved. The addon also supports triggers for non-course activities like reading an article, commenting on an article, user registration, and more. The LearnDash Achievements addon is available for free. You can [install and activate the addon](https://www.learndash.com/support/docs/add-ons/achievements-add-on/) by visiting the LearnDash Addons page on your WordPress admin panel (of course, you need a [valid license of LearnDash](https://www.uncannyowl.com/share/learndash/) to use the addon). ### How to Create Achievements Using the Achievements Addon It’s time to show you how you can easily create an achievement using this addon. We’ll be creating an achievement for enrolling in a course. First, you need to head over to **LearnDash** -> **Achievements** from the left sidebar of your WordPress admin panel. This will take you to the Achievements page where you’ll see 3 tabs: Achievements, Settings, and Shortcodes. ### Achievements The **Achievements** tab is the place where the admin can see and manage all the achievements. Let’s create a new achievement by clicking on the **Add New Achievement** button. [![add new achievements](https://www.uncannyowl.com/wp-content/uploads/2021/12/add-new-achievements.png "add new achievements - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/add-new-achievements.png) A new page will open up now with a number of fields. In the **Add title** field, you should add the achievement name that’ll be displayed to the user. You can also add some text to the **Message** field. [![Course enrollment confirmation screen showing the title 'Enrolled in a new course!' and a message: 'Congratulations! You've enrolled in a new course.'](https://www.uncannyowl.com/wp-content/uploads/2021/12/add-achievements-title-and-message.png "add-achievements-title-and-message - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/add-achievements-title-and-message.png) The **Details** section is the most important part of any achievement. The **Trigger** field controls when you want to award or display the achievement to the user. Go ahead to select **User enrolls into a course (LearnDash)** from the dropdown. This will open up some new fields. First, you need to select a course from the **Course** dropdown. Whenever someone completes that course, the achievement will be displayed to the user. You can also select **All Courses** to trigger the condition on completion of all the available courses. [![configure details box](https://www.uncannyowl.com/wp-content/uploads/2021/12/configure-details-box.png "configure details box - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/configure-details-box.png) Want to award points to the user? You can do that by configuring the **Points** field. And you can add any numeric value of your choice to that field. Note that the achievement points are useful for displaying leaderboards. Also, you can allow users to [buy a particular course using these achievement points](https://www.learndash.com/learndash-achievements-update/) (you need to enable the option in the course settings). Next, you can add an achievement image from the **Image** box. You can select a pre-built image by clicking on the **Select Image** link. [![select achievements image](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-achievements-image.png "select achievements image - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-achievements-image.png) Finally, you should click on **Publish** to make your achievement live. ### Settings Want to change the look of the achievement banner? Maybe, you want to match it with your brand colors. Just visit the **Settings** tab to change the background color, text color, and even the time after which the banner fades away. [![achievements banner settings](https://www.uncannyowl.com/wp-content/uploads/2021/12/achievements-banner-settings.png "achievements banner settings - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/achievements-banner-settings.png) ### Shortcodes The LearnDash Achievements addon offers some shortcodes to display the user achievements: - **\[ld\_achievements\_leaderboard\]** – It’ll display the list of users along with their points. For example, \[ld\_achievements\_leaderboard=”10”\] will display the top 10 users based on their points earned. - **\[ld\_my\_achievements\]** – This shortcode can display all the achievements earned by a user. The Achievements addon also offers 2 Gutenberg blocks for displaying the individual achievements and the achievement leaderboard. ## Do More With LearnDash Achievements Addon The Achievements addon is a great addition to the LearnDash plugin. The addon makes it easy to create multiple achievements for different activities on your eLearning site. Presently, the Achievements addon offers limited course and non-course triggers only. Want to do more with the addon? You can use the [Uncanny Automator plugin](https://automatorplugin.com/) and the Achievements addon together to take your gamification strategy to the next level. In case you aren’t familiar with it, Uncanny Automator is a powerful automation plugin for WordPress. You can use it to connect WordPress plugins, WordPress sites, and third-party web apps together. You can use the Automator plugin to collect achievements across all the plugins and tools you use, not just LearnDash. Not only that, but you can also connect [our LearnDash plugins](https://www.uncannyowl.com/all-access-pass/) to the Achievements addon using the Automator plugin. By connecting Uncanny Automator and LearnDash Achievements together, you can award badges and points to otherwise unsupported achievements, including the following: - A user attends a live event (via [The Events Calendar](https://automatorplugin.com/integration/the-events-calendar/) or [Modern Events Calendar](https://automatorplugin.com/integration/modern-events-calendar/)) - Someone completes 3 specific courses in a series - A user submits a course evaluation form (built using [Formidable Forms](https://automatorplugin.com/integration/formidable-forms/), [WPForms](https://automatorplugin.com/integration/wp-forms/), or [Divi Forms](https://automatorplugin.com/integration/divi/)) - A user earns 50 credits (via [Uncanny Continuing Education Credits for LearnDash](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/)) - Someone redeems a code using [Uncanny Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) - A user purchases an eBook - Someone attends a webinar (via[ Zoom Webinar](https://automatorplugin.com/integration/zoom-webinars/) or [GoToWebinar](https://automatorplugin.com/integration/gotowebinar/)) The above examples are just some ideas – you can connect the Achievements addon to [75+ WordPress plugins and web apps](https://automatorplugin.com/integrations/) and create unlimited achievements for your users. That means the simple Achievements addon could replace the need for additional gamification tools, all at no extra cost beyond the LearnDash license. ## How to Integrate the Achievements Addon With Uncanny Automator Let’s briefly show you how to use the Uncanny Automator plugin and the Achievements addon together with the help of an example – **award an achievement to a user automatically for submitting a course evaluation form**. We’ll be using [WPForms](https://automatorplugin.com/integration/wp-forms/) as the form plugin in our example. However, Uncanny Automator supports a wide range of form plugins like [Contact Form 7](https://automatorplugin.com/integration/contact-form-7/), [Gravity Forms](https://automatorplugin.com/integration/gravity-forms/), [Fluent Forms](https://automatorplugin.com/integration/wp-fluent-forms/), [Ninja Forms](https://automatorplugin.com/integration/ninja-forms/), [Formidable Forms](https://automatorplugin.com/integration/formidable-forms/), and more. So you can use any form plugin of your choice – the process will remain the same. Whenever you need to automate a task using the Uncanny Automator plugin, you’ll have to [create a recipe](https://automatorplugin.com/knowledge-base/creating-a-recipe/). And every recipe needs at least one [trigger](https://automatorplugin.com/knowledge-base/managing-triggers/) and one [action](https://automatorplugin.com/knowledge-base/managing-actions/). In our case, the trigger will be a user submitting a form and the action will be awarding an achievement to the user. To create a new recipe, you need to head over to **Automator** -> **Add new** from the left sidebar of your WordPress dashboard (we’re assuming that you’ve already installed the Automator plugin). Next, you should select **Logged-in users** as the recipe type and then click on **Confirm**. [![select recipe type logged-in users](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-recipe-type-logged-in-users.png "select recipe type logged-in users - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-recipe-type-logged-in-users.png) After that, you need to add a recipe title to the **Add title** box for future reference. ### Setting Up the Trigger The next step is to [configure the trigger](https://automatorplugin.com/knowledge-base/managing-triggers/) for our recipe. To get started, you should select **WPForms** from the list of available integrations. [![choose wpforms as trigger integration](https://www.uncannyowl.com/wp-content/uploads/2021/12/choose-wpforms-as-trigger-integration.png "choose wpforms as trigger integration - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/choose-wpforms-as-trigger-integration.png) Next, you need to select **A user submits a form** as the trigger option. [![select trigger option](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-trigger-option.png "select trigger option - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-trigger-option.png) Selecting that option will open up the **Form** field. Just select the course evaluation form from the dropdown and then click on **Save**. [![select course evaluation form](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-course-evaluation-form.png "select course evaluation form - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-course-evaluation-form.png) You’ve successfully configured the trigger. Let’s set up the action in the next step. ### Setting Up the Action To configure the action, you need to first click on the **Add action** button. Next, you’ll have to choose **LearnDash** under **Select an integration** (the Achievements addon is part of the [LearnDash](https://automatorplugin.com/integration/learndash/) integration in Uncanny Automator). [![select learndash as the action integration](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-learndash-as-the-action-integration.png "select learndash as the action integration - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-learndash-as-the-action-integration.png) You’ll see a list of options now. Just find and click on the option **Award an achievement to a user**. [![select action option](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-action-option.png "select action option - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-action-option.png) This will open the **Achievements** dropdown field. Here you need to select the achievement you want to award to the user for submitting the course evaluation form. [![select achievement from dropdown](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-achievement-from-dropdown.png "select achievement from dropdown - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/select-achievement-from-dropdown.png) Finally, you need to click on the **Save** button to make your action live. ### Publish the Recipe It’s time to publish our recipe. To do that, you need to change the toggle option in the **Recipe** box from **Draft** to **Live**. [![wpforms to learndash achievements recipe](https://www.uncannyowl.com/wp-content/uploads/2021/12/wpforms-to-learndash-achievements-recipe.png "wpforms to learndash achievements recipe - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/12/wpforms-to-learndash-achievements-recipe.png) Your recipe is live now. That means, whenever someone submits the course evaluation form, you can automatically award an achievement to that user. ### Endnote The LearnDash Achievements addon is a powerful tool for adding game-like elements to your eLearning site. You can even use it with the Uncanny Automator plugin to connect it to [75+ WordPress plugins and web apps](https://automatorplugin.com/integrations/). And you can use the recipe example in this article as a reference to create multiple achievements for your eLearning site. The best part is you can add multiple triggers and actions to any recipe to create complex workflows using the [Uncanny Automator plugin](https://automatorplugin.com/pricing/). For example, you can add actions like getting a notification on [Slack](https://automatorplugin.com/integration/slack/) or adding the user to a mailing list to the above recipe. Have any questions on how to use Uncanny Automator and LearnDash Achievements addon together? Please feel free to comment below. **Categories:** LearnDash, Uncanny Automator --- ### [Group Hierarchy Reporting support for LearnDash](https://www.uncannyowl.com/group-hierarchy-reporting-support-for-learndash/) **Published:** November 4, 2021 **Author:** Ryan Moore **Content:** It’s time for a huge [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) release that adds some important new tools for site owners, end users and developers. Let’s jump straight in to what’s new. ## Group Hierarchy support for LearnDash reports This has been a popular request for months now but we needed to be very careful about how we approached it. We didn’t want to slow report generation down too much, nor did we want to potentially confuse users with new views of consolidated data. As such, the very first thing we did was to make the hierarchy support **optional**. To use it, turn [on group hierarchies](https://www.learndash.com/support/docs/users-groups/groups/global-group-settings/#global_course_management_display_settings) in LearnDash **and** enable this new option in your Uncanny Groups settings page: [![Add LearnDash group hierarchy support](https://www.uncannyowl.com/wp-content/uploads/2021/11/learndash-group-hierarchy-reports-setting.png "learndash group hierarchy reports setting - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/11/learndash-group-hierarchy-reports-setting.png) Once those changes are made, and you have some groups set up in hierarchies, visit your Group Management page on the front end. If you select a parent group from the drop-down (or you view it as a user with a single group that is a parent), you’ll see a new checkbox to include data from child groups in the table. When you check this, the page will reload and students across the current group *and all child groups* will be output in the table. The list of courses for the group will be updated to include courses from all child groups (as results from students in the table could be for courses not otherwise in the parent group), the functions in the Users menu are hidden (to avoid confusion around which group a student would be added to) and the checkboxes to select multiple users are also removed (students can only be removed from a single group at a time). For other report pages (including the course progress, quiz, essay and assignment reports), results from the child and parent groups will be combined automatically. These reports, when the “Include data from child groups in reports” setting is checked, will always show data that covers both the selected group and all of its children, no matter how many levels deep in the hierarchy. Please note that this is a global setting, it is not possible to add hierarchy support in reports for some groups only or for some reports only. The setting affects all groups and Uncanny Groups reports. ## [![Dropdown menu under Users listing actions: Add one; Add multiple; Upload users; Email users; Download keys; Export CSV (highlighted).](https://www.uncannyowl.com/wp-content/uploads/2021/11/Group-Management-Export-CSV.png "Group Management Export CSV - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/11/Group-Management-Export-CSV.png)Export the Group Management student list The Uncanny Groups 4.1 release adds support for exporting the list of students on the Group Management page to a CSV file. By default, an “Export CSV” menu option is added to the **Users** menu on the page. For users that hide or show elements using our shortcode attributes, this menu option can be hidden with the new csv\_export\_button=”hide” attribute for the Group Management page shortcode. ## Seat count changes when users are removed Normally, removing a user from a group (when it’s “allowed”) causes the seat count to increase. After all, since the user is no longer in a group, in most situations someone else should be allowed to take their place. In Uncanny Groups 4.1, there is now a setting so that users that have *completed* all courses for a group will not free up a seat when they’re removed from the group. Here’s the new option for this behaviour: [![Free LearnDash Group Seats](https://www.uncannyowl.com/wp-content/uploads/2021/11/do-not-free-group-seats.png "do not free group seats - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/11/do-not-free-group-seats.png) ## Instant access to essay records We have added the ability to prepopulate the search field on the Manage Essays page based on a querystring passed into the URL of a page. As populating URLs should be dynamic for there to be much value with this feature, it is largely for use by developers. To use this new feature, add this string to the URL of a Manage Essays report page: ?search=%query% where “%query%” is a string to be entered in the search field, perhaps a username, status or lesson to pull up reports more quickly with the associated record. This helps to show users a specific view of data without them having to filter records themselves. ## New Developer filters We know many sites want to customize our reports to show different columns, filters and more. To help with this (as even if we add more optional columns, we’ll never make everyone happy), the following new filters have been added: Progress Report – `ulgm_progress_report_courses` Progress Report – `ulgm_progress_report_user_quizzes` Progress Report – `ulgm_progress_report_user_courses` Group Management page – `ulgm_is_reconcile_required` Group Course Report – `ulgm_group_course_report_user_course_data` Edit Group page – `ulgm_other_similar_orders_limit` These new additions will help developers more easily modify our report output to meet exact site requirements. We hope you enjoy the new enhancements! **Categories:** Learning --- ### [Expanded SCORM and xAPI/Tin Can support for LearnDash](https://www.uncannyowl.com/expanded-scorm-and-xapi-tin-can-support-for-learndash/) **Published:** June 24, 2021 **Author:** Ryan Moore **Content:** At long last, the [Tin Canny 4.0 release](https://www.uncannyowl.com/downloads/tin-canny-reporting/) is now available! And it includes one major new feature that will transform what’s possible for small businesses running [LearnDash](https://www.uncannyowl.com/share/learndash/) sites: **full SCORM and xAPI support**. Back when we originally launched Tin Canny it was an easy way for LearnDash sites to upload their modules from popular elearning tools like Articulate Storyline, Adobe Captivate and iSpring. Over the years we added support for Lectora, Quizmaker, H5P, Presenter, Rise… but all of that support was explicitly defined and we couldn’t offer fully SCORM or xAPI compliant solutions. [![Tin Canny Uploader](https://www.uncannyowl.com/wp-content/uploads/2021/06/Tin-Canny-Uploader.png "Tin Canny Uploader - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/06/Tin-Canny-Uploader.png) ## Introducing full SCORM and xAPI/Tin Can support The 4.0 release *should* work with any standards-compliant SCORM 1.2, 2004 and xAPI / Tin Can file. It took us close to a year to get there, but the effort was absolutely worth it. Now we can stop saying “no” to people every time we get requests to add support for a custom authoring tool or something third party that we don’t support. Better yet, there’s no longer a need to ask! With this update, he’s a partial list of authoring tools we will be supporting with Tin Canny: - Camtasia - Elucidat - Adapt - Easygenerator Of course, there are hundreds of authoring tools in the market and we have only been able to test a small number of them, but if you were part of our testing group and provided file samples (thanks to those of you who did, especially [Dennis Hall](https://learning-templates.com/)!), we can confirm that Tin Canny 4.0 works well with all of those files. And, going forward, we will offer support for *any* SCORM and xAPI files, as long as they are standards compliant. The rest of the 4.0 release is far less exciting (and how could it not be?). [Course](https://www.uncannyowl.com/knowledge-base/course-report/) and [User](https://www.uncannyowl.com/knowledge-base/user-report/) reports will have improved performance on large sites and can now take advantage of object caching if it’s available. For some sites this will mean a *huge* performance difference ( note that cached results are only refreshed every 5 minutes), but unless you have at least several thousand users, the changes might not be as apparent. [![Courses table showing two items: Course 1 (ID 11) with 7201 enrolled, 7200 not started, 1 in progress, 0 completed, 100% avg quiz score, 0% complete; Details link. Course 2 (ID 35) with 7199 enrolled, 7199 not started, 0 in progress, 0 completed, dash avg score; Details link.](https://www.uncannyowl.com/wp-content/uploads/2021/06/Tin-Canny-Course-Report.png "Tin Canny Course Report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/06/Tin-Canny-Course-Report.png) There’s better translation support, LearnDash quizzes that were NOT linked to courses (it’s rare but does come up) are now shown in the front end quiz reports, and Tin Canny users *not* using SCORM and xAPI features will find fewer confusing references to those options. The rest of the changes can be reviewed at **Categories:** LearnDash, Tin Can --- ### [Uncanny Groups 4.0: Dozens of enhancements](https://www.uncannyowl.com/uncanny-groups-4-0-dozens-of-enhancements/) **Published:** June 22, 2021 **Author:** Ryan Moore **Content:** The [Uncanny Groups for LearnDash 4.0](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) release has been in development for months and focuses heavily on reliability and marginal improvements. And there are a *lot* of those; this release includes almost **50** plugin enhancements and fixes. Let’s jump right into some of what’s new: ### More form support Use [Gravity Forms](/share/gravityforms/), [WPForms](/share/wpforms/) or [Formidable Forms](https://formidableforms.com/)? Now you can add enrollment key redemption fields from the form editor so you can link any form in those plugins to key redemption in Uncanny Groups. [![Uncanny Enrollment Key in WP Forms](https://www.uncannyowl.com/wp-content/uploads/2021/06/Uncanny-Key-in-WPForms.png "Uncanny Key in WPForms - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/06/Uncanny-Key-in-WPForms.png) ### New edit group page options Ever wish administrators could see invited users? That’s in, so is the ability to see orders and products associated with groups that were created from a purchase. You can even *unlink* a group from an order if you no longer want users to be able to add courses or seats to a group via purchase. [![Edit Uncanny Groups page changes](https://www.uncannyowl.com/wp-content/uploads/2021/06/Edit-Group-page-changes.png "Edit Group page changes - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/06/Edit-Group-page-changes.png) ### New group list page options We modified the group listing under **LearnDash LMS > Groups** to show seat counts and to make enrollment keys downloadable by admins. Both of these changes will make it a lot easier for administrators to get data they need without drilling down into a group or switching to the front end Group Management page. ### Shortcode support in email templates Email templates now allow shortcodes to be used in emails to users. One interesting use case, and the reason for us building it, was someone wanting to use the group logo shortcode from [Toolkit Pro](https://www.uncannyowl.com/knowledge-base/ld-group-logo-list/) to brand emails to group members with the group logo. ### New system status tools Start with the Uncanny Automator 3.0 release, we’re adding a Status page to our plugins to provide useful troubleshooting information and database repair tools. Uncanny Groups 4.0 is the first of our [LearnDash](/share/learndash/) add-ons to support it. Look for the new **Uncanny Groups > System status** menu. ### Bulk discounts for WooCommerce Subscriptions We had a few requests for users wanting to use our [Bulk Discount system](https://www.uncannyowl.com/knowledge-base/configure-bulk-discounts/) for subscription purchases as well as one-time purchases. That’s now fully supported. ### New seat management system The changes are largely behind the scenes, but the entire seat and key management system was rebuilt to ensure that it remains reliable, even with some edge cases that could cause sync issues in the past. While it sounds small, this change represents dozens of hours of work and should negate the need for the **Reconcile seat count** button for upgraded groups. ### New license system The 4.0 release includes a new system to track expired plugins that we’ll be adding to our other plugins shortly. Currently, it’s not obvious on user sites when license keys have expired and we get a lot of tickets from confused users about why they can’t update. Now, directly on sites, we can show how many activations a license key has, whether or not it’s valid and when it expires. ### Other fixes and enhancements The above is already a huge list of improvements, but here are a handful of other changes in 4.0: - New developer filters for the quiz reports to make overrides easier - Password complexity was reduced for automatically generated passwords - Better Divi, LearnDash Notifications and WPML compatibility For the full list of changes in Uncanny Groups 4.0, make sure to check **Categories:** LearnDash --- ### [Two Factor Authentication for LearnDash Login Forms](https://www.uncannyowl.com/two-factor-authentication-for-learndash-login-forms/) **Published:** May 3, 2021 **Author:** Ryan Moore **Content:** Version 3.5 of the [Uncanny Toolkit for LearnDash](https://wordpress.org/plugins/uncanny-learndash-toolkit/) was released today with one very important addition: new support for Two Factor Authentication (2FA). We have had a number of requests to improve security options for our login module and we’re pleased to now support a direction integration with [WP 2FA](https://wordpress.org/plugins/wp-2fa/), a popular two-factor authentication plugin for WordPress. ## Easy 2FA for WordPress sites What this new integration means is that it’s easier than ever to integrate the flexible, clean login forms in the Uncanny Toolkit with the additional security of the WP 2FA plugin. It’s the best of both worlds. Using both plugins together, you can now: - Require some or all users to authenticate with 2FA (including setting rules by role) - Allow users to add a secondary login check using an email or supported 2FA app Beyond the additional account security, LearnDash site owners may appreciate that this additional security measure makes it much harder for users to share WordPress accounts. Here’s what the login process looks like for end users when they try to sign in: [![Two Factor Authentication code verification for WordPress](https://www.uncannyowl.com/wp-content/uploads/2021/05/2FA_Verification_Code.png "2FA_Verification_Code - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/05/2FA_Verification_Code.png) The use of two-factor authentication is of course completely optional, but we’ve made it as easy as possible to install the [WP 2FA plugin](https://wordpress.org/plugins/wp-2fa/) should you want to enable it. From the [Front End Login module](https://www.uncannyowl.com/knowledge-base/front-end-login/) settings page in Uncanny Toolkit > Modules, there’s a 1-click install option at the very bottom of the settings. Once installed, the Front End Login module will confirm it’s active and add an easy link to set up 2FA settings. [![2FA for WordPress](https://www.uncannyowl.com/wp-content/uploads/2021/05/Two_Factor_Authentication_for_WordPress.png "Two_Factor_Authentication_for_WordPress - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/05/Two_Factor_Authentication_for_WordPress.png) Please note that this is an integration only, meaning we have added easy plugin installation, configuration and style for the 2FA plugin, but the 2FA behaviours, text and other settings remain with the other plugin. ## Other changes in Uncanny Toolkit 3.5 In anticipation of the upcoming [Uncanny Automator](https://automatorplugin.com/) 3.0 release, we have made it easier than ever to add Automator recipes from the Toolkit. Users can get started with a new one-click install process so you don’t even have to leave your Toolkit settings. This release also includes a number of updates related to LearnDash 3.4.x changes. We have seen a lot of changes in LearnDash over the last 2 months related to LearnDash 3.4 fixes, and a handful of recent changes have caused issues that require updates on our side. For this reason, the Uncanny Toolkit 3.5 release is *highly* recommend for all users of LearnDash 3.4.0 and above, especially if you use our [Topics Autocomplete Lessons](https://www.uncannyowl.com/knowledge-base/topics-autocomplete-lessons/) module. **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Uncanny Codes 4.0 for WordPress](https://www.uncannyowl.com/uncanny-codes-4-0-for-wordpress/) **Published:** March 16, 2021 **Author:** Ryan Moore **Content:** Our [Codes plugin for WordPress](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) has gone through many iterations since we first launched it in 2016. It started off as a simple code redemption tool to unlock [LearnDash](https://www.uncannyowl.com/share/learndash/) course and group access. Then we linked codes to registration and purchase, added expiry dates, allowed custom codes, then built in advanced code generation and redemption rules. Despite being a very capable and scalable plugin, it was never particularly popular and was limited to LearnDash use. With the release of Uncanny Codes 4.0, however, everything changes. ## Introducing Uncanny Codes 4.0 For about a year, the Uncanny team has wrestled with 2 big questions about our [Codes plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/): - How far could the plugin go if we supported more than LearnDash alone? - What if instead of building integrations for other plugins we just linked it to [Uncanny Automator](https://automatorplugin.com/)? Uncanny Codes 4.0 will answer those questions, because the plugin no longer requires LearnDash and we have linked the redemption of codes and code batches to Automator recipes. (For anyone not familiar with Uncanny Automator, it’s a plugin that connects lots and lots of things together. When something happens somewhere, Automator can make something else happen, like the redemption of a code adding a user to a membership level.) **Let’s review some of the biggest new features in Uncanny Codes 4.0.** ### Seamless Uncanny Automator integration This is what makes our codes plugin better than anything else on the market. When users redeem codes, we can make almost *anything* happen, and we really mean that. Adding just the [free version of Uncanny Automator](https://wordpress.org/plugins/uncanny-automator/) lets you connect code redemption to dozens of popular plugins with 100+ actions *as well as* thousands of apps with [Zapier](https://zapier.com/) and webhook support (yes, all in the free version of Automator). [![Codes for WordPress trigger](https://www.uncannyowl.com/wp-content/uploads/2021/03/Edit_recipe_‹_codes_uncannycloud_com_—_WordPress.png "Edit_recipe_‹_codes_uncannycloud_com_—_WordPress - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/03/Edit_recipe_‹_codes_uncannycloud_com_—_WordPress.png) Here are just a few examples of what you can do with code redemption and the free version of Automator: - Add a tag to a user in a CRM (e.g. [Groundhogg](https://automatorplugin.com/integration/groundhogg/), [FluentCRM](https://automatorplugin.com/integration/fluentcrm/)) - Award an achievement or badge ([BadgeOS](https://automatorplugin.com/integration/badgeos/), [GamiPress](https://automatorplugin.com/integration/gamipress/), [myCred](https://automatorplugin.com/integration/mycred/)) - Add the user to a group ([BuddyBoss](https://automatorplugin.com/integration/buddyboss/), [BuddyPress](https://automatorplugin.com/integration/buddypress/), [wpForo](https://automatorplugin.com/integration/wpforo/)) - Add a membership level ([Restrict Content Pro](https://automatorplugin.com/integration/restrict-content/), [Wishlist Member](https://automatorplugin.com/integration/wishlist-member/), [WooCommerce Memberships](https://automatorplugin.com/integration/woocommerce-memberships/)) - Mark a course complete or award CEUs ([LearnDash](https://automatorplugin.com/integration/learndash/), [MasterStudy LMS](https://automatorplugin.com/integration/masterstudy-lms/), [Uncanny CEUs](https://automatorplugin.com/integration/uncanny-continuing-education-credits-for-learndash/)) - Change a user’s WordPress role - *Any combination* of the above and any other supported actions in 50+ plugins and apps If you think that’s impressive, what’s possible when you add an [Automator Pro](https://automatorplugin.com/pricing/) license is mind-blowing. Keep in mind too that a single code redemption can do *multiple* things, so you could add a user to 3 courses, add a CRM tag *and* add the user to a social group. Try doing that with any other plugin! [![Actions for WordPress code redemption](https://www.uncannyowl.com/wp-content/uploads/2021/03/Code_redemption_actions.png "Code_redemption_actions - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/03/Code_redemption_actions.png) ### Sell Codes for WordPress One frustration we know users of Uncanny Codes have had for some time is how to handle distribution of codes. Once generated, getting codes in the hands of teachers, partners, affiliates and other clients has been a manual process. With 4.0, you can [sell codes using WooCommerce](https://www.uncannyowl.com/knowledge-base/sell-uncanny-codes/). [![Sell codes with WooCommerce](https://www.uncannyowl.com/wp-content/uploads/2021/03/My_account_–_codes_uncannycloud_com.png "My_account_–_codes_uncannycloud_com - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/03/My_account_–_codes_uncannycloud_com.png) Let’s review what this means in practice. You, as a site administrator, generate 10,000 codes and define exactly what they will do. Then you can create a WooCommerce “Codes” product, and whenever someone buys a certain quantity, they receive that number of codes from the batch. They can even track whether or not they’ve been used. So say, for example, you create those 10,000 codes that you want to unlock access to 3 courses and a special membership level. A client organization then buys 100 of them. They receive an email with a CSV file of those codes (as well as a list in plain text) that they can distribute to their staff, so now they have an easy way to get 100 people access to those courses and membership. Another way to look at it might be as a way to sell 100 gift cards that are way easier to redeem (and far more flexible) than 100% off coupon codes. ### More Form plugin support Earlier versions of Uncanny Codes supported [Gravity Forms](https://www.uncannyowl.com/knowledge-base/using-codes-gravity-forms/) only as a way to redeem codes during registration. But why limit code redemption to registration, and why just Gravity Forms? Codes 4.0 adds new support for [WPForms](https://www.uncannyowl.com/knowledge-base/using-codes-with-wpforms/) and [Formidable Forms](https://www.uncannyowl.com/knowledge-base/using-codes-with-formidable-forms/), both fantastic plugins. This will open up many new redemption opportunities, and you can tie any form submission to code redemption. Only want to allow users to register on your site with a valid code? No problem. Just want a simple redemption form for signed in users? That’s easy too. [![Codes for Formidable Forms](https://www.uncannyowl.com/wp-content/uploads/2021/03/Codes_for_Formidable_Forms.png "Codes_for_Formidable_Forms - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/03/Codes_for_Formidable_Forms.png) We add new Uncanny Codes field types to the form plugins we integrate with. Just add the field to your forms, make the field mandatory (if it is), and Uncanny Codes will take care of the redemption process. ### A new way to generate codes With all the new support for different code types and Automator we needed a new interface to make generation more intuitive. This wizard approach to code generation makes the process less confusing and connects Automator code generation to recipe creation. It works really smoothly. [![Generate codes for WordPress](https://www.uncannyowl.com/wp-content/uploads/2021/03/Generate_codes_for_WordPress.png "Generate_codes_for_WordPress - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/03/Generate_codes_for_WordPress.png) Code batches now also have names. It makes them far easier to identify and the names were really essential to keep Automator recipes and code batches linked to products organized. ### Let’s talk about Uncanny Automator Pro You don’t need Uncanny Automator Pro to use Uncanny Codes, but it definitely makes it a far more full-featured codes solution. When those 2 plugins are paired, here are a few more examples of things that can be unlocked with codes: - Register the user in a [Zoom meeting or webinar](https://automatorplugin.com/integration/zoom-meetings/). Simply enter a code, no registration form, and the user will instantly get the confirmation from Zoom. - Add the user to a private mailing list in [Mailchimp](https://automatorplugin.com/integration/mailchimp/). - Add the user to a membership ([MemberPress](https://automatorplugin.com/integration/memberpress/), [Paid Memberships Pro](https://automatorplugin.com/integration/paid-memberships-pro/)). - Reset a user’s attempts for a quiz (LearnDash, LifterLMS). ### Check code redemption status We had valuable feedback from some customers that users that were issued codes had trouble identifying which codes had been used and which ones hadn’t. If you want users to be able to check the redemption status of a code (without redeeming it) in the front end, you can drop this shortcode in a page: \[uo\_user\_redeem\_code check\_only=”yes”\] The system will check the status of that code and return one of 4 values: Invalid code, Code redeemed, Code available or Code expired. Purchasers of codes also have a new option in their Orders page in WooCommerce to check available and redeemed codes, but this new shortcode will be useful for codes that are distributed manually and not sold. ## Try Uncanny Codes For existing users of Uncanny Codes, we highly recommend trying version 4.0 out on a Staging site before you update your live site. Uncanny Codes 4.0 is 100% backwards compatible, but this is a *huge* release that changes a lot about code creation, editing and management, so we highly encourage testing things first and reviewing all the new articles in our [Knowledge Base](https://www.uncannyowl.com/article-categories/uncanny-learndash-code/). A full list of changes is available here: **Categories:** LearnDash --- ### [Uncanny Groups 3.10: Easier classroom management](https://www.uncannyowl.com/uncanny-groups-3-10-easier-classroom-management/) **Published:** February 17, 2021 **Author:** Ryan Moore **Content:** There’s one thing in our [Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) plugin that I felt had been a gap for some time, not just in our plugin but in WordPress in general: Why do users always need a valid email address to set up an account? The answer is straightforward, of course, it’s an identifier and allows users to reset their passwords independently. But in many K-12 classrooms, manufacturing and industrial environments, students simply don’t have email addresses. This makes using [LearnDash](https://www.uncannyowl.com/share/learndash/) and our plugins exceedingly difficult. We did offer a [workaround for CSV imports](https://www.uncannyowl.com/knowledge-base/group-management-page/#Adding_Users_in_Bulk); files can include a password column and this password would be set for new users, allowing administrators and Group Leaders to create users that didn’t actually need an email address. With this approach, account info (email and password) could be set up and given to students directly so that setting up a password by email confirmation wasn’t needed. Privacy concerns aside, this at least offered a path for students without an email address to use LearnDash and our plugins. CSV files are hard to work with though and outside the technical abilities of many Group Leaders. Enter [Uncanny Groups for LearnDash 3.10](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/). ## Password field in Add Users New in the 3.10 release is the ability for Group Leaders and Administrators to set passwords for new users when they add them. This applies to [adding users individually and adding multiple users at once](https://www.uncannyowl.com/knowledge-base/group-management-page/#Adding_Users_to_Groups). It sounds simple, but giving teachers, managers and instructors an *easy* way to set new student passwords means that a valid student email address is no longer required. Instead, Group Leaders can simply set up a fake email address (e.g. student@1234.com) along with a password and the student associated with that account can now sign in and take courses. [![Student passwords for LearnDash Groups](https://www.uncannyowl.com/wp-content/uploads/2021/02/LearnDash_Group_User_Passwords.png "LearnDash_Group_User_Passwords - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/02/LearnDash_Group_User_Passwords.png) There are some caveats: - Once set, students and Group Leaders cannot change passwords (don’t forget to store a record of the password!) - Students without a valid email address cannot receive notifications or announcements - Passwords can only be set for new users; if a password is set for an existing user it will be ignored And there’s a bonus (also a huge security risk, use this cautiously): the #Password token in the new user notification email will include the password set by the Group Leader if it’s in the email template. ## Improved WooCommerce order autocompletion We made a few changes here to make it easier for orders of Uncanny Group products (specifically Group License and Group Course) to be autocompleted. Here’s what we changed: - The “Virtual” and “Downloadable” checkboxes on the edit product page are no longer hidden. This makes it easier to override settings for exceptional cases. New Group License and Group Course products default to “Virtual” (not Downloadable). - There’s a new setting under Uncanny Groups > Settings for “Autocomplete Uncanny Groups orders”. If this is checked, our plugin will automatically set the order status of orders that include Uncanny Groups (and other virtual products if included) to “Completed”. In some cases a third party plugin was needed to autocomplete orders, so this new setting eliminates the need for a plugin override. [![Autocomplete LearnDash group orders](https://www.uncannyowl.com/wp-content/uploads/2021/02/Autocomplete_LearnDash_group_orders.png "Autocomplete_LearnDash_group_orders - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/02/Autocomplete_LearnDash_group_orders.png) ## Better links between groups and orders This might be primarily for our team, but we thought other users would also benefit from an easier way to move between a LearnDash Group and the associated WooCommerce order (if the group was created by our plugin from a WooCommerce purchase). In version 3.10, it’s now easy to see the order associated with a group and vice versa using new links added to the edit order and edit group pages in /wp-admin/. These details, including the purchase history, will make it a lot easier to audit the current status of a group.[![Uncanny Groups WooCommerce Orders](https://www.uncannyowl.com/wp-content/uploads/2021/02/Uncanny_Groups__Woo_Orders.png "Uncanny_Groups__Woo_Orders - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/02/Uncanny_Groups__Woo_Orders.png) ## Fixes and updates Our plugins aren’t fully compatible with PHP 8.0 yet, but we’re getting there, and this release adds some important compatibility fixes. We also experienced a *very* unfortunate (and surprising!) conflict with the [Yoast SEO 15.8 update](https://en-ca.wordpress.org/plugins/wordpress-seo/) and buying groups from the [Buy Courses/Groups page](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/) that’s fixed in this release. Additional details about the release are in the [Uncanny Groups changelog](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-changelog/). **Categories:** LearnDash --- ### [Tin Canny 3.6: Microlearning for LearnDash xAPI & SCORM courses](https://www.uncannyowl.com/tin-canny-3-6-microlearning-for-learndash-xapi-scorm-courses/) **Published:** February 16, 2021 **Author:** Ryan Moore **Content:** It’s time for a new Tin Canny update! Version 3.6 adds support for microlearning using Single Page LearnDash courses, more flexible user details in reports, new column sorting options, a more visible X icon for modules in a lightbox and more. ## Single page xAPI & SCORM LearnDash courses Today’s [Tin Canny 3.6](https://www.uncannyowl.com/downloads/tin-canny-reporting/) release adds support for something [LearnDash](https://www.uncannyowl.com/learndash/share) and Tin Canny users have been wanting for years: the ability to build standalone courses with Articulate Storyline, iSpring, H5P and other module types without having to use LearnDash lessons and topics. What does that mean? Well, with most (non-WordPress) LMS platforms, you can upload self-contained zip files and that uploaded module becomes the entire course. A user sees the course name, launches that uploaded course in a new window or lightbox, and that’s it — no digging into lessons or topics first, it’s just the course. LearnDash, however, normally requires that courses be structured into a hierarchy of WordPress posts that requires at least one “lesson” beneath a course. The SCORM or xAPI file would then be uploaded inside the lesson or topic, so students would have to click through a “course” level first that sometimes served no purpose. [![LearnDash Single Page Course](https://www.uncannyowl.com/wp-content/uploads/2020/12/LearnDash_Single_Page_Course.png "LearnDash_Single_Page_Course - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/12/LearnDash_Single_Page_Course.png) Tin Canny 3.6 adds support for our [Single Page Courses module in Toolkit Pro](https://www.uncannyowl.com/knowledge-base/single-page-courses/), allowing uploaded SCORM and xAPI files right to the course level while still allowing proper LearnDash tracking. Support is available for these content types: - Articulate Storyline - Articulate Rise - Adobe Captivate - iSpring - H5P - Lectora Inspire The use of Single Page Courses for microlearning does require that the [Toolkit Pro for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) plugin be installed, active, and the module turned on. ## Customizable user details in reports We’ve seen an increase in tickets with users not wanting to use our default “Display Name” record when we show student names in reports. Many sites would rather use first name and last name, perhaps even hide email address for privacy reasons. Tin Canny 3.6 allows site admins to choose which values and/or columns should be displayed in user listings of the Course and User reports with these settings: [![User settings in Tin Canny reports](https://www.uncannyowl.com/wp-content/uploads/2021/02/User_settings_in_Tin_Canny_Reports.png "User_settings_in_Tin_Canny_Reports - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/02/User_settings_in_Tin_Canny_Reports.png) ## Sort all columns in the User report Adding the optional “Sort by % Complete” setting to [User reports](https://www.uncannyowl.com/knowledge-base/user-report/) some time ago led to requests for sorting on other columns, as it should. This is still a setting we suggest using with caution on large sites, as there is a slight performance hit on load, but if **Enable Sorting by % Complete** in Tin Canny settings that all columns in the User report will become sortable. Look for the arrow icons in column headers when accessing the User report to sort by column and show current sort settings. [![Sort LearnDash user report columns](https://www.uncannyowl.com/wp-content/uploads/2021/02/Sort-LearnDash-User-report-columns.png "Sort LearnDash User report columns - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/02/Sort-LearnDash-User-report-columns.png) ## Other Tin Canny 3.6 changes To round out this release, here are a handful of other highlights: 1. The Gutenberg block for Tin Canny content has a new Module ID indicator. This makes it a lot easier to reconcile uploaded modules in LearnDash courses with uploaded modules on the Management Content page in /wp-admin/ (useful when deleting content that’s no longer required or replacing modules with newer versions). With our Classic Editor support this was always easy, as the shortcode included the ID, but now management is easy with Gutenberg too. 2. We improved performance significantly in a recent update but on a very few number of sites (perhaps 2-3%) our old, slower method of tracking was preferred. There’s now a switch in the settings to use a compatibility mode if some Tin Canny uploads aren’t catching all statements when they’re closed. 3. Error messages are now more descriptive if an error is encountered during a Tin Canny module upload. 4. The Settings page has been completely reorganized. 5. The X icon to close modules in a lightbox has been made more visible. As always, the full changelog is available at **Categories:** LearnDash, Tin Can --- ### [Toolkit Pro 3.7: Usermeta in reports, transcript changes and more](https://www.uncannyowl.com/certificates-in-transcripts-and-usermeta-learndash-csv-reports/) **Published:** February 12, 2021 **Author:** Ryan Moore **Content:** We try to avoid Friday releases where we can, but with the upcoming holiday weekend in Canada and some exciting changes from [LearnDash](https://www.uncannyowl.com/share/learndash/), we couldn’t wait to get version 3.7 of the [Uncanny Toolkit Pro plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) out. It’s a big release with several really compelling new features. ## Group Drip notification changes We do need to start the list of new features with a change that [Group Drip](https://www.uncannyowl.com/knowledge-base/drip-lessons-by-ldgroup/) users may need to make on their sites. LearnDash is releasing version 1.5 of their [Notifications](https://www.learndash.com/support/docs/add-ons/notifications/) plugin next week, which is a big overhaul and improvement. That’s great news, but because of how it was rearchitected, it does break compatibility with existing notifications linked to our Group Drip module. Any current notifications on sites set up to alert users when lessons are available to the group will stop working, but there is good news: we have a new trigger available to support Group Drip notifications. If you upgrade to LearnDash Notifications 1.5 *and* want notifications to be sent to group members when lessons become available via group drip, you must create new notifications with this new trigger: “A scheduled lesson is available to user with Uncanny Drip by Group”. If you don’t use group drip notifications, no changes are necessary. [![LearnDash Group Drip Lesson Notifications](https://www.uncannyowl.com/wp-content/uploads/2021/02/LearnDash_Group_Drip_Lesson_Notification.png "LearnDash_Group_Drip_Lesson_Notification - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/02/LearnDash_Group_Drip_Lesson_Notification.png) ## Custom usermeta in LearnDash CSV reports We keep adding more column options to LearnDash reports, and in today’s 3.7 release we’re adding up to 3 new columns that can output *any user data you want*. If you store custom fields for users in your system, like maybe a department, manager name, job title, whatever, now you can include columns with those records in LearnDash CSV reports using the [Enhanced LearnDash CSV Reports module](https://www.uncannyowl.com/knowledge-base/enhanced-learndash-csv-reports/). Here’s what it looks like: [![Usermeta in LearnDash CSV reports](https://www.uncannyowl.com/wp-content/uploads/2021/02/Usermeta_Keys_LearnDash_Exports.png "Usermeta_Keys_LearnDash_Exports - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/02/Usermeta_Keys_LearnDash_Exports.png) To add these extra columns you will need to know the key for the record in the usermeta table, but if you’re storing custom fields you probably know what keys to use. If you’re not sure, look at whatever is capturing that record (perhaps a form or checkout process) and see if it shows the usermeta key for the record you need. ## Certificates in LearnDash Transcripts We made some really interesting [LearnDash Transcript](https://www.uncannyowl.com/knowledge-base/learner-transcript/) module changes in this release, and before any current users panic, these new records are *optional*. We know you’ll want to use them, but they can be turned on and off. First up is the addition of a Certificate column to the Transcript output. It does exactly what you expect; if the column is shown and the user has an associated course certificate, we show an icon with a link to the certificate. This is a really handy way for users to retrieve their certificates, including from courses in which they’re no longer enrolled but do have a completion record. The Certificate column is automatically hidden from the print view, where it wouldn’t make sense. [![LearnDash Certificates and CEUs in Transcript](https://www.uncannyowl.com/wp-content/uploads/2021/02/Modules_‹_beta_uncannycloud_com_—_WordPress.png "Modules_‹_beta_uncannycloud_com_—_WordPress - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/02/Modules_‹_beta_uncannycloud_com_—_WordPress.png) ## Custom Credits in LearnDash Transcripts We’ve been hard at work lately with [amazing new features](https://www.uncannyowl.com/award-ceu-credits-for-anything/) for our [Continuing Education Credits plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/), and now that it’s easy to track custom credits, we wanted to make it easy for users to *see* their consolidated training records. In Toolkit Pro 3.7, we have added the ability to include custom learning credits in student transcript. If our Continuing Education Credits is installed and enabled, and a user has been awarded credits, we will now (optionally) add new rows for those records. Please note that because records like scores and steps are not applicable for custom credit records, we output “n/a” in those columns for custom records. ## Group expiration shortcode We have offered the [Expire LearnDash Group module](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) for quite some time, but we always relied on email notifications to let users know when it was expiring. This made planning difficult for Group Leaders and members, so in today’s release we have added a new shortcode. Here are some examples of usage: ``` [uo_group_expiration_in] //Show countdown to expiry date if set and user is only part of 1 group [uo_group_expiration_in group-id="xx"] //Shows countdown to expiry date if set and user is part of the associated group [uo_group_expiration_in pre-text=""] //Override default "Group Access Expires in" text in shortcode output [uo_group_expiration_in group-id="" pre-text=""] //Combine the above attributes ``` When the Expire Group module is enabled this shortcode is available automatically. The default text to include is set from the module settings: ![Modal titled 'Group Expiration' with options to send expiry emails and customize countdown messages for remaining days/1 day.](https://www.uncannyowl.com/wp-content/uploads/2021/02/learndash-group-expiration-countdown.png "learndash-group-expiration-countdown - Uncanny Owl") ## Other changes As always, all new features, updates and fixes are included in the [changelog](https://www.uncannyowl.com/knowledge-base/learndash-toolkit-pro-change-log/). Two notable additions are support for [Single Page Course](https://www.uncannyowl.com/knowledge-base/single-page-courses/) settings for non-admins (like Instructors in the [Instructor Role plugin by Wisdm Labs](https://wisdmlabs.com/instructor-role-extension-for-learndash/)) and outputting course-level quizzes in the [Course Dashboard](https://www.uncannyowl.com/knowledge-base/learndash-course-dashboard/) module. **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Uncanny Groups for LearnDash 3.9 Update](https://www.uncannyowl.com/uncanny-groups-for-learndash-3-9-update/) **Published:** February 2, 2021 **Author:** Ryan Moore **Content:** The version 3.9 update of the [Uncanny Groups for LearnDash plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) includes some interesting updates that may really transform how the tool is used by some customers. Given the magnitude of the changes, this is also one that we recommend testing on a Staging site first. Let’s jump right in to what’s new in the release and how it might affect your site. ## BuddyBoss Social Group sync You asked, we listened. A *lot* of people use the [BuddyBoss theme and platform](https://www.buddyboss.com/) with our Uncanny Groups plugin. BuddyBoss does include a sync tool for LearnDash groups, but it doesn’t work properly when users are added or removed from groups managed by our plugin. It also doesn’t sync LearnDash groups created with our plugin to new BuddyBoss groups. [![BuddyBoss Groups Sync with LearnDash Groups](https://www.uncannyowl.com/wp-content/uploads/2021/02/BuddyBoss_Groups_Sync_with_LearnDash_Groups.png "BuddyBoss_Groups_Sync_with_LearnDash_Groups - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/02/BuddyBoss_Groups_Sync_with_LearnDash_Groups.png) So, in the Uncanny Groups 3.9 release, here’s what’s new **if LearnDash Group Sync and Auto Create Social Group** settings are enabled in *BuddyBoss > Integrations > LearnDash* on a BuddyBoss site: 1. When a LearnDash group is created by the Uncanny Groups plugin, an associated BuddyBoss social group is created. 2. When a user is added to a group from the Group Management page in our plugin, the user is added to the associated BuddyBoss group. If the user is a student they are added as a “Member”. If the user is a Group Leader they are added as an “Organizer”. This works for **adding single users**, **adding multiple users** *and* **adding users via CSV import**. 3. When users are removed from a group from the Group Management page, they are removed from the associated BuddyBoss social group. 4. When users are added or removed by an administrator from the LearnDash edit group page, we sync the change to the associated BuddyBoss group. If you use BuddyBoss groups, these changes are probably a very welcome surprise. All of these behaviours are automatic and based on the settings in BuddyBoss only; there are no settings to change in Uncanny Groups to add this support. ## Support for semicolon delimited CSV files For non-English users of our plugin, your Group Leaders can now export CSV files from Excel and have them work without having to change region settings or use something like Google Sheets. (For some regions and languages, Excel automatically exports CSV files with a semicolon delimiter instead of a comma, but previously our [user import](https://www.uncannyowl.com/knowledge-base/group-management-page/#Adding_Users_in_Bulk) only support comma delimiters.) ## Performance improvements for LearnDash Groups One of our developers took his frustrations with [LearnDash](https://www.uncannyowl.com/share/learndash/) performance on sites with a lot of groups and turned it into a new performance tweak. By default, the list of groups in LearnDash LMS > Groups in /wp-admin/ shows a column that includes a count of the number of users, courses, and Group Leaders in a group. On sites with a lot of groups, these lookups can slow down load times to show groups a *lot* and the information isn’t always necessary. We ended up including the option to turn the column on or off if people don’t need it, and by doing that, sites with a lot of groups will see a big performance increase (with the compromise, of course, being that the data is no longer output in the group list). ## Show legacy LearnDash group data In recent versions of our plugin (including this one) we have improved the performance of Uncanny Groups reports and key generation. For ProPanel users, there were a handful of situations where data in our reports would not exactly match ProPanel; this was due to LearnDash storing progress and enrollment data in multiple locations in the database. This was usually corrected by running the Course and Course Access List upgrades from *LearnDash LMS > Settings > Data Upgrades*, but we wanted to provide an option for users to choose the slower (but from sources matching ProPanel) report generation option. [![Legacy LearnDash course data](https://www.uncannyowl.com/wp-content/uploads/2021/02/Legacy_LearnDash_course_data-1.png "Legacy_LearnDash_course_data - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/02/Legacy_LearnDash_course_data-1.png) ## Uncanny Groups 3.9 updates and fixes Details of all updates are of course in the full [changelog](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-changelog/), but we wanted to draw your attention to a few highlights that you might notice as you use the plugin: 1. LearnDash recently changed how new assignments are named to make them more unique, but this in turn created formatting issues in our Assignments report since we listed the full file name. We have no changed file names to a View link instead. 2. The list of courses on the Group Management page is now ordered alphabetically. 3. Group keys are now deleted when a group is deleted, even if WooCommerce is not active (there were some scenarios where deleted groups might still have orphaned keys stored in the database). **Categories:** LearnDash --- ### [Award historical credits for LearnDash courses](https://www.uncannyowl.com/award-historical-credits-for-learndash-courses/) **Published:** January 13, 2021 **Author:** Ryan Moore **Content:** Our [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) plugin has historically been our least popular plugin and not nearly as capable as some continuing education providers would like. Organizations in this space tend to have very specific requirements and outgrow general-purpose solutions quickly. With the 2 most recent updates to the plugin, however, we have completely transformed what’s possible with our CEU product. The [3.1 release](https://www.uncannyowl.com/award-ceu-credits-for-anything/) added the ability to track credits for anything, even learning activities that were not associated with [LearnDash](https://www.uncannyowl.com/share/learndash/). And with our [Uncanny Automator integration](https://www.uncannyowl.com/award-ceu-credits-for-anything/), we can simplify awarding credits even further, automating credit activity for live events, forum participation, purchases–if it can be captured online, [Automator](https://automatorplugin.com/) can almost certainly link it to credits in this plugin. ## Capture historical completion records There’s always been one big limitation in the Uncanny Continuing Education Credits plugin: it only starts tracking credits for new LearnDash course completions once it’s installed and credits are assigned to the course. For most sites, this meant a disconnect between users that completed courses before plugin installation and users that completed them after setup. In today’s [Uncanny Continuing Education Credits 3.2 release](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/), we’re adding a very important new feature: the ability to generate credits for historical course completions. This means WordPress administrators can choose a LearnDash course, click a button, and have credits and completions tracked for users that completed courses before the course was assigned credits. [![Generate Continuing Education Credits for LearnDash](https://www.uncannyowl.com/wp-content/uploads/2021/01/Generate_Continuing_Education_Credits_for_LearnDash.png "Generate_Continuing_Education_Credits_for_LearnDash - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/01/Generate_Continuing_Education_Credits_for_LearnDash.png) Here’s how the new feature works: 1. Edit a LearnDash course and make sure it has the credit value assigned that you want to award to students. 2. Navigate to **Uncanny CEUs > Generate CEUs** in /wp-admin/. 3. Choose a course from the drop-down list. 4. Click the **Add missing records** button and credits will be added to student records. There are a few important things to note when using this new tool: - Credits are only awarded for students that have a LearnDash completion record but no credits for that completion. It will *not* modify CEU values for existing users that already have credits assigned. In other words, if a course had a credit value of 2.0 assigned, a user completed the course and earned 2 credits, then you change the value to 3.0 and run the *Generate CEUs* function, the student will continue to have 2.0 earned credits, *not* 3.0. - Only courses with a credit value greater than 0 can be awarded credits. If you don’t see a course in the drop-down list, make sure it has credits assigned. - The batch generation of credits does not consider enrollment. This means that if the user has a historical completion but no credit, we will award credits even if the user no longer has access to the course. We’re really excited to get this feature out and into the hands of our plugin users. We know that not having this feature limited the utility of this plugin, and between this update, full Uncanny Automator support and support for manually adding credits, the Uncanny Continuing Education 3.2 really is the most powerful continuing education product for WordPress. Version 3.2 also adds some other important improvements and fixes. Check out [the changelog](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-changelog/) for the full list. **Categories:** Continuing Education, LearnDash --- ### [Single Page LearnDash Courses now available](https://www.uncannyowl.com/single-page-learndash-courses-now-available/) **Published:** January 4, 2021 **Author:** Ryan Moore **Content:** [LearnDash](https://www.uncannyowl.com/share/learndash/) course structures have always been very straightforward and rigid, which did limit flexibility but also made building courses more consistent. Courses must have lessons, and lessons can optionally have topics. The 3-level hierarchy evolved a bit when LearnDash added sections to organize things, but progress was always based around the completion of lessons and topics. For many users, this was good enough. For years we heard from people that didn’t want to use lessons. Maybe they used micro-learning or all course content was self-contained in a single video; splitting the content up into lessons just didn’t make sense. We largely pushed back on such requests because they didn’t fit the “LearnDash model”, but after building a solution for a consulting client we started wondering what might be possible with a public plugin. ## The Single Page Course module In today’s [Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) 3.6 release, we’re adding a brand new module that addresses this gap: the Single Page Course module. When enabled, it gives course creators the ability to create LearnDash courses *that don’t have any lessons*. It **adds a Mark Complete button to the course level** and enables course structures that are simply just that page. Here’s how it works behind the scenes: When an administrator flags that a LearnDash course is a “Single Page Course”, our module creates a hidden lesson that’s associated with the course. In the front end, we hide the lesson table and course navigation widget, and even exclude the lesson listing from our Course Dashboard shortcode, so students won’t even know it exists. Admins won’t either; it doesn’t show up as being associated with the course. It’s simply a hidden lesson for the course that allows us to use the normal LearnDash progress and completion controls from the course level. [![LearnDash Single Page Course](https://www.uncannyowl.com/wp-content/uploads/2020/12/LearnDash_Single_Page_Course.png "LearnDash_Single_Page_Course - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/12/LearnDash_Single_Page_Course.png) If the “Single Page Course” flag is removed from a course, the hidden lesson gets removed and it can become a normal course. Note that existing courses with lessons *cannot* be turned into Single Page Courses unless the existing lessons are removed first. The new module also includes an option to autocomplete the course when the page is visited by an enrolled user. If you associate a certificate with the course, remember that you will need to refresh the page to see the certificate (the completion happens and the certificate would get generated after the page load). Visitor and Student LearnDash shortcodes work as expected with the new module, as do all other behaviours you would normally expect for LearnDash course access. Perhaps one of the more compelling uses of this module will be with Storyline, H5P, iSpring and Rise assets, so look for support from [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) in an upcoming release. (We need to add support to the completion condition options in that plugin before they can work at the course level.) ## Other updates in Toolkit Pro 3.6 We’re pleased to add support for [Elearning Complete’s Certificate Tracker for LearnDash](https://elearningcomplete.com/certificate-tracker-for-learndash/). Thanks Ryk and Patrick! This means that certificate data created by that plugin can now be included in [certificates that Toolkit Pro sends by email](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/). Our [Course Dashboard](https://www.uncannyowl.com/knowledge-base/learndash-course-dashboard/) shortcode also gains support for [LearnDash Sections](https://www.learndash.com/support/docs/guides/course-sections/). This allows easier organization of course content within the dashboard output. The [Autocomplete Lessons & Topics on Gravity Forms Submission](https://www.uncannyowl.com/knowledge-base/gravity-forms-auto-completes-lessons-topics/), [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/), [Import Users](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) and [Group Forums with bbPress](https://www.uncannyowl.com/knowledge-base/learndash-group-forums-with-bbpress/) modules also get some fixes in this release; make sure to check out the changelog at for full details. **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Front End Login Changes in Toolkit](https://www.uncannyowl.com/front-end-login-changes-in-toolkit/) **Published:** January 4, 2021 **Author:** Ryan Moore **Content:** We’re excited to announce that today’s [Uncanny Toolkit for LearnDash](https://wordpress.org/plugins/uncanny-learndash-toolkit/) release includes some pretty big Front End Login changes (and we wanted to beat the upcoming [Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) and [Automator 2.10](https://automatorplugin.com/) that announcements that will steal the thunder!). The [Front End Login](https://www.uncannyowl.com/knowledge-base/front-end-login/) module has gotten increasingly capable, to the point that we see people using it on WordPress sites even if they’re not using [LearnDash](https://www.uncannyowl.com/share/learndash/). Today’s release adds even more reasons to use it for login on *any* WordPress site. ## Changes to user verification We added the ability to [verify users](https://www.uncannyowl.com/knowledge-base/front-end-login/#Settings) before login was allowed a very long time ago, but the module never had a great way to manage email notifications when users were approved for access. With user verification enabled, site users would have to be approved by an administrator before they could sign in, but how would the admin control the user notification and content? The Uncanny Toolkit 3.4.1 release adds a new customizable email system (see below) as well as an easy way to suppress user verification emails entirely. Emails can also now include tokens (variables) with information that might be useful to approved users, like site name and the user’s name. [![Front End Login User Verification Email Settings](https://www.uncannyowl.com/wp-content/uploads/2021/01/Front_End_Login_User_Verification_Settings.png "Front_End_Login_User_Verification_Settings - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/01/Front_End_Login_User_Verification_Settings.png) ## Login redirect changes Ever wish users could sign in using a modal and the page would just update for the user without redirecting the user somewhere else? It’s been a common request, so the new 3.4.1 release adds the ability to *ignore* other login redirect behaviours when the modal option for login is used. In other words, maybe you have a dedicated login page on your site and you want users that sign in from that page to land on a student dashboard when they sign in. But maybe on a sales page for members you want them to sign in and *stay on that page*, only with the right content for the user once signed in. Now you can do that; here’s how: [![Front End Login ignore login redirect](https://www.uncannyowl.com/wp-content/uploads/2021/01/Front_End_Login_ignore_redirect-1.png "Front_End_Login_ignore_redirect - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/01/Front_End_Login_ignore_redirect-1.png) Still not enough flexibility for login behaviours? Now there’s a new filter that allows developers to make even more overrides; here’s what’s now included: ``` $login_form_args = apply_filters('uo_frontend_login_args', $login_form_args); ``` ## Other changes The 3.4.1 release includes a few other changes for Front End Login and other modules. We added the ability for other plugins to show error messages related to login in our Front End Login form. This came up as part of an investigation into why [Peepso](https://www.peepso.com/) was blocking logins with our plugin that we traced to a password security parameter in its settings (which was throwing an error, we just weren’t outputting it). The module also includes better support for /wp-login.php redirects. Previously, attempts to visit that page would be redirected to whatever was set as the login page using this module. While it worked without issue, our redirect dropped any querystring records from the URL when it redirected users; now the full URLs are preserved. Those are the Toolkit 3.4.1 highlights, but make sure to check out the [changelog](https://www.uncannyowl.com/knowledge-base/learndash-toolkit-changelog/) to get the full list of updates. **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Award CEU credits for anything!](https://www.uncannyowl.com/award-ceu-credits-for-anything/) **Published:** December 17, 2020 **Author:** Ryan Moore **Content:** Today’s 3.1 release of the [Uncanny Continuing Education Credits plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) is probably our biggest change to that plugin in the past year. It adds a number of changes based around this concept: credits can be awarded for *anything*. Yes, it is still a LearnDash plugin and does still require LearnDash. Credits are no longer tied to LearnDash courses, however. Admins can now add and remove credits for anything they want—that might be a classroom training session, attending a virtual event, completing third-party training, etc. There are no limits to how this might be used. ## Add and delete continuing education credits Here’s what users will now see when adding credits from the [Credits Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/): [![Uncanny Course Report: Add CEUs](https://www.uncannyowl.com/wp-content/uploads/2020/12/Course_Report_Add_CEUs.png "Course_Report_Add_CEUs - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/12/Course_Report_Add_CEUs.png) From this page, you can choose a user to assign credits to, the number of credits, the date and time for the credits, and whether or not the credits are for a LearnDash course. If they are, you can choose to mark the course as completed when you assign the credits. If the credits are *not* for a LearnDash course, you can assign a label to the credits so they’re easy to identify in reports. (For LearnDash courses, the title is automatically the course name.) Deleting credits is easy too, just selected credit entries in the report and click the **Delete credits** button. ## Uncanny Automator integration We added preliminary support for [Uncanny Automator](https://automatorplugin.com/) in the previous release of the Continuing Education Credits plugin, but with the new changes to support adding and removing credits the opportunities have really expanded. These 2 major changes, support for adding and removing *any* credit types plus Uncanny Automator integration, really move this plugin beyond LearnDash. Credits can now be triggered by submitting a form, earning a badge, making a donation, attending a live event, or really anything else at all that you can think of. And with Automator recipes, all of this happens automatically, no development or manual intervention is required. [![Uncanny CEUs and Uncanny Automator](https://www.uncannyowl.com/wp-content/uploads/2020/12/Uncanny_CEUs_and_Automator.png "Uncanny_CEUs_and_Automator - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/12/Uncanny_CEUs_and_Automator.png) The screenshot above shows what this looks like in practice. Yes, this means you can award credits for anything in [LearnDash](https://www.uncannyowl.com/share/learndash) too: passing a quiz, completing a lesson, submitting an assignment and more. Another interesting thing in the release is that the new custom credits, and credits awarded by Automat recipes, can trigger our [multi-course and multi-credit certificates](https://www.uncannyowl.com/knowledge-base/continuing-education-certificates/). ## Other updates This release probably gives you an idea of where we’re headed with this plugin and all of the exciting things that will be possible. It’s also an important release because it fixes an issue with changes to LearnDash PDF generation and it improves compatibility with the latest WordPress versions. For those reasons, this update is strongly recommended for all users of our plugin. Do you have some interesting use cases for how you’ll connect Automator recipes to continuing education credits? Let us know in the comments! **Categories:** LearnDash --- ### [7 Principles of Good Feedback in eLearning](https://www.uncannyowl.com/7-principles-good-feedback-elearning/) **Published:** June 13, 2016 **Author:** yuehchin **Content:** [![elearning-feedback](https://www.uncannyowl.com/wp-content/uploads/2016/06/elearning-feedback-300x153.jpg "elearning-feedback - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/06/elearning-feedback.jpg)Every teacher knows that it’s important to provide students with regular feedback during their learning process. Without feedback, your learners simply don’t know how well they are doing. In self-paced online learning, how do you gauge the learners’ progress when there is no instructor to provide feedback and guide their learning? Nicol and Macfarlane‐Dick (2006)1 identified seven principles of good feedback practice. In this post, we’ll discuss how you can incorporate feedback—in particular, how to apply these principles—in self-paced online learning. 1. ### Good feedback helps clarify what good performance is **What’s been done:** An approach that has proved particularly effective in clarifying performance goals and standards is to model exemplary performance. Without concrete, worked examples, concepts are just abstract ideas. In self-paced online learning, this can be achieved with case studies in which learners can identify good performance in the presented scenario. **What you can do:** When designing a case scenario, consider breaking it into multiple parts. After presenting a case, ask the learner what they would do in that scenario—this could be done with a multiple-choice question with possible reactions. Reveal the answer only after the learner has given it some thought. Your answer will be more meaningful if they interact with the material first. **WordPress Tips:** Quiz tools in [LearnDash](https://www.uncannyowl.com/share/learndash/) and other LMS plugins can be disruptive to learning for short reflective assessments; try an H5P module instead, which can be embedded directly into the lesson page. 2. ### Good feedback facilitates the development of self-reflection in learning **What’s been done:** Provide opportunities for learners to ask “where am I now?” In self-paced online learning, this is especially important if your course is broken down into many lessons, and the learner has the option to take them in any order. **What you can do:** At the end of each lesson, consider providing the learner with a concept map showing them where they are in the course. If possible, tie it with the lessons that the learner has completed to show connections. This gives them an opportunity to do a self-check before they move on to a new lesson. 3. ### Good feedback delivers high quality information to students about their learning **What’s been done:** Good feedback is personalized, specific to the individual learners. This can be done with a self-assessment, which may include multiple-choice, true/false, or short-answer questions with feedback tied to the lesson or topic that the learner just completed. This helps the learner self-evaluate whether they have a good grasp of the material. **What you can do:** Consider including customized feedback that helps the learner adjust their learning. For example, you may suggest that they review the lesson (or certain sections of it) if they answer most of the self-assessment questions wrong. You may provide more feedback if a key question that is directly linked to a performance goal is answered incorrectly. **WordPress Tips:** Conditional feedback can be difficult in WordPress, but most quiz tools support feedback or graduation text that can be used to provide insight and recommendations based on learner answers (or use something that supports conditional feedback, like Gravity Forms). For personalized feedback, we like using the \[usermeta\] shortcode on LearnDash platforms to address the learner by name wherever possible. 4. ### Good feedback encourages teacher and peer dialogue around learning **What’s been done:** One way of increasing the likelihood that your feedback will be taken in by the learners is to frame it more as dialogue rather than as instruction. This can be done with a few follow-up questions at the end of a lesson that ask the learner how they might apply what they learned in a context that’s directly relevant to them. **What you can do:** In self-paced online learning, if there is a blog or forum associated with your course, consider encouraging the learner to discuss your follow-up questions with their peers. This can be very effective when the feedback is highly contextual. Using feedback to generate discussions also encourages communities of practice in which learners who share common interests can learn from and support one another. **WordPress Tips:** [bbPress](https://en-ca.wordpress.org/plugins/bbpress/) is a great way to incorporate a simple forum and you can link to specific threads inside LearnDash lessons and topics. Be aware that taking users to a forum removes them from the course context, so make sure it’s easy for users to navigate back to where they were (like with the Resume button in our Toolkit, or easy access to a dashboard page). 5. ### Good feedback increases students’ motivation to learn **What’s been done:** As mentioned above, feedback can be embedded in a series of “check your understanding” review questions. The bite-size evaluation allows your learners to grasp concepts in smaller, manageable chunks, leveraging each step of their learning as building blocks. **What you can do:** “Drop-out” caused by low motivation is often considered the biggest challenge in online learning. Bite-size learning with self-assessment allows your learner to celebrate their progress. Success breeds success—the gradual approach helps to build up the learner’s confidence and increase their motivation to learn. You may also consider using badges to reward the learner’s milestone achievements. **WordPress Tips:** For next-level automated engagement, one intervention we really like is hooking LearnDash activities into [Active Campaign](https://www.activecampaign.com/?_r=F4147AIM), a powerful but inexpensive Marketing Automation tool. It’s not just for marketing—it’s a very effective way of keeping learners engaged by sending communications based on their learning activities. (At the time of writing, our [Active Campaign](https://www.activecampaign.com/?_r=F4147AIM) integration for LearnDash isn’t available to the public but can be added to client sites.) 6. ### Good feedback provides opportunities to close the gap between current and desired performance **What’s been done:** The end goal of providing feedback is to help learners achieve mastery and improve performance. Self-assessment at the end of a lesson can mimic the same ‘task-feedback-performance’ cycle. **What you can do:** Your feedback should help the learner recognize the next steps in learning and how to take them. It can also show how the gap between their current and desired performance is shortened each step of the way. 7. ### Good feedback provides information to teachers that can be used to help shape teaching **What’s been done:** Self-assessment is often not evaluated. However, there is significant learning data that can be extracted from these assessments to guide the student’s learning path. Their learning becomes more relevant and meaningful which, in turn, will further increase their motivation to learn. **What you can do:** Take advantage of the user progress reports that your LMS generates to better understand where your learners are. The data can help you assess the average performance of the class, and identify who may need more attention. It can also help you make improvements to your course that will benefit future learners. **WordPress Tips:** We know that progress over time can be difficult to track with WordPress LMS plugins. Running reports at defined periods and then comparing them can help; report customization is also an option. In self-paced online learning, students are already assessing their own work and generating their own feedback. Well-designed feedback creates individualized learning experience that will result in more satisfied learners. 1 *Nicol, D. J., & Macfarlane-Dick, D. (2006). Formative assessment and self‐regulated learning: A model and seven principles of good feedback practice. *Studies in Higher Education, 31*(2), 199-218.* **Categories:** Best Practices, eLearning --- ### [The Uncanny LP Beta is Ending!](https://www.uncannyowl.com/the-uncanny-lp-beta-is-ending/) **Published:** September 14, 2017 **Author:** Ryan Moore **Content:** Here’s something our clients and followers may not know: we’ve been running a beta for a secret [LearnDash](https://www.uncannyowl.com/share/learndash/) hosted platform for the last month. We didn’t want to attract too much attention while we were testing it, but for some of our dedicated followers and a few very determined searchers, they’ve had a month to explore [Uncanny LP](https://uncannylp.com) (Learning Platform). Uncanny LP is our easy-to-use, complete LearnDash platform that will make launching and managing a WordPress LMS a lot more accessible to everyone. **The Uncanny LP beta will be closing on Sunday, September 17, so that we can officially launch LP on Monday, September 18. There are [3 spots left in the beta](https://www.uncannyowl.com/downloads/uncanny-wordpress-learndash-learning-platform/) at the time of this posting to lock in LP permanently at the discounted beta price. This is the only launch discount we will be offering.** To find out more about the platform, visit . We’ll talk a lot more about LP and how it can be used after launch, but at a high level it lets anyone deploy a polished WordPress elearning platform in 24 hours at very low cost. It supports elearning (with LearnDash, of course), ecommerce, event management, gamification, social sharing and more, plus it includes all of our plugins. There are dozens of hours of screencasts and lots of documentation; combined with a simple admin interface, our goal is to really reduce the learning curve for setting up and managing a LearnDash site. [![LearnDash LP Welcome](https://www.uncannyowl.com/wp-content/uploads/2017/09/LearnDash_LP_Welcome-1030x440.png "LearnDash_LP_Welcome - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/09/LearnDash_LP_Welcome.png) Beta results have been positive so far and we’re excited to start promoting the live version of the platform next week. Interestingly, we’ve had the most inquiries about LP from agencies and designers that want multiple LP sites that they can deploy quickly for their clients. The platform will really help individuals, developers and agencies focus on building out great designs and content rather than spending weeks and countless thousands of dollars on the platform. **No beta discounts will be offered after 9 PM Eastern on September 17. There are also only 3 beta spots left, so if you want to sign up, we encourage you to do so as soon as possible by [clicking here](https://www.uncannyowl.com/downloads/uncanny-wordpress-learndash-learning-platform/). The beta will be closed early if the 3 spots are purchased before Sunday.** **Categories:** LearnDash, Uncanny LP --- ### [New to WordPress? Start Here](https://www.uncannyowl.com/new-to-wordpress-start-here/) **Published:** January 26, 2016 **Author:** Ryan Moore **Content:** ![BudhaBlogging_orangerob_mikeface copy](https://www.uncannyowl.com/wp-content/uploads/2016/01/BudhaBlogging_orangerob_mikeface-copy.png "- Uncanny Owl")We love helping people discover WordPress and use it in creative ways. In fact, its one of the things that sets us apart in the [LearnDash](https://www.uncannyowl.com/share/learndash/) consulting space—we’re educators first, developers second. Every project we work on puts heavy emphasis on training clients to use their platforms effectively and delivering a great learning experience to users. We spend a lot of time teaching people to use WordPress and we’re always looking for better ways to deliver WordPress training. That’s why we were very excited to partner with Mike Brown of [TheBloggingBuddha](https://thebloggingbuddha.com/) to create an easier way to help beginners learn WordPress. What really sets TheBloggingBuddha apart is that it’s very simple, it’s comprehensive, and it’s **free**. An account is only needed to track progress and issue rewards. TheBloggingBuddha walks new WordPress users through the entire website creation process, from buying a domain and hosting to setting up pages, posts and plugins in WordPress. By the end of the [WordPress Orientation](https://thebloggingbuddha.com/courses/wordpress-blog-orientation/) course, learners will have a fully-functional blog up and running; and best of all, they’ll understand how to use and maintain it. Here’s a video that explains TheBloggingBuddha: https://www.youtube.com/watch?v=xuBgoo401rU TheBloggingBuddha website is, of course, powered by LearnDash. That’s why we’re profiling it! The site itself is the result of a collaboration between Mike Brown ([TheBloggingBuddha](https://thebloggingbuddha.com/)), [Bourn Creative](https://www.bourncreative.com/) (site and theme development), and Uncanny Owl (all things LearnDash-related and authoring of the WordPress Orientation course). What visitors to our blog will especially like is that it’s one of very few examples of a robust LearnDash site where all LearnDash courses are available to everyone at no cost. It’s often hard to showcase LearnDash on WordPress sites because the LearnDash content is only available to paid users. With TheBloggingBuddha everything is free—even without an account (users without an account just can’t see videos). For our LearnDash readers, you can jump straight to lessons on [how to start a blog](https://thebloggingbuddha.com/courses/wordpress-blog-orientation/) to see how the course was set up in LearnDash. LearnDash was only lightly styled, and the Course Grid and BadgeOS plugins help to improve the look & feel as well as engagement. We did some development to handle things like a personal greeting, encouraging users to create an account, and redirections, but we really kept plugins and development to a minimum. It’s a great example of what can be done with LearnDash and some very minor customizations. We hope you enjoy [TheBloggingBuddha](https://thebloggingbuddha.com/) and find it useful, both for WordPress training and as a LearnDash showcase! **Categories:** Learning --- ### [LearnDash Groups for Tin Canny](https://www.uncannyowl.com/learndash-groups-tin-canny/) **Published:** February 10, 2017 **Author:** Ryan Moore **Content:** Wednesday’s update to our popular [Tin Canny LearnDash Reporting plugin](https://www.uncannyowl.com/downloads/tin-canny-reporting/), which adds easy [LearnDash](https://www.uncannyowl.com/share/learndash/) and xAPI/Tin Can reporting to WordPress sites, introduced Group Leader access to the Tin Canny reports. With this change, LearnDash Group Leaders now have access to a powerful reporting tool to better understand the learning activities and training records of learners in their groups. Group Leaders can drill down into the courses and users assigned to their LearnDash Groups to see both summary and granular details about the activities of their learners. ![Tin Canny LearnDash Reporting](https://www.uncannyowl.com/wp-content/uploads/2016/11/tin-canny-view-1030x624.png "tin-canny-view - Uncanny Owl") As always, Tin Canny remains a *back end* reporting tool, making access consistent with ProPanel and LearnDash Group Leader tools. Access for Group Leaders is automatic; nothing needs to be turned on and Group Leaders can immediately see all existing records. Do note that Group Leaders see *everything* for their assigned groups as consolidated data, so if Group Leaders are assigned to multiple groups, they will see all data together in the LearnDash reports. (Tin Can reports can, as before, be filtered by LearnDash Group.) We’re really excited with this release and it’s a *very* big change that took weeks of development. The new addition is going to make it a lot easier for Group Leaders to gain actionable insights about the activities of their learners. Combined with the SCORM support introduced in version 1.2 (which has seen a lot of positive feedback from users), Tin Canny is perhaps the most comprehensive reporting platform available for elearning in WordPress. Be sure to check out the [Tin Canny Knowledge Base articles](https://www.uncannyowl.com/article-categories/tin-canny-learndash-reporting/), which have already been updated with information about the Group Leader changes. We hope your users find the addition of Group Leader support helpful! **Categories:** LearnDash, Tin Can --- ### [ProPanel 2.0 or Tin Canny for LearnDash Reporting?](https://www.uncannyowl.com/propanel-2-0-tin-canny-learndash-reporting/) **Published:** November 16, 2016 **Author:** Ryan Moore **Content:** Yesterday marked the release of the [ProPanel 2.0 plugin](https://www.learndash.com/introducing-propanel-version-2-0/) for [LearnDash](https://www.uncannyowl.com/share/learndash/), which is a very exciting improvement for LearnDash users. We’re very pleased to see it available and it makes sense to include it on many of the LearnDash sites we support. Now that it is available, we expect to see a lot more questions from LearnDash users about whether it makes sense to use our [Tin Canny LearnDash Reporting](https://www.uncannyowl.com/downloads/tin-canny-reporting/) plugin or ProPanel, so in this post we’ll explain some of the differences and why one and/or the other might be appropriate for your site. [![ProPanel 2.0](https://www.uncannyowl.com/wp-content/uploads/2016/11/reporting-widget.gif "reporting-widget - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/11/reporting-widget.gif)ProPanel 20First, the 2 plugins are *not* directly competitive and they serve very different purposes. We fully expect to use both ProPanel 2.0 and the Tin Canny plugin on many of our sites. They actually work quite well together as complementary tools. Our Tin Canny plugin is *purely* a reporting plugin for site administrators (at the moment). ProPanel 2.0 includes an invaluable tool for emailing learners by group and completion status, a learning activity stream, a Group Leader view, and easy access to assignments and essays. Tin Canny doesn’t do any of these things, and we never expect to add anything related to emailing, essays or assignments. If you rely on these things, you’ll want ProPanel. [![Tin Canny LearnDash Reporting](https://www.uncannyowl.com/wp-content/uploads/2016/11/tin-canny-view-1030x624.png "tin-canny-view - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/11/tin-canny-view.png) [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/), of course, does some things that ProPanel does not. The obvious, of course, is facilitating the upload and tracking of Tin Can modules, including Storyline, Captivate and H5P content. ProPanel doesn’t consider Tin Can/xAPI activity reporting. Our reporting also looks at activity trends and additional data points like time spent in LearnDash courses, quiz scores, specific activity inside a course, etc. Tin Canny is also going to push server load more, as it looks at a lot of data; it’s not recommended in shared environments where resources are limited, and it will provide the most value to large sites with a lot of users. If price is a consideration, our plugin is significantly more expensive than adding ProPanel. In the end, both plugins can be invaluable additions to LearnDash sites, and choosing one doesn’t mean you can’t also use the other. The combination of both plugins really extends the reporting power of LearnDash. **Categories:** LearnDash, Tin Can --- ### [Slashing LearnDash Consulting Costs](https://www.uncannyowl.com/slashing-learndash-consulting-costs/) **Published:** July 22, 2014 **Author:** Ryan Moore **Content:** [![browser-demo2](https://www.uncannyowl.com/wp-content/uploads/2014/07/browser-demo2-300x231.png "- Uncanny Owl")](https://lms.uncannycloud.com)[LearnDash](https://www.uncannyowl.com/share/learndash/) is a great low-budget LMS, but getting it (and WordPress) set up just the right way can be surprisingly time-consuming and complex. More often than not, customizations and complementary tools are needed to deliver the right user experience. For someone jumping into WordPress, an LMS and PHP for the first time, it can all be a bit overwhelming. That’s why so many companies turn to Uncanny Owl, and it’s why LearnDash now represents about 40% of our work. Many people choose LearnDash because of the low price and simplicity compared to other Learning Management Systems. Going from a LearnDash license to a live website requires a lot of work, however, and the $5,000 to $10,000 price for a typical LearnDash implementation with Uncanny Owl was a barrier to many companies. Of course, that’s a small price to pay for the companies that spent months trying to build their own sites before turning to us! With so many LearnDash projects behind us, however, we’ve come to realize that most of our clients want the same things. They want lots of placeholders with lots of content types that they can reuse; they want everything to look pretty and be user-friendly; they want it easy for learners to find and complete lessons; and they want hand-held training so they can be independent without wasting months learning everything themselves. To make a custom LearnDash solution more accessible, Uncanny Owl created a base platform that’s reusable rather than starting from scratch for every client. That means we save days of effort on our side and we can pass those savings on to clients. To make it as easy as possible for anyone to get started with LearnDash, we’re now offering a basic implementation that uses our base platform for just $2,500. It’s designed for businesses that want to get online quickly, don’t have a lot of obscure requirements, are short on time to devote to learning new technology and have to work with a low budget. For these clients, our new offer is probably a great starting point. Keep in mind that we can’t just drop it onto your site; a lot of customization is still required to get things ready for you, and we target a turnaround time of 2 weeks. The new LearnDash demo site is now online at . If you’re just looking for a LearnDash demo to check out, keep in mind that we’ve added a lot of features and customizations to create a platform that delivers what most of our clients need. This isn’t what you should expect out of the box with LearnDash. More details about the offer are on new [LearnDash LMS page](https://www.uncannyowl.com/product/learning-management-system/ "Branded LMS"). It’s brand new, so we’d love to get your feedback about the offer in the comments section below! **Categories:** Learning, News --- ### [Uncanny LP Is Now Available](https://www.uncannyowl.com/uncanny-lp-now-available/) **Published:** September 21, 2017 **Author:** Ryan Moore **Content:** WordPress has become a very strong platform for elearning over the last few years. With such wide use, great elearning tools, flexibility and strong development community, there are a lot of advantages over proprietary Learning Management systems and platforms that only do elearning. There is a tradeoff though: it’s hard to build and support robust elearning sites with WordPress. It typically takes months to get a site off the ground and a skilled developer is needed to do things well. For many people that puts a WordPress elearning platform out of reach—until now. [Uncanny LP](https://uncannylp.com), a hosted platform powered by WordPress and [LearnDash](https://www.uncannyowl.com/share/learndash/), finally makes it possible for businesses to launch polished elearning sites quickly and easily without any development. Uncanny LP includes the basics that every site needs to launch and to deliver an engaging learning experience. From LMS tools and ecommerce to event management and gamification, it’s a complete platform that works seamlessly for everyone wanting a working LearnDash site without the need for an experienced developer. [![Uncanny LP Welcome Screen](https://www.uncannyowl.com/wp-content/uploads/2017/09/LearnDash_LP_Welcome-1030x440.png "UncannyLP Welcome Screen - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/09/LearnDash_LP_Welcome.png) ### What is Uncanny LP? Uncanny LP is a complete learning platform that we built from the ground up to provide what many organizations tell us they want in a WordPress LMS platform. We look after the platform—including maintenance, security, performance, and backups—so you can focus on the design and content. It’s the fastest, safest, and easiest way to build out a LearnDash-powered platform for your business, and it comes ready to go with all of the following: - Strong LMS capabilities powered by [LearnDash](https://www.uncannyowl.com/share/learndash/), the most feature-rich WordPress LMS plugin available. - Support for almost limitless content types, including video, audio, quizzes, tables, Captivate, Storyline, iSpring, Rise, H5P and more. There’s even support for Tin Can (xAPI) and SCORM tracking. You won’t find this level of elearning content support in any other WordPress solution. - Intuitive group and license management. Go B2C or B2B; it’s easy to support both audiences with ecommerce and enterprise features like self-managed groups and front end management reporting. - Certificates, Continuing Education Credits, and badges that make it easy to recognize achievements online and offline. - Event management for live events, including paid tickets and attendee management. - eCommerce that supports one-time payment, subscriptions, coupons and code-based registration. Accept payment with PayPal or Stripe; we also secure your site with SSL - Deep CRM integration and compatibility with Infustionsoft, Active Campaign, Ontraport and more. Sync data from optins, purchases, user profiles, course behaviour and more. - Discussion forums for online collaboration, both public and private. - Great performance on specialized WordPress hosting where security, backups and other admin headaches are taken care of for you. - Extensive documentation and training materials. - Support from a North American team of experienced Learning developers and educators. ### Who is Uncanny LP for? We get a lot of inquiries about custom WordPress elearning platforms but we only work with about 10% of the organizations that reach out to us. Why is it such a small number? Almost without exception, it comes down to cost and timing. LearnDash development can be expensive; our average project budget is over $10,000. Many people not familiar with custom development are sometimes surprised by the cost. Development time can also be unexpected. We typically have a 4 week lead time, and there are a *lot* of people out there that leave LearnDash projects or enhancements to the last possible minute. After the lead time, sites often take 4 to 10 weeks to build. Finding this out left a lot of potential customers very scrambling for a solution—and there really was no alternative for getting a robust LearnDash site up quickly. Uncanny LP addresses that gap. It’s for the thousands of people and small businesses that need a simple, flexible learning platform. Maybe the per user cost of a cloud LMS are prohibitive, or maybe they don’t want separate websites for everything they’re doing. We hear from hundreds of these users every year, in need of a robust solution but overwhelmed by the complexity of building it themselves. These are people that don’t have the budget or time for a full-blown, custom LMS when 90% of their needs aren’t that unique. Until now, these organizations had no easy solution in the marketplace. Here are just a few examples of organizations that would find significant value in Uncanny LP: **The author/keynote speaker** selling video-based training directly to the public. She can turn on the eCommerce, CRM integration and Marketing LP modules and be ready to go. From there it’s just a matter of adding branding and content. **The mid-sized company doing internal training** that needs an easy way to track self-directed compliance programs and CPD/CEU credits. All LP modules can be turned off and the system can be hidden from search engines; LearnDash Groups can be used to track training by department. **The small business offering niche sales training** can turn on eCommerce, events, gamification and marketing modules to coordinated blended learning programs. They might even incorporate interactive Storyline modules and discussion forums to augment their training offer. Selling B2B licenses to organizations is even supported. **The professional coach** might use the event, gamification and marketing modules to offer long-term, facilitated programs to groups of students. Incorporating the CRM integration module allows him to set up campaigns in Infusionsoft to promote automated engagement based on learning activities. **The college professor** can turn on discussion forums and gamification to build supplementary modules that augment the classroom experience and promote more learning opportunities. There are countless scenarios where Uncanny LP will be the right fit for an organization. Some of the best reasons include the following: - Hundreds or thousands of active monthly users means per-user costs with cloud LMS providers are prohibitive - Tight integration of common features that a traditional LMS lacks (like event management and CRM integration) - Time is limited and a robust, secure elearning platform is needed quickly - WordPress seems like the right fit but the site owner is new to WordPress and just needs things to work - The organization doesn’t have a $10,000 plus budget and can accept a platform that does 95% of what they want for a 95% discount Whatever your reason for choosing Uncanny LP, you’ll get a solid, safe platform backed by one of the most experienced LearnDash development agencies out there. ### Get Started with Uncanny LP To learn more about Uncanny LP features and benefits, be sure to check out our new site at . It’s the best way to see how the platform can benefit your organization. [![Uncanny LP Intro Course](https://www.uncannyowl.com/wp-content/uploads/2017/09/uncanny-lp-course-1030x382.png "uncanny-lp-course - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/09/uncanny-lp-course.png) To better understand how LP works and how to set things up, we’ve made some of the free training available in [our introductory course](https://www.uncannyowl.com/courses/uncanny-lp/). We hope you’ll check it out! There are dozens of screencasts and it’s about a 10-hour training program. To get started with your own Uncanny LP site, [click here](https://www.uncannyowl.com/downloads/uncanny-wordpress-learndash-learning-platform/). You can start using your own LP site as early as tomorrow. **Categories:** LearnDash, Uncanny LP --- ### [Branding for LearnDash Groups](https://www.uncannyowl.com/branding-learndash-groups/) **Published:** August 8, 2016 **Author:** Ryan Moore **Content:** Do you sell courses to organizations? If you do, you probably wish there was an easier way to tailor your course and site branding to your clients without having to use multisite or cloned courses. With today’s release of a new [Pro branding module](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) for LearnDash Groups, you can *easily* deliver organizational branding right inside your existing courses! ![group_logo](https://www.uncannyowl.com/wp-content/uploads/2016/08/group_logo.png "group_logo - Uncanny Owl")Our new branding module adds 2 important features to [LearnDash](https://www.uncannyowl.com/share/learndash/) sites: group logos and front-end group lists. After adding a logo to LearnDash groups, just add a shortcode anywhere you want users to see the logo associated with their group. It might be a learner dashboard, a contact page—it could even be in the header of your site. How much would your clients like their users to see branding associated with their organization? It’s completely dynamic, so users will only see the logo for the group they’re a member of. If you use our [Group Registration module](https://www.uncannyowl.com/knowledge-base/group-sign-up/), you can even display the logo for the associated group on the user registration page. It helps users validate that they’re on the right page, and it helps your client organizations deliver the right branding for their users—all without multisite. Our [shortcode for group listings](https://www.uncannyowl.com/knowledge-base/ld-group-logo-list/) seems simple at a glance, but it’s actually an *extremely* powerful way to give courses the feeling that they were created just for an organization’s users. What the shortcode does is list the user’s LearnDash Group on the front end. Let’s suppose that a site has 2 users, Ryan in a group called “Uncanny Owl” and Ken in a group called “LearnDash”. Inside one of the course lessons we include the phrase, “At \[uo\_group\_list\], we embrace diversity.” When Ryan views the lesson, he would see “At Uncanny Owl, we embrace diversity.” Ken, on the other hand, would see “At LearnDash, we embrace diversity.” We’re *very* excited about using this new shortcode on client sites to deliver the experience of branded courses without the hard work and complexity that usually goes along with it. **Categories:** eLearning, Uncanny LearnDash Toolkit --- ### [Introducing the Uncanny LearnDash Toolkit Pro Modules](https://www.uncannyowl.com/uncanny-learndash-toolkit-pro/) **Published:** July 18, 2016 **Author:** Ryan Moore **Content:** Earlier this year we released our first public plugin to the WordPress Repository. The [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/) has developed a huge following since its release, with over 1,000 active installs and over 4,000 downloads, and we wanted to take that foundation and add a number of new capabilities that would help LearnDash site owners really take their learner experience to the next level. The [Pro set of modules for the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) is our first paid plugin and represents the culmination of hundreds of hours of internal development time. The new modules are considerably more complex than what’s in the current plugin, but they’re also very powerful and fundamentally change what’s possible with LearnDash sites. Here are the modules included in the initial release of the [Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) plugin (usage instructions are left to our Knowledge Base articles in the links because of module complexity): [Autocomplete Lessons and Topics](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics/): As simple as it sounds, this module marks lessons and topics as completed when the page is visited so learners no longer have to click Mark Complete on lessons and topics. [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/): Adds time tracking to LearnDash courses. Both total course time (across course, lesson, topic and quiz post types) and course completion time are recorded as learners complete learning activities. Results are added to LearnDash reports and can be displayed to users via shortcodes. [LearnDash Group Expiration](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/): Expire course access for LearnDash Groups by calendar date. On a specific date, all courses can be removed from a LearnDash Group (revoking access for associated users), making it easier to sell courses to organizations and remove access automatically. [Enhanced Course Grid](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/): This module provides an alternative way to display courses in a grid-based system that’s particularly useful to signed-in users. It’s extremely flexible. [Course Dashboard](https://www.uncannyowl.com/knowledge-base/learndash-course-dashboard/): We took the basics of the ld\_profile shortcode but modified the design (and content) to fit seamlessly into typical landing pages for learners. [Learner Transcript](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/): This report shortcode generates a printable view of user progress across all LearnDash courses. It’s a better way for learners to share their accomplishments offline and with other parties. [Duplicate Pages and Posts](https://www.uncannyowl.com/knowledge-base/duplicate-pages-posts/): A simple module that clones LearnDash post types, but with proper support for quizzes and quiz questions. With this module you can skip the export/import quiz steps normally recommended. [Days Until Course Expiry](https://www.uncannyowl.com/knowledge-base/days-until-course-expiry/): Show learners the number of days until access expires (rather than the calendar date available with LearnDash). [Drip Lessons by LearnDash Group](https://www.uncannyowl.com/knowledge-base/drip-lessons-by-ldgroup/): Set specific drip dates for every LearnDash group instead of every group being bound to the same dates. [LearnDash Table Colors](https://www.uncannyowl.com/knowledge-base/learndash-table-colors/): Adds a simple way to restyle LearnDash course, lesson, quiz and dashboard tables by changing the colors of the header background and text. [LearnDash Group Registration](https://www.uncannyowl.com/knowledge-base/group-group-registration/): Adds a front-end registration function for adding users to both WordPress and LearnDash Groups at the same time. It even supports users switching groups or adding additional groups to a user from the front end. Gravity Forms or Theme My Login are recommended for this module but not required. The Pro plugin requires PHP 5.3 or higher, [LearnDash](https://www.uncannyowl.com/share/learndash/) 2.1 or higher, and the [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/) version 1.3 or higher. These 3 things are really important, so please make sure your site is updated before you purchase and install the Pro modules! Some of the new modules are reasonably complex, and it’s very important that you read the Knowledge Base articles and watch the screencasts before you start using the plugin. If you do run into any problems or questions, send us a note! We hope you like the new Pro modules and that they help to improve your LearnDash sites! ### [Uncanny LearnDash Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) - 1 Year License – $149.00 - 1 Year Business License – $249.00 - 1 Year Unlimited License – $449.00 - 1 Year License – $199.00 - 1 Year Business License – $349.00 - 1 Year Unlimited License – $499.00 - 1 Year Agency License – 50 sites – $499.00 BUY NOW [Checkout](https://www.uncannyowl.com/checkout/) Added to cart **Categories:** Best Practices, eLearning, Uncanny LearnDash Toolkit --- ### [Great LearnDash Plugins You Don't Know About](https://www.uncannyowl.com/great-learndash-plugins-you-dont-know-about/) **Published:** September 30, 2016 **Author:** Ryan Moore **Content:** [LearnDash](https://www.uncannyowl.com/share/learndash/) users are fortunate to have dozens of plugins available that extend its functionality and make it easy to integrate with other plugins and apps. Some of those plugins enjoy very wide recognition, including our own [useful LearnDash plugins](https://www.uncannyowl.com/plugins/) (our [free LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/) is now installed on over 7,000 LearnDash sites and is the most installed LearnDash plugin in the WordPress repository). Other plugins are [showcased on the LearnDash site](https://www.learndash.com/extensions/), but there are many others still flying under the radar. We want to introduce a few of them to you in this article. ### WP Fusion We love it when LearnDash clients incorporate marketing automation tools into the delivery of their elearning programs to make them more engaging and improve learning outcomes. Historically this was the realm of Memberium and Infusionsoft, and while both tools work reasonably well, as developers we were never particularly fond of using either (and invariably ran into complications setting them up for clients). We much prefer using [Active Campaign](/share/activecampaign) for simple marketing automation (it’s what we use ourselves) and [WP Fusion](/share/wpfusion) does a great job of integrating LearnDash with Active Campaign. We’re so pleased with it, in fact, that we’d actually built a competitive plugin and abandoned that work after we discovered and started using WP Fusion. The code is not obfuscated and doesn’t have special server requirements (unlike Memberium) so it’s easier to work with. Moreover, Jack, the developer, has been very receptive to feedback and has added features we’ve requested, like the recent addition of tags for LearnDash groups. ### Learning Templates Dennis at [Learning Templates](https://learning-templates.com/) has created some very compelling LearnDash plugins for LearnDash Groups, including an assignment gallery and a plugin that isolates comments on LearnDash posts to a user’s LearnDash Group. While we haven’t used the plugins on any of our client sites yet, they address some gaps in LearnDash Groups that we’ve also experienced and it’s great to see another Canadian company doing LearnDash development. ### LearnDash Topic Progression Using Storyline/Captivate Chris over at [Discover eLearning](https://www.discoverelearninguk.com/) released [a plugin](https://wordpress.org/plugins/learndash-topic-progression-using-storyline-or-captivate/) that makes it a lot easier to integrate Articulate Storyline and Adobe Captivate files into courses by building a clever solution to have Storyline and Captivate modules control the LearnDash Mark Complete button. Our [Tin Canny Reporting plugin](https://www.uncannyowl.com/downloads/tin-canny-reporting/) does this as well, but for simple integration with Storyline and Captivate, the Discover eLearning plugin can’t be beat—and it’s free! Do you have any favourite public plugins for LearnDash that didn’t make the LearnDash extensions page or our list here? Tell us about them in the comments! **Categories:** LearnDash --- ### [Import LearnDash Users](https://www.uncannyowl.com/import-learndash-users/) **Published:** March 13, 2017 **Author:** Ryan Moore **Content:** The [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/) is now trusted on our 4,000 [LearnDash](https://www.uncannyowl.com/share/learndash/) sites to improve the learner experience and make things easier for site admins. It is by far the most popular free LearnDash plugin in the WordPress repository, and our [Pro modules add-on](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) continues to bring new improvements and capabilities to LearnDash sites. Today we’re very pleased to introduce version 2.0 of both the Toolkit and Pro modules. The free Toolkit makes configuration activities less confusing, and the Pro plugin adds one of our biggest module additions ever: the ability to import users via CSV file and add them directly to LearnDash courses and groups. If you’re asking yourself why that might be needed when there are several plugins that support importing users via CSV and adding them to groups by including usermeta values, once you see our module it will be very clear how much safer and more efficient our approach is. ![import_learndash_users](https://www.uncannyowl.com/wp-content/uploads/2017/03/import_learndash_users.png "import_learndash_users - Uncanny Owl") The new [Import LearnDash Users](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) module, available today to all Pro plugin users at no extra cost, gives you an easy-to-use interface to choose which courses and groups to add users to. It allows custom (and optional) notification emails with lots of variables to make sure learners get the right messaging to start using your site. It adds group and course enrolment in a *safe* way that doesn’t risk what we call “ghost groups” with regular CSV import plugins (which add extra fields to user profiles which, on save, can incorrectly add users to groups they’re not supposed to be in). It includes extremely thorough validation steps so you know exactly what will happen on import, and then it allows you to correct your files before they’re uploaded and add unexpected data to the system. Following import, it confirms exactly what actions were taken, so you’re never guessing about what succeeded and what didn’t. It’s a long video, but we encourage you to skim through the screencast below so you can see just how powerful and useful the [Import LearnDash Users](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) module can be. This plugin isn’t just for adding new users to LearnDash courses and groups. It can be used as a general user import tool if you exclude LearnDash column headings. It can also be used to update user profiles or add new groups and courses to a list of users, so if you have a list of users you want to add to a new group, it’s easy to do that without affecting their existing course and group enrolment. ![importusers_performimport](https://www.uncannyowl.com/wp-content/uploads/2017/03/importusers_performimport.png "importusers_performimport - Uncanny Owl") As with many of our plugins, this is a powerful and complex tool, so we strongly encourage you to read the [Knowledge Base article](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) and the instructions in the tool before you upload your first CSV file. We hope you find this new addition to the Pro modules as helpful as we do! Let us know your comments and suggestions below. **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Updates? We’ve Got Updates!](https://www.uncannyowl.com/updates-weve-got-updates/) **Published:** November 21, 2017 **Author:** Ryan Moore **Content:** It’s been a very busy 2 weeks in the [LearnDash](https://www.uncannyowl.com/share/learndash/) world. [Version 2.5 of LearnDash](https://www.learndash.com/online-course-creation-has-just-evolved/) was released on November 7, bringing long-awaited features like a visual course builder and the ability to include lessons and topics in multiple courses. The latter is a fundamental change to how courses can be organized and developed. For LearnDash users, the changes bring welcome new features and far more flexible ways to author courses. And for plugin developers like us, we have to rethink how course relationships work and find new solutions when there are significant architectural changes to the plugins we depend on. For the last 2 weeks we’ve been working tirelessly to add proper support for LearnDash 2.5 to our plugins. This wasn’t always easy, as LearnDash changed how lessons, topics and quizzes mapped to courses—and with plugins as big and as complex as ours, we have a lot of code that has to look up course relationships, labels, and more. [![](https://www.uncannyowl.com/wp-content/uploads/2017/11/toolkit-ratings.png "toolkit-ratings - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/11/toolkit-ratings.png)We released a significant update to the [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/) 2 weeks ago that addressed several 2.5 related issues and also added a simple new module for easy [User Switching](https://www.uncannyowl.com/knowledge-base/user-switching-module/). That plugin has now crossed the 8,000 active installs barrier (yay!) and no issues tied to 2.5 have been reported. (As an aside, with 8,000 installs and only 6 reviews, I think we may have one of the lowest review to install ratios in WordPress; if you use the plugin, [don’t forget to leave your review](https://wordpress.org/support/plugin/uncanny-learndash-toolkit/reviews/)!) Last Wednesday we released a big update to [Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/), addressing multiple 2.5 issues (with the timer, course expiry, group drip and autocompletion) and we added a completely new way to track time for courses. It’s still in beta, so we suggest testing it on Staging sites first, but it’s a more efficient way of recording time and can potentially reduce the resources used by our old timer by 80%. On less powerful sites where resources were already being pushed, we do suggest giving the new tracking method a try. And because it’s lighter, we do now allow a polling interval down to the 5 second level for increased accuracy (the previous limit was 10). [![LearnDash Timer](https://www.uncannyowl.com/wp-content/uploads/2017/11/beta-learndash-timer-1.png "beta-learndash-timer - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/11/beta-learndash-timer-1.png) The update to our [LearnDash Groups plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) was released on Thursday. It’s less related to 2.5 but covers a *lot* of fixes to our Groups plugin. It’s still our newest plugin and it receives the most feedback and suggestions for improvement, so if you use Groups, you should absolutely update. There are a lot of improvements. The [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) update with LearnDash 2.5 fixes was released earlier today. We had a lot of complications with this one to make sure course attributions were correct with the 2.5 changes, so it unfortunately took the longest to release. That’s it! Those were a lot of plugin updates for us in a short span. Let us know if you do notice any new issues related to LearnDash 2.5 and we’ll happily take a look. **Categories:** LearnDash, Tin Can, Uncanny LearnDash Toolkit --- ### [New Course Certificates and Lesson/Topic Grids!](https://www.uncannyowl.com/new-course-certificates-lesson-topic-grids/) **Published:** June 23, 2017 **Author:** Ryan Moore **Content:** As we head into the 1-year anniversary of our [Pro plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) for the [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/), our most popular product, we’re excited to announce 3 new features that will make life easier for many [LearnDash](https://www.uncannyowl.com/share/learndash/) admins! Today’s 2.1 release, available to all new and existing Pro users, adds the ability to send course certificates as PDF files on course completion, a new grid option for lessons and topics, and a new attribute that makes our dashboard module a lot more flexible. ### Send Course Certificates by Email We’ve supported sending LearnDash certificates as PDF files with quizzes for a long time, but the ability to send **course** certificates to learners, Group Leaders, administrators and other users was a gap. In this release we’re adding support for emailing those certificates, which are triggered on course completion and sent exactly as quiz certificates would be. ![course certificates settings](https://www.uncannyowl.com/wp-content/uploads/2017/06/course_certificate_settings.png "course_certificate_settings - Uncanny Owl") The functionality is largely the same as the quiz certificates function but this is set up as its own module. It can be used with or without the quiz certificate emails; there are no dependencies. For easier retrieval of certificates, you can save the files to your web server and we’re including the user’s email address in the file name. (You could also retrieve them from a user’s profile with LearnDash, of course, but this makes it easier to manage large sets of certificate files if required.) ### Enhanced Lesson and Topic Grid Our Enhanced Course Grid was one of the earliest modules in the plugin and introduced a very flexible way to organize LearnDash courses into a visual grid. But it only ever supported courses, and on almost all of our sites we were limited to pretty basic tables listing available lessons and topics. We had done some interesting things with CSS to restructure the tables as grids for some clients, but until now we didn’t have a robust grid model for wider use. ![LearnDash Lesson & Topic Grid](https://www.uncannyowl.com/wp-content/uploads/2017/06/lesson_topic_grid.png "lesson_topic_grid - Uncanny Owl") This new module effectively brings the basics of the Enhanced Course Grid to lesson and topic tables. Instead of a flat table with text and checkmarks only, you can now show users a highly visual grid format that can incorporate featured images. The module allows control over the use of featured images and the number of columns displayed. For more flexibility, you can either enable these grids globally or add the grid shortcode to specific course or lesson pages on which you want them to appear. You can even use shortcodes for these grids on non-LearnDash pages and posts. ### LearnDash Course Dashboard On several of our client sites we found that we had outgrown the default behaviours of the dashboard shortcode. For one thing, it was useless for signed out users—and we unexpectedly had a few clients want to use it that way. In this iteration of the dashboard shortcode, you can use a new “show” attribute to populate the table with only enrolled courses (which is the current behaviour), all courses (show everything, regardless of enrolment status), and “open”, which we’re using to show open courses to logged-out users (signed in users see enrolled courses). We think these additions will make the shortcode a lot more flexible. We hope you enjoy the updates! **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [How to Choose a LearnDash Developer](https://www.uncannyowl.com/choose-learndash-developer/) **Published:** May 5, 2017 **Author:** Ryan Moore **Content:** As [LearnDash developers](https://www.uncannyowl.com/wordpress-lms/) with some visibility in the WordPress LMS community, we get a lot of requests to fix bad projects. It’s so easy for things to go wrong, and selecting the wrong partner can often mean the project is doomed before you even start. In this post we’ll explore the most important things to consider when choosing a developer for any WordPress elearning project. Our expertise is in [LearnDash](https://www.uncannyowl.com/share/learndash/), but all of this applies equally to [LifterLMS](https://lifterlms.com/), [Sensei](https://woocommerce.com/products/sensei/), and any other WordPress LMS plugin that you’re building your platform around. This post isn’t about selling our services; we’re already at capacity and have unfortunately had to stop accepting new clients several times recently. What we want to do with this blog post is raise awareness so that when you are looking for a partner to help build your LearnDash site you better understand how to choose an organization that is competent and will be able to deliver a robust platform that meets your needs. If you’re starting out on your first LearnDash development project, here are some things to consider as you look for a partner: **Start with a conversation**. We really find that emails don’t work well enough to ensure all parties are on the same page and to ask questions easily. It’s great if you can come to that conversation with clear goals and questions. The vendor should have questions too. Relationships are absolutely critical to successful projects and this is where they start. Take notes and be thorough. If you’re comparing vendors, make sure you have a consistent way to assess them and document everything immediately after the conversation. Also be prepared for several conversations; it’s rare that initial discovery and planning can be completed in a single session, unless it’s a very small project. ![learndash discussion](https://www.uncannyowl.com/wp-content/uploads/2017/05/learndash-discussion.jpg "learndash-discussion - Uncanny Owl") **Ask if you can see some of the company’s other projects**. Do keep in mind that for LearnDash projects most of the development work tends to be behind registration or a paywall, so the access developers can provide is limited. Again, this is where a call (or preferably web conference) can be very helpful, as on a call the developers can actually sign into sites and show how things are set up or created. Experienced LearnDash experts should have easy access to a variety of representative samples. Ask for some walkthroughs and get more information about what specifically the developers did. Give consideration to what works and what doesn’t, and how similar previous projects might be to your own. Experience is extremely important when setting up intuitive, effective elearning platforms with WordPress. **![learndash testimonials](https://www.uncannyowl.com/wp-content/uploads/2017/05/testimonials.png "testimonials - Uncanny Owl")Check out community feedback**. This can be really hard to find in the LearnDash space, but it’s still important to make an effort and solicit experiences about working with the vendor. Maybe there’s feedback on social media, plugin reviews for things they may have developed, the LearnDash support forums, even reaching out to previous customers. Also look for negative feedback, which can often be more telling than positive comments. **Don’t just look locally**. There are very few WordPress agencies and developers that have a significant amount of LearnDash experience. We’ve seen a lot of projects where businesses chose someone they know who’s done other work for them (LearnDash is just one plugin, right?) but couldn’t transition to considerations like the signed-in experience, student workflow, making things work together, etc. To get the best partner, expand your search range, potentially even to other countries. We’re in Toronto but we have many clients in Australia; it’s not as hard as you might think to make projects like that work. **Get to know who you’ll be working with**. Without question, the #1 reason we’ve taken over several projects from experienced LearnDash developers hasn’t been bad code quality or poor implementation—it’s been a communication breakdown. Communication issues are painfully common with these projects and site owners come to us because they have a site they don’t know how to use, isn’t what they expected or they’re tired of saying the same thing over and over. Whoever is setting up your site is someone you’ll be working with for over at least several weeks, perhaps even several years. There has to be a rapport. There must be trust. And it has to be really easy to communicate and make sure everyone is always working towards the same goals and scope. You don’t want to be talking to 5 different people and for discussions to only happen by email with week-long gaps between them. **Try to assess technical competence and workflow**. While communication issues abound, there are still a lot of developers out there that simply bite off more than they can handle with LearnDash and don’t really know what they’re doing. They might be great people that really want to help, but that doesn’t mean they should be building LearnDash sites. Just last month we took on a site where the developers had made changes to LearnDash core and even WordPress core—and that should never, ever happen. The client, of course, wondered if it was normal for everything to break and have to be fixed on updates (it’s not). So ask LearnDash partners how they work and look out for red flags. How do they implement changes? How do they test updates? How do they work collaboratively? Who’s responsible for testing and validation? How does a project actually come together? If they have public plugins, what are the reviews like and what issues are people having? We have also seen individuals take on projects that were just too big for one person and then, when they’re overwhelmed, they’ve walked away. Try to get a sense of whether or not the developer or development team has the right skill set and/or the right people in place to handle everything that’s needed. **Ask about training and maintenance**. Building a LearnDash site means a lot more than setting up a site and installing some random plugins—yet we see that happen a lot. Your goal also shouldn’t just be to have a site that seems functional at the end; it should be to have a LearnDash site that you understand how to use and leverage to improve your business. When we’re investigating a new site, we almost always have a conversation that goes like this: “Do you know why this is set up this way?” “No.” “Do you have any documentation that might explain it?” “No.” “Is there any way you could find out?” “No.” As a site owner, we understand how scary it can be for you when we ask those questions and you realize you don’t really understand your site. From the beginning you need to make every effort to ensure you’re working with a partner that won’t leave you in that situation. Training and communication throughout a project are absolutely essential. We average creating maybe 4 screencasts per project so that clients always have a point of reference for how things work and why. Find out what your partner’s process is to make sure you’ll be left in a place where you’re comfortable. Also confirm what’s typically required following projects in terms of maintenance and who will be taking care of that. For most projects we are able to hand things off in a way that clients can safely make updates themselves and we’re only needed for answering questions on an ongoing basis—not to keep things up and running. **Don’t be driven just by price**. You will inevitably get what you pay for. We’ve taken on a few projects that we scoped out months or even years previously; the business decided to go with a different vendor that was a lot less expensive, and then they came back to us to fix them, often at a higher price than they would have paid if we’d just done the project originally. Budget is a huge consideration, of course, but it should be carefully balanced against other factors like the competence of the developer, your relationship with them, the developer’s experience in similar projects, etc. **Understand exactly what will happen during the project**. If you start a project, then leave it in the developer’s hands for 2 months and suddenly get an email at the end saying it’s all done, you’re going to end up with a bad site. Take some time to understand what’s going to happen during the project and how collaboration will work. What do you need to provide? What are your responsibilities and what are the developer’s? What are the milestones? To meet the timelines, how do reviews work and how quickly do things need to be turned around from both parties? Are there any dependencies or bigger risks that everyone should be aware of? How will you and the developers keep each other updated and make sure things are progressing as expected? The tips above should go a long way in helping you select and retain a vendor that’s the right fit for your LearnDash project. Sometimes, however, it’s still not enough, and due to unforeseen circumstances projects can still go off track. While this is just a quick list, here are some things you should be doing during the project to encourage positive outcomes: **Be involved**. Some of our worst projects (and yes, we’ve had a few that disappointed both parties) were when clients just dropped communication. They got too busy or had other priorities, or just stopped caring about the site. We’ve had projects delayed 6-12 months because of client delays, and when that happens it inevitably leads to bad outcomes. Objectives get lost, people stop caring as much, the results just aren’t there. The best projects are when everyone is on the same page and working collaboratively at the same time. We’re adding features and testing while the client is adding content and providing feedback. We’re having discussions to address scope creep or new problems. Being active and engaged is one of the best ways to see good results. **Test continuously**. Very recently we took over a project where testing on the site by the client didn’t begin until the day before launch. The site was extremely complex and, of course, everything was broken. That’s when the developer realized they were in over their heads and the client realized they were in an unimaginable amount of trouble. It’s an avoidable situation though. With WordPress LMS sites it’s not like everything is suddenly ready one day; pieces will be finished throughout the project that can be tested independently. Be involved and testing often not only helps identify issues early but it’s a chance to understand your site better and work collaboratively. **Maintain a good relationship**. Yes, even if your developer is doing a terrible job and you’re miserable, try not to throw the entire relationship away if you’re in the middle of development. We’ve seen angry developers lock companies out of their sites. Like it or not, and the legal side can be messy when you’re working with partners in other states or countries, your developer can make things very difficult for you if they host and/or have admin access to your WordPress site. If you need to sever a relationship with a WordPress developer try to gain control of the site before things sour too much. The goal of your LearnDash development project is to always end up with win/win situations for you and your developer. They are possible, and by following some of the guidance in this article we hope you’re able to partner with a great LearnDash development team for your WordPress LMS project. **Categories:** Best Practices, eLearning, LearnDash --- ### [A LearnDash Course Completion Report for Everyone](https://www.uncannyowl.com/simple-public-learndash-course-completion-report/) **Published:** August 19, 2017 **Author:** Ryan Moore **Content:** Have you ever wanted an easy way for learners, managers, parents, administrators, or anyone else to verify course completion records? Especially if they don’t have WordPress accounts? Until recently, there has been no way to make this possible with [LearnDash](https://www.uncannyowl.com/share/learndash/). Administrators and Group Leaders have several options, between LearnDash CSV reports, ProPanel, [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) and other plugins, but access to the data is heavily restricted. We introduced a great way to verify course completions a few weeks ago but we didn’t draw a lot of attention to it. It’s part of our new [Continuing Education Credit plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/), and the front end course completion report was one of the features we were most excited about. Even though the name might suggest otherwise, the plugin does *not* require you offer credit for your courses. In fact, it offers several features (multi-course certificates are another) that don’t depend on courses with credits. EVERY LearnDash site stands to benefit from having the plugin. \[et\_bloom\_inline optin\_id=”optin\_2″\] Check out the screenshot below of our course completion report (notice the lack of CEU reporting in this version!). This is in the front end on a regular WordPress page and it can be used by *anyone*, regardless of whether or not the user has an account on the site. (We protect privacy by requiring that at least 3 characters be entered in the search field. Otherwise, it’s wide open for easy reporting.) [![LearnDash Completion Report Front End](https://www.uncannyowl.com/wp-content/uploads/2017/08/learndash-course-completion-report.png "learndash-course-completion-report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/08/learndash-course-completion-report.png) If you’re familiar with our Continuing Education plugin you may recognize this report—except that it’s missing a column. That’s because it normally includes a column for CEU values, as it was designed as a CEU report. With a tiny code tweak that column can be hidden and it becomes a comprehensive completion report for any LearnDash site! To make the change, simply add this string inside the Text tab of the WordPress editor for the page (instead of just using the shortcode by itself):
\[uo\_ceu\_report\]
And with that, you’ve got an easy-to-use LearnDash course completion report in the front end of your LearnDash site! Here are just a few scenarios where this type of report could be helpful: - Allowing an employer to verify staff course records without requiring a site account or the use of LearnDash Groups. - Allowing a parent to check on their child’s progress. - Allowing a third party certification or accrediting body to verify member training. - Allowing a student that no longer has site access to retrieve their records. We would love to hear about your own creative uses of the course completion report in the comments! **Categories:** LearnDash --- ### [Improve Your LearnDash Course Sales Workflow](https://www.uncannyowl.com/improve-your-learndash-course-sales-workflow/) **Published:** February 5, 2018 **Author:** Ryan Moore **Content:** Do your visitors get confused about how to buy your course? Course pages in [LearnDash](https://www.uncannyowl.com/share/learndash/) tend to have two audiences: enrolled students and potential students. That can make things a bit confusing. Do you tailor the content and experience to the learner, or do you make the experience more intuitive for prospective buyers? You can absolutely do both (the visitor and student shortcodes come in handy here), but it does make managing the content and using page builders more difficult. In the latest version (2.3) of our free [Uncanny LearnDash Toolkit plugin](https://wordpress.org/plugins/uncanny-learndash-toolkit/), we added a very simple new module that can make things easier for some sites. What it does is simple: If a person trying to access a course page is *not* enrolled in the course, the system redirects them to another URL. That’s it, the behaviour is very simple. [![course redirect](https://www.uncannyowl.com/wp-content/uploads/2018/02/redirect_if_not_enrolled.png "redirect_if_not_enrolled - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2018/02/redirect_if_not_enrolled.png) Where this comes in *really* handy though is with both our [course grid module](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/) in the [Toolkit Pro plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) as well as the [LearnDash grid add-on](https://support.learndash.com/articles/course-grid/). Using either of those, now you have a way to control the behaviour when users click courses in the grid. If they click a course in the grid and they have access, the users get to the course. If they’re not enrolled, they go straight from the grid to a sales page (or to checkout, or to whatever other page you define). No middle step, no making the course page work for 2 different audiences. Another great use of the module is redirecting a user to a page that explains that he or she doesn’t currently have access to the course with instructions on how to become enrolled. This can be a single global page, making maintenance much easier than editing all course pages. Using the new module is simple. Just turn it on from the Toolkit settings page, and in course edit pages, add the URL you want to redirect users to when they’re not enrolled. That’s it! If you want the redirect to work for some courses and not others, just add a URL for courses where you want to redirect people that aren’t enrolled and leave the URL blank if you want all users to be able to access the course page. We hope this new workflow option improves your conversions and the user experience. **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Create a LearnDash Site in 1 Hour](https://www.uncannyowl.com/create-learndash-lms-site/) **Published:** September 25, 2016 **Author:** Ryan Moore **Content:** Creating your own WordPress LMS with [LearnDash](https://www.uncannyowl.com/share/learndash/) doesn’t have to be a complicated ordeal that takes weeks or months (and endless frustration) to set up. If your needs are simple, it’s entirely possible to have your platform set up and working well in under 1 day. In our most recent screencast, we run through all the most important steps in an hour, from setting up hosting to installing plugins and building an intuitive learner experience. This demo platform does rely on a few key plugins and paid tools to make things a *lot* easier. Doing this with a free theme and your own plugins is possible, but site creation take many, more times longer. The first paid item we use is [the University theme](/share/university), and we added it because it takes care of styling LearnDash and WooCommerce elements so that you don’t have to spend hours fiddling with CSS and template files (which may not be styled at all with some things). I will add the disclaimer that we don’t use the University theme at Uncanny Owl, but that’s because we can take care of our own styling and work with something more flexible. For beginners and fast projects, however, ease of use and ready-made styles are a lot more important that flexibility. The [LearnDash](https://www.uncannyowl.com/share/learndash/) plugin itself is of course a requirement, and paired with both our free [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/) and the associated [Pro modules](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/), it’s easy to build intuitive learner workflows and helpful pages in a few minutes. LearnDash and out Pro modules are paid plugins, but they both really are invaluable in building LMS platforms with WordPress. The site in our demo is hosted on [WP Engine](/share/wpengine). For beginners, we can’t understate how important it is to have hosting that’s easy to use and well supported. This is our main reason for doing the demo with WP Engine. Everything that’s needed is cleanly laid out and everything just works, including automatic daily backups, proactive security, a CDN, caching, a Staging site (that works seamlessly with SSL, unlike some other WordPress hosts), and much more. The difference for a novice WordPress users on WP Engine vs. a generic shared host with cPanel is like night and day. We created this screencast to target enthusiastic DIY LearnDash and new WordPress users. We especially hope that it helps the people that aren’t able to use our consulting services (perhaps because of time, budget, location, or other considerations). For those users, we really hope the video helps you get your site off the ground. **Categories:** eLearning, LearnDash, Uncanny LearnDash Toolkit --- ### [Hosting High Traffic LearnDash Sites](https://www.uncannyowl.com/hosting-high-traffic-learndash-sites/) **Published:** January 9, 2016 **Author:** Ryan Moore **Content:** ***Update:** Please note that this post is a summary of tests we conducted to assess the number of simultaneous learners a site can support, not total learners in a system. LearnDash can accommodate tens of thousands of users in the database, but most hosts can’t accommodate that number of learners being on the site at the same time. The tests in this article were to assess how many simultaneous learners the hosting plans could accommodate.* At Uncanny Owl, we’ve been building and managing [LearnDash](https://www.uncannyowl.com/share/learndash/) sites for several years. In that time, you might think that we’d have a hosting solution for every possible type of LearnDash site, but we simply don’t. We have LearnDash sites on [Flywheel](/share/flywheel), [WP Engine](/share/wpengine), [Cloudways](https://www.cloudways.com/en/?id=19227), [Kinsta](https://kinsta.com/), even Digital Ocean and Vultr instances. We set each site up on a platform that’s a suitable fit for the site and volume of learners, and generally we target accommodating 25 to 50 simultaneous learners. That might sound like very few, but we find it’s enough even for sites with several thousand learners. It’s just very rare for a large group of learners to visit the site and complete learning activities at the same time. As such, we target the site’s actual load to make sure our clients aren’t paying for more than the site needs. Recently, a client asked us to develop a plan for ramping up to tens of thousands of learners quite quickly. It’s been a long time since we last did load testing on LearnDash, and we’ve never done it with higher-end tiers on managed providers. We decided to try out the client’s existing LearnDash site that was reasonably heavy ([University](https://themeforest.net/item/university-education-event-and-course-theme/8412116?ref=uncannyowl) theme with Visual Composer, a few dozen plugins and various customizations) to see how it would hold up. The site wasn’t one we created, but it’s representative of what a lot of people create with LearnDash. We loaded the site up on 3 different hosts: a Professional plan at WP Engine ($99/month), Business plan at Kinsta ($287/month) and an 8-core/16GB Vultr instance at Cloudways ($264/month). We knew the load would really push the cores to their breaking point, so we had high hopes for the 8 core Vultr VM. We created a complex script for [Blazemeter](https://blazemeter.com/) that had 1,000 total users sign in to WordPress and complete/navigate close to 60 LearnDash pages. Each page had a lot of shortcodes and a number of images or embedded video. We even had users complete a quiz. Clicks were mostly timed about 30 seconds apart, which was on the aggressive side for LearnDash use, but we wanted to see what it took to break the servers. Activity was spread out over an hour, with the number of users gradually ramping up. Because the activities didn’t take an hour to complete, we planned to see some virtual users roll off the test as others started (so we would never see 1,000 simultaneous learners, but we did want to see a few hundred). ### Cloudways Results [![Cloudways](https://www.uncannyowl.com/wp-content/uploads/2016/01/Cloudways.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/01/Cloudways.png)It’s hard to tell from the chart, but [Cloudways](/share/cloudways) was great until about 75 users. Then page load times climbed to 5 seconds—and kept climbing. The test ended up peaking at a very high number of users because it got too slow for users to complete the script. By 100 users the response time was an unacceptable 10 seconds, and by 400 users, the error rate shot up. Because Cloudways kept getting worse and worse, and further behind, average page load time ended up being 67 seconds. The server was fine for 75 learners, but definitely no more. All cores were maxed out after that point. One thing to note: this server was held back a bit by not using a CDN. Both other sites benefitted from a CDN. ### Kinsta Results [![Kinsta](https://www.uncannyowl.com/wp-content/uploads/2016/01/Kinsta.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/01/Kinsta.png)The [Kinsta](https://kinsta.com) graph looks a lot better, right? The response time looks stable—until you notice that it’s stable at about 25 seconds. That’s far too long for users to wait. Response time on Kinsta is good until about 100 users. After that, it’s just too slow, and at 300 users we start seeing errors on top of that. On a side note, this was our first time using Kinsta and developer tools just weren’t as useful or efficient as on WP Engine. It’s not reflected in the numbers, but it’s definitely a consideration when we’re choosing where to host a site. ### WP Engine Results [![WP_Engine](https://www.uncannyowl.com/wp-content/uploads/2016/01/WP_Engine.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/01/WP_Engine.png)We ended this test early because we had the info we needed after 20 minutes. [WP Engine](/share/wpengine) failed early too; right at about 85 users. What was different on WP Engine was that load times didn’t increase; if response times got high WP Engine just threw (a lot of) 502 errors. A poor user experience, to be sure, but still better than Cloudways serving pages in 60+ seconds—at least users saw something. And the key takeaway is that the site was ok up to 85 simultaneous learners, which surprised us, given that WP Engine was the only shared environment and it’s one third the price of the others. None of the results really impressed us; we hoped that at least one of the servers could have accommodated over 100 simultaneous learners. For now, at least, we put that particular client site on [WP Engine](/share/wpengine). Performance is good enough for the current number of learners, it’s the lowest cost of the 3, we have an upgrade path there for additional learners, and the site tools we need are the easiest to work with. We just wish we didn’t have to always deal with caching and session/cookie issues on complex LearnDash sites hosted on WP Engine. If you’re managing a LearnDash site that has a lot of simultaneous learners, we would love to hear how you’re hosting it in the comments! **Categories:** Learning --- ### [LearnDash Demo Video](https://www.uncannyowl.com/learndash-demo-video/) **Published:** August 13, 2014 **Author:** Ryan Moore **Content:** Our [LearnDash demo site](https://lms.uncannycloud.com) has been great to give people a taste of what can be done with [LearnDash](https://www.uncannyowl.com/share/learndash/), but for companies interested in using LearnDash themselves, it’s not enough. They want to get behind the scenes and get a tour of things they might have missed on the front end. To help companies develop better explore our LearnDash demo and get a taste of what’s going on behind the scenes, we’ve created a 6-minute screencast that goes over some of the highlights. We hope it helps in your evaluation and use of LearnDash! Check out our LearnDash demo screencast below. Make sure you watch it on YouTube or in full-screen mode so you can read everything! **Categories:** Learning, News --- ### [Wordpress the LMS: Working with LearnDash](https://www.uncannyowl.com/wordpress-lms-working-with-learndash/) **Published:** February 24, 2014 **Author:** Ken **Content:** [LearnDash](https://www.uncannyowl.com/share/learndash/) is a low-cost Learning Management System (LMS) plugin for WordPress. Installing it adds LMS features to your WordPress instance, including courses, quizzes, certificates and progress reports. In this post, I’ll review some of the ins and outs of working with LearnDash and how we used it to create [Grade Hacks](https://www.gradehacks.com/), our study skills program. ### **Installation** [![The WordPress admin menu after installing LearnDash.](https://www.uncannyowl.com/wp-content/uploads/2014/02/learndash-menu1-285x300.png "ulgm_seat_key_deleted - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2014/02/learndash-menu1.png)The WordPress admin menu after installing LearnDashInstallation of LearnDash is as straightforward as installing any plugin in WordPress. You purchase the plugin at learndash.com, download the .zip file, and upload it to WordPress through the Plugins page. Doing so adds new menu items to your WordPress admin panel including Lessons, Courses, Quizzes and Certificates and Advanced Quiz. ### **Setting up courses** Setting up your first course in LearnDash involves creating a course, then creating a lesson and associating it with the course. If you wish to further divide your content you may create a topic and link it with a lesson\*, or create a quiz and link it to a lesson. Because the admin interface is organized by content type (course, lesson, topic, quiz) rather than by course, setting up a course is a bit of a disjointed process. You are constantly jumping between the the course, lesson, topic and quiz screens, linking them all together with course associations. Many LMS platforms have you “select” or “enter” a course, with any subsequent actions you take applied automatically to that course. It’s a more natural way of thinking and working because users tend to focus on one course at a time. But due to the way LearnDash uses WordPress custom post types to implement the course, lesson, topic and quiz objects, creating that type of editing paradigm isn’t possible. Thankfully, you eventually get used to jumping around and if you only have a few courses to develop it works quite well. But if you intend to have many courses, with no way to filter lessons by course or topics by lesson, it could become tedious to find what you’re looking for. After setting up a course, you must also provide a way for users to access the course on the site’s front end, either through a menu or a link on some other page on your site. You can link to the specific course or the default course list page (at /courses). ### **Creating content** [![A customized LearnDash lesson page.](https://www.uncannyowl.com/wp-content/uploads/2014/02/learndash-lesson-300x269.jpg "ulgm_rest_api_display_name_order - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2014/02/learndash-lesson.jpg)A customized LearnDash lesson pageOther than quizzes, LearnDash does not provide any content creation tools beyond the standard WordPress post/page authoring interface. We leveraged the excellent [Visual Composer](https://codecanyon.net/item/visual-composer-page-builder-for-wordpress/242431) plugin to set up some nice page layouts with sections to related resources and exercises. We used Articulate Storyline to create content that provided a more immersive, interactive experience than static text and images. Using shortcodes, we then embedded the Storyline content in several formats to target the various devices our users may be using to view the content. On desktop and laptop, we instructed WordPress to display the Flash-based Storyline content, as this was “truest” to what we saw in the Storyline authoring environment. On iPad, the content was displayed in the Articulate Player app, which provided a nice “native” experience for the learner. On other platforms, the system falls back to HTML5. For quiz creation, LearnDash currently offers the most powerful assessment tools of any WordPress-based LMS, unfortunately wrapped in an awkward interface. Functionality is accessed through standard or advanced quiz types, with standard being too basic for many applications and advanced offering a dizzying array of options. Both types use different interfaces for managing questions and you can’t switch between the two, so you may find yourself halfway through the creation of a standard quiz only to realize you need the functionality of an advanced quiz and have to start over. The quiz UI could really use an overhaul that creates a single, unified quiz interface that exposes the most commonly used controls while hiding the rest for power users. ### **User Experience** [![The default course homepage using the "Twenty Fourteen" WordPress template.](https://www.uncannyowl.com/wp-content/uploads/2014/02/learndash-course-300x268.png "ulgm_rest_api_callback_roles - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2014/02/learndash-course.png)The default course homepage using the Twenty Fourteen WordPress templateOut of the box, the LearnDash user experience is quite good, providing an intuitive course/lesson/topic structure which works well for most situations. Visually, course and lesson pages were redesigned in the version 1.5 release and now provide a simple, pleasing interface to the user. You’ll run into small niggles here and there though; for example, after successfully completing a quiz, the learner must then click a button labeled “Click here to continue” for their progress to be recorded. If they instead leave the quiz by some other method or close the window, their progress is lost and they are forced to retake the quiz. The plugin author is aware of this issue and has promised a fix. The experience of using WordPress as an LMS is also not without its quirks. Logging into WordPress does not, by default, change the site’s menus or navigation, which means that logged-in users may have a hard time distinguishing between marketing pages and paid content. We used the [Nav Menu Roles](https://wordpress.org/plugins/nav-menu-roles/) plugin to display different menu items to logged-in users, which created the impression of a separate public site and learner portal. ### **Customizability** LearnDash provides a number of options for customizing your LMS, as well as shortcodes for outputting various types of LearnDash content on any page or widget. Like most plugins, LearnDash can be customized through CSS overrides in your template files or a CSS plugin. Advanced developers used to working with WordPress hooks, however, will be disappointed. LearnDash includes few actions and filters, and those that are included are poorly documented. LearnDash also does not support template overrides, so for major customizations you’re stuck making changes to core files. ### **Support** The LearnDash plugin author, Justin Ferriman, is very responsive to customer feedback and maintains an active support forum available to paying customers only. Users who post a question will usually receive a response within a day. ### **Conclusion** LearnDash is probably the most full-featured LMS plugin available for WordPress today. It’s still early in its development, but it’s being updated quickly and once you get used to it you’ll find it’s capable of delivering a solid experience for your learners at a low cost. In a future blog post we’ll cover the ins and outs of using LearnDash and WooCommerce to sell your courses online. \*In version 1.5.0.0, in addition to assigning topics to lessons you must also assign them to courses for them to be tracked properly. This seems redundant since you assign topics to lessons, which are themselves assigned to courses, and will hopefully be updated in a future release. **Categories:** Learning --- ### [New Code-Based Enrolment Plugin for LearnDash](https://www.uncannyowl.com/uncanny-learndash-codes/) **Published:** November 23, 2016 **Author:** Ryan Moore **Content:** If you’ve ever wished for an easier way to get your learners into [LearnDash](https://www.uncannyowl.com/share/learndash/) Groups or courses, our newest plugin is perfect for you! We’ve built a really easy way to generate codes that can be used by learners to self-enrol into LearnDash groups and courses when they register, make a purchase, or are simply signed in. If you sell course access to organizations, you can use the [Uncanny LearnDash Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) plugin to generate and distribute codes that can be redeemed for LearnDash access. Using Gravity Forms, Theme My Login or the included registration shortcode, users can enter a code during registration that adds them directly to a group or course. Create codes with custom prefixes and suffixes to identify clients, and distribute codes in CSV files to your partners. You can also control how many times a code can be redeemed, so if it’s better for your situation to distribute a single code with multiple uses, that works too. Here’s a screencast that walks through exactly what the plugin does and how it works: The plugin also supports integration with WooCommerce and independent enrolment. For ecommerce transactions, you can identify specific products that can only be purchased with a valid code, making it possible for learners to buy access to a LearnDash Group. For signed in users, we also make a shortcode available so users can enrol themselves in additional courses and groups using a code. [![view-codes](https://www.uncannyowl.com/wp-content/uploads/2016/11/view-codes.png "view-codes - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/11/view-codes.png) Here are 3 business scenarios that are a perfect fit for [Uncanny LearnDash Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/): 1. Offer a promo where the first 50 customers to enter a code from their profile page get early access to a new course. (Use the plugin to generate a single code with 50 uses that enrols the user in a course.) 2. Send a CSV file with codes to a college professor that allows students to self-enrol directly into a LearnDash Group and associated courses. (Use the plugin to generate 100 single-use codes in bulk for a group and download as a CSV file, and force code redemption on registration.) 3. Generate codes on your LearnDash site and sell them from another website. One of our clients is now able to sell course access from a Shopify store by creating the codes with our plugin, loading them into Shopify, and then letting users redeem them on the LearnDash site. All codes have a detailed audit history, so you can see when codes were generated, when they were redeemed and by whom. Codes can be used for one or more courses or groups. We hope you enjoy the plugin! **Categories:** LearnDash, News --- ### [Styling LearnDash Courses and Lessons](https://www.uncannyowl.com/styling-learndash-courses-lessons/) **Published:** July 17, 2014 **Author:** Ryan Moore **Content:** As many of our [LearnDash](https://www.uncannyowl.com/share/learndash/) readers will know, the popular LMS plugin for WordPress uses custom post types for course and lesson content. That’s great for people familiar with WordPress, since it makes adding and managing content easy, but many page layout tools for WordPress don’t recognize LearnDash objects out of the box. As a result, many users assume they’re relegated to the default WordPress editor. They’re not, and in the post we’ll explore how to use Visual Composer to improve the look and feel of your LearnDash materials. [![Visual Composer Settings](https://www.uncannyowl.com/wp-content/uploads/2014/07/Visual_Composer_Settings_‹_Uncanny_Owl_Demo_LMS_—_WordPress-300x217.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2014/07/Visual_Composer_Settings_‹_Uncanny_Owl_Demo_LMS_—_WordPress.png)At Uncanny Owl we typically use [Visual Composer](https://codecanyon.net/item/visual-composer-page-builder-for-wordpress/242431?ref=uncannyowl) to design WordPress pages and posts for clients. It’s a paid plugin, bundled with many themes, that adds a drag-and-drop layout builder and a number of content elements to WordPress. When it’s first installed, Visual Composer is only available for pages and posts, not the custom post types used by LearnDash. To enable it on LearnDash pages, navigate to **Settings > Visual Composer** in the WordPress administration interface and make sure “sfwd-courses” and “sfwd-lessons” are both selected. The screenshot to the right shows the relevant areas. The images below demonstrate what can be done relatively easily with Visual Composer that would take significantly more effort without it. The image on the left shows a lesson page with embedded Articulate Storyline content from [Grade Hacks](https://www.gradehacks.com). Because it’s quite a lengthy lesson, we included some extra information to help learners and set context. We have a row to include a time estimate and navigation tools within the lesson (between the introduction, embedded Storyline and quiz, the page is quite long), a row to introduce the lesson and link to key resources, then a row for lesson content. Everything you see on the page uses Visual Composer elements to produce the design quickly and make it easy to maintain; the image on the right shows how we built it. Click on the screenshots to see larger images of the front end and editing views. [![Edit_Lessons_‹_Grade_Hacks_—_WordPress_1](https://www.uncannyowl.com/wp-content/uploads/2014/07/Edit_Lessons_‹_Grade_Hacks_—_WordPress_1-300x244.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2014/07/Edit_Lessons_‹_Grade_Hacks_—_WordPress_1.png)[![Technology_-_Grade_Hacks](https://www.uncannyowl.com/wp-content/uploads/2014/07/Technology_-_Grade_Hacks-300x198.jpg "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2014/07/Technology_-_Grade_Hacks.jpg) Visual Composer also includes a number of elements that make it much easier for us to include a variety of content types in lessons. With a raw HTML element, for example, we can include iframe code to embed Storyline and Captivate modules within lesson pages. And with a video element, it’s easy to drop in YouTube and Vimeo videos and then move them around the page to try different layouts. We hope this quick lesson helps you improve the look and feel of your LearnDash lessons. If you have any of your own layout ideas to share, please add your comments below! **Categories:** Learning --- ### [Where to Find LearnDash Training, Tutorials and Documentation](https://www.uncannyowl.com/learndash-support-training-documentation/) **Published:** October 11, 2017 **Author:** Ryan Moore **Content:** Building a robust and polished [LearnDash](https://www.uncannyowl.com/share/learndash/) site can be quite difficult. We’ve been doing it for over 4 years now and we’re still discovering new and better ways to build sites. We definitely have an edge with a team of skilled developers and LearnDash experts at our disposal, but we’re all too aware of some of the challenges faced by for new WordPress users and even experienced developers. This article came about because we still get countless inquiries from people who recognize that LearnDash is a powerful tool that can probably help them—but that’s really as much as they know. They don’t know how to get started and don’t know where to turn to find more information, guidance, and support. We unfortunately find, time and again, that people simply aren’t aware of some of the great LearnDash resources (including tutorials, screencasts and documentation) that are available. We’re hoping that this article saves those users some confusion and frustration. ### Start with the Source The [LearnDash Support Site](https://support.learndash.com/) is an invaluable resource that not all LearnDash users seem to know about. If you haven’t bought a license yet, you might not even know it exists! It’s easily as valuable as the plugin itself though. There are countless screencasts, Knowledge Base articles, FAQs, and more. Perhaps the most valuable tools are the forums (which are very active and full of useful information to solve common LearnDash problems and share best practices) and access to the LearnDash support team, who we routinely see go out of their way to help LearnDash customers. ### Go to the Experts Outside of the LearnDash support site there are still lots of great resources. On [YouTube](https://www.youtube.com/results?search_query=learndash) there are hundreds of videos from many different authors (including ours; our popular [How to Make a LearnDash Site](https://www.youtube.com/watch?v=1HZo3HENk2g) video has helped thousands of LearnDash users). Agencies and developers that work with LearnDash often have great tutorials and articles covering best practices (the [LearnDash blog](https://www.learndash.com/blog/), this blog, [WisdmLabs](https://wisdmlabs.com/blog/), and others are examples), though it can sometimes be difficult to find the right articles among so much information. Google can be your friend to narrow things down to specific subjects. The [LearnDash Facebook group](https://www.facebook.com/groups/1020920397944393/) is very active and has hundreds of members ready to jump in and provide advice on everything from the basics to complex code solutions. You’ll even find some of the Uncanny Owl team on there! There is also our [introductory LearnDash course](https://www.uncannyowl.com/courses/uncanny-lp/) for our [Uncanny LP hosted LearnDash](https://uncannylp.com/) platform. Although it is targeted at a modified WordPress platform, it does still cover all of the WordPress and LearnDash basics someone would need to get started—it just demonstrates everything with a streamlined interface that could be confusing if you’re not using LP. It is free and anyone is welcome to use it, or you can skip the course and jump right into the hours of useful LearnDash [useful LearnDash screencasts](https://www.youtube.com/playlist?list=PLs2r9OSoWx0KNho7yD4LTReosAmmNE-oG). LearnDash can seem overwhelming at first, but there really are many helpful resources available and a large community of users eager to help. If you have other sources of useful LearnDash training and documentation, add them to the comments below! **Categories:** Best Practices, LearnDash --- ### [Continuing Education Credits for LearnDash](https://www.uncannyowl.com/continuing-education-credits-for-learndash/) **Published:** July 20, 2017 **Author:** Ryan Moore **Excerpt:** If you have a LearnDash site that offers any kind of continuing education or credit-based program, our newest WordPress plugin will make your life a lot easier. Uncanny Continuing Education Credits, our fifth public plugin for LearnDash, adds a comprehensive way to track course-based credit, report on it, and even award certificates for it. **Content:** If you have a [LearnDash](https://www.uncannyowl.com/share/learndash/) site that offers any kind of continuing education or credit-based program, our newest WordPress plugin will make your life a *lot* easier. [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/), our fifth public plugin for LearnDash, adds a comprehensive way to track course-based credit, report on it, and even award certificates for it. With this plugin, every LearnDash course on your site can be assigned a credit value. Show earned and available credits in the front end. Track cumulative and course-level credit in the back end; records can also be exported to CSV files for analysis. What’s especially great is that earned credits *never go away*. Records are permanent. Credit records are designed to survive course changes, progress resets and even course deletions; your students never have to worry about changes to their credits. Because we keep records outside of LearnDash and they aren’t affected by progress resets, this makes the plugin *extremely* useful for programs that learners complete on a recurring basis, like compliance and certification programs. [![learndash ceus](https://www.uncannyowl.com/wp-content/uploads/2017/07/CEU_Report_-_Uncanny_LP.png "CEU_Report_-_Uncanny_LP - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/07/CEU_Report_-_Uncanny_LP.png) Where the plugin gets especially interesting is with our front end reporting. With some important steps to protect privacy, we’ve created a front end report that allows learners, managers, accrediting organizations and others verify course completion and credit records for students. No user account is required to query the CEU records and full completion details are published in the front end (as long as the person searching knows a learner’s name or email address). For recurring training programs we add the ability to track credits earned since an annual rollover date. The admin report allows date and group filters and is an easy way to search large sets of continuing education records. [![LearnDash CEU Admin Report](https://www.uncannyowl.com/wp-content/uploads/2017/07/CEU_Course_Report.png "CEU_Course_Report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/07/CEU_Course_Report.png) As an added bonus, we’re releasing the plugin with some new options for LearnDash certificate triggers: earned credits and completion of course combinations. It’s the first time an easy way to recognize completion of *multiple* LearnDash courses has been made available and can be a great asset for certification programs and sites with a large volume of courses. Certificates can be emailed as PDF files automatically to learners, Group Leaders and the site admin. Since this is the first release of the Uncanny Continuing Education Credits plugin and it’s a limited feature set, we’re offering a **25% off discount until July 31**. Use coupon code **ceulaunch** during checkout to claim the discount. Unfortunately, the coupon code cannot be used after the end of the month and is only valid for this product. We hope you enjoy the new plugin! Let us know your thoughts in the comments. Also be sure to check out the [product page](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) to buy the plugin and the [Knowledge Base](https://www.uncannyowl.com/article-categories/uncanny-ceus-learndash/) for more information. - 1 Year License – $129.00 - 1 Year Business License – $209.00 - 1 Year Unlimited License – $299.00 - 1 Year License – $199.00 - 1 Year Business License – $349.00 - 1 Year Unlimited License – $499.00 - 1 Year Agency License – 50 sites – $499.00 Purchase [Checkout](https://www.uncannyowl.com/checkout/) Added to cart **Categories:** Continuing Education, LearnDash --- ### [Uncanny Owl has joined the WPBeginner Growth Fund](https://www.uncannyowl.com/uncanny-owl-has-joined-the-wpbeginner-growth-fund/) **Published:** November 5, 2020 **Author:** Ryan Moore **Content:** We’re excited to announce that Uncanny Owl has joined the [WPBeginner Growth Fund](https://www.wpbeginner.com/wpbeginner-growth-fund/). This means that we’re partnering with [Syed Balkhi](https://syedbalkhi.com/), founder of WPBeginner and co-founder of popular WordPress plugins including OptinMonster, MonsterInsights, WPForms and more. It also means that Uncanny Owl is now part of the [Awesome Motive](https://awesomemotive.com/) network of companies. ![](https://www.uncannyowl.com/wp-content/uploads/2020/11/growth-fund-uncanny-owl-featured.png) ## Why we joined Ken and Ryan co-founded Uncanny Owl in 2013, and over the past 7 years we have grown the company to a team of 10 people with [8 popular plugins](https://www.uncannyowl.com/plugins/), a hosted learning platform product and a thriving consulting business. With so many products and significant growth this year, we found scaling difficult and we were pulled in too many directions. After working with [Cory Miller](https://corymiller.com/) for help planning our future, we connected with Syed and began to explore what a relationship might look like. What sold us on the idea and benefits of a partnership were our discussions with current companies in the Growth Fund, including Blair at [MemberPress](https://memberpress.com/) and Steph and Steve at [Formidable Forms](https://formidableforms.com/). Both teams had only fantastic things to say about Awesome Motive and the growth, vision and work-life balance improvements that Syed had helped them achieve. ## What this means for Uncanny Owl Our participation in the WPBeginner Growth Fund program only began a few days ago. At this point our focus is inward—looking at how we can take our products, services and Uncanny Owl itself to the next level. We don’t yet know where that process will lead us, but we’re excited to find out! When we have anything new to share, you’ll hear it on this blog first. ## About the WPBeginner Growth Fund The Growth Fund was created in 2018 to invest in WordPress businesses and work with founders to optimize their products and processes. More information about the program and an application form are available at ## Questions? We are still in the early planning stages of the partnership but will have more news to share over the next few months. If you have questions, we invite you to [reach out](https://www.uncannyowl.com/contact-us-2/) to our team. Thanks for your support! *– Ryan, Ken, and the rest of the Uncanny Owl Team* **Categories:** News --- ### [Top automation tools for WordPress](https://www.uncannyowl.com/top-automation-tools-for-wordpress/) **Published:** October 20, 2020 **Author:** mark **Content:** Most of us might cringe when we hear the words, “Do more with less.” However, there is some wisdom with *doing more with what you have* by being more efficient. For instance, let’s say you compose a standard email response to potential clients. After writing the same three paragraphs each time (about 100 times now), you decide to create an email template instead. Your new template reduces all that typing you did before to one little click! With that one simple template, you discover that you save a couple of hours every week. Welcome to the world of automation. The wonderful thing with automation is that it scales up beautifully for larger and more complex tasks. And, when your processes do become larger, that’s when integrations comes in to connect things together. We’ll see shortly how automation and integration go hand-in-hand. ## How can automation help me? You still might be thinking, how can you tell if automation and integration tools can help your situation? Well, do you ever find yourself repeating mundane tasks like: - Downloading your client’s email attachments from your G Suite account then uploading them to your project folder on Dropbox? - Updating a training record in Google Sheets when attendees attend live events? - Tagging a new subscriber in your [Mailchimp](https://mailchimp.com/) audience when they download one of your PDF giveaways? - Manually registering a new user to a course in [LifterLMS](https://automatorplugin.com/integration/lifterlms/), and to the course’s group forum in [BuddyPress](https://automatorplugin.com/integration/buddypress/) once they purchase a course from your [WooCommerce](https://automatorplugin.com/integration/woocommerce/) store? - Looking for abandoned purchases in [Stripe](https://stripe.com/) so you can create a [Trello](https://trello.com/) card to task your sales team to kick-off a down-sell campaign in [Hubspot](https://www.hubspot.com/) to salvage a customer? - Creating social media posts every time you publish a new blog article? When it comes to efficiency, there are two words that come to mind: integration and automation. Integration with other systems, apps, and plugins is a necessity if you want to offer more features to your customers. It just goes with the territory. Integrating more things together does enrich your offerings to help you reach your business goals. But, if you don’t automate your workflows to take advantage of your integrations, then having more integrations can hinder your growth. ## What we’ll cover Regardless of whether you’ve got a marketing, learning and development, eCommerce, or blogging site, if you are searching for ways to simplify your online business processes, then you’ve come to the right place. In this article, we’ll reveal our top automation tools. We’ve grouped the tools according to their areas of speciality: - Non-WordPress. - CRM integration. - WordPress plugin integration. - Plugin specific automation. From first-time to experienced website owners, we think there’s something for everyone in this set of tools. Let’s cover each one. ## Non-WordPress ### Zapier [Zapier](https://zapier.com/) builds on the adage: “Work smarter not harder.” Zapier’s strength lies in automation through integration with thousands of apps. It takes advantage of the fact that most businesses depend on many disparate digital technologies. And, trying to connect all these platforms together manually will not scale. To make these apps, services, and websites work for you, you need something that can automate connecting all the pieces together. Insert Zapier here. Using Zapier, means all your business components are talking to each other to get the job done. Some typical [Zaps](https://zapier.com/help/create/basics/learn-key-concepts-in-zapier) (workflows) include: - Checking newsletter subscriber’s email addresses with Zapier’s Data Validation to reduce your campaign bounce rate. - Broadcasting GitHub repo issues to a Slack channel to get your support team working on resolutions faster. - Automatically adding Zoom webinar participants to an AWeber list to spare you from manual data entry. Explore more possibilities on [Zapier.com](https://zapier.com/explore). #### A quick tour around Zapier Zapier’s dashboard shows you a menu of options, your plan and quota, and a call to action (CTA) to connect something including personalised Zap suggestions. ![Zapier dashboard layout: left navigation with Make a Zap, Dashboard, Zaps, My Apps; right panel to connect apps with three recommendations and Try This buttons.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-zapier-dashboard-793w-500x364.jpg "automation-tools-zapier-dashboard-793w - Uncanny Owl") You’re led through the Zap creation process with human-friendly prompts, e.g., **When this happens … Do this…** In addition to Zapier’s powerful search feature, you’ll see shortcuts to apps you’ve used before. That’s super convenient. ![Zapier setup screen: '1. When this happens …' with a search bar and app icons (Asana, Dropbox, GitHub, Gmail, Google Sheets, Slack, Twitter, WordPress) under Your Apps and Built‑In Apps.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-zapier-new-zap-1-793w-500x461.jpg "automation-tools-zapier-new-zap-1-793w - Uncanny Owl") View, manage and see the status of all of your Zaps in one place. You can organise your Zaps into folders and even share the folders for collaboration. You can quickly turn on and off your Zaps. There’s also a bulk delete, which you can recover Zaps from the trash just in case you need them back. ![Zapier dashboard: left sidebar with icons and folders; on the right, a Home tab listing four Zaps: LinkedIn autopost, GitHub repo event, Dropbox attachment save, and RSS feed tweet, each with status ON and minimal controls visible.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-zapier-zaps-793w.jpg "automation-tools-zapier-zaps-793w - Uncanny Owl") **Zapier’s Strengths** - It supports more than 2,000 integrations—mostly B2B non-WordPress at the time of writing. - There’s support for three types of delayed Zaps. You can now schedule to run at specific [intervals](https://zapier.com/help/create/customize/schedule-zaps-to-run-at-specific-intervals). - There’s the ability to build conditional Zaps. - It uses an Intuitive user interface (UI) for creating Zaps. No coding required. - It offers a free version. - It’s well documented. **Zapier’s Weaknesses** - It has limited integrations with WordPress. There is a Zapier WordPress plugin available but it’s still in beta and has very few triggers and actions. - It stores application data on third-party servers (Amazon AWS). - There’s no support for multiple triggers. - Its multi-step Zaps are available only on paid plans. - You can’t customize system-generated sender email address for Zapier notifications. ### Integromat [Integromat](https://www.integromat.com/) is an alternative to Zapier. It can automate many of the [same use cases](https://www.integromat.com/en/use-cases) that Zapier can. For example, it can help sync your WooCommerce customers with your Google contacts, post Google Analytics reports to your marketing team’s Slack channel, lanch an email broadcast announcement when you have a new product, and more. But, it doesn’t talk to as many apps as Zapier does. Integromat supports over 500 apps as opposed to Zapier’s more than 2,000 integrations. Usually, [webhooks](https://automatorplugin.com/whats-a-webhook/) operate in a trigger and action fashion with no data exchange. In other words, when a particular event happens, then do this activity. One of the interesting things that sets Integromat apart is being able to share data between scenarios using a [data store](https://support.integromat.com/hc/en-us/articles/360006248793-Data-store). Below is Integromat’s search interface. You’ll see this when you go to create a new scenario. The app selections presented under the search field are sorted alphabetically. Zapier, if you recall, shows your favourite apps at the top of the list. ![Blue gradient integration dashboard with a centered search field and a row of circular service icons (e.g., Action Network, ActiveCampaign, Acuity Scheduling, Agile CRM).](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-integromat-new-scenario-793w-500x436.jpg "automation-tools-integromat-new-scenario-793w - Uncanny Owl") Integromat by far has more ways to interact with WordPress compared to Zapier. Integromat supports 7 triggers, 30 actions, and 8 searches. Zapier has only 5 triggers, 4 actions, and 1 search. ![WordPress admin sidebar showing post actions: Watch, Create, Update, Delete, Get a Post, and Search for posts and pages like a menu list.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-integromat-wordpress-options-454w-273x500.jpg "automation-tools-integromat-wordpress-options-454w - Uncanny Owl") Like Zapier, you can view and manage all your scenarios in one place. An especially useful feature is Integromat’s support for versioning of scenarios. This is extremely handy if your scenarios are updated frequently or if you are working in teams where more than one person are authoring scenarios. ![Modal titled 'Previous Versions' with a version dropdown listing two June 25, 2020 times over a blue UI.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-integromat-scenario-versions-454w.jpg "automation-tools-integromat-scenario-versions-454w - Uncanny Owl") For logging, Integromat breaks down the activities for each scenario. This way, you know what was done to them, when something happened, and how they are behaving. ![Screenshot of an HTTPTest history panel showing past test runs with statuses and data transfers. The top tabs show Diagram, History, and Incomplete Executions; history table lists start time, status, duration, operations, and data transfer with a Details button for each entry.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-integromat-scenario-history-clean-793w.jpg "automation-tools-integromat-scenario-history-clean-793w - Uncanny Owl") **Integromat’s Strengths** - It has an advanced UI that makes them stand out from the competition. From the UI, you can create instant trigger webhooks, custom webhooks, and custom webhook responses. - Like Zapier, there’s no need to write any code to integrate with other systems. - You can restore previous versions of a scenario. - Its WordPress integration is more mature and offers more options than Zapier. - There’s support for storing data (offline) from a webhook. **Integromat’s Weaknesses** - It uses non-standard terminology that can be confusing for new users. - It has a unique interface that can also be a disadvantage because it takes time to learn and get used to. - Their support for more than 500 integrations at the time of writing is significantly less than Zapier. - Your data is stored in the European Union. - The help documentation is minimal (mostly videos too), not always up to date, has typos, and contains links to missing pages. ## CRM integration ### WP Fusion [WP Fusion’s](https://www.uncannyowl.com/share/wpfusion) tagline is “Connect WordPress to anything.” This plugin’s primary function is connecting other WordPress plugins to a non-WordPress CRM. Naturally, WP Fusion is a superb choice if you are using an external CRM system. We use it on this site to add people to our mailing list, trigger automations on product purchases, and better engage with customers. WP Fusion’s key features are: - It allows you to display CRM data within WordPress. - You can tag your CRM contacts when they download or purchase products. - You can keep your CRM accounts in sync between your WordPress sites. - It offers membership capabilities and shortcodes for a variety of plugins. - It gives you the ability to monitor stale accounts so that you can perform actions to win customers back. The Plus and Professional plans include features such as abandoned cart reporting, redirecting logins, Zapier (webhooks) integration, and protecting downloads. #### A quick tour around WP Fusion We’ll use the Mailchimp integration in this quick tour. In your /wp-admin/, you’ll need to navigate to **Settings** > **WP Fusion** > **Setup** and set up your CRM before you can do anything. Have your API keys ready. ![Setup page for API Configuration: CRM dropdown set to Mailchimp, MailChimp Configuration shows API Key field with a Resynchronize Tags & Fields button and a Save Changes button.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-wpfusion-setup-mailchimp-793w.jpg "automation-tools-wpfusion-setup-mailchimp-793w - Uncanny Owl") Once you’re done selecting your CRM, go back to the **General Settings** tab (first tab) to specify the rest of the CRM settings you need. Below is an example of linking WP Fusion to a specific audience (aka Mailchimp List) to sync with. ![General Settings page for Automatically Create Contact Records for New Users with Mailchimp list and tag options, and synchronization controls.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-wpfusion-general-mailchimp-793w.jpg "automation-tools-wpfusion-general-mailchimp-793w - Uncanny Owl") #### WP Fusion’s strengths - It supports 40 CRM systems. - There are more than 102 plugin integrations. - There’s a free plan (WP Fusion Lite). - It’s well documented on the [main WP Fusion website](https://wpfusion.com/documentation/). #### WP Fusion’s weaknesses - The Lite (free) plan only supports synchronizing accounts with contact records and managing tags. - Add-ons are available only with the Plus and Professional plans. - Not all of the supported 40 CRMs are 100% compatible. - There can be only one CRM integration per site. If your site uses Mailchimp and Hubspot, for example, you will have a difficult time. - There is no setup wizard. It’s not intuitive that right after you install the plugin, you need to head over to **Settings** > **WP Fusion** > **Setup** to select your CRM before you can get started. ### Groundhogg [Groundhogg](https://www.groundhogg.io/) is an impressive CRM in itself. What’s more, it’s also a fully-fledged marketing automation tool built for WordPress. Having something this powerful running in your WordPress site changes everything. Without Groundhogg, you would need to adopt a third-party CRM that stores your data and automates your workflows outside of WordPress. This means that your business’s website (on WordPress) and your online marketing systems (e.g., HubSpot or Click Funnels) are separate. Because they’re separate, you end up spending a lot of time making your site and marketing tools work together. Let’s look at an example. Say we are using Mailchimp for our CRM and a marketing automation tool. Just to get a simple newsletter opt-in form on your site is a challenge. First, you’d have to build your Mailchimp audience. This includes defining your segments and tags. Then, you use Mailchimp’s form builder to create your opt-in form for your audience. After reading the Mailchimp docs and doing some research online, you realise that you will have to either mess around with HTML embed code, use a third-party plugin, or hire a developer to place your form on your site. And, we haven’t even talked about styling your form, testing it, or running any automation workflows. With Groundhogg, your website, contacts, and opt-in forms are all in one place. Just imagine performing the big three marketing activities (managing your audience, creating marketing funnels, and launching email campaigns) all from your WordPress site. #### A quick tour around Groundhogg There’s no denying it, Groundhogg has a lot to take in. And, that’s putting it lightly. Thankfully, they have an **Official quickstart Course for Beginners** that you can start directly from the Groundhogg welcome page. ![Groundhogg Academy hero promoting the Official Quickstart Course for Beginners with a dashboard screenshot and a prominent 'Take The Quickstart Course' button.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-groundhogg-welcome-page-793w.jpg "automation-tools-groundhogg-welcome-page-793w - Uncanny Owl") Being able to sync your WordPress user accounts with your CRM contacts is a must-have feature. It’s no surprise that you can easily do this with Groundhogg. You’ll find these settings under **Groundhogg** > **Tools** > **Sync/Create Users** (tab). Do you need to import or export contacts? No problem. You can import your contacts using comma-separated values (CSV) format via Tools > Import. You can conveniently export your contacts from directly from Groundhogg’s **Contacts** page or from **Tools** > **Export**. ### ![Screenshot of a settings page with two panels: left panel titled 'Sync Users & Contacts' shows a description, a 'Sync all user meta' checkbox, and a blue 'Start Sync Process' button; right panel titled 'Create Users' contains a form with placeholders 'Please Select a Tag', a dropdown 'Choose role: Subscriber', a 'Send email notification to user' checkbox, and a blue 'Create Users' button. Top navigation tabs shown: System Info & Debug, Import, Export, Sync/Create Users, Bulk Delete, Updates, Install, Advanced Cron Setup.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-groundhogg-sync-users-793w.jpg "automation-tools-groundhogg-sync-users-793w - Uncanny Owl") Out of all the other CRM systems in this article, Groundhogg is the only one that offers a unique editor for specifically building marketing funnels. And to top it off, you can get a running start by using a pre-built funnel template such as the **Lead Magnet Download** funnel pictured below. **Pro tip**: Grounhogg lets you import and export funnels, which is tremendously helpful when you are working in a team or if you just want to make a quick backup or restore from an earlier export. ![UI for a marketing automation editor: left rail with step list (Lead Magnet Request, Wait 1 Day, Send It Again) and right pane's Follow Up! email form with a Send/Select dropdown.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-groundhogg-funnel-editor-793w.jpg "automation-tools-groundhogg-funnel-editor-793w - Uncanny Owl") We just saw how nice it is to have ready to use funnel templates. Well, you can say the same thing about their *canned* emails. Right out of the box, you get about a half a dozen email templates in draft mode ready for you to use. This obviously saves a lot of time typing and re-inventing the wheel. So, that means you can get up and running fast if you take advantage of these templates. ![Inbox list with checkboxes and several email items; subjects include 'Confirmation email', 'Groundhogg test: free download', 'What did you think of the eBook?', 'Did you still want the eBook? — (Draft)', 'Download Now: My Awesome eBook! — (Draft)', 'Did you still want your eBook?', and 'Thanks for requesting my awesome eBook! — (Draft)'.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-groundhogg-emails-456w.jpg "automation-tools-groundhogg-emails-456w - Uncanny Owl") #### Groundhogg’s strengths - It consolidates CRM, email marketing, and marketing automation tools. - There’s a unique marketing funnel builder that provides about a half a dozen templates. You can even export and import funnels. - It comes with pre-built canned email templates. The email editor allows you to set the **From** and **Reply To** fields. You can also override email headers. - It’s designed to be streamlined with fewer external integration hassles. - Your data stays on your site. - It has the advantage of native WordPress integration possibilities. - It provides a welcome page that features a quickstart course video along with 4 more step by step video tutorials. The welcome page also has links to help documentation and courses. #### Groundhogg’s weaknesses - Its form builder is a rudimentary TinyMCE style text editor that relies heavily on shortcodes. There are no built-in styling options. - There are so many features that Grounhogg can be daunting at first. However, the makers of Groundhogg mitigated this with exceptional documentation. ### Jetpack CRM On July 20, 2020, Automattic Inc. (makers of WordPress.com and WooCommerce) announced the arrival of [Jetpack CRM](https://jetpack.com/2020/07/20/introducing-jetpack-crm/). Jetpack CRM, formerly [Zero BS CRM](https://wordpress.org/plugins/zero-bs-crm/), is a WordPress plugin and can run independently of the Jetpack plugin. Jetpack CRM is like Groundhogg in that it’s a full CRM that runs in WordPress. However, it does not have marketing automation out of the box as Groundhogg has. If you visit Jetpack CRM’s website, you’ll notice immediately that its target audience is the so-called *hacker-entrepreneurs*. And, if you use Jetpack CRM, you’ll realize that its power comes from its extensions. #### A quick tour around Jetpack CRM Extensions are the way to go to get the full benefit of Jetpack CRM. Some of their newer integrations include Google Contact Sync, ConvertKit, WorldPay Sync, Envato Sync, Contact Form 7, and Bulk Tagger. You’ll need to pay for these extensions as there are no free ones at the time of writing. The pricing plans include “CRM” extensions, but the website doesn’t define which ones are CRM extensions. The website breaks out the extensions into the following categories: analytics, sync tools, email marketing, forms, payments, and tools. ![Banner for 'Bundle and Save' with rocket globe and a green 'View Bundles' button on the right; promotional header text included.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-jetpack-extensions-793w.jpg "automation-tools-jetpack-extensions-793w - Uncanny Owl") The folks at Jetpack CRM realize that the onboarding process for CRMs can deter people from using them or worse they don’t set them up the right way. Jetpack CRM makes the start-up process easier with a modern and simple to follow setup wizard. ![Jetpack CRM setup page showing Essential Details step with fields for company name, currency, business type, and three menu style thumbnails under a Next button.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-jetpack-crm-wizard-793w-533x1030.jpg "automation-tools-jetpack-crm-wizard-793w - Uncanny Owl") #### Jetpack CRM’s strengths - There’s a welcome start-up wizard. - There are more than 30 extensions available for individual or bundled purchases. - It has a **B2B Mode** that allows you to organize your contacts under a **Companies** layer. - It’s writer-friendly. There’s support for shortcodes, LaTeX, and markdown. - It leverages other useful Jetpack features such as stats, image galleries, and social sharing. - There are free, premium plans, and extensions for purchase. The entrepreneur bundle was a strong selling point for Zero BS CRM. This could change if an *Elite* plan is introduced because the email campaign feature might move from Entrepreneur to Elite. - It is also developer-friendly like Groundhogg. - It’s well documented. #### Jetpack CRM’s weaknesses - The free version only has basic CRM capabilities. - There’s no bulk email feature in the free version. You’d need to purchase an [extension](https://jetpackcrm.com/extensions/) such as their own Mail Campaigns extension. They also offer an AWeber and Mailchimp extension. - There’s no marketing automation in the free version. You’d need to purchase their [Automations](https://jetpackcrm.com/product/automations/) extension or use an external third-party marketing automation tool. - There’s no clear or well-defined funnels module. You’d need to purchase its Automations extension to build your workflow. Then, you’d need to purchase its [Funnels](https://jetpackcrm.com/product/funnels/) (reporting only) extension to run your reports. - Only basic CSV import is available in the free plan. You’ll need to purchase an extension like Woo Sync to keep your data synced up. ## WordPress plugin integration ### WP Webhooks [Ironikus](https://ironikus.com/) (makers of [WP Webhooks](https://wp-webhooks.com/)) focus on a niche part of connecting systems together with a WordPress site: webhooks. The WP Webhooks plugin boasts some of the more interesting use cases such as: - Create a user as soon as a new signup happens on Teachable. - Create a post using Alexa (Voice Control). - Create user accounts from a Microsoft Excel list. - Send data to [Intercom](https://wordpress.org/plugins/intercom/) when a user logs into your WordPress website. - Run custom PHP code using incoming data. It comes with free and paid Pro versions. With the Pro version, you can publish a post via email, remotely manage files and media, and integrate with WooCommerce. #### A quick tour around WP Webhooks WP Webhooks has a somewhat unconventional user interface. The pleasantries of a friendly welcome page or setup wizard aren’t available, as the target audience seems to be mainly developers. Below are screen captures of the **Send Data** and **Receive Data** pages. The documentation is *embedded* on the pages themselves—sort of like context-sensitive help if you need it. ![UI for a 'Send Data On Login' webhook setup: name, URL inputs, Add button, and outgoing values like user_object, user_meta, user_login with a JSON example.](https://www.uncannyowl.com/wp-content/uploads/2020/08/wp-webhooks-send-data-793w.jpg "wp-webhooks-send-data-793w - Uncanny Owl") #### WP Webhooks strengths - It’s easy to test all triggers and actions. - There are free extensions to integrate with other plugins such as [Easy Digital Downloads](https://wordpress.org/plugins/wp-webhooks-easy-digital-downloads/) (EDD) and [Contact Form 7](https://wordpress.org/plugins/wpwh-contact-form-7/) (CF7). - For developers, there’s a [starter extension code repository](https://github.com/Ironikus/wp-webhook-pro-extension) on GitHub. - There are helpful how-to videos available. #### WP Webhooks weaknesses - There’s no setup wizard. You need to figure out on your own that you have to go to the **Settings** tab (fifth tab down) first before you can do anything. - It integrates with only three other WordPress plugins: EDD, CF7, and WooCommerce (Pro version). - The help documentation isn’t obvious. There’s no documentation on the main [WP Webhooks site](https://wp-webhooks.com/). If you dig around in the plugin itself, you’ll eventually find links to documentation that is hosted on [a separate site](https://ironikus.com/docs/article-categories/get-started/). Most of the how-to documentation are videos, which isn’t great if you prefer to read or if you like to do searches using query strings. ### Uncanny Automator [Uncanny Automator](https://automatorplugin.com/) is the market leader for connecting WordPress plugins with other plugins, other WordPress sites and non-WordPress systems. At the time of writing, it integrated with over 50 plugins and external tools. Automator’s use cases range from simple welcome emails to complex workflows that span [separate WordPress sites](https://automatorplugin.com/connect-multiple-wordpress-sites-together/). Since Automator integrates with Zapier, there are more than 2,000 non-WordPress apps at your disposal, plus anything that supports webhooks can be integrated too. #### A quick tour around Uncanny Automator Getting started with Automator is easy, just choose what plugins or tools you want to “trigger” your automation. ![Uncanny Automator anonymous trigger](https://automatorplugin.com/wp-content/uploads/2020/05/automator-recipe-anonymous-trigger-wpforms-793w.png) Creating anonymous recipes is a key feature that permits the automation of user account creation and connecting with webhooks. Again, the friendly interface coupled with contemporary card layout designs helps make a fairly technical process easier to complete. ![Uncanny Automator anonymous recipe](https://automatorplugin.com/wp-content/uploads/2020/06/automator-anonymous-recipe-type-selected-743w.jpg) Data that is passed into a recipe is pulled into a form interface for you by using using tokens (also known as variables). In other platforms, these tokens are called *merge tags*. They’re called merge tags because when the automation is actually running, these tokens are merged with (or replaced by) the real data that they represent. Think of them as placeholders. This is a good example of creative approaches for automating the sharing of data between applications and systems. ![Creating a WordPress user account from WP Forms](https://automatorplugin.com/wp-content/uploads/2020/04/automator-recipe-anonymous-wpforms-set-user-completed-793w.jpg) One of the key selling points of Uncanny Automator is its visual representation and organisation of a recipe. With a short glance, you can get a bird’s eye view of what your recipe is going to do and the status of each component of your recipe. The image below shows a completed webhook recipe as an example. ![Uncanny Automator webhook recipe](https://automatorplugin.com/wp-content/uploads/2020/05/automator-recipe-anonymous-webhook-completed-793w-1.jpg) #### Uncanny Automator’s strengths - There’s built-in support for multiple triggers per recipe. - All your data stays inhouse on your website’s servers. - It has the most plugin integrations available for WordPress. - You easily share and sync data between multiple sites (if you have Automator installed on each site). - It allows you to turn your free forms plugins into user registration forms without extra paid addons. - It can handle complex use cases. - You have the ability to turn on/off different components of your recipes. - It supports Zapier and Integromat, which open up integrations to more than 2,000 non-WordPress apps. - The Pro version supports [anonymous recipes](https://automatorplugin.com/knowledge-base/anonymous-recipes/) that allow you to automatically create user accounts and integrate apps using webhooks. - There’s a dashboard for viewing activity logs at the recipe, trigger, and action level. This can be a lifesaver when you’re troubleshooting an issue or testing out a new recipe. - It’s well documented, and the documentation is easy to find. This includes developer-specific knowledge base articles. #### Uncanny Automator’s weaknesses - There’s no ability to delay or schedule triggers. - You currently can’t copy (clone) recipes. - There’s no versioning of recipes. So, you can’t revert to a previous version if needed. - You can’t import/export recipes. ## Plugin specific automation ### AutomateWoo [AutomateWoo](https://automatewoo.com/) is a premium extension for WooCommerce from the makers of WooCommerce and WordPress. With the combination of AutomateWoo’s core features, add-ons, integrations, and customizable code, just about everything you need for marketing automation should be covered. This includes CRM functionality and support for bulk email campaigns from its integrations with [AgileCRM](https://www.agilecrm.com/) and [ActiveCampaign](https://www.activecampaign.com/). #### A quick tour around AutomateWoo Your sales statistics are vital. Having a dashboard with important graphs and metrics will tell you if your business is on track with one quick peek. Like Uncanny Automator, AutomateWoo’s interface is up to date and blends (instead of clashing) with WordPress’s design. ![AutomateWoo dashboard: left navigation sidebar, three main charts (workflows, revenue, engagement) with metric tiles for queued workflows, active carts, guests, and recent logs.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-automatewoo-dashboard-793w.jpg "automation-tools-automatewoo-dashboard-793w - Uncanny Owl") AutomateWoo’s **Text Variables** are analogous to Uncanny Automator’s **Tokens**. Using **Text Variables** (handlebar syntax), you can pull in user account information to customise your emails. ![UI for composing a transactional email: subject, heading, and rich-text body with placeholders on the right for variables and a 'View Cart' button in the preview area.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-automatewoo-email-editor-793w.jpg "automation-tools-automatewoo-email-editor-793w - Uncanny Owl") #### AutomateWoo’s strengths - It’s perfect for targeted email marketing based on customer activity. - It has a workflow builder. - There’s excellent support for email use cases with no max limit for the number of emails sent. - It has a variety of automated emails that can fit almost any eCommerce scenario. - Twilio integration for SMS support is built-in. - It’s a developer-friendly plugin as you would expect because it comes from Automattic (parent company of WordPress and WooCommerce). - The documentation is great. #### AutomateWoo’s weaknesses - It’s not designed for broadcast or bulk email campaigns. But, it integrates with Mailchimp and ActiveCampaign. - Its workflow builder doesn’t seem to be advanced as Groundhogg’s marketing funnel builder. There aren’t any templates. But, there are how-tos for creating loyalty, subscription, and win back workflows. ### InfusedWoo As its name suggests, [InfusedWoo](https://woo.infusedaddons.com/) gives you seamless integration between your WooCommerce shop and your InfusionSoft account. InfusedWoo can automatically sync your contacts, sync your products, manage subscription sales, and apply tags based on purchases to keep your store and CRM in lockstep. On top of that, you can run email marketing campaigns (Infusionsoft campaign builder), track affiliate links and rescue abandoned carts as part of the integration that the plugin provides. #### A quick tour around InfusedWoo A splash page and **Guided Setup** wizard will get you up and running in no time. ![Screenshot of InfusedWoo WordPress admin panel with left navigation menu and a welcome message displaying the InfusedWoo logo](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-infusedwoo-welcome-splash-793w.jpg "automation-tools-infusedwoo-welcome-splash-793w - Uncanny Owl") There are two noteworthy mentions. InfusedWoo now supports pay plans and automation recipes. You can offer payment plans with InfusedWoo’s new **Payplans** feature located under the **Receiving Payments** tab. Click on the image below for the enlarged version. [![InfusedWoo dashboard showing a Payplan setup for a 4-month plan: left navigation with menu sections, main panel lists fields like Payplan Name, Number of Payments, Days Between Payments, Finance Charge, Sign-up Fee, Number of Trial Days, Advanced Options, Conditions, and a Simulate Payplan area.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-infusedwoo-edit-payplan-793w-414x500.jpg "automation-tools-infusedwoo-edit-payplan-793w - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-infusedwoo-edit-payplan-793w.jpg) The new **Automation Recipes** feature is not to be missed. It comes with a myriad of canned triggers, conditions, and actions. These standard automation features that you’d expect from third-party automation tools are right in your InfusedWoo menu under **Automation** > **Automation Recipes**. [![Screenshot of an automation recipe builder showing three steps: Select Trigger, Add Conditions, Add Actions with a left navigation menu labeled Import/Export and Automation.](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-infusedwood-create-recipe-793w-353x500.jpg "automation-tools-infusedwood-create-recipe-793w - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/08/automation-tools-infusedwood-create-recipe-793w.jpg) #### InfusedWoo’s strengths - There’s a convenient **Guided Setup** wizard. - You can sync user accounts with Infusionsoft contacts. - You can import/export products, orders, and automation recipes. - It has built-in support WooComerce subscriptions. You can also use a combination of Infusionsoft’s **Campaign Builder** and WooCommerce APIs as an alternative. - There’s support for conditional automation recipes. - It comes with Infusionsoft’s payment gateway built-in, and it can run in test mode. - You can also use your favourite payment gateways such as Stripe, Authorize.net, or PayPal. - It supports payment plans. - There’s a dedicated **GDPR Toolkit** feature. #### InfusedWoo’s weaknesses - There’s no support for multi-step automation recipes. - The **Cart Abandon Campaign** option in the Automation tools options is misleading. It’s only a blueprint on how to set up a cart abandonment campaign in Infusionsoft. - There’s no help documentation (publicly accessible). ## Conclusion We hope by now that you can see the advantages of integrating and automating your processes as your business grows. Integration and automation create an “efficiency cycle” (if you will). Put it this way, being more efficient means you can take on more business. More business translates into more demands. More demands will introduce additional offerings which beg for more integration. With more integration, you’ll need to bump up your automation to be more efficient as the cycle repeats. In this post, we armed you with our selection of the top automation tools for non-WordPress platforms, WordPress ecosystems, CRMs, and eCommerce sites. As you can see, each of these tools has its strengths and weaknesses. Just like all tools, some work better than others given the situation. Always step back and look at your ultimate goal. You might find that one business case calls for Groundhogg, WP Fusion, and Zapier. Another case is perfect for AutomateWoo and Uncanny Automator. It just depends. **Categories:** Best Practices, News --- ### [Intro to WordPress Staging Sites](https://www.uncannyowl.com/wordpress-staging-sites/) **Published:** August 5, 2020 **Author:** mark **Content:** You have a successful WordPress site. You’re happy because you got your site up and running quickly on a tight budget. Now, your website is the main source of your customers and sales. As your business grows, so does your need for more functionality and plugins. A few times a month, you make content updates and do theme and plugin upgrades on your site all by yourself. You’ve never had any problems—you think running a website is a piece of cake. Then, after you run a bulk update of a dozen or so plugins, you start getting emails from customers, your WordPress site, and even Google. The emails say that you have a serious issue with your site. You bring up your browser and try to pull up your site. Unfortunately, all you get is a blank white screen. This nightmare scenario happens all too often. The good news is, it can easily be avoided if you use what’s called a staging site or staging environment. A staging site is a separate copy of your live website. The keywords being: *separate* and *copy*. Because a staging site is separate from your live site, you can do things like upgrading to a new version of WordPress, upgrading your theme, or updating your installed plugins without affecting your live site. And, since a staging site is a copy of your live site, you can make changes and test the changes on a staging site as if it was your live site. After you verify that the changes you made on staging look good and work the way they should, then you can make those same changes on the live site. Testing updates on a staging site before applying the updates on your live site helps ensure: - Your site is still fully functional and continues working as it should after updates. - There’s no disruption of your online presence that you rely on to promote your brand awareness and preserve your credibility. - There’s no loss of revenue and customers because of unplanned downtime. - There are no search engine penalties from non-working pages or missing content (e.g., 404 or 500 errors). - There’s no loss of precious site content or customer data—namely for membership, eLearning and eCommerce sites. Staging sites don’t have to be just for testing plugin, theme and WordPress upgrades. They can be an entire development environment for a brand new site, a place for troubleshooting and fixing an issue, or even testing performance tweaks. Do you want to try out a new plugin or the latest beta version of WordPress? No problem. These are the kind of things a staging site lives for. And, if you care about your business and your customers, you shouldn’t be experimenting or making untested updates in your live site. [![WordPress Staging Sites](https://www.uncannyowl.com/wp-content/uploads/2020/07/wordpress-staging-sites-2.jpg "wordpress-staging-sites-2 - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/07/wordpress-staging-sites-2.jpg) Does the phrase, “a copy of your live site” set off your SEO warning bells? Rest assured that staging sites are almost always password protected and/or blocked from indexing. That means they won’t affect SEO standings of your live site. Do you need a final thumbs-up from your client before releasing new website features? Staging sites are invaluable for getting the site owner’s feedback on enhancements or fixes before they are made public. Staging environments have been an integral part of the software development lifecycle (SDLC) for decades. Their main purpose in the SDLC is to make sure you got things right before going live. However, just because you have a staging site doesn’t mean you’re completely in the clear. They can be misused like any other tools in your toolkit. Not to worry—whether you’re new to staging sites or a seasoned veteran, we’ve got your back. In this article, we’ll guide you through our best practices for using a staging site. We’ll begin by describing how you would incorporate it into your workflow. Then, we’ll dive into our list of dos and don’ts. Lastly, we’ll briefly explore some of the WordPress hosting providers who support staging sites. Please note that we’ll use the words staging site, staging environment, and staging to all mean the same thing. Similarly, we’ll refer to the live site as production from time to time. ## Incorporating a staging environment into your workflow ### Life before staging Let’s review a typical WordPress site’s update workflow without using a staging site. It would look like this: 1. Log in to your site’s admin **Dashboard**. 2. Click on **Updates** on the left sidebar menu. 3. Under the **Plugins** section, click on **Select All**. 4. Click the **Update Plugins** button. 5. Cross your fingers. Then rinse and repeat for installed themes and even WordPress. When all plugins are updated, maybe you bring up your home page to do a visual inspection. If there are certain pages or forms that are critical to your business, you might even go the extra step to check if they’re still working. Let’s say your website is an eCommerce site as an example. You try to purchase one of your products as a test. You find out that your shopping cart isn’t working. No products are being added, and you can’t figure out why. You’ve only got two options at this point, and both of them aren’t pretty. #### Option 1: troubleshoot and fix the issue knowing your site is broken, and the clock is ticking Thankfully, figuring out which plugin broke your shopping cart is pretty straight forward. One way to do this is to deactivate all your plugins. Then, turn them on one-by-one. Each time you turn back on a plugin, test your shopping cart. Once the shopping cart breaks again, the last plugin you reactivated before the issue reappeared is your culprit. But, it’s not over. We know which plugin is breaking our site, but we don’t have a fix yet. Your site is still broken. And, the clock is still ticking. Now what? You’ll need to contact the plugin author, report your issue, and request an emergency fix or a temporary workaround. How long it takes for the vendor to verify your issue and deliver you a patch is anybody’s guess. All the while, no one can buy anything from your site. #### Option 2: restore from a backup and accept a loss in data Assuming your hosting plan comes with a daily backup, you can restore your site from the last backup yourself. Otherwise, you frantically call customer support for help. You finally get your site restored, but there’s some data loss. Depending on how old the backup is that you restored, you could be hit with one to hundreds of lost product orders, customer data and subscriptions. Even one lost large purchase could deliver a critical blow to your business. ### Life with staging Here’s how things play out if you use a staging site for updating your plugins. 1. Log into your hosting provider. 2. Click on the one-click staging button to clone a copy of your live site to a staging environment. 3. Log in to your staging site’s admin **Dashboard**. 4. Click on **Updates** on the left sidebar menu. 5. Under the **Plugins** section, click on **Select All**. 6. Click the **Update Plugins** button. Now, we can run our shopping cart test again. But, this time we’re testing to see how things are working on the staging site. Not the live site. Insert a sigh of relief here. This means you can verify that your site is all good at your own pace. If there’s an issue, your live site isn’t affected. If there are no issues, then you can safely update all the plugins on your live site. ## Best practices ### The dos #### 1. Take a full backup A full backup means that all the files and database tables that make up your site are copied to a safe location. This is opposed to a partial backup where you can select to back up only parts of your site. A full backup includes WordPress core files, theme files, media files, and the database (DB). We recommend that you always make a full backup of your live site before creating the staging site copy. You can quickly restore everything back to normal from the full backup if needed. It’s important to note that there is a difference is between a daily backup and an instant (unscheduled) backup—sometimes called a snapshot. A snapshot taken just before updating the live site is good to practise for minimising data loss if something goes wrong. For instance, let’s say you didn’t take a snapshot, and your latest full backup was done 23 hours ago. Now, you want to abort the process of updating your live site for some reason. So, you restore from yesterday’s backup (it’s the most recent). When you check your site, it’s back up and running. You’re feeling good until … wham, you notice that the 200 purchases and customer accounts that were created over the past 23 hours are gone. Always take a snapshot before creating a staging environment and before updating your live site. More and more hosting providers are making the staging process easier. Kinsta’s [staging to live](https://kinsta.com/knowledgebase/push-staging-live/) feature is a one-click action that pushes your staging to site to the live site. Before the push to live, the live site is automatically backed up as part of the process. Similarly, the WP Staging plugin recently added an [automatic snapshot](https://wp-staging.com/create-restore-wordpress-backups-with-wp-staging-snapshots/) feature to their push staging to live function. #### 2. Disable emails While working in staging, you should disable all emails. You definitely don’t want to inadvertently flood your customer’s inboxes if the work you’re doing on staging is kicking out email notifications all over the place or your site sends scheduled emails. The [Disable Emails](https://www.uncannyowl.com/knowledge-base/disable-emails/) module in our [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/) is designed to remedy this. You can prevent your staging site from sending any emails by using the Disable Emails module. To test if your emails notifications are working without sending out actual emails, use the Disable Emails module in conjunction with the [Email Log](https://wordpress.org/plugins/email-log/) plugin. Disable Emails will block outgoing emails, but Email Log will record what notifications would go out as if they were sent. #### 3. Clear the cache It happens to all of us. After we make a simple change, we reload the page to see it, and it’s not there. We hit reload a couple more times—still nothing. We go back to the change. The change looks good. We hit the save button just to be extra sure. We click reload again. Nothing. We’re just about the scream before we realise we should clear our caches. Assuming your change doesn’t have an error, you save your work, and you’re looking at the right page, this problem is almost always due to caching. To save time and your sanity, we recommend disabling your [caches](https://wordpress.org/support/article/i-make-changes-and-nothing-happens/) while you are making changes in staging. Only enable them when you are doing performance testing or to make sure there are no plugin conflicts if you use a caching plugin. Make sure you clear your caches on the live site too when you push changes. #### 4. Version your child theme Version your child theme by updating the version field in the header section comments of child theme’s style.css file. This way, anyone who uses your child theme can make sure they’re pulling down the latest static files rather than what’s cached in the browser. ![WordPress Twenty Twenty child theme header](https://www.uncannyowl.com/wp-content/uploads/2020/08/staging-wordpress-twenty-twenty-header-css-ed-456w.jpg "staging-wordpress-twenty-twenty-header-css-ed-456w - Uncanny Owl") ### The don’ts #### 1. Never push the staging database to production Your production database should be the single source of truth. Treat it like your personal gold mine. Therefore, never contaminate it. This means, never push your staging database to your live site, especially if you have an elearning, ecommerce or membership site (in general any site where users have accounts and/or generate new data). Overwriting your production data from staging is never a good idea. Some automated staging tools do not permit pushing the staging DB to production. Instead of pushing from staging to a live site after validating changes, reproduce the steps you took on staging. It’s often helpful to keep a log as you test on staging, noting the updates you ran and changes you had to make to ensure everything worked properly after the updates. (If code updates were required to fix things and you use git repositories, it should be easy to push the fixes required on a staging site to the live site automatically, and if changes affecting the database are needed then keep a lot of everything that was changed.) #### 2. Don’t take partial backups As we mentioned above, full backups are the only way to *fly*. You might see options in your dashboard for backing up only the database, media, theme, or plugins. When it comes to working with staging environments, don’t take partial backups. We need to make sure we can always restore our complete site—not just pieces of it. #### 3. Don’t keep your backup on the server There are two big reasons you shouldn’t keep your full site backup on your website. First, if your server crashes and all files are lost, your most recent full backup is also gone. Second, your backup file(s) takes up disk space. Depending on the size of your site, your backup files can be humungous. Your available disk space could shrink to nothing if you have an increasing stockpile of backups on your site. Your site will screech to grinding halt when you’re out of disk space. Managed WordPress hosts typically offload backups to Amazon or another cloud provider to ensure they’re kept safe. #### 4. Don’t give public access to your staging site When staging sites are created on hosting plans that support them, they should automatically be private. However, you should always check especially if you manually created your staging site. It’s a good idea to password protect your site, and at a minimum make sure that search engine indexing is blocked. Staging sites should be controlled environments, meaning, you know what’s happening to the site at all times. Otherwise, you can be wasting precious time chasing your tail trying to figure out why the changes you made yesterday aren’t working today. #### 5. Never automatically update WordPress, themes, and plugins If your site is mission-critical, meaning that you’ll lose revenue and customers if your site goes down, you should never automatically update your WordPress version, your active theme, and any active plugins. You’ll need to check with your hosting provider’s policy to see what their default update settings are. If they default to any kind of automatic updates, then you’ll need to know if you can disable them. This is especially important for ecommerce, elearning and membership sites where the signed in experience is different and automated checks wouldn’t notice issues resulting from updates. Automatic updates for themes and plugins are usually disabled by default. If they aren’t, then you can [write filters in a must-use plugin](https://wordpress.org/support/article/configuring-automatic-background-updates/) or use a plugin like [Easy Updates](https://wordpress.org/plugins/stops-core-theme-and-plugin-updates/) to turn this off. To be clear, disabling automatic updates doesn’t mean you’re off the hook for keeping your site up-to-date. Never automatically updating means, you should take the time to test your site with updates before going live. ## Setting up staging on various host providers If you’re looking for a hosting company, we recommend that you choose a provider that has built-in support for staging sites. Below, we’ve picked 3 hosting providers that support staging sites in their plans. Let’s go through how you would set up a staging site for each provider. ### [WP Engine](https://www.uncannyowl.com/share/wpengine) 1\. Log into your **User Portal**. 2\. Navigate to **Sites**. 3\. Click on the site name that you want a staging site for. ![Dashboard left panel with A logo, menu items and a highlighted Sites section showing site list on the right.](https://www.uncannyowl.com/wp-content/uploads/2020/07/wp-engine-portal-sites-clean-2-793w.jpg "WP Engine sites portal - Uncanny Owl") 4\. Click on **Add Staging**. ![Admin dashboard left navigation with sections (Sites, Users, Tools) and an Add Staging button at the bottom of the panel, plus an Add Development option nearby.](https://www.uncannyowl.com/wp-content/uploads/2020/07/wp-engine-portal-add-staging-clean-793w.jpg "WP Engine add a staging site - Uncanny Owl") 5\. Click on the **Copy from existing** tab. 6\. Enter the name of your staging site in the **Name the environment** field. E.g., “mysite-staging”. Using this example, your staging site’s domain will be “mysite-staging.wpengine.com”. 7\. Select your production environment in the **Select an environment to copy from** drop-down. 8\. Select your most recent backup from the **Select a backup to use** drop-down. 9\. Click on the **Create environment** button. ![Screenshot of a staging environment page with tabs (Create new, Create from template, Copy from existing, Move existing). It shows a form to name the environment, select a source environment to copy from, choose a backup, and create.](https://www.uncannyowl.com/wp-content/uploads/2020/07/wp-engine-create-staging-environment-793w.jpg "WP Engine creating a staging environment - Uncanny Owl") An email notification is sent when the staging site is ready. ### [Kinsta](https://kinsta.com/) 1\. Log into your dashboard. 2\. Navigate to **Sites**. 3\. Click on the site that you want a staging site for. 4\. Select **Staging** in the drop-down menu located at the top right of the page. 5\. Click the **Create a staging environment** button. ![UI for a web app: left blue navigation, main message 'You have no staging environment' with a purple 'Create a staging environment' button and an illustration of a person at a computer on the right.](https://www.uncannyowl.com/wp-content/uploads/2020/07/kinsta-staging-environment-dashboard-1-793w.jpg "Kinsta staging environment dashboard - Uncanny Owl") Kinsta generates a staging site name and URL for you. The URL follows this format. **https://staging-sitename.kinsta.cloud** Where **sitename** is the name of your live site. ### [Pressidium](https://www.uncannyowl.com/share/pressidium) 1\. Log into your dashboard. 2\. Navigate to **Websites**. 3\. Click on the site name that you want a staging site for. 4\. Click on the **Staging** tab at the top. 5\. Click the **Create Staging** button. ![Staging dashboard announcing 'Create your first Staging' with a purple header, left navigation, and an illustration of a fox using holographic screens.](https://www.uncannyowl.com/wp-content/uploads/2020/07/pressidium-dashboard-create-staging-first-time-750w.jpg "Pressidium dashboard for creating a staging site - Uncanny Owl") When the staging site is ready, you’ll see a notification in your dashboard. Your staging site’s link will look like: **https://mysite.dev.onpressidium.com** Where **mysite** is the name of your live site. If your current hosting company doesn’t have staging support, you should request that they add it to their offerings. If they don’t plan on embracing staging sites any time soon, it’s time to shop around for a provider like the ones we’ve featured above. ## Conclusion We recommend that you always use a staging site even for updates that seem completely harmless. Conversely, we don’t ever recommend using your live site to test changes or try out new things. If you’re still doubting that staging sites are vital for your business, there are a couple of rare cases where we think you could forgo a staging site: - Your live site is private and has no visitors except for you. - Your live site is public, but no one cares if it’s up or down. Cost used to be a factor for skipping the use of a staging site. Luckily, more and more hosting providers offer free one-click environments. With increasing support for staging sites, there’s no reason to find out the hard way that running your operations without a staging site is far more expensive. Let’s face it, having a website (whether it’s on WordPress or not) requires continuous care and feeding. If you want a healthy and safe website that’s always running the latest/greatest features, investing in a staging site is a no brainer. **Categories:** Best Practices --- ### [LearnDash 3.2 and Group Changes](https://www.uncannyowl.com/learndash-3-2-and-group-changes/) **Published:** July 6, 2020 **Author:** Ryan Moore **Content:** The [LearnDash LMS plugin](https://www.uncannyowl.com/share/learndash) for WordPress first introduced groups almost 7 years ago, back in version 1.4. Groups were a way to assign courses and track progress for a collection of students as a single unit. It also empowered a new type of user, called a Group Leader, to oversee the activity for that segment of users rather than for all students on a site. As one of the most popular features in LearnDash, site owners started wanting more and more group capabilities. They extended group options with membership plugins, and developers like Uncanny Owl and Wisdm Labs built plugins specifically to add more features to LearnDash Groups. The LearnDash 3.2 release is the most significant change to the groups model since LearnDash first added them in 2013. In this article, we’ll examine what’s different and how it affects users of third party group and membership plugins. Here are some of the high-level additions in 3.2 for LearnDash Groups: - Group purchases - Group hierarchies - Group certificates - Group pages - Group content protection - Group user management - Bypass course restrictions for Group Leaders - Course creation and management for Group Leaders - Group creation and management by Group Leaders - A new ld\_group\_list shortcode - Search restrictions based on course enrollment [![LearnDash Group Leaders Manage Groups, Courses and Users](https://www.uncannyowl.com/wp-content/uploads/2020/07/Group_Leaders_Manage_Groups__Courses_and_Users.png "Group_Leaders_Manage_Groups__Courses_and_Users - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/07/Group_Leaders_Manage_Groups__Courses_and_Users.png) ## Group purchases [LearnDash 3.2](https://www.uncannyowl.com/share/learndash) now supports selling access to groups, so that on purchase of a product/group, the purchaser is added to the associated group. LearnDash supports this natively as well as via their [WooCommerce LearnDash integration plugin](https://www.learndash.com/support/docs/add-ons/woocommerce/) (version 1.8 or higher is required). This is a great feature that makes it easier for sites to offer a paid way for students to self-enroll into groups. Along with this change, LearnDash Groups now adopt some some of the Access Mode options that you would normally associate with Groups. Three Group Access Modes are now supported: - Free (users with an account can add themselves to a group) - Buy Now (purchases enabled via LearnDash payments) - Recurring (purchases via LearnDash payments) - Closed (payment using an integration, third party plugin or admin intervention; “Closed” is what groups in previous versions would have been considered and is the default) ### Uncanny Owl notes While LearnDash now supports this in the core plugin, this capability has existed in third party plugins for several years. Our Uncanny Groups plugin [supports it](https://www.uncannyowl.com/knowledge-base/sell-learndash-group-access-to-learners/), Uncanny Automator [supports it](https://automatorplugin.com/integration/learndash/), and the Wisdm Labs Group Registration plugin [supports it](https://wisdmlabs.com/docs/article/wisdm-group-registration/ldgr-features/setting-up-a-group-product/). The new LearnDash capability is also for selling group access to individual users; it doesn’t yet support sales to organizations (so that organizations can create groups and manage them in the front end). For that, a third party plugin (like [Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/)) is still required. ## Group hierarchies One of our #1 requests for our Groups plugin has been to have it support group hierarchies. We held off because we preferred to see support for this come from LearnDash, and now that it’s here, we’re excited about the possibilities. What this feature does is allow users to *optionally* add child groups to parent groups. Users added to a parent group are automatically added to the child groups and get access to anything in the subgroup(s). On the opposite side, users can still be in child groups and then don’t inherit anything from parent groups. [![LearnDash Group Hierarchy](https://www.uncannyowl.com/wp-content/uploads/2020/07/LearnDash_Group_Hierarchy.png "LearnDash_Group_Hierarchy - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/07/LearnDash_Group_Hierarchy.png) ### Uncanny Owl notes This has been a highly-requested feature, but the requests are usually for reporting roll-ups (so reports at the parent level include child group data) and pools of seats/licenses set at the parent level that can be allocated to subgroups. That’s not quite what this is, but we may still see movement in those directions (from both LearnDash and Uncanny Owl if we see interest for them; a way to enable these do at least exist in LearnDash now). ## Group pages In LearnDash 3.2, groups are now about more than just assigning course access and reporting, they also provide new opportunities to organize courses and offer group-specific content in the front end. By making group pages public and using a new shortcode that outputs a list of group pages a student has access to, it’s now easier than ever for elearning site owners to organize courses around groups and to deliver specific information and course content to members of a group. [![LearnDash Group Pages](https://www.uncannyowl.com/wp-content/uploads/2020/07/LearnDash_Group_Pages.png "LearnDash_Group_Pages - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/07/LearnDash_Group_Pages.png) ### Uncanny Owl notes It’s been possible for a long time to offer group-specific content to users based on CRM tag, membership level, and even group access. In our plugins we offer the [Restrict Page Access module](https://www.uncannyowl.com/knowledge-base/restrict-page-access/) in [Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) to control access at the group level to specific pages/posts, and many other plugins offer similar tools. Where the new LearnDash capability makes things easier is by providing access to group pages themselves along with a shortcode that outputs links to those pages. With other tools, including ours, it wasn’t always clear how to make restricted access pages easy to find. ## Group content protection Beyond the new access restrictions for Group pages, LearnDash now supports restricting any page, post, or other post type based on a user’s membership in groups. Once this is enabled, each associated post type will have an option to restrict the post to members of specified groups only. [![LearnDash Group Content Protection](https://www.uncannyowl.com/wp-content/uploads/2020/07/LearnDash_Group_Content_Protection.png "LearnDash_Group_Content_Protection - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/07/LearnDash_Group_Content_Protection.png) ### Uncanny Owl notes Post-level restrictions based on group are supported in the [Restrict Page Access module](https://www.uncannyowl.com/knowledge-base/restrict-page-access/) in Toolkit Pro, but they can also done with other plugins like [WP Fusion](https://www.uncannyowl.com/share/wpfusion) using tag-based restrictions linked to LearnDash Group. In the case of both of those, they add the ability to redirect users that don’t have access rather than just display messaging on the restricted page. Both WP Fusion and our [Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) plugin offer other group-based restrictions too, like [shortcodes to restrict specific content on a page to certain groups](https://www.uncannyowl.com/knowledge-base/frequently-asked-questions-2/#Can_I_show_or_hide_content_for_specific_groups). [![LearnDash Restrict Page Access](https://www.uncannyowl.com/wp-content/uploads/2020/07/LearnDash_Restrict_Page_Access.png "LearnDash_Restrict_Page_Access - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/07/LearnDash_Restrict_Page_Access.png) ## Course creation Starting with LearnDash 3.2, Group Leaders can now create and manage courses. Depending on settings, this can include the Group Leader’s own courses only or all courses on the site. Course creation works exactly as it does for admins, in the back end (i.e. /wp-admin/) and with the same available tools. Note that some third party tools normally only available to admins and other expected WordPress roles (and role capabilities) may not necessarily be available in editors. ### Uncanny Owl notes The [Wisdm Labs Instructor Role](https://wisdmlabs.com/instructor-role-extension-for-learndash/) plugin has historically served a similar purpose and continues to offer many advantages, like front end course creation and commission options for instructors. The new native features in LearnDash are likely to appeal to organizations where internal staff are creating courses, so they need a restricted role for course creation and management and are comfortable with course creation in the back end, whereas the Wisdm Labs plugin is likely to appeal more to sites where the course creators are third parties and may have less WordPress experience. ## Group certificates This new certificate type offers the option of awarding certificates for the completion of a group of courses. If all courses assigned to a group are completed by a student, a downloadable certificate is added to the group page for the user. It’s a nice way of being able to award specific certificates for completing a series of courses without having to set up workarounds like course prerequisites. ### Uncanny Owl notes Our Continuing Education Credits plugin has offered [certificates based on the completion of a series of courses](https://www.uncannyowl.com/knowledge-base/continuing-education-certificates/) for several years. Where the LearnDash approach differs is with convenience and easy on-site retrieval of the certificates from the new group page. Our plugin also had the drawback of not recognizing completions of courses that were done before the plugin was installed. Toolkit Pro users: Yes, we do expect to add support for emailing out group certificates (like we do for course and quiz certificates) in an upcoming release. ## User management This new optional feature (and we do want to stress that it’s optional, as we’ve heard from a few nervous upgraders) now puts many elements of user management in the hands of Group Leaders. This is a feature where we suggest a lot of caution and testing, as it does mean that Group Leaders can create, edit and delete users. The *basic* setting gives Group Leaders access to only the users in their groups, while the *advanced* setting gives Group Leaders access to *any* user on the entire site. We expect this will be used primarily on sites where Group Leaders are internal staff, because the ability to delete users and change information about them can be risky and recovery can be difficult. Still, for sites where Group Leaders can be trusted and need these types of tools, this is a great addition. ### Uncanny Owl notes The front end Group Management features in our [Uncanny Groups plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) have allowed some level of user oversight and management for some time, but we’ve been *very* reluctant to put this level of control in Group Leader hands. We won’t even allow Group Leaders to set passwords for existing users, because the Group Leaders could potentially then access personal user data with the password, including data from other courses and personal information. If your staff need this type of control the LearnDash features will be a great addition; we still don’t plan to add anything like this to our plugins because of our concerns around privacy and destruction of data without an audit trail. [![](https://www.uncannyowl.com/wp-content/uploads/2019/10/group-managment-page-reports-dropdown.png "group managment page reports dropdown - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/10/group-managment-page-reports-dropdown.png) ## Group management This next optional setting allows Group Leaders to create, manage and delete groups from inside /wp-admin/. Depending on the setting, this can apply to all groups on a website or only groups for which the user is a Group Leader. ### Uncanny Owl notes This can be another great option when Group Leaders need a lot of control and are likely employed by the site owner. The difficulty of recovering from group deletions and management of groups created by Group Leaders without consent of site admins remain a concern for us though. We can think of a few organizations we’ve worked with where these tools would be very helpful, but there still aren’t many. Our Uncanny Groups plugin does offer front end group creation, but we don’t enable it by default and we always emphasize caution (and restricting access) when people inquire about it. ## Bypass course limits Group Leaders can now optionally navigate anywhere they want in a course and ignore the Linear rules, just like admins can. This is a great addition that we plan to enable on most sites we support for ease of use and reduced confusion by Group Leaders. [![Group Leaders Bypass Course Limits](https://www.uncannyowl.com/wp-content/uploads/2020/07/Group_Leaders_bypass_Course_Limits.png "Group_Leaders_bypass_Course_Limits - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/07/Group_Leaders_bypass_Course_Limits.png) ## Course auto-enrollment When enabled, Group Leaders get access to courses assigned to groups for which they’re Group Leaders. This makes it easier for Group Leaders to see and review the courses that their students are completing. ### Uncanny Owl notes Our Toolkit Pro plugin has offered similar functionality for several years in the [Improved Group Leader Interface](https://www.uncannyowl.com/knowledge-base/group-leader-access/) module. As mentioned after the LearnDash 3.0 release, however, we largely now consider that module a legacy module and no longer as useful as it once was, especially with this new change in LearnDash core. Our Uncanny Groups plugin also [offers a way](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/#General_Options) for Group Leaders to get course access for the groups that they manage. ## The ld\_group\_list shortcode Paired with the [Course Grid add-on](https://www.learndash.com/support/docs/add-ons/course-grid/) from LearnDash, this new shortcode adds a new way to see groups visually. With this tool, courses can be organized by group, effectively another level in the LearnDash course hierarchy. Groups might even be used as categories to allow easier organization of related courses. ## Search restrictions We haven’t seen as much discussion around this feature, but LearnDash 3.2 now only returns lessons, topics and quiz results in WordPress search results if the user is enrolled in them. This means students will see fewer irrelevant search results and won’t experience frustration when they click into posts only to be told that they don’t have permission to view them. ### Uncanny Owl notes This is a *huge* improvement, and we have actually built custom solutions for some clients that have this exact behaviour. For those consulting clients we’re glad we could provide solutions where otherwise none existed, but now that LearnDash core supports this, it’s the better path forward. We will note that this new behaviour will only work effectively if permissions are managed based on LearnDash course enrollment. For sites that make all of their courses Open and then restrict individual access by membership level, CRM tag or other intervention, this new LearnDash enhancement won’t make a difference. ## Wrapping up and other notes [LearnDash 3.2](https://www.uncannyowl.com/share/learndash) is a huge release and the LearnDash team deserve a lot of congratulations for the work they’ve done. They have taken big steps to make groups more useful and solve problems around membership capabilities for many current and future LearnDash users. It’s a big release, so there are a few outstanding issues as we publish this (there were also big changes to the TCPDF libraries and we expect a 3.2.1 release soon), but overall LearnDash 3.2 is going to open up many new course delivery and management capabilities for elearning site owners. **Categories:** LearnDash, News, Uncanny LearnDash Toolkit --- ### [Use LearnDash Groups? Time to update](https://www.uncannyowl.com/use-learndash-groups-time-to-update/) **Published:** June 17, 2020 **Author:** Ryan Moore **Content:** Some of our plugin releases are ground-breaking, some add minor new features, some include fixes and others are a combination of them all. The Uncanny Groups for LearnDash 3.6 release falls fits the latter category; it’s a *really* important update for compatibility reasons but it also includes some useful improvements and new features. ## New features The Essay Management shortcode now supports a “status” attribute, with possible values of “all”, “graded” and “ungraded” (the default is “ungraded”). When the shortcode includes this attribute, it will initially load only essay questions with that status. This is particularly helpful on sites with huge essay volumes to reduce load times by only loading ungraded essay questions. In the previous version of the Uncanny Groups plugin, clicking a user’s status on the Group Management page took Group Leaders to the Course Report. Based on feedback from current users, we are adding the option to instead take Group Leaders to the Progress Report (a.k.a. Manage Progress) instead. This will allow easier review of student progress. The Not Started status will also now be hyperlinked (previously it was not, since there was no progress to report, but if a Group Leader needs to add progress records this will now be easier). [![Progress report for LearnDash Group Leaders](https://www.uncannyowl.com/wp-content/uploads/2020/06/Progress_report_for_Group_Leaders.png "Progress_report_for_Group_Leaders - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/06/Progress_report_for_Group_Leaders.png) Search on the Manage Progress page has been improved to return matches for any part of a user’s first name, last name or email address. This will help Group Leaders more easily find students. The user upload function on the Group Management page now supports setting usernames in the uploaded CSV file. When the column is included (it’s optional), the value will become the user’s account username (if the user is new). If the column is included but left blank, the email address will become the username. ## Compatibility updates We don’t know when it will be out, but the LearnDash 3.2 release is due out in the near future and it will make some pretty significant changes to groups. Some of these changes do cause some issues in our Groups plugin, so users of the new LearnDash version must update to use the plugin properly. MySQL 8 compatibility has been added for users running the latest version, and WordPress 5.4.2 added some changes as well that could affect some users of our plugin. This release includes a change to improve WordPress 5.4.2 compatibility related to the REST API. ## Fixes and performance improvements This is really the core of where existing users will benefit from the plugin upgrade. Sometimes how customers use our plugin pushes it to places we hadn’t always anticipated, so for some atypical cases this update will help a lot. Here are some of the changes: - Performance is significantly improved for heavy group usage. We initially hadn’t expected many LearnDash sites to have over 1,000 groups or for groups to have many thousands of users—now we know better. A few days ago we found performance issues on a site that had approximately 2.5 million enrollment keys set up for groups, which made for a great example of where we have performance gaps, but the customer of course was finding the plugin difficult to use. Some indexing is added in version 3.6 that helps with this. - When there was a Group License product in the cart, the Group Name field on the checkout page was marked as required but could be left empty; a message has been added to clarify the behavior for users. - Some strings weren’t translatable. There are over 600 translatable strings in the plugin now, and we appreciate our customers letting us know if they find something that doesn’t translate properly. - Line breaks are now supported in essay answers in the Essay report. - Some of our progress records didn’t align with LearnDash reports when the LearnDash activity tables were for any reason out of sync with other LearnDash records. While this could be fixed by running data upgrades, in a few places we switched queries to align with LearnDash records. The full changelog is available at **Categories:** LearnDash --- ### [New WordPress Front End Login Options](https://www.uncannyowl.com/new-wordpress-front-end-login-options/) **Published:** June 16, 2020 **Author:** Ryan Moore **Content:** The [Front End Login module](https://www.uncannyowl.com/knowledge-base/front-end-login/) was one of the first things we created for the free Uncanny Toolkit for LearnDash plugin. It gave [LearnDash](/share/learndash) users a simple, free tool for students to use when logging in, and for us (as our business was heavily focused on consulting at the time) it was one more way that we could make site development a lot more efficient. A lot has changed since we first introduced the module, including LearnDash adding its own login forms. There are still a lot of situations with the login form in our Toolkit is the best fit (and what we always use on sites we build), and with today’s Uncanny Toolkit 3.3 release we’re making the module even better. ## Introducing Modal Login Windows With the latest Toolkit release, you can add this shortcode anywhere on your site you want: \[uo\_login\_modal\]. That will create a link (that can also be styled as a button) that pops up a login window. No more devoting precious site real estate to giant login forms! Here’s what it looks like: ![WordPress Modal Login Form](https://www.uncannyowl.com/wp-content/uploads/2020/06/Modal_Login_WordPress.png "Modal_Login_WordPress - Uncanny Owl") There are new options in the Front End Login module settings to change the text of the label, whether or not to dim the background when the modal is active, and text for the link to return to the page. (Make sure to turn on the new AJAX support and use the *Boxed with shadow* template if you want to use modal login forms.) The new addition is incredibly powerful and flexible, it makes it practical to add login forms anywhere, but what about menu access? As long as the *Log In/Log Out Links* module is turned on, you’ll see a new option under *Appearance > Menus* in /wp-admin/ to add a modal login there: ![Front end modal menu](https://www.uncannyowl.com/wp-content/uploads/2020/06/Front_end_login_modal_menu_entry.png "Front_end_login_modal_menu_entry - Uncanny Owl") ## Login forms get AJAX support If you’ve ever wanted users to sign in but keep the page experience intact, now you can. There’s a new AJAX option (it’s disabled by default) in the Front End Login settings that allows users to submit the login form via AJAX instead. This option currently only works with the *Boxed with shadow* template. Note that this option *must* be enabled if you want to use the new modal login forms. ## Expanded Resume support Ever wish you could add the [Resume button](https://www.uncannyowl.com/knowledge-base/learndash-resume/) link in the Toolkit to a menu? Maybe somewhere else on your site, or even in your code, where a button might not make sense? The new \[uo\_learndash\_resume\_link\] shortcode returns a Resume link for users instead of a button, so you can include it in a menu or wherever else it might make sense. And with the url\_only=”yes” attribute, the shortcode will return the full URL for the user, rather than a link with Resume text. The 3.3 release includes several other changes behind the scenes as well (it has been 3 months since we last published a release!) that improve translation support and efficiency. If you’re not yet a Toolkit user, now is a great time to give the [free version](https://wordpress.org/plugins/uncanny-learndash-toolkit/) a try! **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Better LearnDash CSV Reports](https://www.uncannyowl.com/better-learndash-csv-reports/) **Published:** June 4, 2020 **Author:** Ryan Moore **Content:** Okay, maybe they’re not pretty, but the Course and Quiz CSV reports built in to [LearnDash](/share/learndash/) are still *extremely* useful reports. They’re a simple, reliable way to get information about students, student progress and quiz results out of LearnDash and into your favourite spreadsheet for analysis. We know a lot of users have looked at the reports, however, and thought, “Wouldn’t it be great if I could add this one more piece of data as a new column?” We’ve seen it asked *a lot*, so we decided to add this capability to version 3.5 of [Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/). We’re excited to introduce the [Enhanced LearnDash CSV Reports](https://www.uncannyowl.com/knowledge-base/enhanced-learndash-csv-reports/) module to the Toolkit Pro suite of addons for LearnDash. Its purpose is simple: add more columns with frequently-requested data to the LearnDash CSV reports. Here’s a screenshot of the columns you can add: [![Enhanced LearnDash CSV Reports](https://www.uncannyowl.com/wp-content/uploads/2020/06/Enhanced_LearnDash_CSV_Reports.png "Enhanced_LearnDash_CSV_Reports - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/06/Enhanced_LearnDash_CSV_Reports.png) Choose any columns you want to add, save the changes, and the next time you run the LearnDash export for the User Course or User Quiz Data, the extra columns will be included in the output. It’s a pretty straightforward module, but requests for custom columns tend to come up a lot and now we’ve made adding extra data even easier. Who knows, in a future release we may decide to add support for custom values from a user’s profile, if we see that there’s demand for it. ## What else is in Toolkit Pro 3.5? This is a pretty big release with a lot for all Toolkit Pro users to take in. Among the major updates, the Enhanced Course and Lesson/Topic grids now support single-column layouts. We had a number of users explain why they needed to support a 1-column approach and we listened. The modules now support between 1 and 5 columns instead of 2 and 5. The Duplicate Pages and Posts module now allows selecting which specific post types should support duplication. There are situations where some custom post types are better not being duplicated, so now it’s easy to turn support off for specific post types. That module also now gets improved compatibility with Elementor. There are lots of other improvements too; here’s a partial list of the important ones: - The Simple Course Timer has improved support for IE 11 (though we still don’t like seeing IE 11 used). - The Group Registration module uses the default role set in WordPress instead of forcing the Subscriber role. - Translation support has been improved. - CSVs that contain Mac and Linux line breaks will now be accepted by the Import Users module. - The Import Users module supports apostrophes in email address. - The Done button no longer shows up in the last topic or lesson of a completed course when autocompletion is enabled. Full details of other fixes are included in the changelog at: We hope you like the new additions and improvements! **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Introducing Automatic Template Overrides](https://www.uncannyowl.com/introducing-automatic-template-overrides/) **Published:** April 23, 2019 **Author:** Ryan Moore **Content:** We’re in the middle of another big round of plugin updates and perhaps one of the most exciting addition to our plugins is support for template overrides. Basically, this feature allows you to take key HTML elements from our plugins, copy the templates into your child theme, make modifications to them, and not be worried about your customizations disappearing when you update the plugins. Last week’s [Uncanny LearnDash Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) (3.1) and [LearnDash Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) (3.0.4) and this week’s [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/) (3.1) updates are the first to support this new behavior. Using the overrides is really easy; find something you want to override in the /src/templates folders of our plugins, copy that file to your child theme (into an /uncanny-toolkit/ folder for the Toolkit plugins, /uncanny-groups/ for the Groups plugin), and then apply your changes to the new file. If the file is in a subfolder of the /src/templates folder, replicate the same folder structure inside the override folder, but drop the /templates path (e.g. /src/templates/frontend-login/default-login.php would go in /your-child-theme/uncanny-toolkit/frontend-login/default-login.php). [![](https://www.uncannyowl.com/wp-content/uploads/2019/04/template-override.png "template-override - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/04/template-override.png) Certainly this feature is intended primarily for developers, who can build some very powerful features using our plugins as a base. Perhaps you want to add a new field to our Enhanced Course Grid, like an instructor name, or maybe on the Import LearnDash Users page you want to add your own instructions and branding. Template overrides make things like this much easier. And while we’re talking about Pro and Groups plugins anyway, here are some other recent updates to the plugins you may have missed… ### Recent Uncanny LearnDash Toolkit Pro Updates [Improved Group Leader Interface](https://www.uncannyowl.com/knowledge-base/group-leader-access/): No more relying on third party plugins to redirect your Group Leaders! This module now supports login redirects for Group Leaders. If you use Pro with our Groups plugin, this is a great way to get your Group Leaders to land directly on the Group Management page. [![Improved Group Leader Redirect](https://www.uncannyowl.com/wp-content/uploads/2019/04/improved-group-leader-redirect.png "improved-group-leader-redirect - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/04/improved-group-leader-redirect.png) [Email Quiz Certificates](https://www.uncannyowl.com/knowledge-base/send-quiz-certificates-by-email/): Tokens now available for including the user’s first and last name in the email sent to admins and/or Group Leaders. Use %First Name% to include the user’s first name and %Last Name% for last name. This makes organizing emails much easier. [Email Course Certificates](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/): Pro 3.0.4 added a way to send certificates with a timed delay. Most users *should not* choose the “Use Cron to send certificate option”, but in some cases where a shortcode does not have course completion when the certificate is sent, choosing this option and then having the certificate sent 20 seconds after completion allows time for shortcodes in the certificate to render properly. If you find your certificate PDF files have some blank values, try turning this on. ### Recent Uncanny LearnDash Group Updates We’ve made a number of recent enhancements to our Groups plugin that will really help site owners: **Put the Key Redemption field anywhere in your Gravity Form registration form**. This one is a huge improvement for several Groups users; the code entry field is no longer restricted to the bottom of the form. Instead, you can add the “Uncanny Code” field type anywhere on your form. **Include passwords in user uploads**. CSV files can now include a specific password rather than the Groups plugin force a random password. This is a *huge* benefit on sites where students may not have an email address, as instead of requiring that an email be sent with their password, or a link to reset the password, nothing needs to be confirmed by email. **User verification in Gravity Forms** is now supported, so you can have users confirm their email addresses before registration. **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Effects of COVID-19 on eLearning Demand](https://www.uncannyowl.com/effects-of-covid-19-on-elearning-demand/) **Published:** May 12, 2020 **Author:** Ryan Moore **Content:** It’s been about 2 months now since Uncanny Owl started seeing changes related to COVID-19, and since then our business has been anything but normal. We wanted to share some of the changes we’ve seen in the elearning and [LearnDash](https://www.uncannyowl.com/share/learndash) space in case it’s of interest to our customers, prospective LearnDash users and the elearning community in general. The last 6 weeks in particular have been a very strange time for us. ## The first two weeks The second week of March is when businesses and schools here (in Ontario Canada) started shutting down due to the coronavirus. Our consulting clients started working from home (our team normally works remotely anyway) and we began to see some worry among plugin customers. By the second week we were seeing a noticeable uptick in refunds due to cash flow concerns among businesses using LearnDash and work from existing consulting clients was either reduced or there was more emphasis on keeping costs down. This period is when we mostly saw panic, businesses weren’t pivoting yet and everyone was trying to figure out what came next. Organizations that we support that offer blended learning (both online and offline classes) started to shift to online only, but at this time there was still hope that things would be resolved quickly and that by May they could offer live classes again. Here’s something else that was interesting in March: The most-visited page on our website was a very old blog post about virtual classrooms. Not our plugin pages, not even our homepage, an article that was several years old about helping businesses adapt to virtual learning was bringing in the most traffic. This was indicative of businesses exploring their options in a COVID-19 world. ## April org changes and growth April is when we started to see businesses pivot and move to more online delivery of training. For Uncanny Owl it was probably our most stressful month in years, not only because of the launch of the [free version of Uncanny Automator](https://wordpress.org/plugins/uncanny-automator/), but because we saw a **huge** increase in plugin sales. Our volume in April was up over 40% compared to January and February and web traffic was up about the same amount. This sounds good, but we had a *really* hard time adapting to the associated increase in support tickets; those were up by about 34% compared to March. In April our team sent over 1,000 replies to customers, an all-time record for us, and it did unfortunately mean we had to push back on some work for existing clients. [![Uncanny Help Desk Replies](https://www.uncannyowl.com/wp-content/uploads/2020/05/Help_Desk_Replies.png "Help_Desk_Replies - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/05/Help_Desk_Replies.png) As organizations started to move more online and needed elearning solutions, we also had to field more requests for projects; people needing a LearnDash website increased a lot. The developers and agencies we normally referred projects to (since we weren’t accepting any) were also too busy, so we had more trouble with referrals. And one thing was also clear about the increase: **while elearning demand was up, budgets were down**. Even for the consulting work we were committed to, instead of just moving forward with development tasks as we normally would, we started providing estimates and going deeper into scoping before any work started. So for us, even while product revenues were up a lot, consulting revenues were down significantly. For the last year or so we’ve generally maintained a balance of 60% product sales to 40% consulting revenue, whereas in April it was more like 90/10. That’s a big change to our business model and we’re still working on getting the right team structure in place to accommodate that. ## Support from the LearnDash community The first few weeks of March, when organizations were just starting to feel the effects of the shutdown and were struggling to adapt, also resulted in many organizations that could help the elearning community step forward in creative ways. Some people in the LearnDash circle offered webinars, discounted invoices to clients, product discounts and more. They also volunteered their services to help where they could; we were fortunate to be in a position where we could volunteer our developers to [help the NHS in the UK](https://www.mixd.co.uk/blog/e-learning-tool-provides-support-to-the-nhs/) better deliver training to first responders. We at Uncanny Owl also offered discounts to organizations affected by COVID-19, an extended refund period on plugin purchases, extended invoicing terms for consulting clients and more, but we didn’t see much indication that those measures helped. And, once the initial March shock and repositioning turned into the April growth, some of the transitional measures that the LearnDash community was offering were harder to sustain given how busy April was. ## COVID-19 surprises We expected the increase in refund requests in March, but it surprised us to see those taper offer in April and return to normal (and very low) levels. We thought we were helping by offering discounts to organizations affected by COVID-19, but since we extended that offer in March we’ve had fewer than 10 requests. Whether it’s people that don’t know about the option, don’t think they qualify or simply don’t want to ask we don’t know, but the few number of requests has surprised us. If you are affected by the coronavirus and want to use our products but cost is holding you back, [please do reach out](https://www.uncannyowl.com/contact-us-2/). Another big surprise for us was that while plugin sales were up, [Uncanny LP](https://uncannylp.com/) sales were not. We thought it was a perfect fit for organizations affected by COVID-19; many needed to switch to elearning immediately, and due to decreased budgets needed a platform that they could launch at very low cost and very quickly. Uncanny LP is made for exactly that situation, but we just haven’t seen elevated interest in that platform. Even though LearnDash developers in general now are seeing increased demand, and organizations going the DIY route are looking at launch dates that are months away, they’re still choosing that route (as measured by our plugin sales) rather than taking the easy route with Uncanny LP. ## What’s next At Uncanny Owl, we’re expecting things to return to closer to what we saw in January and February, especially going into the summer. We’re anticipating our product/services mix to shift to about 80/20 in the next month or so, and overall demand to decrease slightly. We are not expecting budgets to increase though and we expect LearnDash site growth to expand overall, just not at the pace we saw in April. Given decreased budgets and an increasing need for pure and blended elearning solutions, LearnDash and WordPress are both well positioned for the changes in education we have just started to see. **Categories:** eLearning, LearnDash --- ### [Plugin Profile: Design Upgrade for LearnDash](https://www.uncannyowl.com/plugin-profile-design-upgrade-for-learndash/) **Published:** May 28, 2020 **Author:** Ryan Moore **Content:** When it comes to must-have plugins for [LearnDash](/share/learndash/), there’s a pretty short list of plugins that can add value to every LearnDash site. Our [Uncanny Toolkit for LearnDash](https://wordpress.org/plugins/uncanny-learndash-toolkit/) is probably one (at well over 20,000 installs), and the [Design Upgrade for LearnDash plugin from Escape Creative](/share/design-upgrade) is another. The Design Upgrade plugin (by LearnDash guru Dave Warfel) solves a very common need: how do you rebrand and restyle LearnDash elements without knowing much about CSS or having to get deep into LearnDash code? It takes the challenge of restyling potentially hundreds of elements and adds controls to a UI that make everything intuitive. And it all works really, really well. The free version of the plugin, available at , has over 7,000 active installs and every one of his 36 reviews garnered 5-stars. It gets even more impressive: at the time of writing this article, the plugin had a *single* ticket over a 2 month period in the support forum. Imagine that, on a plugin running on over 7,000 LearnDash sites, a single user reported a single problem within a 60 day span. Let’s take a closer look at what you can do with the free version of the plugin. ## Design Upgrade for LearnDash The free version of [Design Upgrade for LearnDash](https://wordpress.org/plugins/design-upgrade-learndash/) adds a lot of value to sites on its own. Even just *activating* it, before configuring anything, you’ll start to see more consistency and improvements across LearnDash-related buttons, fonts, focus mode, user profiles and more. The styling changes aren’t just for LearnDash either, even in the free version there are some overrides for third party plugins to better align them with LearnDash styles. (That includes some modules, though not all, in our Uncanny Toolkit plugin.) Here’s an example of how the free Design Upgrade plugin can change the look & feel of LearnDash elements: ![Free Design Upgrade for LearnDash](https://www.uncannyowl.com/wp-content/uploads/2020/05/screenshot-1-1.jpg "screenshot-1 (1) - Uncanny Owl") ## Design Upgrade Pro for LearnDash The [Pro version](/share/design-upgrade) of the plugin is where things start to get really interesting. After all, that’s where support for most of our Uncanny Owl plugins is included! Dave’s plugin adds support for [Uncanny Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) so that buttons, borders and other styles are made more consistent with the styles it applies to other LearnDash elements. [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) support was added recently and includes over 12 design options for customizing front end reports to fit the branding of your LearnDash site. Design Upgrade Pro adds border width, shadow and colour changes to the containers, tables, tabs and charts. All options are available through the WordPress Customizer, so making changes is easy using an interface you already know. Of course, the Pro version isn’t just about our plugins. Here are some other highlights of what it can do with the core LearnDash plugin: - Show or hide course and profile elements - Customize course content tables - Style the progress bar and buttons - Restyle the the course grid, navigation widget, focus mode elements and more Or, better yet, here’s a video from Escape Creative outlining more of what’s available in Pro: ## Who is it for? The [Design Upgrade for LearnDash](/share/design-upgrade) plugin is really for any LearnDash user, but we think it’s especially useful to novices that aren’t yet that comfortable adding CSS themselves. For developers it can save time too, but it’s the WordPress newbies that are likely to feel most empowered to have an easy to manage the look & feel of LearnDash courses and related elements on their sites. And as a quick side note, Dave has a pretty great site at that’s full of LearnDash tips and tutorials. *This is not a sponsored post but there are affiliate links in this article. We do just really like Dave’s plugin and the work he does with LearnDash.* **Categories:** LearnDash --- ### [New Code Capabilities for LearnDash](https://www.uncannyowl.com/learndash-code-redemption/) **Published:** May 4, 2020 **Author:** Ryan Moore **Content:** Generating and redeeming codes for LearnDash just got a *lot* more powerful. Today’s [Uncanny LearnDash Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) 3.1 release adds new ways to set up codes, new edit code capabilities and more. This update is free for all current Uncanny LearnDash Codes users. ## Use custom codes Probably the #1 customer request, version 3.1 now allows plugin users to enter their own codes rather than having them randomly generated. It’s as simple as it sounds; the Generate Codes page now has a toggle at the top to choose either randomly generated codes or codes entered by the user. Here’s what the new interface looks like: [![Custom LearnDash Codes](https://www.uncannyowl.com/wp-content/uploads/2020/05/Custom_LearnDash_Codes.png "Custom_LearnDash_Codes - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/05/Custom_LearnDash_Codes.png) Any codes are allowed, as long as they’re unique, between 4 and 30 characters long, and use alphanumeric characters plus hyphens. There’s no longer any need to edit database records if you want to use your own codes! The new system does check manual codes to make sure they are unique and valid, so there’s no need to worry about duplicates with custom codes after the update. ## Edit existing LearnDash code batches Have you ever wished you could make changes to codes that were previously generated? Maybe to allow more uses or extend an expiry date? Version 3.1 allows it! Every code batch that exists in the system can now be edited using the new Edit icons on the View Codes page. [![Table listing generated codes with columns: Codes Generated, Expiry Date, Redeemed; each row has action buttons for Edit, View, and Delete (plus one additional status/utility icon).](https://www.uncannyowl.com/wp-content/uploads/2020/05/Edit_LearnDash_code_batches.png "Edit_LearnDash_code_batches - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/05/Edit_LearnDash_code_batches.png) For the edit page, you can change the code type, number of uses, what future redemptions of the code grant access to (courses or groups), and expiration date/time. Note that edits can only be made to non-expired codes. ## Customize messages for code redemption Uncanny LearnDash Codes 3.1 adds a new visual editor for the redemption success messages. This is what users will see when they redeem a code using the standalone code redemption form. You can find the new editor under *Uncanny Codes > Settings*. [![Redeem LearnDash Code Message](https://www.uncannyowl.com/wp-content/uploads/2020/05/LearnDash_Code_Redemption.png "LearnDash_Code_Redemption - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/05/LearnDash_Code_Redemption.png) ## Terms & Conditions plus other improvements The Uncanny Codes settings page now also includes a Terms & Conditions editor that is optionally shown on the native registration form. When text is populated in this field, new users must accept the terms before they can register on the site and redeem a code. The 3.1 release now includes lowercase letters in automatically generated codes and additional error handling. Full details are in the [Uncanny LearnDash Codes changelog](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-codes-changelog/). If you haven’t tried Uncanny LearnDash Codes and need a system to grant access to courses and groups using codes, make sure to check out the [full list of features](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) and the [Knowledge Base](https://www.uncannyowl.com/article-categories/uncanny-learndash-code/). **Categories:** LearnDash --- ### [Uncanny Groups: Empowering Group Leaders](https://www.uncannyowl.com/more-power-learndash-group-leaders/) **Published:** April 20, 2020 **Author:** Ryan Moore **Content:** Today’s [Uncanny LearnDash Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) 3.5 release is a big update that includes a number of new features and improvements. ## Restrict content to LearnDash Group Leaders There are many ways to restrict content with LearnDash (by role, tag, course, group, level and more) in [our plugins](https://www.uncannyowl.com/knowledge-base/restrict-page-access/) and those of others, and even in Uncanny LearnDash Groups we have a shortcode to show content to members of a certain LearnDash group only. What was missing was a way to show content to *Group Leaders* only. The Uncanny Groups 3.5 release includes support for this new shortcode: ``` [uo_groupleader_restrict_content user_groups="7542"] Only Group Leaders can read this. [/uo_groupleader_restrict_content] ``` What that does is show the content inside the shortcodes *only* to Group Leaders that are set up as Group Leaders for the group with ID 7542. The “user\_groups” attribute is optional; if it’s omitted, all users with the Group Leader role will see it. It can also support multiple group IDs separated by comma. ## Group License purchase emails A common question we’ve had from customers is how to get new Group Leaders to the Group Management page and to make onboarding easier. Today’s release includes a completely new email type: New Group Purchase. This email is sent to purchases of Group License products (i.e. Group Leaders) so that you can provide special instructions about how to use and set up their new groups. Typically this email might include instructions about signing in, how to find the Group Management page, how to start adding users to a group, etc. [![Group Purchase Email](https://www.uncannyowl.com/wp-content/uploads/2020/04/LearnDash_Group_Purchase_Email.png "LearnDash_Group_Purchase_Email - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/04/LearnDash_Group_Purchase_Email.png) ## Group Leaders can edit users We know this sounds like a huge and scary change so this one is **disabled by default**. If, however, you want to let Group Leaders edit user names and email address, *even usernames*, that is now possible. When enabled, Group Leaders can click a student name in the Group Management page and change information about the student. Turning it on requires toggling the setting(s) below in the Uncanny LearnDash Groups settings page: [![Group Leaders can edit learndash student data](https://www.uncannyowl.com/wp-content/uploads/2020/04/Group_Leaders_Edit_LearnDash_Students.png "Group_Leaders_Edit_LearnDash_Students - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/04/Group_Leaders_Edit_LearnDash_Students.png) Be careful with this setting. For some sites this will make things *far* more convenient for Group Leaders, but on others this could be an unwanted risk of exploitation and changing student information without the student’s consent. ## Administrators can now use all reports We really want to discourage WordPress administrators from adding multiple roles to their accounts to switch between functions, so to make things easier, admins can now access everything that Group Leaders can in the Uncanny LearnDash Groups front end. Previously we locked some reports down to users with the Group Leader role, now everything is open to both Group Leaders and admins. Admins will, however, still need to be explicitly assigned to groups as group leader for the groups to show up in the front-end interface. The 3.5 release of Uncanny LearnDash Groups also includes a dozen other improvements and fixes. If you’re a user, make sure you check out the full changelog at **Categories:** LearnDash --- ### [Uncanny Automator is now FREE](https://www.uncannyowl.com/uncanny-automator-is-now-free/) **Published:** April 15, 2020 **Author:** Ryan Moore **Content:** **The heading is not clickbait and there are no strings attached.** Not only that, we made significant improvements before we released the new free version! You can now get [Uncanny Automator](https://automatorplugin.com/) from the WordPress repository here: . This free version replaces what we previously called “Lite”, except it’s even better than Lite: we removed the limit of 1 trigger per recipe and we even added more triggers and actions (including several previously only available in Pro). Releasing Automator for free to the world was a hard decision for our team, but we believe it’s the right one for these 2 reasons: 1. We want more people to try it. While Automator already has a big install base, we really want to see it grow and for more sites to try it. We’re very proud of the plugin and want to see it add value to more sites. 2. Another company largely copied Uncanny Automator and released their own version in the WordPress repository. While reusing code isn’t uncommon in the open source world (and Automator does have a GPL license), copying our UI, website, and even name put us in a difficult situation and we wanted to make a big move to reinforce our dominance. ## What is Uncanny Automator? If you’re new to Uncanny Automator (and we know this post will attract a lot of attention from new users), it connects plugins, sites and apps together. It lets you create automations where something happening can make something else happen. These automations are what we call “recipes”. A simple example would be a WooCommerce purchase adding a user to a BuddyPress group. Of course, Uncanny Automator can do a lot more than that. 🙂 Maybe you want a form submission *and* an associated purchase to enroll the user in a course, register them for an event, and send their manager an email. That’s easy for Automator. Uncanny Automator can do far more than that though. With Automator on 2 sites, you can have things that happen on one site (like a purchase) trigger things on another site (like user creation). You can also connect your WordPress site to other platforms using our webhooks and Zapier support, so other apps can make things happen on your WordPress site and the WordPress site can pass data to other systems. Here’s a quick video explaining how it works: Automator comes in 2 versions: the [new free version on WordPress.org](https://wordpress.org/plugins/uncanny-automator/), and a paid Pro version (with different licensing options) [available for purchase](https://automatorplugin.com/pricing/) on this site. Pro does come with more powerful tools (check [this list](https://automatorplugin.com/all-triggers-and-actions/) for a full breakdown; it also includes anonymous recipe support) but we promise the free version is *extremely* useful and capable too. We even added some features to the free version for this first public release (like a LearnDash course completion action and webhook actions) to ensure Uncanny Automator could add some value to almost all WordPress sites. If you’re just getting started with Automator on your WP site, make sure you check out our [Knowledge Base](https://automatorplugin.com/knowledge-base/). It’s where we break down everything about using Automator. There are some video tutorials in there to help point you in the right direction too. ## Changes for existing users If you’re already an Uncanny Automator user (thank you!), things will be a little bit different for you. Lite users are being upgraded to Pro and Pro users are getting more sites (regular Pro users can now use license keys on 2 live sites, Agency will increase from 5 to 10 and 25-site users are upgraded to Unlimited). We recognize the huge role you’ve played in helping Automator grow and become a mature feedback; your feedback has been invaluable. No manual changes to your plugins will be needed. When you upgrade the current Lite plugin it will automatically point to the WordPress repository version for your subsequent updates. ## This is also a huge release For current Automator Lite (and Pro) users, here’s what’s in the new version of the free plugin: - Email field types in form plugins now generate tokens for email type fields in actions - A [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) verb can now generate course, lesson and topic tokens - Global tokens (for our new users, these are basically variables that you can use in actions) are available for the current date and time - Category and tag support is now available for recipes to more easily organize them And for our Pro users, here’s what’s new in that add-on: - A WooCommerce trigger for order status changing to a status you define - New WordPress actions for creating new posts, adding new usermeta, and adding new postmeta (for user registrations and developers using Automator these could be gamechangers) - A new GamiPress action to revoke all points in a category - New trigger support for WooCommerce Subscriptions (the WooCommerce Subscriptions plugin is required for these triggers) ![Set usermeta and postmeta with Uncanny Automator](https://automatorplugin.com/wp-content/uploads/2020/04/New_usermeta_and_postmeta_options_in_Automator.png "- Uncanny Owl") We have done a lot of testing on these updates, but it’s a big release. Please let us know if you notice any issues. A full changelog is available [here](https://automatorplugin.com/knowledge-base/uncanny-automator-changelog/) for the new free version and [here](https://automatorplugin.com/knowledge-base/uncanny-automator-pro-changelog/) for Pro. For any developers out there, not only are we releasing a free version in the WordPress plugin directory, you can now access our repository for the first time and make pull requests. Make sure you check out if you have suggestions or want to contribute. ## We could really use your support While Uncanny Automator is 1.5 years old now, we are are now playing catch-up to the copy released by another vendor. We really hope you will give our Automator plugin a try, and if you do and it adds any type of value to your site, or you like the work we’re doing, please consider [leaving us a review](https://wordpress.org/plugins/uncanny-automator/#reviews), mentioning us on your site or social channels, and following us on [Facebook](https://www.facebook.com/uncannyautomator/) and [Twitter](https://twitter.com/automatorplugin), etc. It would mean a lot to us. And in the meantime, we’ll continue producing great products for WordPress and turning Uncanny Automator into the most powerful automation plugin for WP. If you have any questions about Automator or what we’re doing, please don’t hesitate to [reach out](https://automatorplugin.com/automator-support/). **We really hope you like Uncanny Automator and the changes we’re announcing today.** **Categories:** Uncanny Automator --- ### [Lectora Support and Front End Tin Canny Reports](https://www.uncannyowl.com/lectora-for-learndash/) **Published:** April 3, 2020 **Author:** Ryan Moore **Content:** As the [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) 3.4 release goes out, the Uncanny Owl team is currently all working from home and sheltering in place. Like many other firms in the LearnDash space, we’ve been swamped with requests and tickets as more education goes online, and we’re doing our best to meet the demand. Late last week, an agency in the UK approached us about work they were doing with part of the National Health Service. To support onboarding healthcare workers, they needed a way to get Lectora Inspire modules into LearnDash, specifically with Tin Canny. We’ve had a few requests for Lectora in the past, but not enough to justify the development effort (and adding support for new authoring tools does take a fair bit of time). Regardless, we wanted to help if we could, and between Friday and Wednesday of this week we built support for xAPI and SCORM 1.2 Lectora files. Today’s release of Tin Canny 3.4 includes the Lectora support that we built for the NHS. It’s our first time working with Lectora Inspire but the data tracks well with Tin Canny Tin Canny now also supports front end versions of the Tin Can and xAPI Quiz reports. Those reports, for Administrators and Group Leaders, make it easy to see records from uploaded SCORM, uploaded xAPI, and H5P modules. And with the customizable columns and filters, it’s now easier to get the right set of data (even when you might have millions of records). [![Front End Tin Can and xAPI Quiz Reports](https://www.uncannyowl.com/wp-content/uploads/2020/04/Front_End_Tin_Can__report.png "Front_End_Tin_Can__report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/04/Front_End_Tin_Can__report.png) For administrators that don’t want to give Group Leaders access to all of that data in the front end, there are switches to turn the reports on and off when you use the \[tincanny\] shortcode. Here’s how you can control it: [![Controls for Front End reports](https://www.uncannyowl.com/wp-content/uploads/2020/04/show_hide_front_end_reports.png "show_hide_front_end_reports - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/04/show_hide_front_end_reports.png) Tin Canny 3.4 is a big release, so we’re not done yet. Here’s what else is new that will help Tin Canny site owners: - Protection settings for uploaded modules are now available for non-LearnDash post types. - Support for Tin Canny uploads when using the Divi Builder - Performance of the *Hidden and Autoadvance* Mark Complete button integration is improved We hope you find the changes and new Lectora support useful! **Categories:** LearnDash, Tin Can --- ### [LearnDash Access Restrictions & bbPress Integration](https://www.uncannyowl.com/learndash-access-restrictions-bbpress-integration/) **Published:** January 13, 2020 **Author:** Ryan Moore **Content:** Today’s 3.4 release of the [Uncanny LearnDash Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) plugin adds 2 new modules, important compatibility updates for LearnDash 3.1 changes and a number of fixes. All users of the Toolkit Pro plugin are encouraged to update, especially to take advantage of the new modules now available. ## Restrict Page Access This new module added in the 3.4 release makes it possible to restrict *any* post (so WordPress pages, blog posts, lessons, topics, any public post types) by logged-in state, WordPress role, course enrollment or LearnDash Group membership. If you’ve ever wished you could restrict an entire page to only signed in users based on their LearnDash access, this module is going to be *very* beneficial for you. Setting up restricted access is as easy as shown in this screenshot: [![Restrict Page Access by LearnDash Access](https://www.uncannyowl.com/wp-content/uploads/2020/01/Restrict_Page_Access.png "Restrict_Page_Access - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/01/Restrict_Page_Access.png) By enabling the [Restrict Page Access module](https://www.uncannyowl.com/knowledge-base/restrict-page-access/), the metabox above is automatically added to the edit page for all public post types. The first level of access restriction is whether or not the user is logged in. If the “Users must be logged in” checkbox is checked, only signed in users can access the page; checking this also exposes additional access controls. Administrators can set the page up to only be accessible to users based on their WordPress role, enrolled courses or group membership. All of these selections are optional, and all fields allow multiple values to be selected. Note that access for each restriction type (role, course or group) is based on users having *any* of the selected access. If you populate multiple restrictions (so values in both role and course, for example), use must satisfy at least one of the conditions from each section. In other words, based on the screenshot above, a page with these settings would be restricted to administrators with access to Course 101 OR subscribers with access to Course 101. It would be blocked for subscribers with no Course 101 access and to “Customers” with Course 101 access (assuming the user has the Customer role and not Subscriber). You can also optionally set a redirect behaviour if the user doesn’t have access to the page. Checking the box allows selection of any page on the WordPress site or redirecting to a custom URL. If no redirect is defined, the user sees whatever message is designed in the “Access restriction message” field in the module settings. For many users, this new functionality can offset the need for a complex membership plugin or other tools to lock down access for specific pages. ## LearnDash Group Forums with bbPress The second new module in the Uncanny LearnDash Toolkit Pro 3.4 release is “Group Forums with bbPress”, which restricts bbPress forums to one or more LearnDash Groups. It really is as simple as it looks: [![LearnDash Group Forum Restrictions](https://www.uncannyowl.com/wp-content/uploads/2020/01/LearnDash_Group_Forum_Restrictions.png "LearnDash_Group_Forum_Restrictions - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2020/01/LearnDash_Group_Forum_Restrictions.png) The above screen is added to forum edit pages in bbPress; that’s where the link between LearnDash Groups and the forum is defined. But that’s not all… to make it easier for group members to access group-specific forums, enabling this module adds a “Forum groups” widget which, as the name suggests, outputs links to forums based on the signed-in users’s LearnDash Group memberships. Add this widget to a sidebar available inside courses to provide easy access for students to their group-based forum(s). ## LearnDash 3.1 Support We saw a few handful of users run into complications now that LearnDash 3.1 supports renaming quiz tables, specifically in the Reset Course Progress and Duplicate Pages and Posts modules. Fixes for those are included in the Toolkit Pro 3.4 release. ## Catch up on Toolkit Updates We recently released updates to the free [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/) plugin to complement the Toolkit Pro changes. The most notable of these was a new module called “[Disable Emails](https://www.uncannyowl.com/knowledge-base/disable-emails/)“. It’s as simple as it sounds, and we added it because we use it on *every single site* we manage at Uncanny Owl. Any time we clone a site out to Staging for update testing and maintenance, we turn that module on to make sure *no* unexpected emails go out. We consider that plugin a must-have when testing updates on Staging sites (we use an email logging tool when we need to monitor emails rather than have them actually sent). In future releases we plan to have it automatically detect when it’s being used on a Staging vs. Live site so that it can always be left on and disable emails on Staging while they’re allowed to pass on Live. The 3.2 Toolkit release also added new naming options for the Certificate Widget and Show Certificates shortcode, ordering options for the Certificate Widget, a redirect parameter in the address bar for Front End Login, Dashboard link support for the LearnDash 3.0 template and more. Make sure to update if you haven’t yet! **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [User Experience Improvements for Uncanny LearnDash Groups](https://www.uncannyowl.com/user-experience-improvements-for-uncanny-learndash-groups/) **Published:** September 25, 2019 **Author:** Ryan Moore **Content:** One of the biggest challenges that users of our [Uncanny LearnDash Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) plugin face is figuring out how everything works. It’s a plugin that started off with quite a basic footprint, but over the last 2 years we have continued innovating and adding some really exciting features. As we have done that, we know that it has increased the learning curve a noticeable amount, both for users of the plugin directly and for LearnDash Group Leaders. Because of that, the next few releases of the plugin will focus more on user experience. We need to make our giant plugin easier to manage, and that starts with today’s release of Uncanny LearnDash Groups 3.4. ## The Group Management table The biggest change in the 3.4 release is to the main Group Management page interface. When we launched the very first version, it was really simple; there was a way to add users and there were simple course and quiz reports. It was simple and uncluttered. Then we added a function to email users, an assignment management page, an essay management tool, a way to manage user progress… and it just got really busy and confusing. Here’s an example of what part of the Group Management table header looked like before Groups 3.4 (this isn’t even all of the buttons!) versus today’s release. [![learndash-group-simplified-interface](https://www.uncannyowl.com/wp-content/uploads/2019/09/groups-ui-3-4.png "groups-ui-3-4 - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/09/groups-ui-3-4.png)It’s a big change, to be sure, but we think simplifying the UI into menus instead of buttons will make the Group Leader experience a lot less daunting. For existing users, your existing shortcode attributes and settings will all be carried over, so don’t worry about these changes disrupting anything you might have customized. ## Essay and Assignment Management Front end interfaces to manage essays and assignments were late additions to our Uncanny LearnDash Groups plugin, primarily because we really don’t use them much on our own LearnDash sites. That remains the case, and until we recently worked with a client that does a *lot* with essay questions (I reviewed one example where a single instructor was assigned 3,000 essay questions to review), we didn’t know how inefficient our model was. [![LearnDash Essay Review Table](https://www.uncannyowl.com/wp-content/uploads/2019/09/learndash-essay-review.png "learndash-essay-review - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/09/learndash-essay-review.png) In today’s release, we’re adding new columns so that you can see a user’s answer and approve it right from the list of essay questions. No more clicking to load up a modal and approving it there, now instructors can power through grading activities and turn things around faster. Because of all of the new columns, we needed to do something with the clutter. Columns can now be turned on or off (with the little checkboxes above the table) and you can drag columns to whatever order you want. The system will even remember what columns users had shown and hidden when they visit the report at a later date. You can even resize the columns! The filter for Graded and Ungraded should make it a lot easier (and more performant) to see only the types of essay questions you need to review, and First and Last Names columns make searching easier. ## Performance improvements Some of our plugin users really pushed the boundaries of how we expected LearnDash Groups to be used, and in some cases our model didn’t perform well on certain sites. We never expected to see groups with over 10,000 seats or thousands of users, and while we still don’t think it’s a great approach in many situations, the plugin will at least perform better in those situations. The Uncanny LearnDash Groups 3.4 release is a big one, so make sure to test it on a Staging site before you update and have a look at the [changelog](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-changelog/) for even more updates! **Categories:** LearnDash --- ### [How to ask for WordPress plugin support (the right way)](https://www.uncannyowl.com/how-to-ask-for-wordpress-plugin-support-the-right-way/) **Published:** September 23, 2019 **Author:** Ryan Moore **Content:** Uncanny Owl recently passed a big milestone for our Help Desk: Ticket #10,000. We started using a Help Desk system in 2016, before we started selling plugins, and it’s perhaps our most valuable tool. It’s the first thing we check in the morning, the last thing we check at night, and using it ensures that the thousands of customers that depend on us stay happy. After a few years of providing support to over 3,500 different people, we know all too well what makes a WordPress support ticket easy to resolve and what types of inquiries are going to drag on for some time. Everyone wants a quick fix to their question or problem, and while we as plugin vendors do our best, there’s a lot you can do as a plugin customer to make the process more efficient. In this article, we’ll outline the best ways for making sure that your problem is resolved quickly and accurately. [![Help Desk Stats](https://www.uncannyowl.com/wp-content/uploads/2019/09/help_desk_stats.png "help_desk_stats - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/09/help_desk_stats.png) ## Be specific Last Thursday I took a call from a plugin customer who wasn’t very happy with our product. Despite us having a 10 minute call about it, I still don’t know why he was unhappy. The best answer he could give me was that “nothing worked”. I tried to dig deeper, to find out what functionality he was using and even why he bought the plugin, but he could only tell me he bought it to make his site “better”. I know he was frustrated, but he couldn’t articulate specifically what he was expecting that the plugin wasn’t doing. Receiving a ticket that tells us that a “plugin isn’t working” makes it difficult for us to help and means that we have to follow up asking for more details, which in turn delays resolution. Tell us what you’re expecting to happen that isn’t happening; let us know what you are experiencing now. If you see an error message, include the error message. ## Be kind and stay calm We know that you’re reaching out to us because you’re experiencing a problem that’s causing anxiety and asking us may be your last resort. We do our best to empathize with the situation and we approach tickets as if they were about our own site. When we receive a ticket that starts off with an introduction like, “Hey guys, love your [plugins](https://www.uncannyowl.com/plugins/), but I’m running into an issue right now with XYZ and I’m hoping you can point me in the right direction”, it’s going to set the right tone for the conversation and put everyone at ease. We’re also going to stay focused on resolving the issue. While it is (fortunately) very uncommon, taking the opposite approach slows things down and adds tension to the relationship. Early last week, a customer reached out to point out a small error in a line of code that we shipped out (that had negligible impact on functionality). It could have been a simple interaction: “Hi Uncanny Owl team, I noticed a small issue in this file on line 123, it should be ABC instead of XYZ, can you confirm the fix and include it in the next release?” That would have been fantastic, we would have investigated and confirmed it immediately, and the ticket would have been closed. Instead, the user led with, “Do you guys even test anything before you push updates?”—and then we’re automatically on the defensive. We then have to be more careful about planning our reply and approach to a resolution. ## Provide a test case Last week we had a ticket that effectively said, “Some of our users report that they can’t complete a course, please fix it ASAP.” I didn’t know what plugin they were using of ours, what was supposed to trigger course completion, etc. It took about 4 emails back and forth to put together enough detail to understand what users were doing and what was expected but didn’t happen. Here’s an example of a great test case related to a real (and recent) issue with one of our plugins: *Hi, I’m using the [Uncanny LearnDash Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) plugin with the Autocomplete Lessons & Topics module turned on. I have autocompletion enabled globally, but for the first topic of a course I have it disabled at the topic level. When I visit the topic as a user, I’m able to click forward to the next topic and the first is marked as completed. It shouldn’t be marked complete because of the topic-level override. Any idea what I’m doing wrong? Here are some screenshots so you can validate my settings.* That is a fantastically helpful ticket to us because we know exactly what the customer is using, we know how things are configured, we know the steps they’re taking and we know the expected vs. actual result. This kind of example makes it really easy for us to validate the issue in our test environment to assess if there is a problem in our plugin or if it’s a unique behaviour to their site. Be very descriptive, outline the steps someone could take to reproduce the issue, and include additional details like screenshots whenever it’s appropriate. [![WordPress plugin support](https://www.uncannyowl.com/wp-content/uploads/2019/09/wordpress-plugin-support.jpg "wordpress-plugin-support - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/09/wordpress-plugin-support.jpg) ## Outline what you’ve done so far Once again, the more we know the better. Using the ticket above as an example, it would absolutely help us to know if the user tested with different module settings or with the plugin disabled entirely to see if the results were different. Let’s take an example with one of [our plugins](https://www.uncannyowl.com/plugins/). Perhaps the site admin *wants* LearnDash Group Leaders to see the admin bar, but for some reason it’s not showing up. In our [Hide Admin Bar Toolkit Module](https://wordpress.org/plugins/uncanny-learndash-toolkit/), they have the Group Leaders unchecked (so those users should see it). This suggests another plugin is conflicting with the settings in the Toolkit. Before reaching out to us, maybe the customer already disabled all plugins (except our Toolkit) and changed the theme temporarily to confirm the issue still happens. Knowing that would save everyone time, because that’s the very first thing we would suggest if we suspected a conflict. That leads us to a related and very important recommendation. ## Get a Staging site ready With elearning sites in particular, testing updates and issues on a site that’s independent of your live site is critically important. Having a Staging site available for that purpose is a must, and if it can be used for resolving issues as well, all the better. Sometimes we simply can’t trace a plugin issue through descriptions and screenshots alone. We do need access to see what’s going on and to test things. I can absolutely confirm that we do not want access to your site unless there’s no alternative, and if we need it, we don’t want to test things on your live site. If an issue seems like it’s going to need troubleshooting directly in your environment, it’s going to be easier and safer for everyone if that testing can be done on a clone of the live site rather than the real site. If you suspect the plugin vendor will need to see what’s going on in the environment or the conversation is heading in that direction, get a Staging site up and running. ## Do some initial troubleshooting If you’re new to WordPress this guidance is going to be hard to action, but as you get more experienced you’ll start to understand what’s likely to be causing certain errors and where to look to trace them. If you see a white screen, a page in /wp-admin/ only partially loads, or you actually see a “500” error message, there’s likely a fatal PHP error on the site. Typically there’s going to be an associated message in the web server error log, so you’ll want to check there first for a “Fatal Error” and pass that on to the plugin developer. The [WordPress debug](https://wordpress.org/support/article/debugging-in-wordpress/) tool can also provide really important clues about system-level errors. If something on a site just looks wrong or unlike screenshots on a plugin developer’s website, or interactive elements on your site aren’t working properly, it’s likely a javascript or CSS conflict. Check the browser console (View > Developer > JavaScript Console in Chrome) for more information, and if you find any errors, they will be immensely helpful to the plugin developer. ## Include one issue per ticket only This one is *really* important when you want a quick resolution for your ticket. Our team has multiple developers, each of whom has different areas of expertise. We have 3 customer-facing staff handling support tickets and 4 developers behind the scenes providing assistance. Tickets that include several issues slow things down by an order of magnitude, because now we have to split tickets up behind the scenes, assign them to different developers and staff, then wait for an update on *all* of them before we can reply to the customer. After all, we don’t want to send pieces of updates and end up in situations where only part of the ticket ends up getting answered. A few weeks ago we had a customer submit a 3-page PDF file outlining 5 completely unrelated issues they were having. None of the 5 had a simple answer, all required testing and validation, and we had to address all of them before we could properly reply (beyond sending an initial confirmation warning the user that it would take longer to investigate all 5 questions). Turnaround time would have been improved for the customer, and things would have been more efficient for us, to have received 5 separate tickets instead. ## We want to help When something goes wrong with a WordPress plugin, it’s absolutely a scary moment and you just want it fixed as quickly as possible. We as plugin developers want the same. By helping us to understand the problem, making it easy for us to test it ourselves and by giving us all relevant information, your tickets will be turned around faster and your issues resolved more quickly. Give the tips above a try the next time you need to send in a support ticket and let us know in the comments if they helped! **Categories:** Best Practices --- ### [Manage LearnDash Course Progress for Learners](https://www.uncannyowl.com/manage-learndash-course-progress-for-learners/) **Published:** July 19, 2019 **Author:** Ryan Moore **Content:** Websites using LearnDash Groups, rejoice! The 3.2 release of the [Uncanny LearnDash Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) plugin just added an amazing new feature: a way for Group Leaders and administrators to view *and edit* learner progress in the front end. It’s got a great UI, it’s really simple to use, and our [Manage Learner Progress](https://www.uncannyowl.com/knowledge-base/manage-learner-progress/) tool is very powerful. Here’s a video that explains it: Just drill down into courses, click, and progress is updated automatically. It works for courses, lessons, topics and quizzes. If courses and lessons have associated lessons, topics and quizzes beneath them, those get automatically completed too. [![Manage LearnDash Progress](https://www.uncannyowl.com/wp-content/uploads/2019/07/manage-learndash-progress.gif "manage-learndash-progress - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/07/manage-learndash-progress.gif) ## Set up Front End Progress Management To use the new tool you must, of course, have the Uncanny LearnDash Groups plugin installed and activated. Once that’s done, the Manage Learner Progress page must be created manually by adding the \[uo\_groups\_manage\_progress\] shortcode to a page. Once that’s added, Group Leaders and admins can start managing progress! Why manually create the page when other pages in the plugin are created automatically? We made that decision because a lot of LearnDash admins might not want their Group Leaders having this level of control. This way, it can’t be accidentally turned on. Once the shortcode is in place, you can map the page in your Uncanny Groups Settings page and decide whether you want the view to be read-only for Group Leaders or whether you want them to be able to edit learner progress. Once the page is mapped in the Settings page, a new Progress button will be added to the Group Management page automatically! Group Leaders can now track course progress, report on quizzes, manage assignments, manage essay questions, and now edit LearnDash progress—all in the front end. Point & Click: It’s That Easy Once the Manage Learner Progress page is up, Group Leaders and admins can find users easily by searching by first name, last name or email address. The records autocomplete, so it’s really easy to find the right user. (And don’t worry, Group Leaders can only see users and courses associated with the groups they manage.) Once records have populated for a user, the Group Leader or admin can check or uncheck records to mark them as complete or incomplete. Changes are instant; there’s no risk of forgetting to save changes before leaving the page. For courses and lessons, you may wonder why we force the user to confirm the change before the system loops through and marks associated posts as complete (or incomplete). That’s because many sites have lesson and course completion trigger other things, like email notices and certificate generation. If the Manage Progress page executes these, the actions can’t be undone; emails can’t be unsent, for example. That’s why we force users to reflect and confirm that yes, they really do want to mark the course and everything beneath it as completed. We’re really excited about this new addition to the Groups plugin. It’s just so useful and has been requested by a number of plugin users. And yes, we know the Groups plugin has really turned into a *huge* platform, but it just adds so much value for anyone using LearnDash Groups. **Categories:** LearnDash --- ### [New Mark Complete Button Options in Tin Canny!](https://www.uncannyowl.com/new-mark-complete-button-options-in-tin-canny/) **Published:** August 8, 2019 **Author:** Ken **Content:** Our [Tin Canny LearnDash Reporting plugin](https://www.uncannyowl.com/downloads/tin-canny-reporting/) offers the easiest way to add modules from tools like Articulate Storyline, Adobe Captivate, Rise, and iSpring to your LearnDash courses. It’s our second most popular LearnDash plugin and gives thousands of LearnDash sites xAPI and SCORM capabilities that rival bigger LMS vendors. Since it was introduced, we gave LearnDash users a way to control progress in courses based on how learners interacted with uploaded modules. It was pretty simple: users could only click the LearnDash Mark Complete button to move forward if they completed, passed, or achieved some other condition inside the module. For Tin Canny some users, that wasn’t enough. We got a lot of questions about Tin Canny like these: - Can we hide the Mark Complete button completely until the learner completes a module? - Can we change the text on the Mark Complete button if there’s Tin Canny content on the page? - Can we automatically mark the lesson/topic complete when the learner completes the module? - Can we automatically move the learner to the next lesson when they complete the module? We wrestled with changes for a long time and couldn’t settle on the right way to handle autocompletion and autoadvancing for people that wanted those things. That led to some Tin Canny users adopting third party solutions, like [Uncanny Automator](https://automatorplugin.com/). Instead of coming up with a single solution, Tin Canny 3.2.2 offers—all of them! ## Introducing the new Mark Complete Options [![](https://www.uncannyowl.com/wp-content/uploads/2019/08/Tin_Canny_Mark_Complete_options.png "Tin_Canny_Mark_Complete_options - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/08/Tin_Canny_Mark_Complete_options.png) We heard your feedback and added every option we could think of to Tin Canny. They include: - **Always Enabled:** Mark Complete button is always enabled. - **Disabled until complete:** Mark Complete button is disabled until the completion condition has been satisfied. This is the current default behaviour when the Mark Complete control is turned on in Tin Canny. - **Hidden until complete:** Mark Complete button is hidden until the completion condition has been met. When the condition is met, Mark Complete appears. - **Hidden and autocomplete:** Mark Complete button is hidden and the lesson/topic is automatically marked complete when the completion condition has been met. (Make sure you have an intuitive way for users to know they finished the module and can move forward!) - **Hidden and autoadvance:** Mark Complete button is hidden, the lesson/topic is automatically marked complete and the learner is automatically advanced to the next lesson or topic when the completion condition has been met. (You may want to add an empty final slide or something similar so users aren’t automatically advanced when a results slide appears.) For a full description of the options, visit our [Knowledge Base](https://www.uncannyowl.com/knowledge-base/tin-canny-learndash-mark-complete/). The options can be set globally from the settings screen, or individually at the lesson/topic level. We think these new options open some exciting new possibilities for an even more seamless learner experience. These new options should address all requests that we’ve had for new behaviours in the Mark Complete controls, but as always, send us your feedback about how we can make things even better. Our goal is always to make Tin Canny the easiest and most feature-rich SCORM and xAPI solution for LearnDash platform! **Categories:** LearnDash, Tin Can --- ### [Use LearnDash Groups? Get this Toolkit Pro Update](https://www.uncannyowl.com/use-learndash-groups-get-this-toolkit-pro-update/) **Published:** July 25, 2019 **Author:** Ryan Moore **Content:** Version 3.2.6 of the [Uncanny LearnDash Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) might sound like a small point release, but for users of LearnDash Groups, it’s going to make things a *lot* better. We worked *really* hard on this one to accommodate a number of user requests (including from the [LearnDash](https://www.uncannyowl.com/share/learndash) team), so we know it’s going to add a lot of value. ## Send Group Drip Notifications The [Group Drip](https://www.uncannyowl.com/knowledge-base/drip-lessons-by-ldgroup/) module is now compatible with the [LearnDash Notifications](https://www.learndash.com/support/docs/add-ons/notifications/) plugin! What does that mean for you? Well, if you control how lessons are dripped by LearnDash Group, it means you can send users an email when the lesson is available. Workarounds, like using a CRM to drip notices based on group tag, are no longer needed. [![](https://www.uncannyowl.com/wp-content/uploads/2019/07/group_drip_notification.png "group_drip_notification - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/07/group_drip_notification.png) This makes is much, much easier to let students know when content is available in their courses. Please note that while we did our best to make things as simple as possible, because of how the Notifications plugin works, having emails triggered by group drip date does unfortunately require that everything be set up in a particular order. Here’s what’s needed to make the notifications work: 1. Create the Lesson Notification in the [LearnDash Notifications](https://www.learndash.com/support/docs/add-ons/notifications/) plugin. 2. Create or edit the lesson you’re going to drip. 1. If Shared Course Steps are off, choose a group for the drip behaviour and then select a date. 2. If Shared Course Steps are on, select a course in the Course Switcher dropdown, choose a group for the drip behaviour and select a date. 3. Save the lesson changes. The lesson update after setting up the notification is unfortunately needed for emails to be triggered properly. It’s worth it though for this powerful new feature! ## Integration with the Uncanny Groups Plugin The 3.2.6 release of Pro also adds some really compelling new ways to use Pro with our [Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) plugin. The [Import LearnDash Users](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) and [Group Registration](https://www.uncannyowl.com/knowledge-base/group-sign-up/) modules now recognize and work with seat limits set in Groups. What does that mean for your site? For the [Import Users](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) module, it means that user uploads into LearnDash Groups that have seat limits will now count against available seats. In other words, if a group has 100 seats assigned, 40 in the group already and you add another 40 by import, the group will now have 20 seats remaining. The imported users will count against the seat count for the group. And, if you were import 100 instead of 40, then the seat limit for the group would be increased to 140 (since there were 40 and 100 were imported) and the available seat count would change to 0. It’s pretty great, but the [Group Registration](https://www.uncannyowl.com/knowledge-base/group-sign-up/) changes are even better. Now all users that register from the group URLs count against the available seat limit. These means you can now limit how many people can use these registration URLs, but even better, you can let group members self-register directly into groups without using enrollment keys. Instead, the unique URL they register from effectively acts as the pre-populated enrollment key. This approach is *far* easier for learners to use when signing up for group-based access. And that’s it for Uncanny LearnDash Toolkit Pro 3.2.6! If you use LearnDash Groups, you’re definitely going to enjoy these new features. **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [xAPI Quiz Reporting: Beta](https://www.uncannyowl.com/xapi-quiz-reporting-beta/) **Published:** May 31, 2019 **Author:** Ryan Moore **Content:** Today’s release of [Tin Canny LearnDash Reporting](https://www.uncannyowl.com/downloads/tin-canny-reporting/) added some *extremely* significant new features for anyone working with xAPI modules inside LearnDash. Because they are big changes and have not yet been tested extensively on live sites, for now we’re considering them “beta” additions and we recommend caution when trying them out. ## Track xAPI Quiz Scores The biggest change is that we now support collecting [quiz data from xAPI records](https://www.uncannyowl.com/knowledge-base/xapi-quiz-report-beta/). For our current Tin Canny users, you know that in previous releases we collected scores and verbs from xAPI and SCORM records only. There were several reasons for this, but an important one was that earlier Tin Canny releases were not as efficient with very large sets of data and in early development we decided to capture and report on the most important data only so that we kept database records down and performance up. We estimate that around 10% of Tin Canny users requested that we add quiz data as well though, so now, in beta form, we’re making that option available. Here’s what we came up with as a starting point: [![](https://www.uncannyowl.com/wp-content/uploads/2019/05/LearnDash_xAPI_Quiz_Report.png "LearnDash_xAPI_Quiz_Report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/05/LearnDash_xAPI_Quiz_Report.png) This is going to be *hugely* beneficial to sites that offer quiz questions inside uploaded modules, because it now makes it possible to see specific questions in a quiz, the user’s answer, the choices available, the correct answer, and whether or not the user was right. Want to know who answered a specific question incorrectly? Now you can do that. Maybe you want to know how many users answered “C” for a specific multiple choice question? That’s also possible now. It’s a very big improvement, especially used in combination with the filters for LearnDash course, module, question, result and date. And yes, we know that some of the columns are far too narrow for some quiz questions on sites. That’s why we made it possible to add and remove columns from the table using the Screen Options function at the top of the page. This one is really powerful and we haven’t seen anything like it from other xAPI tools. Sorry SCORM users, the beta report for quiz data supports xAPI only, but we’re looking at SCORM support for an upcoming release. ## Replace Content (beta), Site Check and More Besides the lack of quiz data, the inability to easily swap out uploaded modules was a relatively common request from Tin Canny users. In previous versions, replacing a module meant deleting the old module, then uploading a new one and fixing all of the shortcodes if the module was embedded in multiple places. Now on the Manage Content page there’s a “Replace” link available for each module, which takes the new upload file, adds it, and replaces it in lessons and topics that used the old module automatically. If also deletes the old module and all related files. This feature should make a lot of users very happy. *Please note that this feature is in beta*, and requires the deletion of at least some of the stored progress data for users, so be sure to check the [knowledge base article](https://www.uncannyowl.com/knowledge-base/managing-elearning-content/) before using it on your site. Next up, **Site Check**. We were getting too many of the same support requests over and over related to common environmental issues. Mark Complete button not updating? Something is probably blocking the endpoint, like a .htaccess password or security plugin. Content not showing up? Possibly an http vs. https mismatch. Nothing working? Maybe the permalinks are invalid. For some of these common issues, Tin Canny now offers a [Site Check tool](https://www.uncannyowl.com/knowledge-base/site-check/) to rule out the most common problems, and if any are found, it suggests why they might be happening and how to fix them. [![Tin Canny Site Check](https://www.uncannyowl.com/wp-content/uploads/2019/05/Tin_Canny_Site_Check.png "Tin_Canny_Site_Check - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/05/Tin_Canny_Site_Check.png) The 3.2 release also adds far more filters for developers, total course and learner stats to front end reports, and it takes care of a few additional translation issues (notably if you try to rebrand “Tin Canny”). **Most importantly: This update fixes an issue related to LearnDash 3.0 theme changes**. If you use LearnDash 3.0 and controls over the Mark Complete button, you *must* use Tin Canny 3.2 or higher or the Mark Complete restrictions won’t work. LearnDash changed how the Mark Complete button is identified and the only solution is to update to the latest version. That’s it for now. We hope you like the changes! **Categories:** LearnDash, Tin Can --- ### [LearnDash 3.0 is out. Do you still need the Toolkit?](https://www.uncannyowl.com/learndash-3-0-is-out-do-you-still-need-the-toolkit/) **Published:** July 11, 2019 **Author:** Ryan Moore **Content:** The LearnDash 3.0 release landed a few weeks ago, bringing with it lots of new features and a far better user experience for students and admins. It also added new login and registration options, meaning LearnDash site admins no longer need to rely on additional plugins to incorporate those features. With all of the LearnDash enhancements in the 3.0 release, it begs the question: Do LearnDash site owners still need the free version of the [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/)? [![LearnDash Toolkit](https://www.uncannyowl.com/wp-content/uploads/2019/07/Uncanny_LearnDash_Toolkit.png "Uncanny_LearnDash_Toolkit - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/07/Uncanny_LearnDash_Toolkit.png) ## What’s in the Toolkit? To consider the relevancy of the free Uncanny LearnDash Toolkit in a LearnDash 3.0 world, let’s review the modules included in the Toolkit: - [**Breadcrumb Links**](https://www.uncannyowl.com/knowledge-base/learndash-breadcrumb-links/): Allow easy navigation from inside lessons and topics back up to the course and student dashboard level. - [**Certificate Widget**](https://www.uncannyowl.com/knowledge-base/learndash-certificate-widget/): Output a list of earned certificates in a widget area with links to open the certificates. - [**Front End Login**](https://www.uncannyowl.com/knowledge-base/front-end-login/): A login form that allows easy branding, password reset, recaptcha support and more. - [**Groups in User Profiles**](https://www.uncannyowl.com/knowledge-base/learndash-groups-user-profiles/): List groups that a user belongs to on the profile edit page in /wp-admin/. - [**Hide Admin Bar**](https://www.uncannyowl.com/knowledge-base/hide-admin-bar/): Hide the admin bar for users based on role. - [**Log In/Log Out Links**](https://www.uncannyowl.com/knowledge-base/log-in-log-out-links/): Add links to menus to easily log in and log out from any page on a site. - [**Log In/Log Out Redirects**](https://www.uncannyowl.com/knowledge-base/learndash-login-redirect/): Control where users are directed when they log in or out on the site. - [**Menu Item Visibility**](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/): Show menu entries based on whether or not the user is signed in. - [**Not Enrolled Redirect**](https://www.uncannyowl.com/knowledge-base/redirect-user-if-not-enrolled/): Redirect users to a sales, login or other page when they land on a course page when not enrolled. - [**Resume Button**](https://www.uncannyowl.com/knowledge-base/learndash-resume/): Return users to where they left off in a course. - [**Show Certificates**](https://www.uncannyowl.com/knowledge-base/show-learndash-certificates/): Show a list of earned certificates with hyperlinks. - [**Show or Hide Content**](https://www.uncannyowl.com/knowledge-base/show-hide-content/): Conditionally show content on a page based on whether the user is logged in or out. - [**Topics Autocomplete Lessons**](https://www.uncannyowl.com/knowledge-base/topics-autocomplete-lessons/): Lessons are completed automatically when associated topics are all completed. - [**User Switching**](https://www.uncannyowl.com/knowledge-base/user-switching-module/): Allow admins to switch to a student account and view the site as that student. Those 14 modules are currently available in the free version of the Toolkit and offer an easy way for admins to add extra capabilities to LearnDash sites. ## Are all Toolkit modules still relevant with LearnDash 3.0? Now that we’ve taken a look at what the Toolkit offers, let’s review how their utility and relevance changes with LearnDash 3.0. The **Breadcrumb Links** module is particularly useful on more complex sites where there is a dedicated page acting as a learner “dashboard”. This is typically where learners land after logging in and will often include a list of enrolled courses, instructions, and links to key tools and resources. LearnDash 3.0 offers an easy way for learners to navigate back up to the course level with breadcrumbs, but not back to a centralized course dashboard (if one exists). For sites using a learner dashboard or with more complex navigation needs, this module remains an important addition with LearnDash 3.0. The **Certificate Widget** and **Show Certificates** modules may or may not be of value on LD sites. There are alternatives (the ld\_profile shortcode in LearnDash, for example, includes certificate links) and certainly these aren’t must-have tools. If you prefer to display a list of certificates in a sidebar or independently of the ld\_profile shortcode, then these modules may still add value to your site. The **Front End Login** module is where things get more interesting. Until LearnDash 3.0, this is what made the Toolkit essential for LearnDash sites and was by far the most-used module in the Toolkit. Now that LearnDash 3.0 has login capabilities, should anyone still use the version in the Toolkit? In our opinion, it depends. What’s in LearnDash 3.0 right now is basic and handles simple login functions only. What’s in the Toolkit handles branded password reset (LearnDash relies on WordPress default password reset functions), reCaptcha, manual user verification and more—features the LearnDash login tool doesn’t support. Of course, not everyone needs those features, and what’s in LearnDash is likely sufficient on some sites. [![Recaptcha in LearnDash Login Form](https://www.uncannyowl.com/wp-content/uploads/2019/07/Recaptcha_in_Login.png "Recaptcha_in_Login - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/07/Recaptcha_in_Login.png) **Groups in User Profiles** is effectively redundant in LearnDash 3.0. It’s a legacy module that doesn’t add value to new LearnDash 3.0 sites and we may retire it. **Hide Admin Bar** adds some role-based controls to hiding the admin bar that LearnDash doesn’t offer, and if you want to keep Group Leaders out of /wp-admin/ then this is still a very useful addition. If that capability isn’t needed, default LearnDash behaviours should be sufficient. **Log In/Log Out Links** and **Log In/Log Out Redirects** are, or at least we believe they are, essential additions to LearnDash sites. We think Log In *and* Log Out functions should be easily accessible to users and available in site menus, and that learner dashboards should be used to provide a good student experience (and by using the redirect module, users can automatically land there after login). Should learners see a different site menu than anonymous prospects? Absolutely, and that’s why we think the **Menu Item Visibility** module is also a must-have. LearnDash doesn’t currently support this capability. **Not Enrolled Redirect** is an optional module that is useful if you display the same list of courses to both enrolled and not enrolled users (using something like a course grid, for example), and want users to be redirected to some sort of page optimized for sales instead of the course page when they click on a course in which they’re not enrolled. For sites with that type of user experience, this module can add a lot of value. The **Resume Button** module is another must-have, especially if you use our [Pro plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) and the course grid or dashboard modules. It makes it easier for students to see where they left off and pick up again from that point. [![Course Grid with LearnDash Resume Button](https://www.uncannyowl.com/wp-content/uploads/2019/07/course_grid_with_learndash_resume.png "course_grid_with_learndash_resume - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/07/course_grid_with_learndash_resume.png) **Show or Hide Content** is another module that is very useful when you want to display different content to users on a given page depending on whether they’re logged in or out. There are growing alternatives for sites, especially with increasing use of Membership and CRM plugins, and in many cases the native \[student\] and \[visitor\] LearnDash shortcodes are suitable alternatives. But there are still situations where these shortcodes make messaging for students a lot easier to manage. **Topics Autocomplete Lessons** does still offer a more linear flow through courses and better student experience in many situations. It’s widely used, and while not a must-have, it’s going to add value to most sites. The **User Switching** is the final must-have module in the list. For troubleshooting problems this capability is invaluable for admins. ## So, do you need the Toolkit? **Yes, the Toolkit still adds significant value to LearnDash 3.0 sites.** Certainly we’re biased, but we believe that LearnDash sites still need the Toolkit to round out the admin and user experience. We recognize that some Toolkit modules aren’t as essential as they once were. The Front End Login module moves from must-have status to a valuable add-on for most sites, and while all sites we build will use our Front End Login module (we want reCaptcha and branded password reset), we know fewer sites in the future will depend on our login module. Nevertheless, that still leaves **five** Toolkit modules that we believe should be on all LearnDash sites: **Log In/Log Out Links**, **Log In/Log Out Redirects**, **Menu Item Visibility**, **Resume Button** and **User Switching**. Many others are likely to add some value, depending on the context, and there’s never a situation where we just recommend turning everything on without considering the value it adds to your site. ## What about Pro? Everything covered above is about the free Toolkit only. After all, it’s almost standard on new LearnDash sites and has a huge install base. But the [Uncanny LearnDash Toolkit Pro add-ons plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) is extremely popular too, installed on thousands of LearnDash sites, and it adds dozens of additional modules. Are any of those redundant with the LearnDash release? For our own LearnDash projects, the Pro add-on is our only other must-install plugin besides the Toolkit. (Our other Uncanny Owl plugins, like [Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/), [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/), [Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/), and [Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) certainly add value to some sites, but they’re not suited to every site.) At the time of publishing, Pro adds 25 modules to LearnDash sites, and on typical sites that use Pro we often see 5 to 10 of those activated. For sites using Pro, we consider several of the modules to be extremely high value: **Simple Course Timer**, **Import Users** (directly into courses and groups using a simple checkbox interface), **Course Dashboard**, **Enhanced Course/Lessons/Topics Grid**, **Import LearnDash Users**, **Email Course/Quiz Certificates**, **Drip Lessons by Group**, **Duplicate Pages and Posts**, **Autocomplete Lessons & Topics**, and the **Learner Transcript**. LearnDash 3.0 doesn’t include anything related to the functionality these modules add to sites. Two pro modules have been replaced by native LearnDash functionality in LearnDash 3.0 (with the LearnDash 3.0 theme active): **Sample Lesson Label** and **Lesson/Topic/Quiz Table Colours**. The LearnDash 3.0 theme now shows a visible *Sample* label on sample lessons, and lets users customize UI colours in settings. However, none of the other modules in Pro have seen their value proposition change with the LearnDash 3.0 release. While **Certificate Preview** is a new module to the Toolkit, it is another one where we can see future LearnDash development negating the need for this tool. For now, however, it still makes certificate production and testing more efficient. ## Are we changing the Toolkit because of LearnDash 3.0? Both the free Toolkit and Pro addons remain under very active development and we have a lot of great new features planned. Some modules (like the **Groups in user Profiles** module) may be retired as they become less useful, but that’s a good thing—we want deliver the best possible experience on LearnDash 3.0 sites and we’ll continue innovating and reassessing the value of our Toolkit modules. **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Pro Updates: Faster Learndash and a New Dashboard](https://www.uncannyowl.com/pro-updates-faster-learndash-and-a-new-dashboard/) **Published:** May 24, 2019 **Author:** Ryan Moore **Content:** Every time we make a blog post about one of our plugin updates it’s because it’s a huge update with new features, and for today’s [Uncanny Learndash Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) 3.2 update that’s especially true. This one has been in development for quite some time, and the new features are going to make a *huge* difference to [LearnDash](https://www.uncannyowl.com/share/learndash) sites, especially ones with a lot of content. ## Faster LearnDash Lesson & Topic Performance We’re most excited about adding a new [Lazy Loading Course Navigation](https://www.uncannyowl.com/knowledge-base/lazy-loading-course-navigation/) tool. We get inquiries *all the time* about how to improve LearnDash site performance at the enterprise level. This includes sites with potentially hundreds of courses and thousands of LearnDash lessons and topics. On those sites, things can really get slowed down just because of the volume of content; queries get really heavy just to check course content relationships and progress within courses. On larger sites, we’ve seen these queries add seconds (yes, plural) to every page load that students make inside a course. You can’t really take away navigation aids from inside courses—but you can now load them after the rest of the page loads. That’s what our new \[uo-course-navigation\] shortcode does. Use it in place of the normal LearnDash Course Navigation widget and all of the extra LearnDash queries will run AFTER the rest of the page has loaded. On a big site we tested on, this approach made lessons and topics load about 25% faster for students. (It adds a brief loading animation to the navigation tool and users don’t see the course hierarchy right away, but on large sites the tradeoff is absolutely worth it.) ## New Dashboard Design [![New LearnDash Dashboard Design](https://www.uncannyowl.com/wp-content/uploads/2019/05/Modern_LearnDash_Dashboard_Theme.png "Modern_LearnDash_Dashboard_Theme - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/05/Modern_LearnDash_Dashboard_Theme.png) Our[ LearnDash Course Dashboard shortcode](https://www.uncannyowl.com/knowledge-base/learndash-course-dashboard/) was due for a redesign, especially after seeing some of what’s coming in LearnDash 3.0. So that’s exactly what we did, and in a big way. While not shown in the screenshot above, it’s now really easy for users to know how to start a course, resume a course and retrieve certificates. The colour palette is very customizable, and the new dashboard is amazingly responsive. We’ll get a demo up on our plugin demo site at soon, but we can assure you that it collapses very well and looks great on mobile devices. For users of the current dashboard, don’t worry, there’s a toggle to continue using the Legacy design. Everyone else will almost certainly want to try out the “3.0” design though. ## [![LearnDash Certificate Preview](https://www.uncannyowl.com/wp-content/uploads/2019/05/Certificate_Preview.png "Certificate_Preview - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/05/Certificate_Preview.png)Certificate Preview If you’ve created many certificates with LearnDash you know how awkward and time-consuming it can be to set up certificates exactly as you want them. It typically involves setting up a test course, test lesson and/or quiz, then triggering completion and continuing reloading PDF files to try to get things right. You have one window open in the front end, the other in the back end, and you go back and forth to get things right. Not any more. With the [Certificate Preview module](https://www.uncannyowl.com/knowledge-base/certificate-preview/) turned on, a Preview button gets added to the course edit page. And by clicking that button, right where you edit the certificate, you can preview the certificate. No more test courses and quizzes. Generating certificates is now far easier when you can do everything right inside the certificate edit page. Note that because there is no associated course or quiz, our preview can’t actually render the shortcodes for things like completion date or course name. Instead, our preview tool substitutes placeholder data in the place of LearnDash shortcodes, so you can still focus on getting the layout right without having everything set up yet. ## There’s More! The Pro 3.2 release is big. We added some other great functions that will help a lot of our customers on their sites. The [Enhanced Lesson/Topic Grid](https://www.uncannyowl.com/knowledge-base/enhanced-lessontopic-grid/) module now supports WordPress category and tag attributes, so it’s easy to generate topic and grid listings with different content depending on the context. [Email Course Certificates](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/) adds %Group Name% token support to subject lines to make it easier for notifications to distinguish between users in different groups. We also included a few fixes, notably for users that might have had issues with Drip Lessons by Group or automatically advancing on Gravity Form submission when the Autocomplete Lessons & Topics on Gravity Forms Submission module was enabled. If you’re not yet an [Uncanny LearnDash Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) user, there’s never been a better time to buy; the Toolkit is now up to 39 total modules! **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Use BadgeOS? Try This](https://www.uncannyowl.com/badgeos-updated-patched/) **Published:** July 6, 2017 **Author:** Ryan Moore **Content:** If you’re a BadgeOS user, you’ve probably noticed that the plugin hasn’t been updated for almost a year. Conflicts with the latest version of WooCommerce and other plugins have made it virtually impossible to use BadgeOS on many sites, and as we have a lot of LearnDash sites relying on BadgeOS, the situation became rather difficult for us. As future support of BadgeOS is unknown, we decided to implement some fixes ourselves for our clients. We know a lot of people are affected by these issues though, so we thought it would be helpful to release our patched plugin to the wider community. Having said that, there are some caveats: - This is not a plugin we will be maintaining or supporting. If you want to use this code, it’s at your own risk. This is purely to address some common issues that we know site owners are struggling to address themselves with BadgeOS version 1.4.8.2. - We currently have no plans to keep this updated. Right now it’s a short term fix. - This plugin may or may not work with third-party integrations. We fixed some common issues that affected our clients and plugins. - We have no relationship with the BadgeOS developers. We’re just filling a gap temporarily that was affecting a lot of our users. If you are running into BadgeOS problems, we invite you to download the plugin below and see if it fixes your issues. It is a drop-in replacement for BadgeOS, so make sure you remove your current BadgeOS plugin first. \[av\_button label=’Download BadgeOS Patched by Uncanny Owl’ link=’manually,https://www.uncannyowl.com/badgeos-patched-by-uncanny-owl.zip’ link\_target=” size=’large’ position=’center’ icon\_select=’yes’ icon\_hover=’aviaTBicon\_hover’ icon=’ue82d’ font=’entypo-fontello’ color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ av\_uid=’av-oq5eoz’\] **Categories:** News --- ### [Tin Canny 3.0](https://www.uncannyowl.com/tin-canny-3-0/) **Published:** March 6, 2019 **Author:** Ryan Moore **Content:** We’ve had some big 3.0 plugin releases over the last few weeks, but today’s [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) release is the biggest overhaul yet. It’s basically a *complete* rewrite of the reporting engine to improve performance and scalability on larger sites, with lots of smaller improvements and new features thrown in to round things out. Almost everything about reporting is now different, so if you’re an existing user, we *highly* recommend testing on a Staging site first. Beyond the improvements behind the scenes, there’s a lot different on the front end too—starting with a complete redesign of all reports and charts. They’re far more mobile-friendly and easy to use. [![Tin Canny Course Report](https://www.uncannyowl.com/wp-content/uploads/2019/03/tin_canny_course_report.png "tin_canny_course_report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/03/tin_canny_course_report.png) Breadcrumb links are new, and now individual user reports include Gravatar images if available for your users. This helps to personalize reports and make them more visually appealing. [![](https://www.uncannyowl.com/wp-content/uploads/2019/03/tin_canny_user_report.png "tin_canny_user_report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/03/tin_canny_user_report.png) Tin Canny hadn’t yet fully supported Adobe Captivate 2019, but now it does! The 3.0 release of Tin Canny will help you get more out of Captivate on your LearnDash sites—as will even more controls over resetting Tin Canny SCORM and xAPI records. Tin Canny 3.0 supports purging records for *individual users*. For testing purposes or clearing bad data, this is going to be a big help to a lot of sites that need to reset user records independently. [![Delete Individual Tin Can Records](https://www.uncannyowl.com/wp-content/uploads/2019/03/Delete_Individual_Records.png "Delete_Individual_Records - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/03/Delete_Individual_Records.png) Rounding out the list of new features, Tin Canny users can now disable the Tin Canny dashboard widget to improve load times, and more Gutenberg block support has been added for the quiz reports. Tin Canny 3.0 includes dozens of other behind-the-scenes improvements, including: - Support for additional H5P module types - Better navigation between reports, like going from Course > User > Course report for a user instead of Course > User > Course List > Course report - Improved compatibility with MySQL 8 - Better notices when no data is available - Better translation support - Better consistency of data across courses and groups For a full list of the changes, make sure to read the changelog at [https://www.uncannyowl.com/knowledge-base/tin-canny-learndash-reporting-changelog/.](https://www.uncannyowl.com/knowledge-base/tin-canny-learndash-reporting-changelog/) **Existing users**: Please do consider testing this on a Staging or Development site before you deploy the release on your live site. Tin Canny 3.0 has been through a *lot* of internal testing but there may still be slight differences in report output compared to what you’re used to. **Categories:** LearnDash, Tin Can --- ### [Uncanny LearnDash Groups 3.0](https://www.uncannyowl.com/uncanny-learndash-groups-3-0/) **Published:** February 12, 2019 **Author:** Ryan Moore **Content:** It’s time for another 3.0 plugin release! We’ve had some big 3.0 releases over the last few weeks, but today’s [Uncanny LearnDash Groups 3.0](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) update is really in a class of its own with new features. If you use LearnDash Groups, you should be *very* excited. One thing that really set our Groups plugin apart was the flexible ecommerce offerings it made possible. You could create and sell course bundles to organizations, let people pick and choose their own courses to create groups, even set up all of that with subscription support. But it never offered a way for *learners* to add themselves to groups with a purchase. Well, now it does. **Learners can buy a WooCommerce product that adds them to a LearnDash Group automatically**. Just create a product, map it to a LearnDash Group, and anyone that buys it gets added to the group. No codes, no changing the user to a Group Leader, the learner just gets instantly added to the group. And did we mention full support for subscriptions with the WooCommerce Subscriptions plugin? That’s right, set up a subscription product, map it to a group, and the user gets access to the group but *only* for as long as they keep paying. That’s a *huge* benefit to LearnDash sites, but it’s not even the biggest change in the Groups 3.0 release. We listened to feedback from our users and in 3.0 we added **full front-end management of assignments and essay questions for Group Leaders**. Definitely one of our biggest complaints since launch was that Group Leaders still had to visit /wp-admin/ for some Group Leader functions. Well, now they don’t. 🙂 There’s no longer any reason for Group Leaders to need wp-admin access if they use Uncanny LearnDash Groups 3.0.[![LearnDash Assignment Management](https://www.uncannyowl.com/wp-content/uploads/2019/02/assignment-management.png "assignment-management - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/02/assignment-management.png) We know that’s going to help a *lot* of sites out. We did the same thing for quiz essays as what you see above for assignments; links to questions, grading, the course, lesson, quiz, and comments. It’s all from a single, streamlined interface in the front end. The Uncanny LearnDash Groups plugin only recently added the ability for Group Leaders to email members of a group. However, Group Leaders could only email *all* users of a group, not just users that haven’t completed or started their training. in Groups 3.0 **Group Leaders can send group members emails based on their course completion status:** [![](https://www.uncannyowl.com/wp-content/uploads/2019/02/learndash-group-email-by-status.png "learndash-group-email-by-status - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/02/learndash-group-email-by-status.png) But we didn’t stop here. Here are some other things that made it into the 3.0 release: 1. Our new Uncanny 3.0 plugin architecture for easier support and license management. 2. Basic Gutenberg block support 3. More hooks for developers. 4. No more “Existing User” option in the Add User modal! This was confusing; Group Leaders won’t necessarily know if a user is new or already exists in the system, so now we handle this automatically. 5. Better translation support, multisite support and third party email plugin support. As always with our 3.0 plugin releases, this is a big one and we highly recommend testing things out on a Staging site before you take it live. This release means only one Uncanny Owl plugin still has an outstanding 3.0 release, and it’s [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/). Look for that one next week! **Categories:** LearnDash --- ### [Uncanny LearnDash Codes 3.0](https://www.uncannyowl.com/uncanny-learndash-codes-3-0/) **Published:** February 1, 2019 **Author:** Ryan Moore **Content:** Following up on our recent [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/), [Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) and [Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) 3.0 releases, today we’re excited to announce the 3.0 version of our popular [Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) plugin for LearnDash! The [Uncanny LearnDash Enrollment Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) plugin makes it easy to add learners to LearnDash courses and groups using codes you can generate on your website. It’s often used to sell access to LearnDash courses and groups from another website (such as from Shopify), completely offline (a popular use is bundling codes in book sales or posting codes at trade shows), or even shared in newsletters. It opens up a world of opportunities for getting people onto your WordPress site and into LearnDash courses. In the 3.0 release we’re adding some frequently requested features that make it even easier to manage large sets of codes. A recent client project that required generating and managing *over one million codes* inspired us to add powerful **code search** capabilities and a way to expire coupon codes by date and time—automatically. [![Uncanny LeanDash Codes 3](https://www.uncannyowl.com/wp-content/uploads/2019/01/uncanny-learndash-codes.png "uncanny-learndash-codes - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/01/uncanny-learndash-codes.png) As with all of our 3.0 releases, the new Codes update also includes some Gutenberg blocks as well as the new Uncanny 3.0 architecture. This includes easier access to support resources and our help desk. [![](https://www.uncannyowl.com/wp-content/uploads/2019/01/learndash-codes-for-gutenberg.png "learndash-codes-for-gutenberg - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/01/learndash-codes-for-gutenberg.png) For those of you struggling with the move to Theme My Login 7.x, we have added support for TML 7.x and you can now extend its registration forms to support code redemption. Gravity Forms users get support for User Verification, and both translation support and multisite compatibility are improved. If you’re not yet using [Uncanny LearnDash Enrollment Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/), now is the perfect time to check out what is by far the most powerful code-based solution for managing access to LearnDash courses and groups. **Categories:** LearnDash --- ### [Continuing Education Credits 3.0](https://www.uncannyowl.com/continuing-education-credits-3-0/) **Published:** January 23, 2019 **Author:** Ryan Moore **Content:** As part of our series of 3.0 releases for our [LearnDash](https://www.uncannyowl.com/share/learndash) plugins, today marks the release of the 3.0 update for [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/). While [Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/), [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) and [Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) tend to get all the attention, the Continuing Education Credits plugin is one that has been invaluable for some of our own projects, especially for the permanent record it creates of LearnDash course completions. With the latest changes, we’re confident it will be an even bigger asset to sites offering continuing education credits and compliance training. Here’s some of what’s changing in the 3.0 release: 1. **New Report Designs**: We’ve completely redesigned both admin and front end reports so that everything is modern, responsive, and more intuitive. 2. **New Report Filters**: Filter admin reports by date range, user or group. It’s even easier to get to the specific data you need. 3. **Gutenberg Block Support**: We’re adding *eight* new Gutenberg blocks for shortcodes and reports to make it easier to incorporate credit reporting into the front end of your LearnDash site. 4. **Uncanny 3.0 Plugin Architecture:** Now it’s even easier to get support right from your WordPress site and the control panel is aligned with our other plugins. [![Uncanny Continuing Education Credits 3.0](https://www.uncannyowl.com/wp-content/uploads/2019/01/Uncanny_CEUs_Course_Report.png "Uncanny_CEUs_Course_Report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/01/Uncanny_CEUs_Course_Report.png) The 3.0 release also includes a number of fixes and support for the new CEU column available in the [Learner Transcript](https://www.uncannyowl.com/knowledge-base/learner-transcript/) in the 3.0.1 Pro release. All things considered, it’s a big update to the CEU plugin and brings important efficiency and aesthetic improvements. If you’ve considered [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) in the past but weren’t sure how it might add value to your site, make sure to check out our [recent post on building compliance and recurring training programs](https://www.uncannyowl.com/annual-compliance-programs-with-wordpress/) that leverage some of the key features in this plugin. **Categories:** Continuing Education, LearnDash --- ### [Annual Compliance Programs with WordPress](https://www.uncannyowl.com/annual-compliance-programs-with-wordpress/) **Published:** January 21, 2019 **Author:** Ryan Moore **Content:** It seems like a simple scenario: Staff need to complete the same courses every year and those completions need to be tracked. Yet, if you deliver your elearning programs with WordPress, you probably know how difficult this is to achieve. Here’s where things with a WordPress-based LMS start to break down: 1. WordPress LMS plugins don’t track historical completions. Once a learner completes the course once, that’s it. They can’t trigger a second completion. 2. If you reset course progress, it resets *everything*. That’s probably why plugins make it difficult or impossible to reset progress. With the help of some addon plugins, however, it is *absolutely possible* to use WordPress as a platform to deliver annual compliance training. This article outlines how you can do it with the popular [LearnDash](https://www.uncannyowl.com/share/learndash) LMS plugin for WordPress. ## Create a Permanent Record of Course Completions This is really the most important step. If you can’t track historical completions, you can’t offer annual compliance programs. Fortunately, one of our commercial LearnDash plugins makes this easy. The [Uncanny Continuing Education Credits plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) automatically creates a permanent record of completions as users finish courses. Don’t let the name fool you; the plugin does far more than award credits for completing courses. And, for our scenario here, we don’t even need to consider the credit or certificate features included with the plugin. We just need to use it for the permanent record, so ignore the CEU and Total columns. [![Historical Course Completions](https://www.uncannyowl.com/wp-content/uploads/2019/01/historical_course_completions.png "historical_course_completions - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/01/historical_course_completions.png) The records in the table above are *not* pulling data from LearnDash, but rather the permanent course archive that the plugin captures automatically. As soon as the plugin is installed it records all new completions to the permanent record, so you never need to worry about progress resets or LearnDash changes affecting historical records. ## Reset Course Progress Now that you’re storing a permanent record of course completions, you need a way to reset user progress in courses so that they can retake them. After all, you don’t want to have to clone out a course each year and re-enroll students in the new one just so they can complete it again. One very simple option here is to use the [Uncanny LearnDash Toolkit Pro plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/), with its [Reset Button module](https://www.uncannyowl.com/knowledge-base/learndash-reset/), to allow users to reset their own progress and take the course again. Once it’s turned on, just drop the \[uo\_reset\_course\_progress\] shortcode onto any course page where users need to reset progress. The button that it adds will allow users to retake the course and wipe out their previous progress (which is why it’s so important to have the historical record in place). Another option here is our [Uncanny Automator](https://automatorplugin.com/) plugin. With it, you can create “triggers” that reset progress for a course. An easy Automator recipe here would be to set up a recipe that resets a user progress in a course as soon as they complete it. This is what the recipe might look like: [![Reset Course Progress on Completion](https://www.uncannyowl.com/wp-content/uploads/2019/01/reset-progress-on-completion.png "reset-progress-on-completion - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/01/reset-progress-on-completion.png) If you’re a developer, you can even build your own workflows for resetting progress that better match your context. The Reset Button module mentioned above as part of Pro includes some tools that make it possible to incorporate our reset functions into your own code. More information is available in the [Knowledge Base article](https://www.uncannyowl.com/knowledge-base/learndash-reset/). ## Other Options for Compliance Tracking The solutions above require the use of 2 to 3 paid plugins, but there are possible workarounds that can be used with a bit more work. If you use a CRM and a tool like [WP Fusion](https://www.uncannyowl.com/share/wpfusion), you could potentially use Tags to track completion records instead of our Continuing Education Unit plugin. On an annual basis, what you could do is change completion tags in your courses so that it identified the course and year. In other words, maybe on completion of a course called “Physics” you set a tag of “Completed Physics – 2019”. You could then filter on the CRM side to show only users with that tag to see who was assigned that tag. You will still of course need some way to reset course progress, and for that options are more limited. By adding plugins to your LearnDash site like the ones mentioned above, it is very possible to offer annual compliance programs on your site that keep historical records and do allow users to retake the courses every year. If you have your own solution for offering annual compliance training that’s different than what’s outlined above, let us know your solution in the comments! **Categories:** eLearning, LearnDash --- ### [The Biggest Toolkit Pro Update Yet](https://www.uncannyowl.com/the-biggest-toolkit-pro-update-yet/) **Published:** January 11, 2019 **Author:** Ryan Moore **Excerpt:** The Uncanny LearnDash Toolkit Pro 3.0 release features 2 new modules, better transcripts, lots of Gutenberg blocks and more! **Content:** Following up on our recent [Uncanny LearnDash Toolkit 3.0 release](https://www.uncannyowl.com/announcing-the-uncanny-learndash-toolkit-version-3-0/), the 3.0 Toolkit Pro release is now also available! It’s a huge release that includes 2 brand new modules, several redesigns, new Gutenberg blocks and a whole lot more. Between the free Toolkit and the Pro modules addon, we now offer a whopping **37** powerful modules to improve your LearnDash sites. ### New Modules The [Uncanny LearnDash Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) 3.0 release includes 2 new modules: [Autocomplete Lessons & Topics When Quiz Is Graded](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics-when-quiz-is-graded/) and [Group Login Redirect](https://www.uncannyowl.com/knowledge-base/learndash-group-login-redirect/). We know, the names are long, but at least they describe and do what you expect! The new Autocomplete module fills a gap for quizzes that are graded manually. With this new module turned on, lessons and topics associated with a manually graded quiz are completed automatically for the user when the instructor grades the quiz. It’s simple, but it makes things easier for students. ![](https://d2ijz6o5xay1xq.cloudfront.net/account_2819/LearnDash_Group_Login_Redirect_7d67d266d9ff9e73558d4d28eba14b1e_800.png)The Group Login Redirect adds a new section to LearnDash Group Edit pages that, when populated, redirects members of that group to any page you choose on login. Maybe you want to take members of a group with only one course straight into that course, or maybe you want to take group members to a branded dashboard page just for that school or company. It’s a great option if you offer training to organizations. You can even set a redirect priority, so that if a user is in multiple groups, you can make sure you they land on the right page when they sign in. While it’s not a new module, our [Learner Transcript module](https://www.uncannyowl.com/knowledge-base/learner-transcript/) got a big overhaul, so it’s almost like new! It has a completely new, mobile-friendly design, better printing support, branded header and footer options, and you can sort data and include or exclude columns. This one is really exciting for us and we’re sure your students will love this improved way to see their progress across courses. ### That’s Just the Start… The LearnDash Toolkit Pro 3.0 release includes dozens of enhancements and fixes. Here are a few highlights - Gutenberg block support for many of the modules with shortcodes - Submit a ticket right from your WordPress site, including optional site information to help us troubleshoot your issue ![](https://d2ijz6o5xay1xq.cloudfront.net/account_2819/submit-a-ticket_8b101b2a9c25aa868a18884fce855232_800.png)- Filter courses by Category or Course Category when using our Course Dashboard shortcode - A new license activation page to make it easier to track licensing status - New debug options for the Simple Course Timer - No more requirement to pass a course ID to the reset button shortcode when it’s on a course page - Support for quiz and quiz question duplication in LearnDash 2.6 Read the full list of changes here: Stay tuned for more 3.0 releases of our plugins over the next few weeks! **Categories:** LearnDash --- ### [Announcing the Uncanny LearnDash Toolkit Version 3.0!](https://www.uncannyowl.com/announcing-the-uncanny-learndash-toolkit-version-3-0/) **Published:** January 9, 2019 **Author:** Ken **Excerpt:** Version 3.0 of the Uncanny LearnDash Toolkit adds a new interface, Front End Login module, Gutenberg support and more! Free and available now in the WordPress repository. **Content:** We just released version 3 of our super-popular [Uncanny LearnDash Toolkit plugin](https://wordpress.org/plugins/uncanny-learndash-toolkit/) and it has some really fantastic improvements! Our Front End Login module, which is the first thing learners see on many LearnDash sites, has been completely overhauled with new features and an updated design: ![](https://d2ijz6o5xay1xq.cloudfront.net/account_2819/toolkit-new-login-template_e603f629726e45c28c85b47abeb2ab6c_800.png)We've added support for the popular reCAPTCHA anti-bot service. Many more strings are now easily customizable through the module settings. The original design is selected by default, for backward compatibility with existing sites, so to use the new design you'll need to choose the new template from the module settings. If you are a developer and had overridden the previous template file, you'll need to update your template file with the new version as it includes many internal changes. Toolkit version 3 brings a completely overhauled Modules page with a more modern, streamlined design and improved mobile support: ![](https://d2ijz6o5xay1xq.cloudfront.net/account_2819/toolkit-modules_08b3c765d9a4605ceae52f5c7e95b6c3_800.png)We've also added a help page with links to relevant knowledge base articles right inside the plugin. And what would a new release be without improved support for the Gutenberg WordPress editor? Modules with front-end components (Breadcrumbs, Resume button and Front End Login) get new Gutenberg blocks to make it easier to add these elements to your Gutenberg pages. Lastly, we've included a number of bug fixes and minor enhancements to other modules. Check the [changelog](https://wordpress.org/plugins/uncanny-learndash-toolkit/#developers) for the full list. We put a lot of effort into version 3 of the Toolkit and we hope you enjoy it! ## Existing User of the LearnDash Toolkit? Before you jump in and update your Toolkit plugins on a live site, we highly recommend giving them a try in a Staging environment first. Some of the changes are quite significant, especially the Front End Login module, and testing that everything still works as expected is important. Here's a quick video that we recommend existing users watch before applying the update to your sites: **Categories:** LearnDash --- ### [Tin Canny Meets Gutenberg](https://www.uncannyowl.com/tin-canny-meets-gutenberg/) **Published:** December 6, 2018 **Author:** Ryan Moore **Content:** **Happy WordPress 5.0 Release Day!** Are you ready for Gutenberg? Or, more importantly, are your plugins? If you use Uncanny Owl plugins on your LearnDash site, you *might* be ready. Users of the [Pro modules of the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/), [Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/), [Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) and [Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) plugins are all set with the latest versions available from our site without needing to update. But if you use [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/), make sure to update to version 2.9.9 or higher to use the Tin Canny uploader! Without it, you will *not* be able to upload your SCORM and xAPI modules to your LearnDash courses. Tin Canny 2.9.9 isn’t just about Gutenberg though. It’s a big release and the last update before the 3.0 release later this month, so we wanted to talk through some of the changes and what they mean for your site. Most important is, of course, the Gutenberg uploader for Tin Canny. It’s *completely* different than what you’re used to seeing for Tin Canny. [![Tin Canny Blocks](https://www.uncannyowl.com/wp-content/uploads/2018/12/Tin_Canny_Blocks.png "Tin_Canny_Blocks - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2018/12/Tin_Canny_Blocks.png) Uploading modules is now done in Gutenberg using the “Tin Canny Content” block. By clicking that, you can choose to **Upload** a new module or **Select from Library** any existing content. [![](https://www.uncannyowl.com/wp-content/uploads/2018/12/upload-tin-canny.png "upload-tin-canny - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2018/12/upload-tin-canny.png) All of the controls you’re used to for your modules are now displayed in the block settings on the right, including the settings you’re used to, like insertion type and dimensions. [![Gutenberg Tin Canny Uploader](https://www.uncannyowl.com/wp-content/uploads/2018/12/tin-canny-uploader.png "tin-canny-uploader - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2018/12/tin-canny-uploader.png) And that’s it! Making the transition to managing your SCORM and xAPI with Gutenberg might seem strange the first time you do it, but it really is a simple transition once you’ve added 1 or 2 modules. Outside of the Gutenberg-specific additions, we created a new page to find and manage your uploaded modules. The **Manage Content** page makes it easy to search through your uploaded Rise, Storyline, Captivate and iSpring modules, as well as preview them and delete them. No more having to dig through the Uploader tab in a post to look through and delete your modules (and we know many people didn’t even know that function existed). [![](https://www.uncannyowl.com/wp-content/uploads/2018/12/tin-canny-manage-content.png "tin-canny-manage-content - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2018/12/tin-canny-manage-content.png) There’s a lot more that’s new in the 2.9.9 release; here are some highlights: - An easy option to clear Answered and Experienced xAPI records from your database, freeing up space taken by these often less important verbs. (More data management records are coming in 3.0, including resetting Tin Canny data for individual users.) - Better support for the H5P Course Presentation content type. - Improved time zone support for the quiz reports. The next big release will be 3.0, so stay tuned for more news on that in the near future! **Categories:** LearnDash, Tin Can --- ### [15 Ways to Automate Your LearnDash Site](https://www.uncannyowl.com/15-ways-to-automate-your-learndash-site/) **Published:** November 5, 2018 **Author:** Ryan Moore **Excerpt:** Add simple automation recipes to your LearnDash site to improve learner engagement, completion rates, knowledge transfer and sales revenue. **Content:** Do you spend too much time overseeing your e Condition > Action model. We could watch for things to happen on an elearning site (a trigger), check a condition, then automatically do something else (an action) if the requirements were met. It’s a simple model, but with it, we would be able to completely personalize learning. That led us to start thinking bigger. If we’re going to build this architecture for one plugin (LearnDash), why not just build it out and make it work with lots of WordPress plugins ? The possibilities seemed endless. We could make one plugin, or several plugins, trigger actions in other plugins. Not only would it would a system like that make it easy to connect plugins and automate workflows, but we could eliminate the need for one-off plugins that just connected 2 plugins together in very simple ways. So, one thousand development hours and 6 months of development time later, we built the framework for a plugin that does all of this. It’s not ready for wide release yet, but we are starting a limited beta over at . (Make sure to check it out if you want to participate.) You may still be wondering why our team is more excited about this work then anything else we’ve ever done. The possibilities with this plugin really are unlimited, and every day we’re thinking of new ways the plugin might be used. Let’s start off with a possible eLearning workflow to demonstrate how powerful the plugin can be. Suppose a student demonstrates very poor performance in a course and we want to automate an appropriate intervention to get the student back on track. With the Uncanny Automator plugin, we can create a “recipe” that does this: If a student scores below 50% on quizzes X and Y (these are the triggers), enroll the student in a remedial course, notify his or her Group Leader, delete his or her progress from the current course (so they can retake it), unenroll the user from the current course, and send an email to the student with feedback about what happened and appropriate next steps. With our new plugin, creating that complex workflow can be set up in about 3 minutes with absolutely no coding required and no further administrator or instructor involvement. It’s just automatic. And every recipe is created using a clean, intuitive user interface. [![](https://www.uncannyowl.com/wp-content/uploads/2018/07/LearnDash_Triggers.png "LearnDash_Triggers - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2018/07/LearnDash_Triggers.png) The possibilities for this plugin aren’t just limited to eLearning. Here’s a sales example: A user submits an application form, visits a landing page and completes a purchase (these are triggers). The system then adds the user to a private bbPress forum, changes the user’s WordPress role and adds a tag in Infusionsoft (these are all actions). That entire workflow can be in a single Automator recipe. We want to get the Uncanny Automator plugin in everyone’s hands as soon as we can, but for now anyone interested is welcome to apply for the [beta program](https://automatorplugin.com/beta-application/). We hope you’re as excited as we are about the possibilities this opens up for WordPress end users, administrators, and even developers (by integrating with only Automator, plugins could instantly be connected to 20 other plugins). Stay tuned for more Automator news in the next future! **Categories:** News --- ### [How Are We Doing? Part 2](https://www.uncannyowl.com/how-are-we-doing-part-2/) **Published:** May 24, 2018 **Author:** Ryan Moore **Content:** One year ago today we posted a reflective article about [feedback from our customers about our performance](https://www.uncannyowl.com/how-are-we-doing/). At that time we had been using a Help Desk system for over a year, and that allowed us to start collecting metrics and feedback from some of our plugin customers and development clients. A year later, we wanted to look back and reflect on how things have changed for us. For one thing, we’re definitely a lot busier! And, as we come up on our 5 year anniversary (next week!), it’s even more important to take a look at what growth has meant to our level of service. Here are some key stats for Uncanny Owl over the last 12 months: [![Uncanny Owl 2018 Stats](https://www.uncannyowl.com/wp-content/uploads/2018/05/uo-2018-helpdesk-stats.png "uo-2018-helpdesk-stats - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2018/05/uo-2018-helpdesk-stats.png) (The number of sites using our plugins may actually be a fair bit higher than 10,000, as we can only accurately say that it’s somewhere between 10,000 and 20,000; we suspect it’s around 11,000 at the time of writing.) It’s a lot of growth! Installs and support requests have more than doubled over the last year. And even with that growth, we’ve been able to *improve* the level of satisfaction across our support channels. Keep in mind too that those are only users that had issues or questions and took time to leave a rating or comment. And what are people saying about us in the feedback they provide? Here are some selected comments from our users: \[table id=30 /\] Of course, maintaining this level of service as we continue to grow is only possible with a great team. If you know LearnDash and are as committed to great products and service as we are, please consider checking out our open positions at . **Categories:** Marketing, News --- ### [Instructor Led Training with WordPress](https://www.uncannyowl.com/instructor-led-training-wordpress/) **Published:** August 15, 2014 **Author:** Ryan Moore **Content:** ![mLearning with WordPress](https://www.uncannyowl.com/wp-content/uploads/2014/08/176400905-300x200.jpg "- Uncanny Owl")Facilitated training isn’t just for the classroom and complex Learning Management Systems. Even though WordPress learning solutions are primarily targeted at self-directed programs, it is absolutely possible to build facilitated learning with them. In this post I’ll share some of the ways we do this for our clients at Uncanny Owl. Let’s suppose you want to offer a 4-week paid course to the public. Each week, you want learners to go through some self-directed lessons (that include text, video, and offline readings), participate in online discussions with you and other learners, and then complete a weekly quiz. At the end of the 4th week everyone must complete a final test. If they pass the final test and all weekly quizzes, they’re issued a printable certificate. WordPress probably wouldn’t be your first thought when delivering this type of common course structure, but it should be! With a few plugins, like [LearnDash](https://www.learndash.com) as your LMS and a membership plugin, it’s actually quite easy. To build this kind of program, your first step is probably going to be to create 4 courses, 1 for each week of the program. You can then build lessons for each week that include your readings and video. Creating the quizzes and test might come next. These are the easy parts. [![Schedule WordPress Date](https://www.uncannyowl.com/wp-content/uploads/2014/08/Add_New_Course_‹_LearnDash_Demo_LMS_—_WordPress-224x300.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2014/08/Add_New_Course_‹_LearnDash_Demo_LMS_—_WordPress.png)Ah, but you want all participants to complete the courses at the same time, and you don’t want to give them access to content from week 2, 3 and 4 when they’re in week 1. The tricks here are using a membership plugin (which allows you to restrict access to course materials) and scheduling WordPress posts. For every course you publish you can tell WordPress when to make it available to learners. So your first course (for week 1) might be automatically published on Monday at 9AM of the first week, the second course at 9AM of the second week, etc. And by assigning the courses to membership levels, you can restrict the courses to paid participants. Next up are the online discussion and collaboration pieces. For group discussion, add a forum tool like bbPress and create forums for each week; you can then embed them in lessons for each week. That way they’re easy for learners to find and you can stay on top of the discussion. For communication between session participants, BuddyPress enables private messaging and other social networking features. That really just leaves the final test and certificate, and that’s where an LMS like LearnDash makes everything easy. The final test can have the previous quizzes as prerequisites, it can be scheduled to only be available to learners on a certain day and it can automatically generate a course certificate with the learner’s name on completion. Of course, this is a very simple example and getting everything running properly will require some more work. As an example, you may need to stop selling the membership level for 1 session once it starts (so you don’t have people joining in week 4 and skipping the earlier discussion). And you’ll probably want to offer sessions more than once, which means expiring membership levels, incrementing course publishing dates, clearing out forums and more. What are your own solutions for delivering instructor led training with WordPress? Tell us about your experiences in the comments below! **Categories:** Learning, WordPress Book --- ### [Build Better Group Leader Front End Experiences](https://www.uncannyowl.com/build-better-group-leader-front-end-experiences/) **Published:** April 5, 2018 **Author:** Ryan Moore **Content:** It’s really satisfying to see our LearnDash plugins grow and mature. [Uncanny LearnDash Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) is still (at the time this article was published) our newest plug public plugin, and with the recent 2.x changes, we have reached a point where development is quite stable. It’s great to see how happy people are with the product too; in the last week alone, customers wrote to tell us that the Groups plugin is “absolutely awesome” (Jonathan B) and a “very useful addition \[that I\] strongly recommend” (Julia R). As it is a very complex plugin, however, we know that some users still find it challenging to create great user experiences around it on their sites. Recently we have particularly seen an uptick from customers asking how to make things easier for Group Leaders, especially how they should manage groups both post-purchase and on an ongoing basis. How should I get new Group Leaders to the Group Management page? How do I separate Student and Group Leader experiences? How do I teach Group Leaders what they should be doing? These questions and others do pose a challenge for some of our plugin users, especially because designing the right workflows aren’t necessarily part of the plugin itself. In this blog post we outline some of the recommendations we often suggest to people, along with some simple code samples that might improve your workflows. Not all of these suggestions are likely to be relevant to your site, but maybe within the suggestions you’ll find some ideas about how the [Uncanny LearnDash Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) plugin, along with some complementary solutions, can improve the Group Leader experience on your sites. ### Restrict Menus by Role [![Group Management Restriction](https://www.uncannyowl.com/wp-content/uploads/2018/04/Group_Management_Menu.png "Group_Management_Menu - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2018/04/Group_Management_Menu.png)This is really a key starting point. With our Groups plugin there are some pages only intended for Group Leaders, and it’s important not to expose them to regular students and other roles. For setting this up we like the [Nav Menu Roles](https://en-ca.wordpress.org/plugins/nav-menu-roles/) plugin, which allows you to set up your menu entries so that you can control what people see based on their role. Set up an entry for the Group Management page that only Group Leaders can see; this will help a lot. (If you use that plugin, make sure you disable the Menu Item Visibility module in the [Uncanny LearnDash Toolkit](https://en-ca.wordpress.org/plugins/uncanny-learndash-toolkit/) if you use it; they will conflict otherwise.) ### Use Redirects Login redirects are great to get Group Leaders straight to the Group Management page. To make sure other login redirects are overridden and that you target Group Leaders only, we like [Peter’s Login Redirect](https://wordpress.org/plugins/peters-login-redirect/). Set a Group Leader role redirect to your Group Management page and you’re all set. But what about post-purchase? WooCommerce signs the user in automatically after a purchase but takes them to a confirmation page. If you want to take the new Group Leader (as this applies to purchases of group products only) straight to the Group Management page, add this line of code to the functions.php file of your child theme: ``` add_filter( ‘uo_redirect_after_checkout’, ‘__return_true’ ); ``` ### Add a Link to the Group Management Page An underused shortcode included in our plugin takes users directly to the Group Management page: ``` [uo_groups_url text="Button Text"] ``` Just drop that shortcode onto a page (we like Learner Dashboards, or wherever users are most likely to spend most of their time), and it will display a link to the Group Management page. The link is *only* shown to Group Leaders, so you don’t have to worry about restricting who can see the link! ### Send Instructions It’s very helpful to send instructions to your new Group Leaders to help them get started after a purchase. This can be pretty hard though, since you don’t want instructions going to regular students too after buying a course product. Our preferred solution here is to use an integration with a CRM system, as we often have something set up anyway to pass details over and send automated email campaigns. If you do use one, and you turn on the “Automatically include Group Course products in Group License purchases” setting the the Uncanny LearnDash Groups settings page, you can add tags to your Course Products to trigger emails to anyone that buys them. Since that would normally be Group Leaders only, setting up an automation to trigger welcome instructions on those tags is a great way to send communications. A plugin [WooCommerce Follow Ups](https://woocommerce.com/products/follow-up-emails/), could also be used and is simpler, but we prefer the CRM approach if you can do it. ### Add Instructions to the Group Management Page Getting Group Leaders to the Group Management page is easy with some of the instructions above, so if they’re going there anyway, consider adding some instructions to the top of the page. ### Get Help From a Developer There are some other code-based options available, but to execute them properly you’ll need a pretty good Developer. You could potentially modify the WooCommerce receipt email to include instructions based on the products purchased, or modify the confirmation/thank you page to include messaging and buttons based on what the user purchased. Both of these approaches require coding and can be complex to manage. Whatever options you choose, we hope the guidance above does give you some ideas about how to set up your own workflow for Group Leaders as they manage their groups in the front end. And if you have any ideas that we may have missed, let us know about them in the comments below! **Categories:** LearnDash --- ### [Uncanny LearnDash Groups: Part 2](https://www.uncannyowl.com/uncanny-learndash-groups-part-2/) **Published:** March 26, 2018 **Author:** Ryan Moore **Content:** Uncanny LearnDash Groups users: *This is the update you’ve been waiting for*. Everyone else: *Time to get excited about LearnDash Groups.* Version 2.0 of the [Uncanny LearnDash Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) plugin is out, and it’s a *huge* upgrade. Version 2.0 includes **LearnDash Group Subscription support**, **major UI changes**, many **new shortcode parameters** for front end customizations, **better translation** support, and over a dozen other important fixes and updates. Yes, there is finally support for [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/)! Certainly our most requested feature, you can now collect recurring payments for group purchases. Note, however, that we only support subscriptions for Group License products created by an administrator, not custom Group Licenses built by customers using the \[uo\_group\_buy\_courses\] shortcode, and once purchased, the number of seats and courses for the group cannot be changed by Group Leaders. We’re constrained by limitations with the Subscriptions plugin, but we’ll be looking into possible solutions for those barriers in the next few months. [![LearnDash Group Subscription](https://www.uncannyowl.com/wp-content/uploads/2018/03/Group_Subscription_Support.png "Group_Subscription_Support - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2018/03/Group_Subscription_Support.png) Our [documentation](https://www.uncannyowl.com/article-categories/uncanny-learndash-groups/) will be updated shortly to fully explain subscription use, but if you’re a current plugin user and want to get started, create the LearnDash Group Course products as you normally would, then use a Simple Subscription product (instead of a Group License product) to bundle the courses and sell the group with recurring payments. The screenshot above will hopefully point you in the right direction. We also have a new introductory screencast to help out if you’re new to Groups or need more information about how to set it up and coordinate things on your site. It’s a long video, but setting up group licensing of courses is a fairly complex process, so watching it will help new users get a quick start with the plugin. The front end LearnDash Groups pages (Group Management, Progress Report and Quiz Report) have all been completely rebuilt. In the original plugin we tried to use some common theme styles in the plugin so that the pages would inherit styles and better fit in with the theme, but it just didn’t work as well as we hoped. Now we are adding our own styles so that we can make sure that everything looks good across all sites, without needing any knowledge of CSS or having to worry about conflicts. In the back end you can even control the colour palette! Here’s a sample of how things look now: [![LearnDash Group Management](https://www.uncannyowl.com/wp-content/uploads/2018/03/LearnDash_Group_Management_Page.png "LearnDash_Group_Management_Page - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2018/03/LearnDash_Group_Management_Page.png) Existing plugin users will find that their pages look quite different after updating to 2.0. The location of some elements, including buttons, has also changed so that they have better context. The Group Management page is now *extremely* customizable. Maybe you don’t want your groups to use enrolment keys or for Group Leaders to be able to add additional Group Leaders. Now you can change what’s on the page very simply, as the \[uo\_groups\] shortcode has a dozen new parameters to control almost everything about the page. Have a look at [this knowledge base article](https://www.uncannyowl.com/knowledge-base/group-management-page/#Customizing_the_Group_Management_Page) to better understand how you can now control everything. To see what else has changed in this release, have a look at , especially if you’re an existing user. **Tin Canny Users:** Last week also saw a big (though less exciting) update for non-English users of the [Tin Canny plugin](https://www.uncannyowl.com/downloads/tin-canny-reporting/). The most recent release made 99 new text strings available for translation, making the plugin much more translation-friendly and more usable on sites that aren’t in English. **Finally…** We will soon be celebrating the 5 year anniversary of Uncanny Owl. It’s been a very long time since we released a new plugin, but to coincide with our anniversary we’ll be releasing our most ambitious product yet. We’re all very excited to share more news about it soon, as we’re confident that it will completely transform how you configure your WordPress sites. Stay tuned! **Categories:** LearnDash --- ### [Front End Reporting Solutions for LearnDash](https://www.uncannyowl.com/front-end-reporting-solutions-learndash/) **Published:** December 8, 2017 **Author:** Ryan Moore **Content:** It’s been a constant request from LearnDash users ever since we started building WordPress platforms: “We need better front end reports.” End users don’t like CSV files. They also get confused in the back end, even if they’re Group Leaders. LearnDash users needed a better way. Gradually some viable solutions started to appear in the LearnDash community. [ProPanel add front end widgets](https://www.learndash.com/front-end-reporting-and-group-filters-for-propanel/) a few months ago, and third parties like [247digitalclassrooms](https://www.247digitalclassrooms.com/) started to fill in some gaps. We added some compelling options ourselves, but after a year of countless requests, we’re finally bringing our most requested reports to the front end. ### Front End Reporting Comes to Tin Canny Version 2.2 of our [Tin Canny LearnDash Reporting](https://www.uncannyowl.com/downloads/tin-canny-reporting/) plugin adds the Course and User reports you’re familiar with in the back end to the front end. Group Leaders can finally access drill-down summary and student reports without requiring access to the back end of your WordPress site. On top of that, we have also added a filter for groups, so Group Leaders no longer have to look at combined data for all of their groups if they don’t want to. It’s super simple to use the new front end reports. Simply drop a \[tincanny\] shortcode on any page of your site. If the user viewing the page is a Group Leader or Administrator, they’ll have access to the same reports they’re used to on the back end. (For technical reasons, the Tin Can report, which is separate from the Course and User reports, is still only available in the back end.) This is what it looks like: [![Tin Canny Front End Reports](https://www.uncannyowl.com/wp-content/uploads/2017/12/tin_canny_front_end.png "tin_canny_front_end - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/12/tin_canny_front_end.png) Of course, the reporting tables appear below that, but we didn’t want to make the image too large here. When you do add the shortcode, we strongly recommend that you only use it on full-width pages and that no other content be on the pages. It’s a big report. ### Other Front End Reporting Solutions Tin Canny was what people have been asking for in the front end the most, but we do also have several other powerful front end reporting options. Our [Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) plugin adds a comprehensive public report that allows anyone to see and audit LearnDash course completion records. It’s explained in more detail [here](https://www.uncannyowl.com/simple-public-learndash-course-completion-report/). Then our [LearnDash Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) plugin adds front end course completion and quiz reports for Group Leaders. For both of those plugins, they do work as standalone reporting tools; you don’t need to issue CEU credits or sell group licenses if you just want the reports. We’re pleased to be able to offer a diverse selection of front end reporting options for LearnDash users now, and we know our Tin Canny users will be especially excited about the new report shortcode! **Categories:** LearnDash, Tin Can, Uncanny LP --- ### [What Is Tin Can? Should You Care?](https://www.uncannyowl.com/what-is-tin-can/) **Published:** September 23, 2016 **Author:** yuehchin **Content:** ### What is Tin Can? The **Tin Can API** (also known as **Experience API** or **xAPI**) is a specification in learning technology that makes it possible to collect data about a wide range of learning activities. Similar to SCORM and AICC, the Tin Can API describes learning data in a consistent format so it is cross-platform compatible. This means different elearning authoring applications (such as [Articulate Storyline](https://www.articulate.com/products/storyline-why.php) and [Adobe Captivate](https://www.adobe.com/products/captivate.html)) and systems (such as a Learning Record Store) are able to capture and report on learning activities using a consistent vocabulary. ### Why is Tin Can important? Although SCORM (and the legacy AICC) are still the predominant elearning standards supported by most Learning Management Systems (LMS), they came about in a different era when elearning activities were limited to what happened in a single LMS. In the real world, of course, learners move around, use different devices in different locations, and do much of their learning outside of an LMS. Tin Can was developed to address the need of learning beyond a single LMS. Mobile learning, simulations, games, and social learning are some of the things that can now be recognized and communicated well with the Tin Can API. ![What Is Tin Can API](https://tincanapi.com/wp-content/uploads/2012/05/tin-can-api.jpg) Image source: [What is the Tin Can API?](https://tincanapi.com/overview/) ### How does the Tin Can API work? - A Tin Can enabled authoring application (such as [H5P](https://h5p.org/), [Storyline](https://www.articulate.com/products/storyline-why.php) or [Captivate](https://www.adobe.com/products/captivate.html)) creates markers for learning activities that need to be recorded. When these activities take place, the elearning module sends secure statements in the form of nouns, verbs, and objects to a Learning Record Store (LRS). - The LRS records all of the Tin Can statements. An LRS can share these statements with other LRSs and turn the data into meaningful reports. An LRS can exist on its own, or interface with an LMS. You may be wondering whether you need both an LMS and an LRS. The main function of an LRS is to store and report on learning records (not deliver learning), whereas an LMS includes many other functions (such as user management, content management, and assessments) that aren’t included in an LRS. ### Do you need Tin Can in WordPress/LearnDash? Out of the box, [LearnDash](https://www.learndash.com/) does not track user progress or completion of elearning modules created with Articulate Storyline or Adobe Captivate, two industry-standard authoring programs that allow the creation of portable and interactive elearning modules. Authoring elearning directly in WordPress is not always the right fit, and sometimes it’s necessary to leverage software like Storyline or Captivate to create highly engaging content with elements that include branching, scenario-based case studies, simulations, or even games. If your elearning content was (or will be) authored in Storyline, Captivate, or H5P and you would like to track learner interactions with such content and/or have it integrate with LearnDash, you will need a tool like the [Tin Canny LearnDash Reporting](https://www.uncannyowl.com/downloads/tin-canny-reporting/) plugin. This plugin includes an LRS that’s entirely native to WordPress (as well as advanced reporting tools, an upload tool and LearnDash integration). Just upload Storyline or Captivate zip files, or create your own H5P modules, and statements are automatically captured right inside an existing WordPress site. Combined with the most comprehensive reporting tools currently available for LearnDash, the [Tin Canny LearnDash Reporting](https://www.uncannyowl.com/downloads/tin-canny-reporting/) makes a powerful addition to elearning sites with more advanced reporting requirements. **Categories:** eLearning, Tin Can --- ### [LearnDash Required Course Credits](https://www.uncannyowl.com/learndash-credits-reminders/) **Published:** August 4, 2017 **Author:** Ryan Moore **Content:** Two weeks ago we introduced [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/), a plugin that helps LearnDash sites track, manage and report on CEUs and CPD continuing education credits for their learners. While a great plugin on its own, we felt like it was missing something at launch: the ability to set credit requirements. Sure, version 1 could report on credits earned and track annual credit totals, but there was no way to compare what someone had earned against what they *should* earn. Today, in the first major update to the Continuing Education plugin, we’re adding an exciting new feature: Required Credits. With version 1.1, administrators can set and track credit requirements for individuals and groups. Credit requirements are really easy to set up and track. Here’s a screencast explaining the new features and how they work: In the front end, we’re adding new shortcodes to track how many days are left to earn credits against the rollover date (\[uo\_ceu\_days\_remaining\]) and to look up how many credits a user still needs to earn (\[uo\_ceu\_credits\_remaining\]) before the annual rollover date. These are great tools for helping your learners plan their training activities. You can also send out email reminders to students that haven’t met their credit requirements. Just turn on reminders, set the number of days before the rollover date to send it, and even customize the email. Anyone that hasn’t met their annual requirements by the reminder date will receive an email. [![LearnDash CEU Email Reminders](https://www.uncannyowl.com/wp-content/uploads/2017/08/ceu_email_remdiners.png "ceu_email_remdiners - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/08/ceu_email_remdiners.png) Finally, we’ve added a powerful new Deficiency Report to the plugin that will tell you exactly who hasn’t earned enough credits so that you can follow up with them. And that report, of course, comes with the usual search, group filter, and CSV export capabilities for easier analysis. [![CEU Deficiency Report](https://www.uncannyowl.com/wp-content/uploads/2017/08/ceu_deficiency_report.png "ceu_deficiency_report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/08/ceu_deficiency_report.png) That rounds out version 1.1 of the plugin. We’re excited about the new options this update provides for sites offering compliance and other types of annual training. Let us know how you’re using the [Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) plugin in the comments! **Categories:** Continuing Education, LearnDash --- ### [How Are We Doing?](https://www.uncannyowl.com/how-are-we-doing/) **Published:** May 24, 2017 **Author:** Ryan Moore **Content:** It’s been about a year now since we started using a Help Desk platform for inquiries and support, and besides being an invaluable tool for managing all of our conversations, it’s given us real insight into how our clients feel about our performance. The Help Desk has allowed us to capture a lot more feedback and we thought it might be interesting to share some of the metrics and feedback we’ve collected with the public. A year later, we’ve received 3,300 emails and conducted 1,100 conversations with 620 people. Whew! Without the Help Desk system I don’t know how we would have managed. Crunching the numbers, that’s about 12 incoming emails per working day about new projects, support requests, plugin questions and more. What’s even more interesting is that across all of those thousands of emails, approximately 20% have left feedback about the interactions to let us know how we’re doing. That’s huge! And we’re so grateful for the extra time people have taken to give us that insight. Here’s what our numbers look like over the past year: [![Uncanny Owl Satisfaction](https://www.uncannyowl.com/wp-content/uploads/2017/05/Happiness_Report_-_Jan_1__2016_-_May_21__2017-1030x251.png "Happiness Report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/05/Happiness_Report_-_Jan_1__2016_-_May_21__2017.png) Yes, there was **one** comment from a random person who wasn’t happy at all (after I pointed out that we weren’t the company he was looking for and telling him we couldn’t help). There’s always one; we can’t make everyone happy. But we do try, as evidenced by the Great ratings above! Many of those people also took time to leave us comments about how we did (if only we had that kind of response rate for [Toolkit reviews](https://wordpress.org/support/plugin/uncanny-learndash-toolkit/reviews/)!). Here are just a few of the comments that were left for us: \[table id=16 /\] We’re pretty proud of how we perform and how we support our customers, and we really appreciate the time every person above took to leave us their thoughts on how we’re doing. The bar is set pretty high for our performance over the next year! **Categories:** Lean Startup --- ### [Delivering Training with Virtual Classrooms](https://www.uncannyowl.com/delivering-training-virtual-classrooms/) **Published:** May 29, 2017 **Author:** yuehchin **Content:** ### What is a virtual classroom? A virtual classroom is a digital teaching and learning environment in which participants can interact with learning resources and with one another like they can in a traditional classroom. The keywords here are, of course, *virtual* and *classroom*. In a virtual setting, face-to-face activities such as presentations and discussions that are traditionally done in a physical classroom are simulated with web conferencing technology. Communications take place in real time just like in a physical classroom. ![virtual-classroom-best-practices](https://www.uncannyowl.com/wp-content/uploads/2017/05/virtual-classroom-1030x399.jpg "virtual-classroom-best-practices - Uncanny Owl") ### How do virtual classrooms work? As a technology, virtual classrooms are not as foreign a concept as you might think. They are often built on (or share many similar features with) web conferencing technologies that are used to run virtual meetings. Like web conferencing software, in a virtual classroom: - There can be one or more hosts, presenters, moderators, and participants - You can participate by video, audio or both - You can use text chats to communicate with other participants - The presenter can show their presentation or share their screen To turn web conferencing into a virtual classroom, additional technologies like the following are often used: - Break-out rooms for group discussions/activities - A live whiteboard for real-time collaboration - Indication of participant status (which changes when participants raise their hands, temporarily leave the room, etc.) - Participation control (e.g. listen-only, one person speaking at a time) - Feedback tools, such as polls and surveys Like any type of elearning, there is more to it than just the technology. It’s a different way of delivering training. ### What are the benefits of virtual classrooms? Unlike face-to-face classes that require participants to be physically present, an online facilitator or learner can be virtually anywhere in the world. This opens up many learning opportunities for those who can’t travel to attend a training class in person. In addition, training becomes more affordable because there is no travel or accommodation cost. An added bonus is the ability to record the class so that participants can review sessions afterwards. These recorded sessions can serve as refreshers or resources for future reference, or become on-demand content for those who did not attend this training in the first place. ### How can you implement virtual classrooms? There are many virtual classroom applications out there—most of them are commercial, some open source. If you are interested in adding a free virtual classroom solution to your WordPress/LearnDash site, we suggest reviewing Pamela Hogle’s article on [five questions to ask when choosing a virtual classroom platform](https://www.learningsolutionsmag.com/articles/2191/?utm_campaign=lsmag&utm_medium=link&utm_source=lsmag) before you begin. At Uncanny Owl we don’t see virtual classrooms incorporated into sites very often, but we have seen it done with [BigBlueButton](https://bigbluebutton.org/), [BrainCert](https://www.braincert.com/), and [WizIQ](https://www.wiziq.com/). It tends to be more common to rely on offsite services. Once you have the technology, setting up a virtual classroom is often quite straightforward. Running a virtual classroom effectively to deliver training online, however, takes some skills and *can* involve more planning than traditional instructor-led training. We will highlight some best practice advice from industry experts in the next section. ### What are some best practices for delivering training via virtual classrooms? The first thing you need to realize about virtual training is that it’s different than face-to-face training—not better, not worse, just different. Cindy Huggett, a virtual training consultant, identifies three key differences between virtual and face-to-face training. Pamela Hogle elaborates on these three key differences and explains why it’s worth [investing time preparing in these three areas](https://www.learningsolutionsmag.com/articles/2252/three-key-differences-between-in-person-and-virtual-teaching) if you are considering going virtual. Here is my take on the three key differences: 1. **Technology is the main platform in the virtual classroom.** This doesn’t mean that technology should drive your training, but you’ll definitely feel the pain (and your training may fall apart) when technology fails. If you are comfortable with web conferencing technology, keep in mind your learners may not be. So start with a simple setup, do a test run, and be prepared to deal with unforeseen situations. Be flexible with your programming and always have a backup plan in case something doesn’t work. 2. **Different strategies are needed to engage virtual learners.** Remember, as a facilitator you cannot see all the learners at once (and sometimes not at all). You need to keep your learners engaged, and regularly check in to make sure they are still with you. 3. **An online facilitator needs to simultaneously present, engage learners, and use the technology platform.** You need to acknowledge that you can’t do everything yourself, and you need help managing the classroom. It’s not uncommon for an online facilitator to team up with a silent partner (often called the moderator) whose main role is to help manage participations in a virtual classroom. To deliver effective virtual training, you’ll find that employing the following instructional strategies can go a long way: 1. **Use audiovisuals strategically to attract and prolong learners’ attention.** Inevitably your training will include some presentation, most likely done with PowerPoint or something like it. Unlike in a classroom where you can walk around and switch to a whiteboard or demonstration very easily, you might have to bake a lot of content into your slideshow in a virtual classroom. Keep information in your slideshow in smaller chunks so your audience can follow along with slide changes and animations. Use tables, charts, diagrams to visualize ideas rather than bullet points. 2. **Design interactive activities to engage learners.** This isn’t a new concept and many facilitators already master it in the classroom, but now you need to find ways to do it effectively online. There isn’t a magic bullet on how to do this and your activities will vary depending on the subject of your training. The good news is that many activities you use in the classroom should still work online with some adaptation. Keep thinking about what the learners will see and hear, and how you want them to interact with you (or the materials) individually or in groups. 3. **Provide guided practice and feedback to participants.** You may find that this is the most difficult to do online and you may be limited to the technology that’s available. If possible, take a blended approach. Provide quality feedback to individuals outside of class and provide general feedback in class to which most participants can relate. You can also utilize a breakout room if your virtual classroom platform has this functionality. More best practices are included in some of the resources listed at the end of this article. ### Are there drawbacks to using virtual classrooms? Although virtual classrooms can reduce ongoing training costs and make learning more accessible students, they are not for everyone or for all types of training. For example, virtual classrooms wouldn’t be suitable for hands-on computer skills training. The instructor can’t easily see participants’ screens during practice, and it would be cumbersome to have each participant share their screen. There are also limitations as to how many participants can effectively share an online classroom space, especially if everyone is expected to use audio and video to communicate with others in class. With planning and practice, however, virtual classrooms can be a powerful complement to your training programs. ### Further Reading Beck, Jacqueline. [Best Practices: Deliver a Great Virtual Training Event!](https://www.learningsolutionsmag.com/articles/1388/best-practices-deliver-a-great-virtual-training-event) Learning Solutions Magazine. March 24, 2014. Clark, Ruth. [Four Steps to Effective Virtual Classroom Training](https://www.learningsolutionsmag.com/articles/266/four-steps-to-effective-virtual-classroom-training). Learning Solutions Magazine, May 16, 2005. Hogle, Pamela. [Five Essential Skills for Virtual Classroom Facilitators](https://www.learningsolutionsmag.com/articles/2283/five-essential-skills-for-virtual-classroom-facilitators). Learning Solutions Magazine. April 11, 2017. Hogle, Pamela. [Designing Engaging, Interactive eLearning for the Virtual Classroom](https://www.learningsolutionsmag.com/articles/2226/designing-engaging-interactive-elearning-for-the-virtual-classroom-cindy-huggett-cplp). Learning Solutions Magazine. February 22, 2017. Hogle, Pamela. [Going Virtual: Tips for Moving Instructor-Led Training Online](https://www.learningsolutionsmag.com/articles/2206/going-virtual-tips-for-moving-instructor-led-training-online). Learning Solutions Magazine. February 1, 2017. McKinnie, Randah. [Best Practices for Delivering Virtual Classroom Training](https://seminars.adobeconnect.com/_a227210/virtclassbp/). Adobe. Perego, Kim. [Tailoring Virtual Training Delivery for Adult Learners](https://www.learningsolutionsmag.com/articles/643/tailoring-virtual-training-delivery-for-adult-learners). Learning Solutions Magazine. March 14, 2011. Stone, Adam. [Five Best Practices When Converting Classroom Content for the Virtual Classroom](https://www.learningsolutionsmag.com/articles/2219/five-best-practices-when-converting-classroom-content-for-the-virtual-classroom). Learning Solutions Magazine, February 15, 2017. **Categories:** eLearning --- ### [A Pro 2.0 Easter Egg!](https://www.uncannyowl.com/pro-2-0-easter-egg/) **Published:** March 24, 2017 **Author:** Ryan Moore **Content:** We’ve had some great feedback on our 2.0 update to the [Toolkit Pro plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) after it was released last week. It included the new [Import LearnDash Users](https://www.uncannyowl.com/import-learndash-users/) module (which is huge and essential with large user import lists) as well as lots of other improvements and new features. But did you know that it included another brand new module? We didn’t! Oops. Due to an oversight with the move to 2.0 (and what that meant behind the scenes in our repository branches), a module we hadn’t planned on releasing yet was included. Luckily it did work and had been through testing, but we only discovered that it had been included this week. So, now that it’s out, we’re pleased to introduce the [Autocomplete Lessons & Topics on Gravity Forms Submission](https://www.uncannyowl.com/knowledge-base/gravity-forms-auto-completes-lessons-topics/) module! That’s a very long name for a module that does exactly what it says it will do—complete LearnDash lessons and topics on submission of a Gravity Form. The module came about because we’ve seen so many users lose their form entries on LearnDash pages. By adding a form, users then see a Submit button (for the form) and Mark Complete button (for LearnDash). It’s not always clear that Submit must be clicked before Mark Complete so that entries aren’t lost. By making this module available, we can avoid that confusion by hiding Mark Complete and having lessons and topics completed automatically on form submission. ![gf_autocomplete_setting](https://www.uncannyowl.com/wp-content/uploads/2017/03/gf_autocomplete_setting.png "gf_autocomplete_setting - Uncanny Owl") Now that we’ve explained it and its utility, you may be wondering why it wasn’t intentionally released. That’s because we hadn’t quite figured out how to handle forms inside lessons that contain topics. We can’t complete those lessons on form submission or users would then be allowed to skip topics. But normal workflow when completing the last topic in a course is to be directed back to the lesson level, which would then show an empty form. That’s really confusing for the user, as they already saw the form previously but it will look like their submission was lost. We could have added persistent data capabilities to forms, hidden the form or something else, but every scenario seemed like it would cause complications for some subset of our clients. That’s why we just released 2.0.2 of the plugin today, which will show the form again but also exposes the Mark Complete button when it detects a previous submission and an incomplete lesson. But we still recommend you not include forms inside lessons that have topics. 🙂 Put them in topics or standalone lessons instead. We hope you enjoy the new module! **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [What Else is New in Toolkit 2.0?](https://www.uncannyowl.com/else-new-toolkit-2-0/) **Published:** March 16, 2017 **Author:** Ryan Moore **Content:** The new [Import LearnDash Users module](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) may have stolen the show on Monday’s release of 2.0 versions of both the [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/) and the [Pro Modules add-on](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/), but there were actually a lot of significant enhancements that deserve more attention. Some of them fundamentally change how you’ll interact with the Toolkit on your sites. ### **Module Settings** We’ve added a lot of new modules to the Toolkit suite since we first launched it and the settings page for it was starting to feel too busy. To make things easier to manage, we’ve added new filters for module type, module category and status. Now it’s a lot easier to see the modules in a more organized way. ![Toolkit Filter](https://www.uncannyowl.com/wp-content/uploads/2017/03/ScreenFlow.gif "Toolkit Filter - Uncanny Owl") We also recognized that having to turn modules on and off and *then* save the changes at the bottom of the pages was causing some confusion. A lot of people expected clicking the switches alone to turn modules on and off, so that’s what we did. Now you can click the switch and you’ll get a confirmation almost immediately that the status change was saved. We know a lot of users will appreciate no longer having to worry about forgetting to click the Save button. ### Enhanced Course Grid The LearnDash official course grid has had the ability to include short course descriptions in the grid for some time now, so we figured it was time to add support to our module. When the [Enhanced Course Grid](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/) is active, a *Short Description* field is added to course edit pages. Enter text here and it will be displayed in the course grid. The grid shortcode now also includes an attribute to show or hide this description field. One important note here is that our implementation is different than the LearnDash one, so if you currently use the LearnDash Course Grid add-on, any descriptions entered in the field it uses will have to be resaved in our field. ### Group Drip & More There was some debate about how we were handling lesson drip date when a user was in multiple groups with different drip dates. We changed the behaviour in this release so that in this situation the user gets access to the lesson on the *earliest* date of the groups for which the user is a member. Our Group Leader module previously blocked access to some ProPanel items so we have unblocked them again. We’re still uneasy showing too much in the back end to Group Leaders but this is the safest approach. Finally, as always, there are numerous tweaks and improvements in both plugins to deliver an even better experience on your sites. We hope you enjoy the new releases! **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [What's New with Uncanny Owl Plugins?](https://www.uncannyowl.com/whats-new-uncanny-owl-plugins/) **Published:** November 5, 2016 **Author:** Ryan Moore **Content:** We’re continuously improving our plugins and making sure they’re the best possible products for our users. Unfortunately, sometimes we overlook communicating new features and talking about how they can make your [LearnDash](https://www.learndash.com) sites even better. Here’s what you may have missed over the last few months: ### Pro Modules for Uncanny LearnDash Toolkit In version 1.2 we added a new module to clearly label sample lessons. Out of the box it’s not always obvious to users which lessons are samples in LearnDash, so in tables that list lessons we add a very clear label and introduced controls styling that label. You can even change the text, so instead of “Sample” you could use “Preview” or “Free”. More information is available at . In version 1.3 we added a new [quiz time control](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) that restricts access to a quiz unless users have spent a certain number of minutes in a course. For courses where you need to prevent learners from completing a course unless they’ve spent a minimum amount of time within it, this can be invaluable. We also added some navigation controls that were removed in LearnDash 2.3 that make workflow more intuitive for learners when autocompletion behaviours are enabled. Finally, version 1.3 of the [Pro modules plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) is more translation friendly. ### Tin Canny LearnDash Reporting In version 1.1 of the [Tin Canny plugin](https://www.uncannyowl.com/downloads/tin-canny-reporting/), we added a new dashboard metric, CSV export options, more control over Mark Complete behaviours when Tin Can modules are present in a lesson/topic, and data for total time spent in a course (to supplement completion time. We’re very excited about all of the improvements, but version 1.2 will really change what’s possible for tracking elearning in WordPress—especially for our enterprise users. Stay tuned for most news in that area, because it will be a first for elearning in WordPress. ### Coming Soon Our next paid plugin will make it possible to manage free enrolment to courses and membership in LearnDash Groups in a much more polished and accurate way. We don’t want to give too much away just yet, but watch for an announcement in the next month. The new plugin represents the accumulation of months of development and has been used very successfully on 5 client sites. Is there something you’d like to see next in the [Pro plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/)? The list below includes features we’re considering for the next release. Let us know what you would like most! \[gravityform id=”5″ title=”false” description=”false” ajax=”true” tabindex=”15″\] ### If You Use Our Plugins If you run one of the 2,500 LearnDash sites using our plugins, we could really use your help to make them even better. First, we field a lot of support requests. If we’ve helped you with a question, it’s always extremely useful when you let us know if our guidance worked, especially if you posted on the [WordPress.org support site](https://wordpress.org/support/plugin/uncanny-learndash-toolkit). Second, if you do use the [free Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/), let us know how it helped your site by [leaving a review](https://wordpress.org/support/plugin/uncanny-learndash-toolkit/reviews/) in the WordPress repository. We do read them all and always appreciate feedback. **Categories:** LearnDash, Tin Can, Uncanny LearnDash Toolkit --- ### [Introducing Native SCORM Support for WordPress](https://www.uncannyowl.com/introducing-native-scorm-support-wordpress/) **Published:** January 9, 2017 **Author:** Ryan Moore **Content:** The [Tin Canny LearnDash Reporting plugin](https://www.uncannyowl.com/downloads/tin-canny-reporting/) has been a very interesting initiative for us. It opened up LearnDash in a bigger way to enterprise users and proved that it was possible to use WordPress as a viable Learning Record Store (LRS) with advanced reporting. Organizations around the world are now using it, but one thing that’s always been missing is a way to capture SCORM data inside LearnDash. Maybe a business had some content output to SCORM that they couldn’t republish to Tin Can/xAPI, or maybe they were using a product like Articulate Rise, which doesn’t even support Tin Can/xAPI. Whatever the case, today we’re very excited to announce that SCORM modules can be tracked natively inside WordPress with our Tin Canny plugin. At this time of this post, the Tin Canny plugin officially supports SCORM 1.2 and 2004 as well as xAPI / Tin Can for [Articulate Storyline 2, Storyline 360, Articulate Rise (SCORM only), iSpring, Adobe Captivate 9 and H5P (xAPI/Tin Can only)](https://www.uncannyowl.com/knowledge-base/authoring-tools-supported/). It’s been a lot of work but we’re especially excited to welcome Rise, iSpring and Storyline 360 to the plugin. Please note that this is the first release for supporting all of this modules, so it’s a good idea to test your modules first and make sure data is being tracked as you expect it to be. The SCORM support is especially important to consider here, as what we’re doing is capturing the SCORM data and then using a wrapper to essentially translate it into Tin Can statements. This makes it reportable along with all Tin Can/xAPI data for consistency, but this also means it may look different than expected if you’ve been using another Learning Management System (LMS). Version 1.2 of [Tin Canny LearnDash Reporting](https://www.uncannyowl.com/downloads/tin-canny-reporting/) includes all of these updates and more. We also added an easy way to clear all Tin Can data for testing purposes, additional quiz data validation and made some minor changes to user experience. We hope you enjoy the addition to the Tin Canny plugin! **Categories:** eLearning, LearnDash, Tin Can --- ### [To Quiz or Not to Quiz?](https://www.uncannyowl.com/quiz-not-quiz/) **Published:** January 20, 2017 **Author:** yuehchin **Content:** Having gone through years of schooling, most of us are used to taking and passing tests during or at the end of our learning process. Some of these tests are major milestones and others may determine whether our learning is deemed ‘completed’ or ‘successful’. Some teachers may find constructing and administering tests more straight forward than developing other types of assessment. Often these tests get created at the end of a course development process, driven by the subject matter rather than by expected performance outcomes. For workplace learning or soft skills training in which application is more important than memorizing facts, tests may not be the most appropriate assessment method. Most test questions are not designed to allow students to engage in critical thinking and reflection or a deeper analysis of the learning material. There are alternatives to tests, such as writing assignments, collaborative projects, and case studies, that can avoid the problems often associated with tests and quizzes. The key is to design authentic assessments that simulate real-life situations so students can actually learn from the process (Palloff & Pratt, 2013)1. Although group projects can be harder to manage online, they allow your learners to create and be part of a community of practice. After all, if the application of skills doesn’t occur in isolation, why should learning of such skills take place in a vacuum? There are, of course, benefits to tests. Here are some of the occasions when tests are not only appropriate but good strategies to enhance learning: - **Use pre-tests to introduce new material:** A quiz, when used as a pre-test, can provide your learners with a preview of what they are about to learn. The intention of the test is to get your learners to realize what they don’t know and make them want to know more. These questions can also help students focus on the most important knowledge and skills addressed by your course. - **Use post-tests to reinforce main points and check understanding:** After a lesson is concluded, consider using a self-assessment to review the material covered. A well designed post-test provides learners with personalized feedback tied to what they just completed. It helps them self-evaluate whether they have a good grasp of the material. These frequent, low-stakes assessments can also help students gain proficiency before they attempt the final assessment2. - **Use formal tests to validate competency:** At a logical break point, use a formal test to help learners synthesize their learning. Align test questions to the learning objectives. As much as possible, include application questions (e.g., case scenarios) in this type of tests to help learners apply what they learned in simulated situations. To quiz or not to quiz? Perhaps there isn’t a straight-forward answer, but ask yourself what the intended learning outcome is before you make it the primary choice for assessment. 1 Palloff, R. M., & Pratt, K. (2013). *Lessons from the virtual classroom: The realities of online teaching* (2nd ed.). San Francisco: Jossey-Bass. 2 Weise, M. R., & Christensen, C. M. (2014). [*Hired education: Mastery, modularization, and the workforce revolution*](https://www.christenseninstitute.org/wp-content/uploads/2014/07/Hire-Education.pdf). Redwood City, CA: Clayton Christensen Institute. **Categories:** Best Practices, eLearning --- ### [New Modules for LearnDash Pro Toolkit](https://www.uncannyowl.com/new-modules-learndash-pro-toolkit-released/) **Published:** December 23, 2016 **Author:** Ryan Moore **Content:** Yesterday we released version 1.4 of the [Pro modules](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) plugin for the [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/) and it’s one of our biggest updates yet. Along with the usual suite of improvements, we introduced three entirely new modules: [Send LearnDash Certificates by Email](https://www.uncannyowl.com/knowledge-base/send-certificates-by-email/), [Complete Lesson/Topic on Quiz Completion](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics-quiz-results-page/), and the [Group Leader Experience](https://www.uncannyowl.com/knowledge-base/group-leader-access/). All 3 have been very popular requests and we’re very excited to be able to include them in the Pro plugin. All new features are, of course, available at no extra cost to existing users. Here’s a screencast that outlines how the new modules and other changes work: The biggest addition to the plugin is the ability to send LearnDash PDF certificates by email on quiz completion. Certificates can go to learners, of course, but even more exciting is that the site admin, Group Leaders, and even custom email addresses can be notified and also receive the certificate attachment. It’s a great way for managers and organizations to track staff achievements. One caveat with this module is that it works with quiz certificates only for now (not course certificates), but we know a lot of people are going to be excited about easy certificate distribution by email! ![2016-12-21_11-52-12](https://www.uncannyowl.com/wp-content/uploads/2016/12/2016-12-21_11-52-12.jpg "2016-12-21_11-52-12 - Uncanny Owl") The Autocomplete Lessons & Topics on Quiz Results Page module addresses a common user experience issue on LearnDash sites–users must click a **Click here to continue** button to save results and be able to mark an associated lesson or topic as complete. If they didn’t, administrator intervention may have been required in order to complete associated lessons and topics properly. This module automatically marks an associated lesson or topic complete as soon as the quiz is completed so that users that accidentally forget to click the button won’t be negatively affected. *(Clarification: LearnDash 2.3 did complete quizzes earlier in the workflow; our plugin allows easier autocompletion of associated lessons/topics.)* We have always found the Group Leader experience with LearnDash a bit confusing. For us, it was unusual for Group Leaders to have access to the WordPress Dashboard and back-end profile management, but not to have easy access to the courses they were managing and reports. This simple module, when enabled, grants Group Leaders access to the courses their groups are enrolled in and changes the back end user interface to something more suited to typical Group Leader functions. ![igli-enabled](https://www.uncannyowl.com/wp-content/uploads/2016/12/igli-enabled.png "igli-enabled - Uncanny Owl") Along with the modules themselves we’ve added some new organizing options for the course grid (including a fixed sorting option by menu order that ignores groupings), expiry date sorting for LearnDash Groups, better translation support and more. If you don’t already have a copy of the plugin, make sure to check out the other modules already included in the [Pro Modules plugin for the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/)! **Categories:** LearnDash, Uncanny LearnDash Toolkit --- ### [Tin Can for WordPress is Coming!](https://www.uncannyowl.com/tin-can-wordpress-coming/) **Published:** August 15, 2016 **Author:** Ryan Moore **Content:** ***Update:** Our Tin Can/XAPI LRS plugin with LearnDash reporting is now available. [Read the announcement](https://www.uncannyowl.com/tin-can-lrs-learndash-report-toolkit/).* We’ve seen a lot of excitement for Tin Can use in WordPress in the past but very little use of it in the real world. After all, every Tin Can solution relied on a reporting application outside of WordPress. It meant segregating reporting and figuring out how to send Tin Can statements externally, plus reports tended to be too granular and not practical. Many LRS solutions obfuscated code and prevented customizations, so making improvements was impossible. We discouraged Tin Can use for our clients because capturing data—and, more importantly, making the data meaningful—was just too cumbersome. Of course, the lack of a viable Tin Can solution also meant that WordPress wasn’t a useful platform for larger organizations that tended to create elearning modules with tools like Articulate Storyline, Adobe Captivate and others. [![course_table](https://www.uncannyowl.com/wp-content/uploads/2016/08/course_table-1030x270.png "course_table - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/08/course_table.png) We decided it was time to add Tin Can to WordPress. We just finished building a complete Learning Record Store (LRS) that’s entirely native to WordPress. It captures Tin Can statements with no configuration. Just upload Storyline or Captivate zip files, or add H5P modules, and statements are automatically captured right inside an existing WordPress site. And it integrates seamlessly with [LearnDash](https://www.learndash.com), the leading WordPress LMS plugin. *Please note that all images in this post may change before the final release but were all generated with our plugin from live data. Additional charts will be added before release.* [![tin_can_report](https://www.uncannyowl.com/wp-content/uploads/2016/08/tin_can_report-1030x646.png "tin_can_report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/08/tin_can_report.png) Of course, Tin Can data isn’t of much use unless it’s feeding a robust reporting platform. We built that too! We’re still wrapping up the reporting work, but it’s going to add a lot of insight to administrators of elearning programs powered by LearnDash. It fact, it reimagines reporting for LearnDash data in a big way. Here are just a few of the metrics you’ll be able to see with our reporting: - [![course_chart](https://www.uncannyowl.com/wp-content/uploads/2016/08/course_chart-300x234.png "course_chart - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/08/course_chart.png)Average completion time of every course - Tin Can statements by verb, LearnDash Group, module, user, or almost any other combination you can think of - Course completion trends - Tin Can statement trends There’s a lot more available, of course, but the metrics above are examples of data that was never before available for LearnDash courses. There are also drill down capabilities, so you can start from a view of overall course activity and click down to seeing which topics have been completed by a particular user. It’s all inside WordPress too—there are no CSV files or external applications to worry about. We support instant sorting, filtering and searching inside javascript data tables too. [![profile](https://www.uncannyowl.com/wp-content/uploads/2016/08/profile.png "profile - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/08/profile.png) The plugin will be available before the end of August, 2016. We’re very excited about it, but it’s also new territory for us and we want to make it as useful as possible to people using Tin Can modules in WordPress. Do you use Tin Can on your LearnDash sites, or are you considering it? Tell us what we can do to improve Tin Can in WordPress in the comments below! **Categories:** LearnDash, Tin Can --- ### [Add Sample Lesson Labels in LearnDash](https://www.uncannyowl.com/labels-sample-lessons/) **Published:** August 19, 2016 **Author:** Ken **Content:** Version 1.2 of the [Uncanny LearnDash Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) has been released, and with it a new module: customizable [labels for sample lessons](/knowledge-base/sample-lesson-label). If you’ve offered sample lessons for your closed courses, you’ll know that LearnDash’s differentiation between sample and non-sample lessons is quite subtle. This module adds a visual “Sample” label, and the module settings let you customize the text, colors and size of the label. ![course_table_with_sample](https://www.uncannyowl.com/wp-content/uploads/2016/08/course_table_with_sample.png "course_table_with_sample - Uncanny Owl") [Visit the knowledge base for full details.](/knowledge-base/sample-lesson-label) We’ve also included a number of updates and fixes in this release, including better print styles for the learner transcript module and better support for long course names in the course dashboard. [Head over to the downloads page to see the full changelog for version 1.2.](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) **Categories:** Uncanny LearnDash Toolkit --- ### [Introducing the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/uncanny-learndash-toolkit/) **Published:** March 15, 2016 **Author:** Ryan Moore **Content:** We are very pleased to announce the [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/), our very first plugin in the WordPress repository. This plugin is a collection of some of the key basic features we see requested on LearnDash sites that usually require a custom solution. We created this plugin to make it easier for general LearnDash users to get a head start with their LearnDash sites. The plugin, at least for its initial release, makes it easy to do the following: - Add a clean login form to any page so you don’t have to rely on wp-login.php. - Force user verification, so users can create accounts but can’t sign in until approved by an administrator. - Hide the admin bar for WordPress roles of your choice. - Add a button anywhere that lets users resume their most recently viewed course, lesson or topic. - Display a user’s list of LearnDash Groups in their user profiles. - Redirect users to a specific page after logging into the site. - Mark lessons as complete automatically when all topics and quizzes within the lesson have been marked complete. - Hide or show menu items based on the user’s signed-in state. - Display a list of earned LearnDash certificates. - Show or hide content based on a user’s signed in state. - Display a list of certificates in a widget. Yes, it’s a lot of functionality. We designed it to be lean though, and it’s really easy to turn on only the specific features you need. Every feature has an on/off switch so you can use the plugin as much or as little as you want. For the developers out there, we’ve added some hooks and translation features that should make your customizations easy (we’ll follow up with another post with some of the cool things you can do with filters). [![Uncanny LearnDash Toolkit](https://www.uncannyowl.com/wp-content/uploads/2016/03/Uncanny_LearnDash_Toolkit_‹_Testing_Site_—_WordPress.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/03/Uncanny_LearnDash_Toolkit_‹_Testing_Site_—_WordPress.png) Before I jump into a detailed overview of each feature and how to use it, there are 3 very important things to remember. First, this is the first release of a complex plugin, so there could be issues. We invite feedback, and in fact, we’ll be opening up the git repository so you can suggest changes. Second, the plugin offers a lot of capabilities, so to maximize performance, we made it possible (and easy) to turn functions on and off. By turning functions off the associated code will not run and there won’t be any performance hit; as such, we recommend turning features off that you don’t need. Third, very little styling is included so that the plugin styles inherit whatever has been set up for the theme and LearnDash. Our aim was to keep things consistent with your current system and easy to style with CSS rather than introduce new styles. With that out of the way, here’s a video that outlines exactly how the plugin works and how to use each of the features included in it. ## Detailed Feature Overview ### Front End Login [![Front_End_Login](https://www.uncannyowl.com/wp-content/uploads/2016/03/Front_End_Login-2.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/03/Front_End_Login-2.png) This function lets you put login forms anywhere on your WordPress site; it also allows you to restrict access to verified users. To use this feature, turn it on so that the green ON switch is displayed. Once enabled, several features become available: a Remember Me [Forgot Password?](https://www.uncannyowl.com/login/?action=lostpassword). That allows you to add the form and include a special message to users seeing the form area that have already signed in. ### [![admin_bar](https://www.uncannyowl.com/wp-content/uploads/2016/03/admin_bar-237x300.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/03/admin_bar.png)Hide Admin Bar This very simple function turns the black admin bar at the tops of pages off for any roles that you don’t want to have access to it. Typically this might include Subscriber and Customer roles. ### LearnDash Resume Button When turned on, this function stores the last LearnDash page that every learner visits. To use make this available to learners, add the \[uo\_learndash\_resume\] shortcode to any page. This will create a button that, when clicked, will take the user to the most recently accessed course, lesson or topic. ### LearnDash Groups in User Profiles As the title says, this feature adds a row to backend user profiles that shows a list of LearnDash Groups for which the user is a member. This makes it a lot easier to troubleshoot course permission issues on sites with many LearnDash Groups. ### Login Redirect [![redirect](https://www.uncannyowl.com/wp-content/uploads/2016/03/redirect.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/03/redirect.png) By turning this feature on and setting a redirect URL in the Settings window, you can easily send users to any URL after login. If the URL field is left blank than users will be directed to the homepage. This feature is a great way to make sure learners are directed to a dashboard or course page immediately after signing in. Note that the redirect does not apply to administrators. ### Topics Autocomplete Lessons Have your learners ever gotten confused when they’re directed back up to the lesson page after completing all topics in the lesson? Ours too. It means they’re seeing the lesson page twice and have to mark it complete the second time, which isn’t always obvious. What this function does is run a check when a topic is completed to see if it’s the last incomplete topic in a lesson, and if it is, the lesson is marked complete automatically and the learner is navigated to the next lesson page. It may only save a click, but it can really help to simplify navigation and reduce confusion. ### Menu Item Visibility It almost always makes sense to show different content to signed-in learners and anonymous visitors. Learners need access to things like a course dashboard, profile management and account details; those things aren’t relevant to people that aren’t signed in. Turning this feature on adds a simple control for WordPress menus: each entry can be visible to everyone, visible to signed-in users only or visible to signed-out users only. We kept it light, so there are no controls by role or other attributes, but this should be good enough for most sites without requiring a heavy plugin. ### Show LearnDash Certificates Ever wish you could easily show a list of earned certificates? The \[uo\_learndash\_certificates\] shortcode makes it easy. Drop the shortcode anywhere to show a list of earned certificates, with the most recently earned at the top. To style the container, use \[uo\_learndash\_certificates class=’my-class’ title=’my-title’\], where my-class is a CSS class and my-title is a title for the element. ### Show or Hide Content This feature allows you to show any content you want to either logged in users OR logged out users. Here are 2 examples of how to use the shortcodes: That example would display the text to users that are signed in. This might be useful in an Open course to display special bonus content, like a video or download. Show content for logged out users That example will display the content for users that aren’t signed in. This is helpful for calls to actions and other marketing that isn’t relevant to signed-in users. ### LearnDash Certificate Widget This feature is just like the Show LearnDash Certificates function above but it makes it available as a widget. This is a great addition to navigation sidebars on LearnDash pages and learner dashboards. That’s it for the first iteration of the [Uncanny LearnDash Toolkit](https://wordpress.org/plugins/uncanny-learndash-toolkit/)! We really hope you find it useful. [Click here](https://wordpress.org/plugins/uncanny-learndash-toolkit/) to view the Uncanny LearnDash Toolkit in the WordPress Repository. Please note that it does require PHP 5.6, as recommended by WordPress. ## v1.1 Update April 8, 2016: ### Log In/Log Out Links ![Screenshot_040816_105703_AM](https://www.uncannyowl.com/wp-content/uploads/2016/03/Screenshot_040816_105703_AM.jpg "- Uncanny Owl")We’ve added a really handy feature for adding log in and log out links to your menu, widgets, or posts! Once activated, you’ll see a panel called “Uncanny Menu Links” in your menu sidebar. You can add a Log In link, a Log Out link, a link that automatically switches between Log In and Log Out depending on whether the user is logged in or out, or a link to your Register page. To add the links to a widget or post, use the shortcodes below: - Remember Me [Forgot Password?](https://www.uncannyowl.com/login/?action=lostpassword) : Log In link - [Logout](https://www.uncannyowl.com/wp-login.php?action=logout&_wpnonce=19c1cce996) : Log Out link - [Log In](https://www.uncannyowl.com/wp-login.php) : Log In / Log Out link - [Register](https://www.uncannyowl.com/wp-login.php?action=register) : Register page link ## v1.2 Update April 12, 2016: ### Breadcrumb Links ![breadcrumbs](https://www.uncannyowl.com/wp-content/uploads/2016/03/breadcrumbs.png "- Uncanny Owl")We’ve incorporated our breadcrumb link plugin into the Toolkit and improved how it works. After enabling the module, you can use a \[uo\_breadcrumbs\] shortcode wherever you want breadcrumb links to be displayed. If you want to include the breadcrumbs in a header template instead, use in the PHP file. Out of the box, breadcrumbs for LearnDash are displayed in the following format: Home > (Course Archive Page) > (Course Name) > (Lesson Name) > (Topic Name). Since most LearnDash users will prefer a dashboard (like a page with a profile shortcode, course grid or something custom), we added fields in the Settings panel for this module that allows you to define the dashboard page name as well as the page to use. When these 2 values are set, the dashboard will replace the course archive page in the breadcrumb links. You can also change the separator in the settings (and even include HTML if you want to use Font Awesome or something similar). Because breadcrumbs just require a shortcode, you can use them inside LearnDash posts, in the sidebar, or anywhere else you want. We do also include WooCommerce support, but associations may not work as well for other post types. **Categories:** Learning, Uncanny LearnDash Toolkit --- ### [Who Reads Learning Outcomes?](https://www.uncannyowl.com/reads-learning-outcomes/) **Published:** July 9, 2016 **Author:** yuehchin **Content:** If you do a search online, you’ll find plenty of resources on how to write good learning outcomes, and how not to confuse learning outcomes with learning objectives. “Outcomes” or “objectives”, the reality is your learners seldom pay attention to them. They skip this screen. They fast forward. So for whom are learning outcomes really written? Don’t get me wrong. Learning outcomes are written for the learners. But they seem to be there as a reminder to the instructor and instructional designer of what the focus of the training should be, like how PowerPoint is often misused as the presenter’s teleprompter. So should you skip learning outcomes all together? Not at all. There are ways you can state learning outcomes that are informative and actually get your learners’ attention. Here are some strategies. ### 1. Pose learning outcomes as questions Rather than telling your learners what they should be able to do at the end of the lesson, consider asking them a series of open-ended questions for which they don’t yet have answers until they complete the lesson. These questions are intended to raise the learners’ curiosity and get them to want to learn more. ### 2. Use a pre-test to frame learning outcomes An alternative to the first strategy is using a pre-test. The test should be short and fun. In fact, it should not look like a test. As with the first strategy, the intention of the test is to get your learners to realize what they don’t know from the cues to the key points of your lesson. **WordPress Tip**: If you’re not grading pre-tests to support Level 2 evaluation, [LearnDash](https://www.learndash.com) and other LMS quizzes can be heavy for this type of pre-test. Consider an [H5P element](https://h5p.org/content-types-and-applications) or simple text questions instead. ### 3. Use a case scenario to model learning outcomes Learning outcomes are meant to describe desired behaviour. So, why not present a case scenario that models the intended outcomes? The learners get to *see* what they will be able to do at the end of the lesson. Have them buy into what they can achieve will increase their motivation to learn. ### 4. Use a short introductory video to tell a story Contrary to the previous strategy, a story that makes personal connections will warm up the learner. On the other hand, a story that describes a problem causes tension; it will make the learner want to resolve it. Either way, your introduction will engage the learner and make the content more relatable. Learning outcomes don’t have to be boring. If you take care of the presentation of your learning outcomes, your learners will be less inclined to skip them. **Categories:** Best Practices, eLearning --- ### [Breadcrumb Navigation for LearnDash](https://www.uncannyowl.com/breadcrumb-navigation-learndash/) **Published:** December 11, 2014 **Author:** Ryan Moore **Content:** ![Topic_A___LearnDash_Dev](https://www.uncannyowl.com/wp-content/uploads/2014/12/Topic_A___LearnDash_Dev-300x62.jpg "- Uncanny Owl")Out of the box, navigating complex courses in LearnDash can get confusing. With potentially dozens of topics, lessons and courses, it’s easy to get lost. Sidebar navigation helps, but it’s mainly for navigating within the same level rather than getting back to higher levels. What’s missing for some courses is context and being able to go up levels easily. We ran into this challenge with a recent LearnDash project. What it needed were breadcrumb links, but without customization, theme breadcrumb generation is broken for LearnDash. The problem is WordPress usually thinks that the parent of every course, lesson and topic is “Home”. For most applications, this makes breadcrumbs almost useless. To address this shortcoming, we created a plugin that makes it easy to navigate up levels by using breadcrumb links. Just as you would expect, every topic rolls up to a hyperlinked lesson, which rolls up to a hyperlinked course, which rolls up to a course dashboard. And at the top level is, of course, the homepage. We know breadcrumb navigation for LearnDash would be useful to a lot of learning projects, so we’re making the plugin we created available below. There’s no cost to use it, but there’s also no support! If you happen to use the [Total](https://themeforest.net/item/total-responsive-multipurpose-wordpress-theme/6339019?ref=uncannyowl) theme, you’re in luck! The plugin below replaces the built-in theme breadcrumb code with custom breadcrumbs that work with LearnDash. Don’t worry, they’ll work with your other pages, posts and other content too! For anyone not using [Total](https://themeforest.net/item/total-responsive-multipurpose-wordpress-theme/6339019?ref=uncannyowl), a generic plugin is available. For that version, just insert a \[sfwd-breadcrumbs\] shortcode wherever you want your breadcrumbs to appear. You can also hook it into your theme header, but we’ll leave it to you to figure out how to do that. The plugin should at least save you a few hours of work getting custom header breadcrumb links set up. We hope you enjoy the plugins! **May 2016 Update:** The plugins are no longer available. Please use the [Uncanny LearnDash Toolkit](https://www.uncannyowl.com/uncanny-learndash-toolkit/) instead. **Categories:** Learning, WordPress Book --- ### [Best Practices For a First WordPress LMS with LearnDash](https://www.uncannyowl.com/best-practices-for-a-first-wordpress-lms-with-learndash/) **Published:** October 26, 2015 **Author:** Ryan Moore **Content:** ![learndash-decisions](https://www.uncannyowl.com/wp-content/uploads/2015/10/learndash-decisions.jpg "- Uncanny Owl")We help small and large businesses create WordPress-powered Learning Management Systems. While every business might come to us with different needs, everyone’s early questions tend to have similar themes. Is a WordPress LMS the right fit for my needs and program? How can I deliver a great learning experience? We thought many of our answers to questions like those would be of interest to a wider audience, so this post captures what we generally recommend for WordPress LMS projects. Before jumping into any WordPress LMS project, we always make sure that WordPress is the right fit. It’s definitely the wrong choice for many projects! For programs with fewer than 100 users, a cloud LMS can be more cost-effective. I personally find that a WordPress LMS (like [LearnDash](https://www.learndash.com/) or [Sensei](https://www.woothemes.com/products/sensei/)) works best for self-directed, linear elearning programs. Courses with a lot of video, text, images and downloads fit well, and it’s best for programs with relatively simple needs. Facilitated programs can work in a WordPress platform, and we’ve created and seen examples of some that are quite effective. Tin Can support is available, and while we have created several programs that rely on an LRS, I’m never thrilled with the outcome. My strong preference, if Storyline, Captivate or Lectora content needs to be embedded inside WordPress, is to embed only and not track anything inside those modules. Rely on [LearnDash](https://www.learndash.com) (the LMS plugin we use most) for tracking and assessment rather than Tin Can, and generally speaking, simpler programs are better with LearnDash, unless you have some development expertise. If you don’t understand most of this paragraph, that’s a good thing, because it likely means your needs are probably simple and a better LearnDash fit! Once you’ve determined whether or not a WordPress LMS seems like the right fit for your program, spend some time thinking about the learner experience you want to achieve and what the platform needs to do. There are a lot of things that LearnDash can’t handle well out of the box, even with integrations—group licensing, extended reporting, handling multiple course authors and programs where continuing education credits are issued come to mind. These types of things require professional assistance, and even then, there may be better platforms. It’s also important to consider whether your course structure fits within the LearnDash model. For most uses, LearnDash effectively has a 3-level course structure: courses at the top, then lessons, then topics inside lessons. I like to see courses where materials can be divided up into 2-5 minute segments, which become lessons and topics inside LearnDash. Keep in mind that LearnDash only tracks whether or not users complete a lessons or topic, not what they do inside it (unless it’s a quiz). So if your course consists of a series of 1-hour videos, users are going to find it painful when they discover they can’t resume videos in later visits. By keeping pages brief and focused, it’s much easier for users to tackle programs across sessions and to feel like they’re making progress. LearnDash is a much better fit for courses that can chunk information as I’ve described. Of course, since I’ve said that LearnDash works better with simple programs that don’t have a lot of interactivity, how do you make courses engaging and promote knowledge transfer? Well, even if you stick to simple media and interventions, you can still push them to deliver an effective learning experience. Videos work well inside LearnDash. If you have great videos to work with, you’re definitely a step ahead. Use short quizzes liberally to promote reflection and self-assessment. Get some great images and diagrams in there! We have an in-house designer for that purpose, but even if you don’t, stock photo sites like [Depositphotos](/share/depositphotos) can be a great source of media. Try to mix things up and appeal to a variety of learning styles. We try to build programs that mix video, text, printable files, quizzes, infographics, diagrams, suggestions for offline activities, surveys and more. Since WordPress is extendable with plugins, it means we can also easily add interactive elements, like images with hotspots, games, awards for completing activities, and even social elements. For one of our sites we even created a virtual study group system! Many of the businesses we partner with are familiar with WordPress, and sometimes unlearning the blog-centric view of WordPress is important. On a typical WordPress site, most people aren’t signed in when they use it. With LearnDash, the signed-in experience needs at least as much consideration as the public experience. A lot is different—typically menu items, navigation, and access to pages and resources will be modified for signed-in users. While anonymous visitors are typically directed through a sales funnel, signed-in users should have easy access to program materials. It’s important to think about both experiences (and, on many larger sites, the experiences of different user roles and groups). The signed-in experience also introduces a lot of hosting considerations that are easily overlooked. It’s harder to cache LearnDash sites because pages are customized to the user. They tend to be more complex and CPU-heavy than typical WordPress sites. We only host client sites on managed WordPress hosts like [WP Engine](/share/wpengine). We’ve simply had too many issues on shared hosts and VPS systems, and saving $20 per month is never worth the risk or inconvenience. Moreover, we love having a phone number to call for immediate help and having to worry less about security and backups. Once you’ve settled on LearnDash, a vision for the platform and the infrastructure, choosing a solid theme and plugins are extremely important decisions. Before I talk about what we generally use, I’ll add some qualifiers. Yes, we know that for performance and stability reasons custom themes and code are the preferred way to go. We know that our typical platforms are “wrong” to WordPress purists. We do go heavier for several reasons: - Client ease of use and flexibility are huge for us. We want people in there designing new course materials without having to remember shortcodes or going through us. We want people to feel empowered by the platform, not enamoured with the front end but unable to make changes themselves. - We don’t want people to feel like they’re stuck with Uncanny Owl. We want to earn that ongoing relationship, not force it. That’s why we like commercial support from paid plugins and themes, big user communities, regular updates, etc. Our client sites are safe no matter how involved we are in future. Yes, we do a lot of customizations for platforms, but that doesn’t mean we need to reinvent the wheel for everything we implement. With that model in mind, we do make use of commercial themes. Right now we like [Total](/share/total) for new LearnDash platforms. Yes, it’s heavier than it needs to be for most sites. But it also gives people a lot of control without the risk of breaking things, and it plays nicely with LearnDash. It’s also reasonably developer-friendly. We do use several plugins consistently on LearnDash sites. Since this invariably comes up in discussions with LearnDash users who are trying to do things themselves, here are the plugins we find particularly valuable: [Content Aware Sidebars](https://wordpress.org/plugins/content-aware-sidebars/) – To segregate widgets between LearnDash and non-LearnDash parts of websites. [Gravity Forms](/share/gravityforms) – Because basic forms and LearnDash quizzes usually aren’t enough, and there are some interesting ways to incorporate forms for feedback, evaluation, reflection and more. [Nav Menu Roles](https://wordpress.org/plugins/nav-menu-roles/) – To manage menus based on signed-in state and role. [WooCommerce](https://www.woothemes.com/woocommerce/) – Our ecommerce standard because we can make it accommodate almost any scenario. We do have a lot of other recommended plugins (and lots of in-house ones) but we’ll save those for another post. The ones above make it onto almost all of our LearnDash sites. One thing to keep in mind with plugins is to try to only use the plugins you absolutely need. Yes, we know it’s tempting to experiment and add features, but they do slow things down and increase risk. Once you’ve settled on all of the pieces described above, you’ll have all of the fundamentals in place to build an engaging and efficient platform. We hope this post helped to point you in the right direction! **Categories:** Learning --- ### [We're Hiring!](https://www.uncannyowl.com/wordpress-developer-job/) **Published:** February 27, 2015 **Author:** Ryan Moore **Content:** ![wordpress-worker](https://www.uncannyowl.com/wp-content/uploads/2015/02/wordpress-worker.jpg "- Uncanny Owl")Uncanny Owl is looking for an experienced WordPress Developer to join our team on a full time or contract basis. We need help with all development stages of WordPress projects, including creating and customizing complex plugins, modifying and styling themes, and even some front-end design. Experience developing large membership sites and previous work with WordPress LMS tools (e.g. LearnDash and Sensei) would be a huge benefit. A Toronto-area candidate is preferred but your skill set is more important than your location. For more information and to apply, [click here](https://www.uncannyowl.com/work-at-uncanny-owl/). No agencies or companies, please. **Categories:** Lean Startup, Learning --- ### [Setting up Zapier with LearnDash](https://www.uncannyowl.com/setting-up-zapier-with-learndash/) **Published:** April 3, 2015 **Author:** Ryan Moore **Content:** ![Zapier Logo](https://www.uncannyowl.com/wp-content/uploads/2015/04/78563-d6a685e956012e72415c2b12769e7459-medium_jpg.jpg "- Uncanny Owl") LearnDash (the company) released a very exciting update on Wednesday that allows LearnDash (the plugin) to talk to over 300 third-party applications. This means that key LearnDash events, like course enrolments and completions, can now trigger actions in other applications, like adding a learner to a mailing list, sending an email, creating a help desk ticket and more. LearnDash uses Zapier to talk to other integrations, and it works really well—once you understand how to do it. We were a bit too excited by the Zapier release and installed it as soon as it was available, and before instructions had been posted. This caused some initial confusion, both for us and one of our clients (who also wanted to jump on board). To make things a little easier, we created the screencast below to walk through the process of setting up your first zap. We hope that was helpful! Over the next few months we’ll be building new zaps for ourselves and our clients. If we come up with anything interesting, we’ll post it here! **Categories:** Learning --- ### [Case Study: English in 30 Minutes](https://www.uncannyowl.com/case-study-english-in-30-minutes/) **Published:** June 8, 2015 **Author:** Ryan Moore **Content:** [![English in 30 Minutes](https://www.uncannyowl.com/wp-content/uploads/2015/06/Home_-_English_in_30_Minutes.png "- Uncanny Owl")](https://www.englishin30minutes.com) We recently helped a client in the UK launch [English in 30 Minutes](https://www.englishin30minutes.com), a new online learning program that helps students and young professionals improve their English skills. The site had been in development for a year before Uncanny Owl became involved, with work performed by both site owners and 2 other developers. When we took over, functionality was lacking and there were multiples issues with both design and operation. Uncanny Owl’s mandate was to do whatever was needed to create a functional and engaging site that made it easy for people to learn English. Uncanny Owl did everything from copywriting and design to custom plugin development and implementation. Using [LearnDash](/share/learndash) for LMS capabilities, we created a robust learning platform that can accommodate thousands of global learners. ## Issues and Solutions The site we took over was broken in a number of key areas. Because we didn’t know what had been created or how, we ended up abandoning the existing WordPress platform. We were able to salvage some course materials, like quizzes, but most elements needed to be rebuilt. While we never like to have clients pay to essentially perform the same work twice, the state of the platform and our own peace of mind left us with few alternatives. The biggest challenge we faced with the English in 30 Minutes site was the sheer size of the program. It was (and remains) the largest LearnDash implementation we’ve undertaken, with approximately 2,300 unique LearnDash posts across 25 courses. By default, the LearnDash plugin looks up topics and completion status across all courses when it generates sidebars and table elements, which significantly affected performance for the site. We were seeing average load times of 12 seconds on LearnDash pages, which was unacceptable for users and also made it painful on the admin side. By changing LearnDash core code so that MySQL queries weren’t as broad, we were able to get LearnDash load times under 2 seconds. Developing this solution was a huge win for us and prompted this reaction from our client: “Guys – THANK YOU! I keep playing with it, jumping from page to page…incredible! I am over the moon with this!!!” English in 30 Minutes was also the first LearnDash site we’ve deployed that doesn’t use a visible sidebar for navigation. As the program is very heavy on video-based training, the learner experience for videos had to be very strong. To accommodate a large post area, for video as well as some of the interactive games on the site, we created a collapsible sidebar that’s hidden by default. When the learner needs it, they click a prominent icon and the sidebar slides out. As the program is generally completed linearly, ad hoc navigation between lessons and topics doesn’t need to be used often and lends itself better to being hidden by default. [![English in 30 Minutes Customizations](https://www.uncannyowl.com/wp-content/uploads/2015/06/0102_Video_-_Verb_Antonyms__1__-_English_in_30_Minutes.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2015/06/0102_Video_-_Verb_Antonyms__1__-_English_in_30_Minutes.png) To improve navigation with the sidebar hidden, we added custom breadcrumb capabilities to the site. Out of the box, breadcrumbs typically don’t work on LearnDash sites, because the theme doesn’t know how to look up relationships between LearnDash courses, lessons and topics. Our plugin does, and it makes navigation up to higher points in the program easy. ## Key Architecture Details English in 30 Minutes is a large program that’s sold directly to consumers on a membership basis. It leverages an affiliate program for marketing, some light gamification, interactive games (including flashcards and matching), account sharing restrictions and more. We used [Total](/share/total) as the theme for the site (using a child theme and custom plugins). We chose [Total](/share/total) because it generally works well with LearnDash, it’s reasonably straightforward for clients to manage, and it does what we need it to do. It also has a reasonably large userbase and active development. Here’s a list of some key plugins used on the English in 30 Minutes site: [AffiliateWP](/share/affiliatewp) [BadgeOS](/share/badgeos) [Gravity Forms](/share/gravityforms) [LearnDash](/share/learndash) [Ninja Kick: Sliding Panel](/share/ninjasidebar) [Paid Memberships Pro](/share/pmpro) The live site is hosted at [Flywheel](/share/flywheel). The site performs well there, the interface is nice for clients, and the managed services means we can focus on the site rather than the infrastructure. ## Results [Englishin30Minutes.com](https://www.englishin30minutes.com) has only been live for 1 week, but so far it’s had almost 300 unique visitors from around the world with no marketing. Getting the first unsolicited sign-up for an account was a big step, and we’re excited about English in 30 Minute’s growth! Of course, our most important measures are making sure our client is happy with our work and is left with a capable learning platform. Here’s what he had to say about that: > I really cannot speak highly enough about the guys at Uncanny Owl. They were actually my 3rd design team for this project and I only wish I had found them first! Their commitment, innovation, advice, patience and support have been outstanding, even when I fell behind at times with my work schedule, and I make a point of using their name in recommendation in any discussion I have regarding the site. They definitely went the extra mile with this one, in particular the page load speed fix and breadcrumb plugin were very impressive indeed, and I look forward to a long-term partnership with them for the future. Visit [englishin30minutes.com](https://www.englishin30minutes.com) to see a sample of our work in action. It’s also a great resource (and certainly one of the most comprehensive) for learning English online! **Categories:** Learning --- ### [WordPress LMS Survey Results](https://www.uncannyowl.com/wordpress-lms-survey-results/) **Published:** February 2, 2015 **Author:** Ryan Moore **Content:** ![149209692](https://www.uncannyowl.com/wp-content/uploads/2015/01/149209692-200x300.jpg "- Uncanny Owl")As part of our work with WordPress LMS solutions, we tend to deal with the higher end of the market, which includes small and mid-sized businesses with the budget for robust learning platforms. Our focus means we unfortunately aren’t as connected as we would like with the larger WordPress LMS market, so we decided to conduct a survey last week to see how other people use products like LearnDash, Sensei and WP Courseware. We had a fantastic response from the community and what we discovered surprised us. We reached out to approximately 150 people by email. These people had visited the Uncanny Owl website over the last few months and provided their email address to us. None were clients. In fact, we had never communicated with any of the participants outside of the survey. Of the 150 people we invited, 16 people from around the world chose to participate. We asked participants questions about how they used WordPress LMS plugins, their programs, their audience, their issues and more. Responses were candid and the people who participated seemed to appreciate the opportunity to be heard. Here are the findings that we found most interesting: **Almost half (44%) of participants used, or planned to use, content that was SCORM or Tin Can compliant on their sites**. Very few of Uncanny Owl’s clients create their programs with elearning authoring tools, so this was a very big surprise, especially given the low project budgets of survey participants. **People are using WordPress LMS plugins for more than just self-directed elearning.** 38% offer facilitated programs online and 31% offer programs offline as well. Programs are reasonably complex, too. Almost everyone offers videos, file downloads, embedded documents, quizzes, certificates, ecommerce—even forums. Over 35% of participants also incorporate capabilities like marketing automation, gamification and end user support systems. **People rank ongoing support and available integrations low when shopping for an LMS, yet complaints in those areas are most common**. We saw a lot of complaints about plugins not being able to do what people expected (and therefore having to rely on other plugins) and difficulty finding guidance, especially that went beyond individual plugins. Participants wanted guidance on how to create complete learning platforms and had trouble getting the advice they needed. **There were a lot of complaints**. When we asked an open-ended question about surprises they experienced with LMS projects, 67% of comments were complaints, mostly about the LMS plugins. In fact, when we asked people to rank project challenges, adding customizations, making things work together and finding help were at the top of the list. **No-one had an LMS platform they considered complete**. Our list of users went back over 6 months, so we were surprised that no-one was able to get a project across the finish line. **WordPress LMS projects cost more than people expect**. Only 1 participant found costs lower than expected. Half of participants said costs met expectations, and 44% said costs exceeded expectations. We were actually surprised by budgets; 63% said implementation costs (including effort) were under $2,500, and 76% said monthly maintenance costs were under $250. Of course, since no participants had a completed platform, these estimates may end up being low. **Learning to use a WordPress LMS can be hard work**. 44% of participants said they weren’t comfortable managing WordPress and their LMS yet. Another 13% said it took between 75 and 200 hours until they felt comfortable. How do these findings compare with your own experiences using WordPress LMS plugins? We’d love to hear more about your experiences in the comments. **Categories:** Learning, WordPress Book --- ### [A Beginner's Reaction to Using WordPress LMS Plugins](https://www.uncannyowl.com/beginners-reaction-using-wordpress-lms-plugins/) **Published:** January 28, 2015 **Author:** Ryan Moore **Content:** ![Surprised girl](https://www.uncannyowl.com/wp-content/uploads/2015/01/179346519-179x300.jpg "- Uncanny Owl")As experienced users of WordPress LMS plugins like LearnDash and Sensei, we at Uncanny Owl sometimes overlook the challenges that new users face when building a learning-enabled website. Documentation and support for LMS plugins vary widely, and for many small businesses interested in delivering learning, both their knowledge of WordPress and instructional design may be quite limited. To reconnect with how new users experience WordPress LMS products, we thought it might be a fun experiment to set an inexperienced WordPress user up with a basic site that only included a theme and an LMS plugin, since this is how many businesses approach LearnDash projects. Our tester had only very basic WordPress experience and we set up separate WordPress instances with LearnDash, Sensei and WP Courseware. We provided only minimal guidance to get things started, but did make plugin documentation and support resources available. Our tester was assigned the basic task of setting up a course with each plugin, adding some simple lessons and setting up a quiz. After experimenting for a few hours with all 3 LMS tools, we asked her to write a summary of her experiences. What follows are her observations. “I started with Sensei and did some research before jumping in. I knew there would be limited options for quiz questions and prepared myself for that but thought that it would be a simple exercise otherwise. I was able to create my lessons and add them to courses but had issues along the way. I wanted to embed a video into my lesson and it worked but comes up very large (we’re talking almost full screen) and I have no idea why or how to change it. I couldn’t find anything about adding a certificate to award upon completion of my course so I had to google that and found out it’s a plugin extension I would need to add. It’s free so it would’ve saved me a lot of time and effort to have the option there already rather than having to download the plugin and sort that out. I tried to add a quiz and it appears to be there with many questions but if I try to navigate to that page it shows a quiz with no questions available. Again I don’t know why and haven’t been able to figure it out on my own. My sidebar navigation was also broken and I don’t know why since I didn’t do anything except add lessons, a course and a quiz. I changed the name of one lesson after the fact and now the quiz won’t work and still links to what the lesson was previously named. Their documentation and support wasn’t very helpful. With everything added (I thought) but the site hopelessly broken, I gave up and moved on. For some reason I made the assumption that WP Courseware would be the most straightforward and easy to use. As soon as I started, however, I realized my mistake. The very first problem I encountered is the terminology used. I wanted to add a course with lessons. Seems straightforward, right? I started looking for ‘lessons’ or ‘add lesson’ and they’re nowhere to be found. I saw something about ‘modules’ and ‘units’ and realized those were what I needed. So I started setting up a training course, which looked like a good place to start, though I’m very unsure at this point. Then I try to set up a course unit, which I hope is something like a lesson. I ended up watching a video tutorial and right in that they state ‘a course unit which is equivalent to a lesson.’ Perfect! So why not just call it a lesson? I wanted to embed a video and found this to either not be possible or something I could not figure out how to do. All I could get to work was a link to a video on another page (YouTube) which was not what I wanted to happen. The video tutorial went on to explain how to add this to the training course and something about modules but I was so confused about the structuring of a module or unit or course that I gave up. This brings me to my last, and most successful attempt, which was using LearnDash. I found it easy to jump right into creating my lessons underneath main courses. Every option I was looking for seemed to be listed right where I could find it easily. I was able to create quizzes to go along with my lessons (that actually worked when I tried them!). The only issue here was too much choice. For a beginner, setting up a simple quiz, I was very overwhelmed with the options. I did need to access their support pages and documentation to figure out how to add a certificate but I found what I needed quickly and was able to follow it. In the end, I felt most comfortable with LearnDash, but none of the tools were as straightforward as I expected. I had to rely on documentation and searches a lot to get things done, and I spent a long time just figuring out basic things.” **Categories:** Learning --- ### [Drip LearnDash Lessons by Group](https://www.uncannyowl.com/drip-learndash-lesson-group/) **Published:** December 18, 2014 **Author:** Ryan Moore **Content:** We were very excited to see lesson dripping by calendar date in the most recent LearnDash update. It’s an easy way to unlock course materials for all learners on a specific date. But what about time-bound courses delivered to multiple groups? It’s common in school and other facilitated programs to have a set of students start on one day, have course materials released every week, and then have other groups start the program later. For anyone wanting to use LearnDash in this scenario, the Drip Lessons by Date functionality won’t work, because selecting a date means that date applies to everyone. [![Edit_Lesson_‹_LearnDash_Demo_LMS_—_WordPress](https://www.uncannyowl.com/wp-content/uploads/2014/12/Edit_Lesson_‹_LearnDash_Demo_LMS_—_WordPress.jpg "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2014/12/Edit_Lesson_‹_LearnDash_Demo_LMS_—_WordPress.jpg) That approach won’t work for some of our clients, so we put our own spin on the LearnDash drip feature. What we did was add a field for a LearnDash group selection above the calendar date field for dripping content. The drop-down list retrieves a list of all LearnDash Groups and current drip dates (if any exist). Once a group is selected, the admin can identify a unique drip date for that group and save it. Here’s a video that goes into a bit more detail about our approach and how it works. Right now we’ve decided against making the plugin available to the public. It’s not well documented yet and we can’t provide support, so it’s of limited value. If it is something that interests you, however, leave a comment and we’ll follow up if we share it. **Categories:** Learning, WordPress Book --- ### [WordPress Developer Needed](https://www.uncannyowl.com/wordpress-developer-needed/) **Published:** November 3, 2014 **Author:** Ryan Moore **Content:** ![uncanny-eye](https://www.uncannyowl.com/wp-content/uploads/2014/11/uncanny-eye-180x180.png "- Uncanny Owl")Right now we’re really busy at Uncanny Owl, so we’re building out the team to improve our capacity and capability. That means we have an immediate need for a part-time WordPress developer, ideally in the Toronto area. We need someone who’s done a lot of work with WordPress customizations. Great PHP and CSS skills are critical, but we need someone who’s comfortable interacting with clients and who can work independently too. If you or someone you know wants to work with us, check out all of the details at . **Categories:** Lean Startup --- ### [LearnDash Demo Site Update](https://www.uncannyowl.com/learndash-demo-site-update/) **Published:** October 20, 2014 **Author:** Ryan Moore **Content:** [![LearnDash Demo LMS](https://www.uncannyowl.com/wp-content/uploads/2014/10/LearnDash_Demo_LMS_›_Log_In-243x300.png "- Uncanny Owl")](https://lms.uncannycloud.com)We launched a big update to our [LearnDash demo site](https://lms.uncannycloud.com) earlier today. At first glance, the updates might not be obvious; after all, the site is less about look & feel than it is about showcasing what can be accomplished with LearnDash and WordPress. What you will definitely notice is that an account is now required to use the demo. While this does mean an extra step is required to use the site, it also means that it’s a lot easier for visitors to reliably test progress tracking, achievements and more. So what else has changed? Our old login page is gone; we had a handful of issues that we weren’t happy about and the new page looks nicer. Registration is very different now too, as are all forms across the site. All of these changes are, of course, included in [new sites](https://www.uncannyowl.com/product/learning-management-system/ "Branded LMS") that we build. This also marks the first time we’re incorporating marketing automation (via [Active Campaign](https://www.activecampaign.com)) into a production site. Over the next few weeks we’ll be incorporating several new strategies that leverage automation tools to improve learning outcomes. (On a side note, we’re excited to be using Active Campaign; while it’s missing features we’d really like, the price point is great and their support team was fantastic when we were getting set up.) **Categories:** Learning, WordPress Book --- ### [WP Courseware 3.0 Released](https://www.uncannyowl.com/wp-courseware-3-0-released/) **Published:** October 4, 2014 **Author:** Ryan Moore **Content:** Fly Plugins released a big update to [WP Courseware](https://www.uncannyowl.com/share/wpcourseware) on Thursday, bringing it up to version 3.0. The update primarily brings enhancements to quizzes that help to bring it more in line with what competitors like LearnDash and Sensei are offering. Question pools, randomization, timed quizzes, feedback and more are all now available. The video below outlines some of the highlights. If you already have a WP Courseware site, you’ll notice a number of changes to quizzes after you upgrade. The quiz creation interface is quite different; everything is divided into tabs. Of course, there’s still essentially only one type of graded question—multiple choice—but at least more quiz options are available. [![WP Courseware 2.9](https://www.uncannyowl.com/wp-content/uploads/2014/10/WP_Courseware_-_Modify_Quiz_‹_WP_Courseware_Demo_LMS_—_WordPress.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2014/10/WP_Courseware_-_Modify_Quiz_‹_WP_Courseware_Demo_LMS_—_WordPress.png)WP Courseware 29[![WP Courseware 3.0](https://www.uncannyowl.com/wp-content/uploads/2014/10/WP_Courseware_-_Modify_Quiz_‹_WP_Courseware_Demo_LMS_—_WordPress1.png "- Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2014/10/WP_Courseware_-_Modify_Quiz_‹_WP_Courseware_Demo_LMS_—_WordPress1.png)WP Courseware 30On the end user side, really the only difference that’s visible is a new button to download quiz results as a PDF file. Still, it’s nice to see an update; there haven’t been many over the last year (the official change log still doesn’t reflect the last 2). The most recent updates were actually sponsored, so perhaps Fly Plugins is slowing down the active development of new features. It’s also worth noting that prices are going up on WP Courseware in about 2 hours. What they’re going up to hasn’t been shared by Fly Plugins, only that they’re increasing. If you want to grab a copy while it’s still at the lower price, you can pick it up [here](https://www.uncannyowl.com/share/wpcourseware). If you want to see it in action, visit our [WP Courseware demo site](https://wpcourseware.uncannycloud.com). One of WP Courseware’s biggest advantages relative to competitors has been a lower price point for individual sites. Let’s hope it keeps it! **Update 1:** If you’re getting a 404 after clicking a link on this page, it appears to be because WP Courseware changed some things on their site. I’ll wait on them to get it resolved and then update the links in this article accordingly. **Categories:** Learning, WordPress Book --- ### [LearnDash Review Revisited](https://www.uncannyowl.com/learndash-review-revisited/) **Published:** August 26, 2014 **Author:** Ryan Moore **Content:** A few months ago, Ken wrote a [brief review](https://www.uncannyowl.com/wordpress-lms-working-with-learndash/ "WordPress the LMS: Working with LearnDash") of his experiences using LearnDash to develop [Grade Hacks](https://www.gradehacks.com), Uncanny Owl’s study skills program. It remains our second most-visited page on this website and attracts a lot of traffic for people searching for LearnDash reviews. Since that article was originally published 6 months ago, LearnDash has gone through a number of big changes, including the release of version 2.0. Ken’s original article is now outdated in a number of areas and we thought it was time to revisit some of the problem areas to see where things stand in the current release (2.0.3 at the time of writing). ![A few months ago, Ken wrote a brief review of his experiences using LearnDash to develop Grade Hacks, Uncanny Owl’s study skills program. It remains our second most-visited page on this website and attracts a lot of traffic for people searching for LearnDash reviews. Since that article was originally published 6 months ago, LearnDash has gone through a number of big changes, including the release of version 2.0. Ken’s original article is now outdated in a number of areas and we thought it was time to revisit some of the problem areas to see where things stand in the current release (2.0.3 at the time of writing). Navigating between courses, lessons, topics and quizzes was a significant source of frustration for us early on, especially while developing large training programs. In the version of LearnDash used for the article, courses, lessons, quizzes (standard and advanced) were very distinct objects and navigation between related items was difficult. In the most recent version of LearnDash, everything is now grouped under a single LearnDash entry in the WordPress admin interface, the 2 quiz components were combined, and course objects now include related items on the editing screen (made possible by LearnDash now enforcing a 1:1 relationship between courses and lessons/quizzes/topics). All of these changes make navigation much easier and intuitive, though building out courses can still be a very tedious process. (In that area, we would love to see a way to duplicate courses that retains course objects as well as an easy way to import and export quizzes from Word.) Quizzes have been simplified in LearnDash 2.0, with Standard and Advanced Quizzes now combined into a single “Quiz” object. It’s great to have all quiz settings and questions in a single location, but the number of options is still going to overwhelm new users. Make sure you use quiz templates to make the quiz creation process as efficient and consistent as possible! We would still love to be able to customize LearnDash more easily and to have access to additional shortcodes. Certificates are one such example; it’s hard to retrieve someone’s certificate without either displaying the learner’s full profile or having them retake the quiz. We’d love to see a shortcode for quiz display and to display a list of courses without descriptions. In the comments of the original article, another LearnDash user mentioned wanting a custom theme for LearnDash. In earlier days of using LearnDash we certainly agreed, and we spent a lot of time making CSS changes to get unsupported themes working seamlessly with LearnDash. With LearnDash recently confirming that they won’t develop a theme themselves, it’s great to see themes like University https://themeforest.net/item/university-education-event-and-course-theme/8412116?ref=uncannyowl now showing up that have explicit LearnDash support. It’s great to see the positive changes with LearnDash and many of Ken’s earlier criticisms being addressed. The community is still vibrant and it’s reassuring to see development continuing at a good pace.](https://www.uncannyowl.com/wp-content/uploads/2014/08/Courses_‹_LearnDash_Demo_LMS_—_WordPress.png "- Uncanny Owl")Navigating between courses, lessons, topics and quizzes was a significant source of frustration for us early on, especially while developing large training programs. In the version of LearnDash used for the article, courses, lessons and quizzes (standard and advanced) were very distinct objects and navigation between related items was difficult. In the most recent version of LearnDash, everything is now grouped under a single LearnDash entry in the WordPress admin interface, the 2 quiz components were combined, and course objects now include related items on the editing screen (made possible by LearnDash now enforcing a 1:1 relationship between courses and lessons/quizzes/topics). All of these changes make navigation much easier and intuitive, though building out courses can still be a very tedious process. (In that area, we would love to see a way to duplicate courses that retains course objects as well as an easy way to import and export quizzes from Word.) Quizzes have been simplified in LearnDash 2.0, with Standard and Advanced Quizzes now combined into a single “Quiz” object. It’s great to have all quiz settings and questions in a single location, but the number of options is still going to overwhelm new users. Make sure you use quiz templates to make the quiz creation process as efficient and consistent as possible! We would still love to be able to customize LearnDash more easily and to have access to additional shortcodes. Certificates are one such example; it’s hard to retrieve someone’s certificate without either displaying the learner’s full profile or having them retake the quiz. We’d love to see a shortcode to display certificates (with a single link if you passed at least once, regardless of the number of attempts) and one to display a list of courses without descriptions. In the comments of the original article, another LearnDash user mentioned wanting a custom theme for LearnDash. In earlier days of using LearnDash we certainly agreed, and we spent a lot of time making CSS changes to get unsupported themes working seamlessly with LearnDash. With LearnDash recently confirming that they won’t develop a theme themselves, it’s great to see themes like [University](https://themeforest.net/item/university-education-event-and-course-theme/8412116?ref=uncannyowl) now showing up that have explicit LearnDash support. It’s great to see the positive changes with LearnDash and many of Ken’s earlier criticisms being addressed. The LearnDash community is still very vibrant and it’s reassuring to see development continuing at a good pace. **Categories:** Learning, News --- ### [Keeping Client Sites Up and Running](https://www.uncannyowl.com/keeping-client-sites-running/) **Published:** August 14, 2014 **Author:** Ryan Moore **Content:** ![Secure Website](https://www.uncannyowl.com/wp-content/uploads/2014/08/bigstock-Senior-businessman-working-fro-39164644-200x300.jpg "- Uncanny Owl")At Uncanny Owl we do everything we can to make sure our clients are happy before, during and after projects. We design simple, straightforward solutions that are easy to manage, yet the platforms will be do sometimes require periodic updates and oversight to stay secure and operational, just as any other software does. That’s why we build long-term relationships with our partners and help out proactively—so they can focus on their business rather than their systems. In the past we’ve managed ongoing maintenance on an individual basis. It worked, but coordinating everything on a monthly basis just wasn’t a good use of anyone’s time. As a result, we’re pleased to now offer standard maintenance packages to all of our clients—past, current and future. Packages start at just $100 and give clients the peace of mind that their systems will stay up and running no matter what. More information about the packages and details are available on our new [Worry-Free Website Maintenance page](https://www.uncannyowl.com/wordpress-maintenance/ "Worry-Free WordPress Maintenance"). If you’re a client and have questions, drop us a note and we’ll be happy to help! **Categories:** News --- ### [Chrome Broke Captivate](https://www.uncannyowl.com/chrome-broke-captivate/) **Published:** August 13, 2014 **Author:** Ryan Moore **Content:** ![Crying Man](https://www.uncannyowl.com/wp-content/uploads/2014/08/crying-man.png "- Uncanny Owl")Do you retest your elearning whenever a browser update is released? If you don’t, a recent issue affecting Chrome and Captivate HTML5 content might have you reconsidering. I was recently on our [LearnDash demo site](https://lms.uncannycloud.com) and happened to notice that the sample lesson with an embedded Captivate module stopped working. The module simply wouldn’t load. Fearing the worst (how long had visitors been staring at a broken site?) I tried the page in another browser and, lo and behold, it was still working. I did a bit of digging, searching for recent pages with the keywords “Chrome HTML5 Captivate” and discovered a [very significant issue](https://blogs.adobe.com/captivate/2014/07/update-on-captivate-html-5-content-playback-issue-in-google-chrome-browser.html) that causes the latest Chrome release to not render HTML5 Captivate files properly. Shocking! And how many other elearning developers aren’t using Chrome or checking olds course regularly, so wouldn’t know anything’s broken, and how many others would know what to search for and discover the Adobe article? If you have publish elearning modules from Captivate 7 or 8 in HTML5, you need to [visit this page](https://blogs.adobe.com/captivate/2014/07/update-on-captivate-html-5-content-playback-issue-in-google-chrome-browser.html) and follow the instructions now. Try your modules in Chrome and see if they work. If they don’t, it’s not enough to drop the HTML file into existing content; you really do need to republish the files. If you don’t, your users on Chrome could be having a really bad time. **Categories:** Learning, News --- ### [11 Reasons Hosting Your Own LMS Beats the Cloud](https://www.uncannyowl.com/11-reasons-hosting-your-own-lms-beats-the-cloud/) **Published:** August 10, 2014 **Author:** Ryan Moore **Content:** ![cloud-warning](https://www.uncannyowl.com/wp-content/uploads/2014/08/cloud-warning.png "- Uncanny Owl") Businesses that need easy, out-of-the-box systems to deliver training online are increasingly turning to Learning Management Systems in the cloud. Startup costs are low, they’re scalable, they can be deployed quickly, and many of them provide a great learner experience. For small audiences, infrequent learning or when simplicity is paramount, a cloud LMS is likely the right solution. But they’re not right for every situation, and for many organizations, hosting their own LMS is an overlooked—yet potentially better—solution to learning. We put together a list of 11 reasons to explain why we set many of our clients up with their own LMS (typically WordPress-driven) rather than rely on a cloud solution. **1. Your Rules** With a cloud LMS you’re stuck with what’s offered. Customization is generally limited to branding and some basic options, which may or may not include the functionality you really want. Want to mix facilitated sessions with self-directed modules? Maybe integrate event planning, webinars, ecommerce and social sharing? What about custom automated emails and reporting? With your own WordPress-based LMS, like the ones we offer our clients, you’re only limited by your imagination. Choose from thousands of widely-tested plugins to add capabilities or dig into the code and make the system do whatever you want it to. **2. Your Data** What happens when a cloud LMS vendor disappears, has a catastrophic failure, you outgrow it or new policies require it to be hosted externally? What if your data privacy rules mean storing data in specific countries? You’re out of luck with a cloud solution. With your own LMS you own the database—and the data. Whether it’s for custom reporting, data portability, easy batch changes or something else, direct access to the learner database means more flexibility and less reliance on a third party. **3. Your Security Standards** I’ve already written about the [security practices of cloud LMS vendors](https://www.uncannyowl.com/cloud-lms-security/ "Cloud LMS Security") before. They’re generally lacking. With your own system, you can apply as much or as little security as you need. Restrict access to specific IP blocks, build in 2-factor authentication, put the system behind your firewall—there are no restrictions on how you secure your own learning systems. **4. Lower Total Cost of Ownership** Yes, getting started with a cloud LMS system is very inexpensive. But then you keep paying forever, potentially spending thousands of dollars monthly as your learning programs grow in popularity. Once that happens, it can be very difficult to migrate away from a cloud provider to a solution that’s more cost-effective. Yes, setting up your own LMS costs significantly more initially, but the ongoing costs—regardless of the number of users—can be as low as $0 if you can leverage existing infrastructure. **5. Nothing Disappears Tomorrow** If a cloud LMS vendor disappears, so do your courses and data. When was their last backup, and do you have a copy of your data? With your own LMS, your platform can’t disappear tomorrow because you own it (and take the necessary steps to keep it safe). Sure, there’s a risk that the creator of the tools you use could stop supporting them, but you never risk losing your platform and data. And you’ll have plenty of developers and access to the code to lend a hand if you need it. **6. More Development Support** Need extended support or customization for a cloud product? Chances are you’re locked into using the vendor. With your own solution, like one based on WordPress, there are thousands of developers ready to help out and many active development communities. You’re not tied to one company and competition means better pricing and expertise when you need assistance. **7. Your Systems** Maybe you’d like to use Single Sign On access for your LMS so your staff don’t need yet another password to remember. Or maybe you’d like tight integration with your website to maintain the same look & feel and maybe even the same user profiles. With a cloud service, integrations with your existing systems are often difficult or even impossible. After all, you’re limited to whatever capabilities they want to offer. **8. Better Performance** Simply put, you can’t control the performance of cloud LMS services. The near-universal U.S. hosting may not be ideal for your users in other regions, and without very expensive packages you’ll be sharing the server with other customers. With your own LMS you can build platforms that fit the exact needs of your audience and optimize them to deliver the best possible experience. **9. Unlimited Storage** Every cloud LMS plan is targeted at the generic customer and their expected needs. Have a lot of multimedia to store? You’ll probably be paying for more users than you need then. With your own LMS your courses can be as big or as little as you want—it’s defined by your infrastructure and needs, not someone else’s. This is even more important when you want to start benefiting from user-generated content. **10. Scalable** Cloud solutions say they’re scalable, but what happens if you get really big or decide the LMS suddenly needs to be hosted internally? A basic dedicated server is about as far as a cloud solution can take you. And if you ever need to get the records out, you could be in trouble—plus there’s the significant expense of recreating the programs on another platform. With your own LMS, you can put the data wherever you want, toss in additional servers and load balancing as they’re required, and never worry about hitting a ceiling. **11. Predictable** Predictability is extremely important for businesses. What happens when a cloud LMS vendor rolls out an update that changes the user experience or your reporting unexpectedly? You probably have no time to prepare and the learner/customer impact could be catastrophic. With your LMS, you control the experience and the timing of updates. Want to test them first? Throw up another instance and test things out before they go out to your audience. With a cloud solution you’re at the mercy of a vendor who controls everything, from application changes to features to data. It’s a big risk for companies that rely on a Learning Management System. Even with all of these considerations, of course, going with an in-house LMS isn’t the right solution for everyone. But with all of the attention on cloud platforms, many companies should reconsider whether or not it’s the right solution for both their learners and their organizations. And even if it is today, what about tomorrow? **Categories:** Learning, WordPress Book --- ### [WordPress LMS Guide and Kit](https://www.uncannyowl.com/wordpress-lms-book/) **Published:** August 5, 2014 **Author:** Ryan Moore **Content:** ![WordPress LMS Book](https://www.uncannyowl.com/wp-content/uploads/2014/08/wordpress-book.png "- Uncanny Owl")Selling training online is really hard to jump into. There simply isn’t a lot of consolidated information available; after narrowing your selection of platforms, Learning Management Systems and authoring tools, you still have to learn them all—and then create the actual content. Then there’s ecommerce, marketing, maintenance… the list goes on. It’s simply a lot of time and learning for businesses to invest and the guidance that’s needed is scattered and incomplete. Maybe what’s needed is a comprehensive guide to get businesses off on the right foot. That’s why, in November of this year, we’re planning to publish the first resources that will help businesses get from wanting to sell learning to seeing training sales deposited into their bank accounts. From installing WordPress to program planning to learner evaluation and marketing, we’ll collect the key knowledge businesses need to launch and sell expertise. To get to that point, however, we need your help. We want to know you’re interested. We want to know what you want covered in the book. If you’ve struggled with getting your training online, we want to hear about your issues. Use the form below to sign up for book news and show your interest. If you have feedback and suggestions, use the form below or send your comments through [our contact form](https://www.uncannyowl.com/contact-us-form/ "Contact Us Form"). If you want to be involved, perhaps to be interviewed, to review a draft or to share your story, we’d love to hear from you. Make sure your voice is heard, because we need to know there’s lots of interest to commit to the project! **Categories:** News, WordPress Book --- ### [Uncanny Owl Turns One](https://www.uncannyowl.com/uncanny-owl-turns-one/) **Published:** June 4, 2014 **Author:** Ryan Moore **Content:** ![candle-blog](https://www.uncannyowl.com/wp-content/uploads/2014/06/candle-blog.jpg "- Uncanny Owl")Last June, Ryan and Ken founded Uncanny Owl to help companies improve training using technology—and we’re still doing it. Better yet, we’re still enjoying it! Over the last year we’ve had a chance to support some great local and international businesses. The Brick, the TSSA, the OCSTA, Transcription Express, ManchesterCF, Luminance, DisclosureNet, Envirogate and many more companies all use solutions developed by Uncanny Owl. From courseware to learning platforms to websites and everything in between, we’ve had the opportunity to work on a lot of interesting projects with a lot of interesting people. We’ve launched new products, published widely-read industry articles, and helped people solve learning problems. Over the next year, we look forward to even more collaborations and creating new programs that help more audiences improve their capabilities and expand their knowledge. If you were part of our first year, thank you for your support. For everyone else reading this, [we look forward to future collaborations](https://www.uncannyowl.com/project-planner/ "Project Planner"). **Categories:** News --- ### [A Better eLearning Voice Over Workflow](https://www.uncannyowl.com/better-elearning-voice-workflow/) **Published:** May 16, 2014 **Author:** Ryan Moore **Content:** Editing voice over work can be tedious and painful. For one recent course, we received a single 1 hour audio file from our voice talent that had to be chopped up and incorporated into almost 100 slides in Articulate Storyline. Listening to a 1 hour file, cutting it up and saving it manually to individual files for each slide is far too time-consuming, so I wanted to share our approach in case it can help other people save time editing. ![Audacity playback speed](https://www.uncannyowl.com/wp-content/uploads/2014/05/Audacity-300x118.png "- Uncanny Owl")For audio editing we use [Audicity](https://audacity.sourceforge.net). It’s free and works well. After loading the source file up in Audacity, the first thing I do is double the playback speed. At 2x the normal speed I can still understand what’s being said well enough to identify where slide audio begins and ends, and I can also make out potential recording errors. Listening to the audio at normal speed just to identify dividing points takes too much time. The best way to divide audio by slide and do a batch export is by using labels in Audacity. Start at the beginning of the recording and press CTRL+B (command+B on Mac). This creates a label; name it “Slide 1”. Now listen to the audio and find the break point between the first and second slide. Press CTRL+B again and label it “Slide 2”. Continue doing this until all slides are labelled at the appropriate break points. The screenshot below show a labelled segment of audio. ![Audacity labels](https://www.uncannyowl.com/wp-content/uploads/2014/05/Audacity1.png "- Uncanny Owl")![Export Multiple Audacity](https://www.uncannyowl.com/wp-content/uploads/2014/05/Export_Multiple_and_Audacity-300x145.png "- Uncanny Owl")Once everything is labelled, it’s time to export it. Audacity’s Export Multiple function makes this easy. Just go to the File menu, select “Export Multiple”, and configure the export options. Make sure you split files based on labels and use the label name as the file name; refer to the image on the right for an example. Export the files (just click through the metadata options) and you’ll end up with a folder full of audio files for individual slides. Import them into your favourite authoring tool and you’re ready to go. **Categories:** Learning --- ### [Websites, LearnDash and More](https://www.uncannyowl.com/websites-learndash/) **Published:** May 6, 2014 **Author:** Ryan Moore **Content:** At Uncanny Owl we do a lot more than just create engaging elearning programs. While that’s certainly our core business, we have completed some interesting work in other areas over the last month that’s worth sharing. We continue to get a lot of attention for our LearnDash work. We’ve helped both a boating company and transcription business set up LearnDash platforms and course content recently (names withheld because they haven’t launched) and we start another big LearnDash project next week. Most of our inquiries for LearnDash work seem to come from California now; a number of startups are turning to LearnDash as a low-cost way to develop Minimum Viable Products in the edtech industry. For basic hypothesis testing and model validation, it works quite well—even if some manual interventions are still needed in the workflow. If you’re looking to build your MVP and need some LMS features, we may be able to point you in the right direction or lend a hand. ![ManchesterCF Logo](https://www.uncannyowl.com/wp-content/uploads/2014/05/ManchesterCF-Logo-octagon-black-white-180x180.png "uo_ceu_credit_report_api_data - Uncanny Owl")We’ve also been busy with some web development projects recently (which does tend to go hand-in-hand with LearnDash development). A few days ago we launched a redesign of [ManchesterCF.com](https://manchestercf.com), a Toronto-based company that provides financial crime training and advisory services. We also recently launched [torontotrackdays.com](https://torontotrackdays.com), a pet project for Ken that helps Southern Ontario track enthusiasts find events and support. We’ve also taken over a marketing automation cleanup and reengineering project for a mid-sized software company. The work is busy and diverse, but it keeps things interesting and really hones our ability to serve as a one-stop shop for everything elearning, from creating courseware to building the platforms to deliver it effectively (and profitably). **Categories:** Learning, Marketing --- ### [Delivering Better Webinars](https://www.uncannyowl.com/delivering-better-webinars/) **Published:** April 25, 2014 **Author:** Ryan Moore **Content:** ![176891779](https://www.uncannyowl.com/wp-content/uploads/2014/04/176891779-224x300.jpg "ucec_generate_preview_certificate_content - Uncanny Owl")I recently participated in a webinar facilitated by a large elearning group that was delivered to about 1,000 people. It’s been a while since I sat in on a webinar of that size, and given the group’s industry and audience, I expected a really polished session that I could learn from. What surprised me most were just how many easily fixable issues still pervade webinars, even at the top levels. The problems started during the introduction. The facilitator was clearly reading notes from a script and stumbling through them as admin activities were taking place in the background. For scripted content, why are people still not prerecording everything to ensure a polished performance? If there’s no video and no audience interaction, the people on the webinar will never know the difference; they just get a great delivery. With the introductions out of the way, the problems shifted to the presenter and her interaction with the moderator. First the presenter had trouble gaining control of the webinar to show her materials (wasn’t there a run-through?). Then the lack of an audio check meant that the moderator had to interrupt the presenter to see if abandoning the headset and going with a different microphone would yield a better result. This is all, of course, while 1,000 people listened and waited. And, once again, the presenter fumbled between reading a script, showing materials onscreen and talking through what she was doing. Periods of scripted demos could have easily been prerecorded to make things better for everyone; it’s only when there are interactions with the audience that live teaching is needed. There were, fortunately, such opportunities for interaction. And, unfortunately, they went poorly too. There were awkward delays while the moderator took back control to enable voting and then waited for more than a handful of people to participate. The technology platform, GoToWebinar, was also annoying during this time; I work on multiple monitors and had the webinar on my 2nd monitor in the background, but every control change moved it back to my primary monitor. The opportunities for audience interaction also didn’t make any difference to the session; the results didn’t affect the session flow (responses were easily predicted) and it could have all been prerecorded. Maybe there are some people who appreciate a haphazard webinar more because they know it’s at least live and it’s potentially more relatable. For me, I’d rather see the polish and people who execute well. I also see it as something of a market problem. There are great tools that make webinars easy, but there seems to be a lot less interest in how to do them well. Users fend for themselves and, all too often, come up short on delivery. So what can you do deliver better webinars? For starters, I think a lot of the guidance we have over on Grade Hacks about delivering presentations comes into play. Try to practice the session in its entirety at least 3 times before you deliver it, preferably on the same equipment and platform as you’ll use for the live session. Sign in early and test the audio, changing control and presenting interactive elements. Record things that don’t necessarily need to be live if you can get away with it. Get a few other people to sit in on the practice session and give you feedback. Record it and watch it yourself to see how everything comes together for the audience. For important webinars, put the time in up front to get things right. **Categories:** Learning --- ### [Screencast Workflow Best Practices](https://www.uncannyowl.com/screencast-workflow-best-practices/) **Published:** April 14, 2014 **Author:** Ryan Moore **Content:** ![Female hands typing on comuter keyboard](https://www.uncannyowl.com/wp-content/uploads/2014/04/180918756-300x200.jpg "{dynamic}_template_path - Uncanny Owl")We recently created a number of screencasts for clients to support software training. As public-facing screencasts for enterprise software, the standards had to be very high. That meant 1 single person couldn’t do everything; we needed a professional voice actor, a software SME, and someone from our team to take care of instructional design and editing. While we’ve certainly created many screencasts, I looked online for workflow best practices for creating high-quality screencasts with multiple resources. Unfortunately, very little guidance and a lot of complaints were all that I could find. For this type of screencast you can’t wing it; having the SME record the video and then building a script around it just doesn’t work. And getting the voiceover work done prematurely, without proper planning, tends to mean rework. So what’s the best approach? While it might not work for every situation, we’ve developed an approach to screencasting that generally works well for Uncanny Owl. Here are the steps we follow: 1. **Plan everything**. We start off by looking at the planned outcomes and objectives. What does the learner need to get out of the screencast? What’s the best way to achieve it using the software? This certainly requires a lot of collaboration with an SME and production of a draft script. We can have the software up on the screen and walk through exactly what the learner needs to see and how best to explain it. 2. **Record the video**. The SME does the actual interaction with the software while someone from our team observes the recording to do initial script reconciliation and verifying that the pace is appropriate. With 2-3 good takes, there’s typically enough video to perform a more detailed reconciliation and to tailer the script as needed. If anything needs to be recaptured, it can be done almost immediately. It may even help to have someone read the script while the SME is performing the activities. 3. **Finalize the script**. This needs to get as close as perfect as possible before it goes to the voice actor. Try recording it yourself and listen to it both with and without the video to make sure it flows well and is straightforward to learners. 4. **Record the audio track**. Since the voice talent may not have the video context to work with, include directional cues in the script as required. 5. **Put everything together**. Cut the audio up and add it to the video, syncing everything so it seems like the person interacting with the software is the same person speaking. Add or shorten the video as appropriate, and make sure any edits don’t hurt the pacing or cause problems with mouse movements. Once that’s all done, the screencast is ready for publishing! That workflow has produced generally good results for us, but we’d love to hear your tips for better screencasts in the comments. **Categories:** Learning --- ### [How to Save Money on eLearning Projects](https://www.uncannyowl.com/save-money-elearning-projects/) **Published:** April 3, 2014 **Author:** Ryan Moore **Content:** ![Business report](https://www.uncannyowl.com/wp-content/uploads/2014/04/178594085-300x200.jpg "ceu_deactivation_after - Uncanny Owl")Sometimes the elearning solution you want costs more than you want to spend (or more than you can spend!). Balancing budget and scope is always a challenge, and the cost of elearning can vary widely depending on the context and requirements. According to a [2010 research report](https://www.slideshare.net/bchapman_utah/how-long-does-it-take-to-create-learning) by the Chapman Alliance, the cost of a 1-hour elearning course might average as little as $10k for a basic, linear course with static media to as much as $50k for a highly interactive and dynamic program. In this article, we’ll look at some ways to keep your project costs lower when you work with elearning vendors. *Make sure your goals and objectives are clearly defined* before including any outside parties in an elearning project. What do you really need and what are the expected outcomes? Risk and unknowns are going to increase quote costs and potentially lead to expensive rework late in the project. The more you can define and prepare up front, the less you’ll need to spend. *Keep everything as simple as possible*. Use animation and interactivity sparingly to improve knowledge transfer, not just to look good. Think about what really needs to be custom and what existing resources can be leveraged. *Compile all of your subject material and organize it for easy hand-off*. This step can save a lot of time by eliminating expensive research and review cycles. Where material does exist, but may not be in a format suitable for easy incorporation into elearning, make improvements. Make everything as simple and straightforward for the vendor as possible (if they can see what will be provided up front to better assess their effort, they can lower the price accordingly). *Reduce review and testing requirements*. Maybe 1 or 2 reviews with 3 people in a room is enough rather than 3 rounds with 6 people that’s conducted by email with updates in between. When it comes time to test the elearning, maybe testing on 3 platforms is enough with a handful of users rather than significant cross-platform testing and a large pilot group. All of these ideas should help lower costs while not significantly changing the scope and outcomes of your project. Try doing whatever you can in-house and make the vendor experience as easy and straightforward as possible. If you have any other tips, feel free to add them in the comments below! **Categories:** Learning --- ### [Looking for Compliance Training?](https://www.uncannyowl.com/looking-compliance-training/) **Published:** February 21, 2014 **Author:** Ryan Moore **Content:** [![compliance-training](https://www.uncannyowl.com/wp-content/uploads/2014/02/compliance-transparent-small-300x226.png "ulgm_plugin_name - Uncanny Owl")](https://www.uncannyowl.com/compliance-training-elearning/)[Uncanny Owl](https://www.uncannyowl.com) can help! Compliance training is one of the highest-growth areas of workplace training and it increasingly needs to be about more than just checking off boxes. With a [recent survey](https://elearningindustry.com/early-results-2014-compliance-learning-communication-survey-results) finding that the frequency of compliance communications increased by 51%, and PwC reporting more scrutiny by regulators and auditors of program effectiveness, compliance training is on every company’s radar. Our [new overview of compliance training](https://www.uncannyowl.com/compliance-training-elearning/ "Compliance Training eLearning") outlines some of the reasons that elearning solutions by Uncanny Owl are a great way to deliver elearning programs that reduce risk, costs and instances of non-compliance. More than just an easier way to track compliance training completion, our elearning programs let companies track performance trends and behaviours changes. They’re also fun and interactive! To find out more about how we can help with your compliance training, [tell us about your project](https://www.uncannyowl.com/project-planner/ "Project Planner"). **Categories:** News --- ### [What BYOD Means for eLearning](https://www.uncannyowl.com/byod-means-elearning/) **Published:** February 20, 2014 **Author:** Ryan Moore **Content:** ![BYOD eLearning](https://www.uncannyowl.com/wp-content/uploads/2014/02/devices-300x300.jpg "ulgm_mail_to - Uncanny Owl")Bring Your Own Device (BYOD) policies are quickly gaining enterprise support and many elearning programs aren’t ready. In the past, elearning professionals could design and test for a handful of devices and be confident that their materials would work. That’s all changing. A 2013 Cisco study revealed that 9 in 10 Americans currently use their phones for work purposes, and 62% of companies planned to support BYOD officially by the end of 2013. In a recent article on eLearning Industry, I reflected on the effect BYOD will have on elearning. Design and testing will require significantly more attention, and testing tools like [Sauce Labs](https://saucelabs.com/) and [eLearningQA](https://www.elearningqa.com) may soon become part of the elearning professional’s arsenal. Mobile and HTML5 will also figure heavily into BYOD elearning strategies. To find out more, [check out the full article ](https://elearningindustry.com/what-byod-means-for-e-learning). **Categories:** Learning --- ### [First eLearning Project? Start Here](https://www.uncannyowl.com/first-elearning-project-start/) **Published:** February 13, 2014 **Author:** Ryan Moore **Content:** ![elearning project](https://www.uncannyowl.com/wp-content/uploads/2014/02/bigstock-Senior-businessman-working-fro-39164644-200x300.jpg "ulgm_hide_bulk_discount_info_in_order_details - Uncanny Owl")A lot of our website visitors come from Google and are looking into elearning for the first time. I’m sure it’s the same for many elearning companies; new clients find you because they need web-based training, but they don’t necessarily know what’s involved or how projects work. We really want people to know we’re a trusted partner that’s looking out for their best interests, so we decided to put together some guidance to help businesses tackle their first elearning projects. To help businesses, Uncanny Owl now offers a free 7-day email course to introduce businesses to elearning projects. We don’t want to mislead businesses or sell services that don’t add significant value, so the email program we created is simply to help businesses make informed choices, whether it’s with us or with someone else. We cover whether or not elearning is the right choice, how to prepare for elearning, how to promote success, how to choose a vendor, how to manage implementations and how to measure outcomes. If you’re a business interested in elearning, **sign up below** to learn more about elearning projects! If you’re another vendor reading this blog and want to create something similar, we’re happy to provide some technical details. The sign-up form is integrated into a few pages on our website with custom code, but there are great plugins available if you have room in your sidebar. The form is linked to a Mailchimp list, which is where we set up Autoresponders to deliver staggered emails. The course content is all original; if you offer something similar, please don’t steal our lessons! 🙂 We hope you enjoy the course! **Categories:** Learning, Marketing --- ### [Migrating Manuals to iPads & Tablets - Part 1](https://www.uncannyowl.com/mobile-tabletipad-training-manuals-learning-guides-part-1/) **Published:** February 10, 2014 **Author:** Ken **Content:** [![offline ipad](https://www.uncannyowl.com/wp-content/uploads/2013/07/photodune-2391761-computer-problem-xs-300x297.jpg "uo_reset_before_form - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2013/07/photodune-2391761-computer-problem-xs.jpg)The request sounds simple enough: take paper-based training manuals and turn them into something that’s iPad-friendly. There are lots of iPad apps that support formats like Word, PDF and EPUB, so how difficult could it be? The problem is that very few apps provide all of the key benefits of going paperless, such as centralized syncing with offline viewing, version control, embedded audio and video, easy navigation and linked documents. Here were the client’s requirements: - a simple development workflow that avoided complicated and expensive authoring tools - the ability to push out updated guides automatically - offline viewing when no internet connection was available - embedded videos - links between guides ### First Attempt, First Failure We started with a Word to Adobe Acrobat workflow. This lets authors create everything they need, publish to PDF and then add multimedia and hyperlinks in Acrobat with minimal training. To take care of automatic updates and offline syncing, we decided to use Dropbox. It pushes files out automatically when an internet connection is available and “favourite” files are available offline. Dropbox also supported embedded video (one of few PDF readers that did). Unfortunately, it didn’t support links between files, but that was identified as a non-critical requirement that we could work around. This solution worked well until Dropbox released version 3.0 for iOS halfway through the project. Video capability was dropped. Where video used to be, a big white box now greeted users. ### The Solution The Dropbox update meant we had to find a new solution. Luckily we discovered [Documents](https://readdle.com/products/documents/) by Readdle, which supported syncing with Dropbox, video in PDFs, and, surprisingly, links between documents. Syncing worked, video worked, updates worked, and best of all, the app was completely free. Our Word to Acrobat to Dropbox to Readdle Documents solution worked and was well received by the client. Of course, some tradeoffs had to be made to keep things simple and cost-effective. Content updates can be challenging because they require republishing Word files and adding multimedia and hyperlinks in Acrobat again. Our client expects very infrequent updates, so it works for our needs, but might not work for other situations. Syncing is also a bit cumbersome in that the Documents app has to be open for the sync to happen; it’s not as simple as just having the iPad within wireless range for updates to be pulled down. Someone has to open the app. After developing this solution, we were asked to create an alternative for iPads that will always have an internet connection. Stay tuned for our solution! **Categories:** Learning --- ### [Pitching eLearning to Small Businesses](https://www.uncannyowl.com/pitching-elearning-small-businesses/) **Published:** February 7, 2014 **Author:** Ryan Moore **Content:** [![small business elearning](https://www.uncannyowl.com/wp-content/uploads/2014/02/162422787-200x300.jpg "ulgm_groups_key_redemption_form_before_enrollment_key - Uncanny Owl")](https://www.uncannyowl.com/small-business-elearning/)I’m still new to elearning consulting and marketing my business. My partner and I have a really broad set of skills, so we started off by saying we did “everything”, which of course meant that nobody knew what [Uncanny Owl](https://www.uncannyowl.com) did. Worse, our networks aren’t that big (I was at the same company for 9 years) and we quickly discovered that all of the big corporate projects we could do in our sleep weren’t interested in an unknown company with a small team. Forget Google; they only found companies through word of mouth and existing relationships. Of course, even though we knew that, we continued to pitch to the big companies in big company language because that’s all we knew. That changed a few days ago. I went to my first networking workshop hosted by our regional chamber of commerce. My original plan was to make an appearance and find out what they do, knowing that there are very few big companies in the region and even fewer doing elearning. How much benefit could there really be in talking to small business owners? So I started the morning talking about what I thought I did (“I create online training for large corporate audiences”) and had some awkward discussions. But I kept talking to people, and I kept listening to figure out if there was a way I could help them. As it turned out, there was. The small business owners I met shared some similar traits: they had a lot of expertise, they wanted to grow, and they were open to new ideas. Some of them actually offered training and coaching locally. Others had products or services that weren’t easy to understand. These were all problems that we could help with! We can sell expertise and make things simple with elearning. Our big local competitors weren’t targeting this market at all and, as luck would have it, we’re one of the few companies with a lot of expertise in learning platforms that integrate an LMS with WordPress, which many small companies use for their websites. So I changed my pitch. And now we have a few leads, a few new contacts, and some new opportunities to pursue. We even have a [new services page](https://www.uncannyowl.com/small-business-elearning/ "Small Business eLearning") to try to reach out to this market (we’re still tweaking it!). The projects and budgets may not be as big, but it’s an interesting market that not many elearning companies seem to be targeting. Of course, maybe the other elearning companies know something that we don’t. We’re just hoping it’s the other way around. **Categories:** Lean Startup, Learning --- ### [Improving eLearning Usability](https://www.uncannyowl.com/improving-elearning-usability/) **Published:** February 6, 2014 **Author:** Ryan Moore **Content:** *[![elearning usability testing](https://www.uncannyowl.com/wp-content/uploads/2014/02/178370128-300x200.jpg "ulgm_group_leader_removed - Uncanny Owl")](https://www.elearningqa.com)What makes people want to use your elearning? How do you remove barriers to learning and make your programs accessible?* I recently examined these and other questions in an article on elearning usability published by trainingindustry.com. It’s available online at . It isn’t hard (or expensive) to make your elearning easy to use and engaging, but it is something that needs to be planned. Good elearning should consider the quality of the learning, the quality of teaching, the quality of the learning environment and the quality of interaction. If you create elearning that’s strong in all of those areas and is relevant, learners will get more out of it. Your learner’s time is valuable and should be spent learning the subject matter, not your system. Testing for usability issues in elearning should also be on every learning professional’s radar. This is not something you and your team can do yourselves; you’re too close to the project, as are your other key stakeholders. Get testers who are representative of the audience, plan your testing, and make sure you observe rather than coach. For professional help with elearning usability testing, take a look at [eLearningQA.com](https://www.elearningqa.com). **Categories:** Learning --- ### [Cloud LMS Security](https://www.uncannyowl.com/cloud-lms-security/) **Published:** January 22, 2014 **Author:** Ryan Moore **Content:** [![Hacker](https://www.uncannyowl.com/wp-content/uploads/2014/01/Depositphotos_38032291_xl-300x300.jpg "learndash_updated_essay_scoring - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2014/01/Depositphotos_38032291_xl.jpg)Thinking about using a cloud LMS? They’re convenient, easy to maintain and scalable. But how safe are they? I recently wrote an article for eLearning Industry about the security practices of cloud LMS vendors. What I found wasn’t particularly reassuring. With few exceptions, cloud LMS providers don’t perform security audits, they don’t deliver your data over secure connections exclusively and they store all of your personal and learner data (except passwords) in plain text. Using a cloud LMS product carries additional risk if you care about where your data is stored. One of our recent projects included a requirement that data not be stored in the U.S. Since all cloud LMS providers seem to host in the U.S., we couldn’t use any of them! Moreover, most providers use Content Delivery Networks to provide a better experience, which means they use servers close to your users to deliver your courseware and, as a result, your learning is potentially stored in dozens of countries. When you’re shopping for a cloud LMS solution, make sure you do your homework and ask lots of questions. Are their security practices aligned with your expectations? Your clients trust you with their information; make sure you can put just as much trust in your LMS. Check out the original article here: **Categories:** Learning --- ### [For Discussion: eLearning Pre-Launch Testing](https://www.uncannyowl.com/elearning-launch-testing/) **Published:** January 12, 2014 **Author:** Ryan Moore **Content:** ![Danger](https://www.uncannyowl.com/wp-content/uploads/2014/01/179264413-300x276.jpg "ld_group_email_users_args - Uncanny Owl") I need your help. I’m trying to get an idea of what elearning professionals are doing with regard to prelaunch testing. More companies are adopting Bring Your Own Device (BYOD) environments and making their learning more accessible, some by using cloud LM S products rather than hiding their learning behind firewalls and gateways that make learning painful. This should mean that learning is more vulnerable technically, since it’s harder to deliver the same experience across platforms and external servers can’t be as tightly controlled. But is it a problem? Are companies running into more technicals problems when launching to large audiences? I’ve never seen a big interest in (or budget for) significant technical testing of learning products. Developers might click around from a few browsers, or recruit a handful of users to test, but it’s hardly realistic when it’s a small group of testers (and platforms) doing manual testing. Moreover, with the increase in HTML5 over Flash for rich elearning output, layout and rendering issues should be on the rise because each browser handles things a bit differently. Tell me about your experiences and expectations in the comments. Does elearning need more performance and compatibility testing? How are you working it into your workflow, and what tools are you using to give your stakeholders more reassurance? Thanks for your feedback! **Categories:** Learning --- ### [Free Tools for Learning & Training Professionals](https://www.uncannyowl.com/free-tools-learning-training-professionals/) **Published:** December 19, 2013 **Author:** Ryan Moore **Content:** [![In-class evaluation form](https://www.uncannyowl.com/wp-content/uploads/2013/12/Screenshot_12_19_2013__1_58_PM-300x209.png "woocommerce_after_add_to_cart_quantity - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2013/12/Screenshot_12_19_2013__1_58_PM.png)If you work in training, make sure you check out the free tools posted on our [Free Learning Tools](https://www.uncannyowl.com/free-learning-tools/ "Free Tools") page. No-one should have to waste time creating common tools, so we did the work and made a few of the forms we use available to everyone. They’re all posted as Microsoft Word files, so you’re welcome to do whatever you want with them. You even have our blessing to remove the Uncanny Owl branding! Our [Evaluation Form for In-Class Courses](https://www.uncannyowl.com/tools/uncanny_owl-classroom_course_evaluation.docx) helps trainers assess Level 1 learning for programs delivered in the classroom. It can be quickly adapted to captured feedback on course content and the facilitator from your audience. The [Evaluation Form for Online Course](https://www.uncannyowl.com/tools/uncanny_owl-online_course_evaluation.docx) captures reaction scores for training developed online. This can be used for capturing feedback on course content and the approach to elearning. Our [Venue Selection Form](https://www.uncannyowl.com/tools/uncanny_owl-venue_selection_form.docx) helps people choose the best location for hosting training sessions. With this form you’ll never have to worry about overlooking an important selection detail or having insufficient data to back up your venue choices. Right now we have 3 forms available but we expect to add more in the near future. We hope you find them useful! **Categories:** Learning --- ### [How We Created Grade Hacks](https://www.uncannyowl.com/created-grade-hacks/) **Published:** December 11, 2013 **Author:** Ryan Moore **Content:** [![Grade Hacks](https://www.uncannyowl.com/wp-content/uploads/2013/12/target-plus.jpg "ulc_modify_add_to_cart - Uncanny Owl")](https://www.gradehacks.com)Now that [Grade Hacks](https://www.gradehacks.com) is live, we’re excited to tell you more about what went into it. It wasn’t easy setting up a learning platform that lets us deliver engaging courseware at negligible monthly cost! Grade Hacks is built on WordPress. Cost and ease of maintenance were certainly big considerations as a bootstrapped venture, and we wanted to do as much work in-house as possible (at the time of writing, Uncanny Owl did all of the Grade Hacks work independently). Since Grade Hacks is a paid course, we used Woo Commerce to handle payment processing. [LearnDash](https://www.learndash.com) is the Learning Management System behind Grade Hacks. No WordPress LMS could do everything we wanted, but LearnDash came closest and Justin (the creator) was a big help when we ran into issues. We also tried Sensei but it didn’t have the functionality we needed and the Woo Themes support team wasn’t responsive enough. Of course, WordPress, Woo Commerce and LearnDash weren’t enough on their own to create the platform that we wanted Grade Hacks to be. We turned to WordPress plugins (over 40 of them!) for things like analytics, achievements, permissions, profiles, email, spam, performance, gift certificates, and much, much more. And even then we had to customize some of the code to make everything cooperate. Updates can be a bit tense! For the courseware, we needed an authoring tool that we could use to quickly build interactive and engaging material. We selected Articulate Storyline for most of the courseware and used assets from [eLearning Brothers](https://library.elearningtemplates.com) and several stock photo sites. By using templates and applying lesson models, we were able to build the elearning materials quite quickly. Grade Hacks is mostly served from a dedicated server here in Canada. To improve performance for visitors, especially those outside of North America, we use MaxCDN, a Content Distribution Network with peering partners all over the world, to serve many of the static files. This approaches ensures that everyone has a great experience while using Grade Hacks. Best of all, we created Grade Hacks in under 3 months on almost no budget. Platform, courseware, downloads, calculators, screencasts, everything. We spent a few hundred dollars on tools and assets, and our only ongoing cost is the price of hosting. If 2 people at Uncanny Owl can create a large-scale elearning program and the technology to drive it in under 3 months while working on other projects, *imagine what we can do for your company*. [Contact us today](https://www.uncannyowl.com/project-planner/ "Project Planner") so we can tell you! **Categories:** Lean Startup --- ### [Introducing Grade Hacks](https://www.uncannyowl.com/introducing-grade-hacks/) **Published:** November 21, 2013 **Author:** Ryan Moore **Content:** [![Grade Hacks logo](https://www.uncannyowl.com/wp-content/uploads/2013/11/Gradehacks-logo-640x155.png "ulc_codes_times_user_allowed_to_redeem - Uncanny Owl")](https://www.gradehacks.com) Uncanny Owl’s first product, [Grade Hacks](https://www.gradehacks.com), went live this morning. Our experience suggested that schools focused too much on teaching information rather than teaching students how to learn and succeed, so we created Grade Hacks to address this learning gap. Using interactive e-learning lessons, videos, downloadable tools, calculators, progress tracking and much more, we’ve created an engaging learning platform to help high school, college and university students reach their academic potential. We’re offering Grade Hacks at a special introductory price of only $25 until December 31, 2013. Check out the [free trial](https://www.gradehacks.com/register/) to see what Uncanny Owl can do with e-learning. Everything – from platform integration to content development and tool programming – were performed in-house by Uncanny Owl. **Categories:** Lean Startup, News --- ### [When "Minimum" Trumps "Viable" - Risks of the MVP](https://www.uncannyowl.com/when-minimum-trumps-viable-risks-of-the-mvp/) **Published:** August 21, 2013 **Author:** Ryan Moore **Content:** [Uncanny Owl](https://www.uncannyowl.com) is working on several new projects, and as a small startup, the Minimum Viable Product (MVP) model certainly has appeal. By creating and launching a basic product, companies are able to assess market interest, leverage the community to shape its future into something marketable, and minimize their risk exposure. It’s an inexpensive way to test new ideas and make sure you’re on the right track. Unfortunately, what we’re finding is that companies are overlooking the “viable” part of the equation. The “minimum” part is certainly important to limit risk exposure and test ideas early on, but if the product doesn’t focus on the “viable” piece too, you’re going to alienate your customers and potentially kill your product while it’s still in its infancy. ![sad-man](https://www.uncannyowl.com/wp-content/uploads/2013/08/sad-man-238x300.png "uo_quiz_certificate - Uncanny Owl")Without naming names (since we’re clients and want to develop industry relationships), we’ve noticed this a lot lately in the learning-related products we’re using. We’ll buy products with interesting feature sets, only to install them and find out they’re not working as expected or are missing key components that make the tools useless. When we follow up, we’ll get answers about how what we need is coming next month or it’s on the roadmap but there’s no ETA. It’s extraordinarily frustrating to be caught up in someone else’s MVP and only realize it’s an extremely limited MVP after cash has changed hands. We discovered the same thing recently when we tried to standardize on a mail client for Mac. We gave Airmail a try first. Sure, we understood it was new, but it wouldn’t go up in the app store and get decent reviews if it was broken, right? Only after using it for a few weeks did we realize just how broken it is. Random crashes, disappearing emails, missing basic functionality in all other clients, etc. Weekly updates on their website with change logs for new betas further confirmed that the product just wasn’t production-ready. Rather than a loyal, engaged client who got in at the ground floor, we’re just a frustrated – and likely former – product user. If the games market is a signal of what’s to come in the enterprise, a lot of businesses are in trouble. Until recently, game companies would give time-limited betas of their products away to get customer feedback and iron out bugs before launch. It was win-win: companies got valuable feedback and real-world data, and gamers got to try out the latest and greatest at no cost. Now, however, game companies (especially indie developers) are getting away with charging launch prices for customers to play around with alpha products. People are expected to pay for early access to broken, incomplete games that may be years away from launch, if they even get to that point. The scary thing is that the model has traction. What happens when more companies start adopting the model and releasing broken software is the new norm? After all, apparently everything is online and patches trump pre-launch QA. If you’re a developer, please consider waiting until your products actually work before launching – broken products are only going to annoy your early users, and they tend to be the most vocal and have the most potential to help your product succeed. Give careful thought to whether the earlier cash flow is really worth risking your product’s long-term viability. **Categories:** Lean Startup **Tags:** lean startup, minimum viable product, mvp --- ### [Captcha is the thermal port on Yahoo's Death Star](https://www.uncannyowl.com/captcha-is-the-thermal-port-on-yahoos-death-star/) **Published:** August 17, 2013 **Author:** Ryan Moore **Content:** Yahoo’s captcha system is broken. Horrendously, tragically broken. Today, my colleague (who holds a Master’s degree) tried to sign up for a Yahoo/Flickr account. On the last page of the registration process, he ran into a captcha. After about five attempts to successfully enter the code, he started to laugh and called me over. But since I’ve only got a Bachelor’s degree, I wasn’t much help. We would both stare at the image, try listening to the horrendously garbled audio rendition, discuss the possibilities, then submit our best guess. Unfortunately, even with both of us straining our visual cortexes to their breaking points, it took us five more tries to finally get it right…10 attempts total. How many people would have given up before making 10 attempts at a captcha? I’ll give you a hint: Probably the same number of people that choose Google search over Yahoo. I decided to go back later to try again because I really believed a company like Yahoo couldn’t screw up their registration process – something that is so vitally important to their survival. The first time must have been a fluke. Here’s what happened: First Attempt: [![attempt1](https://www.uncannyowl.com/wp-content/uploads/2013/08/attempt1.png "uo_learndash_course_lesson_not_available - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2013/08/attempt1.png) Looking good? No, “Please try this code instead”: [![attempt2](https://www.uncannyowl.com/wp-content/uploads/2013/08/attempt2.png "uo_learndash_course_topic_not_available - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2013/08/attempt2.png) Okay, this time I must have it right. Nope! Wrong again! [![attempt3](https://www.uncannyowl.com/wp-content/uploads/2013/08/attempt3.png "uo_lesson_topic_grid_template - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2013/08/attempt3.png) What could this possibly be if not 3G46czFpy? Nope. [![attempt4](https://www.uncannyowl.com/wp-content/uploads/2013/08/attempt4.png "uo_lesson_topic_grid_view_style - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2013/08/attempt4.png) This one looks like a sure thing. Right? Wrong again. [![attempt5](https://www.uncannyowl.com/wp-content/uploads/2013/08/attempt5.png "uo_pro_after_license_details - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2013/08/attempt5.png) Fifth time’s a charm? YES!! An improvement of 50% over our first attempts. [![done](https://www.uncannyowl.com/wp-content/uploads/2013/08/done.png "uo_pro_transcript_cell_{dynamic} - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2013/08/done.png) If someone can tell me what I should have entered those first 4 times to have gotten it right, please leave a message in the comments. There are a few key lessons here: - Test everything. - User registration is important. Don’t screw it up. - Even big companies sometimes fall over little (but very important) things. - Don’t make it hard for someone to be your customer. Hopefully Yahoo recognizes the importance of this issue and fixes it ASAP. Their users, employees and shareholders are counting on them. **Categories:** Marketing --- ### [An Experiment in Guest Blogging](https://www.uncannyowl.com/an-experiment-in-guest-blogging/) **Published:** July 29, 2013 **Author:** Ryan Moore **Content:** ![offline ipad](https://www.uncannyowl.com/wp-content/uploads/2013/07/photodune-2391761-computer-problem-xs-180x180.jpg "uo_reset_before_form - Uncanny Owl")Last week I decided to write an article on e-learning and see if a popular e-learning news source might be interested in publishing it. Even if it didn’t work out, I thought I might be able to get some feedback and insight on how guest blogging worked. And if it was accepted, maybe we’d get a little more traffic and recognition for Uncanny Owl. Because it was just an experiment, I didn’t put much work into the article. This may have been a mistake, because the article ended up taking off and getting a lot of unexpected attention. Viewed by over 1500 people in the industry, shared over 125 times on social networks, and heralded by the site editor as one of the most exciting things he’d seen for months, the response was overwhelming. It’s kind of exciting to see industry heavyweights cite your work. The experiment was undeniably a success. We’ve had almost 50 visitors check out our website as a direct result of the article, we’ve established more expertise and the quality backlinks will help our search engine placement. I guess it also means we need to write more… Any suggestions for new topics? If you want to check the article out, it’s available here: . It’s admittedly rough, but now we’re better prepared for next time. **Update**: My second attempt at an article had similar results and is available here: [Positive Feedback – Lessons from a 2-Year-Old](https://elearningindustry.com/positive-feedback-%E2%80%93-lessons-from-a-2-year-old). **Categories:** Lean Startup --- ### [Finding the Right Tools](https://www.uncannyowl.com/finding-the-right-tools/) **Published:** July 22, 2013 **Author:** Ryan Moore **Content:** We’re still on the hunt for the right tools for the right workflow – and we’re failing miserably. With so many SAAS products on the market today, it should be easy to find something that fits our needs, right? ![Needle in a haystack](https://www.uncannyowl.com/wp-content/uploads/2013/07/5143096005_9849bec372_z-180x180.jpg "active_plugins - Uncanny Owl")Surprisingly, we’re struggling. We’ve spent the better part of 2 days looking for the right tool to manage client projects. It shouldn’t be that hard, right? Set up some tasks, organize them into a project, distinguish between billable and non-billable hours, track time, invoice clients, and maybe even give clients access to see what’s going on. But apparently nobody can get it quite right, and to find out what’s missing, these services need me to give them credit card info just to check out their products in more detail. So what have we found? A supposedly great project management tool doesn’t handle time tracking. Task managers don’t allow planning future tasks, and forget about durations, dependencies and non-billable time. Easy invoicing built in? Not if you’re in Canada. Another seemingly great tool won’t let us see all of our tasks at a glance – we have to drill down into 5 potential projects to figure out what’s going on at the company level. All of the niche products showing up now are also relying on “integrations” to fill in the gaps with their offerings. Rather than offer a complete product, we’ll let you hook up your XYZ subscription which does a great job! So instead of finding one complete service, we’re paying hundreds a month for lots of little incomplete services and still winding up with gaps. Is this really the future of SAAS? And why isn’t anyone doing project management in a way that fits our needs? Yes, we’ve checked out Basecamp, Harvest, Copper, Planscope, Toggl, Copper, Tempo, MinuteDock – you name it. **Categories:** Lean Startup --- ### [Offline Learning and the LMS](https://www.uncannyowl.com/offline-learning-and-the-lms/) **Published:** July 5, 2013 **Author:** Ryan Moore **Content:** [Uncanny Owl](https://www.uncannyowl.com) recently completed a project that required redesigning the interface for an offline iPad application that captures test data. It used Filemaker desktop and mobile applications to track test scores without any kind of network access for eventual consolidation and reporting. It did the job, but it wasn’t intuitive, it didn’t integrate with other learning data, and ongoing maintenance could be difficult. ![offline ipad](https://www.uncannyowl.com/wp-content/uploads/2013/07/photodune-2391761-computer-problem-xs-180x180.jpg) While outside of our scope, we did a little digging into possible alternatives for this type of scenario. It turns out that there really aren’t a lot of tools that support offline data capture for eventual upload into an LMS! The Tin Can API looks promising, but there are very few LMS options and authoring tools that support it, and those that do are very expensive (particularly for the capture of modular test data). There are HTML5 possibilities too, but they would require some customization to get data into an LMS. With all the interest in mobile learning, where are the tools that support offline learning? Yes, maybe something like Storyline could work, but 1 assessment question per screen is a big limitation for our scenario. What tools are you using to support offline learning on iPads? **Categories:** Learning --- ### [Hypothesis Testing - Finding Participants](https://www.uncannyowl.com/hypothesis-testing-finding-participants/) **Published:** July 5, 2013 **Author:** Ryan Moore **Content:** ![People talking](https://www.uncannyowl.com/wp-content/uploads/2013/07/people-talking-180x180.jpg "uo_reset_after_error_message - Uncanny Owl") Further to the [last Uncanny Owl post](https://www.uncannyowl.com/hypothesis-testing-a-lesson-in-hacking-2/ "Hypothesis Testing – A Lesson in Hacking"), we’re finding it more difficult than expected to get certain groups to complete our surveys. We’re trying to collect data for our Canada Translates project, and to do that we need feedback from 2 groups – translators and businesses that need translation. Finding translators was easy. We just found a board that’s used by translators, posted a compelling offer, and waited for the responses to trickle in. That part was pretty easy. But where do you find random people who need translation? We’ve tried Google ads, our networks, targeted landing pages and more, but we’re still not getting submissions. Here’s one of the pages that’s not attracting interest or converting: [www.canadatranslates.ca/canadian-translation/](https://www.canadatranslates.ca/canadian-translation/). How can we improve our participation rate? On a related note, here’s an important lesson that we learned: Be very careful with Google’s “Broad Match” option in adwords. The scope was far too broad to be of any use and we spent more on advertising than we should have. Multiple, targeted ads were much more effective. **Categories:** Lean Startup --- ### [Hypothesis Testing - A Lesson in Hacking](https://www.uncannyowl.com/hypothesis-testing-a-lesson-in-hacking-2/) **Published:** July 1, 2013 **Author:** Ryan Moore **Content:** Last week we recovered from a catastrophic data loss with one of our hosting providers. This week some of our hypothesis testing attracted the interest of a rather clever script kiddy looking to mine Amazon gift cards. We’re having lots of fun online. 🙂 We’re currently trying to get feedback from translation customers and providers over at [www.canadatranslates.ca](https://www.canadatranslates.ca "Canada Translates"). To do that, we’ve got some links and ads directing potential clients to surveys to collect some of the data we need to validate our business model. As an incentive to participate, we offered professional translators $5 gift cards to complete a 5-minute survey. A few people participated the first day the site went live but it wasn’t popular. Overnight on the second day, 40 surveys trickled in. This was pretty shocking – how did we go from 1 every 8 hours to 6 per hour? I looked closer and the submissions didn’t make sense. Values weren’t aligned with what we expected, email addresses didn’t match names, submission times weren’t too far apart… the data was just too suspicious. I took everything down while I investigated. Whoever tried to mine the gift cards did a pretty good job of trying to make the submissions look legit. Entries came from Canadian IP addresses from different parts of the country, and unique Canadian addresses accompanied each submission. After adding a captcha and some mandatory fields that required valid text input, I broke our visitor’s script and made it easier to identify false entries. It was a pretty annoying less to learn though, and I had to manually clear out all the bad data from our records. ![stop sign](https://www.uncannyowl.com/wp-content/uploads/2013/07/stop-300x199.jpg "uo_login_before_footer - Uncanny Owl") **Lessons Learned** For our next surveys, he’s what we’ll watch more carefully: - Make several text fields mandatory that require unique submissions and at least a sentence or 2 of text - Include a captcha - Block multiple entries from a single IP address Luckily our survey was small and we had few submissions. If our work was more popular, our guest’s interference would have cost us $200 PLUS made our research data invalid. **Categories:** Lean Startup --- ### [Hello World](https://www.uncannyowl.com/hello-world-2/) **Published:** July 1, 2013 **Author:** Ryan Moore **Content:** Welcome to Uncanny Owl’s official blog! This is where we’ll informally talk about some of the things we’re working on and some of the things we’re learning. It’s also where we’ll ask for help from you. **Categories:** Lean Startup --- ## Pages ### [WordPress eLearning, LearnDash and Automator Plugin Development Experts](https://www.uncannyowl.com/) **Published:** September 19, 2017 **Author:** Ken **Content:** # Top-Rated eLearning and Automation Plugins for WordPress 80,000+ websites and organizations trust Uncanny Owl plugins to grow their business. [Get Started Now](#our-products) [![](https://www.uncannyowl.com/wp-content/uploads/2026/02/verified-1.svg "verified-1")](https://www.g2.com/products/uncanny-owl/reviews) [![](https://www.uncannyowl.com/wp-content/uploads/2025/09/verified.svg "verified")](https://www.wpbeginner.com/solutions/uncanny-automator/) ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/verified-2.svg "verified") ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Hero-banner.webp "Hero banner") ###### Trusted by ![](https://www.uncannyowl.com/wp-content/uploads/2026/02/tb-google.svg "- Uncanny Owl")![](https://www.uncannyowl.com/wp-content/uploads/2026/02/tb-3m.svg "- Uncanny Owl")![](https://www.uncannyowl.com/wp-content/uploads/2026/02/tb-lenovo.svg "- Uncanny Owl")![](https://www.uncannyowl.com/wp-content/uploads/2026/02/tb-sickkids.svg "- Uncanny Owl")![](https://www.uncannyowl.com/wp-content/uploads/2026/02/tb-royallepage.svg "- Uncanny Owl")![](https://www.uncannyowl.com/wp-content/uploads/2026/02/tb-stanford.svg "- Uncanny Owl")![](https://www.uncannyowl.com/wp-content/uploads/2026/02/tb-kentucky.svg "- Uncanny Owl") ###### Our Products ## Industry-standard addons for LearnDash and beyond ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Pass-Graphic-1.png "Pass Graphic") #### All Access Pass Get the #1 plugin suite for LearnDash. Includes all of our powerful eLearning addons so you can get the most out of your LearnDash site. [Get All Access](/all-access-pass/) ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/course-report-044-1030x828.png "course-report-044") ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img-02494.png "img-02494") #### Uncanny Toolkit Pro for LearnDash Get 30+ powerful Pro modules for LearnDash sites that extend the free Toolkit, including autocomplete lessons and topics, import users, learner transcripts, enhanced course grid, simple course timer and much more.. [Explore Toolkit Pro](/downloads/uncanny-learndash-toolkit-pro/) ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img-028593.png "img-028593") #### Tin Canny Reporting for LearnDash Add advanced drilldown reports for LearnDash available on the front or back end. Upload content like Storyline, Rise, and iSpring and get detailed tracking of SCORM and xAPI activity. [Explore Tin Canny](/downloads/tin-canny-reporting/) ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img-39480.png "img-39480") #### Uncanny Groups for LearnDash Empower Group Leaders to manage their own groups. Customize their access, sell group seats, and streamline LearnDash Group management. [Explore Groups](/downloads/uncanny-learndash-groups/) ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img-28403.png "img-28403") #### Uncanny Continuing Education Credits Award and manage continuing education credits for your courses. Issue certificates for multiple course completions. Perfect for professional development programs. [Explore Continuing Education](/downloads/uncanny-continuing-education-credits/) ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img-394023.png "img-394023") #### Uncanny Codes for WordPress Easily manage enrollment with access codes. Sell or distribute them to unlock LearnDash courses and groups—plus, unlock more possibilities with Uncanny Automator. [Explore Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) #### Uncanny Automator The no-code automation plugin that connects your WordPress plugins, sites, and apps. Create powerful workflows without writing a single line of code—so your tools work together, and you can focus on growth. [Explore Automator](https://automatorplugin.com/) ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Automator-Mascot.webp "Automator Mascot") ###### testimonials ## Trusted by over 80,000 users ![](https://www.uncannyowl.com/wp-content/uploads/2026/01/safe_ministry_training_logo-80x80.jpeg) ##### Neil Atwood Safe Ministry Check Since setting up our highly customised Learndash site some 3+ years ago, we have been steadily working to make things easier for our end users AND streamline the administration of the site. In particular, removing as much of the manual, hands-on processing that our particular needs generated. Uncanny plugins have been a huge part of achieving this. The Toolkit, Groups and Codes plugins along with the brilliant Automator have been a key to us succeeding in these goals. We find the code highly reliable, the support excellent and the functionality very well targeted. Aside from our own developer, Uncanny are our favourite resource in helping make our LD site the success it is. ![](https://www.uncannyowl.com/wp-content/uploads/2026/01/user.svg) ##### Todd Berntson Director, Fretboard Biology The signs of a great company are superior products and responsive support. My experience with Uncanny Owl has been both. Their Toolkit Pro plugin for LearnDash has a very sophisticated group of tools that are extremely well thought-out and useful. The capabilities that the plugin provides are certainly worth the money, but what makes this a no-brainer is how quick and responsive the company is to questions or concerns. I have contacted them twice and had a reply in less than 15 minutes. Great products and a great company. Highly recommended. ## The Uncanny Way We believe in empowering educators and businesses to create world-class online learning experiences **without technical barriers**. Our approach combines powerful features with intuitive design. We understand that effective eLearning isn’t just about content—it’s about **creating engaging, accessible**, and **measurable** learning experiences that drive **real results**. Whether you’re building your first online course or managing a complex learning environment for thousands of users, our solutions are designed to grow with you. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/ChatGPT-Image.webp "ChatGPT Image") ###### Need Help? ## Frequently Asked Questions Who should use Uncanny Owl plugins? Uncanny Owl plugins are perfect for business owners, site admins, agencies and anyone else looking to expand the capabilities of LearnDash or their eLearning site and save time and money with no-code automation and AI. Why should I choose Uncanny Owl plugins for my site? The eLearning addon market is full of plugins that make big promises but have little to no support or have been abandoned by their creators, leading to wasted time and frustrated customers. Uncanny Owl has been in business since 2013, and we’re not going anywhere. Do I need coding skills to use Uncanny Owl plugins? No, you do not need coding skills to use any Uncanny Owl plugins. In fact, Uncanny Automator is often used to replace code by connecting WordPress plugins, sites, and apps with a powerful no-code automation builder. Can I use Uncanny Owl plugins on client sites? Yes, you can use Uncanny Owl plugins on client sites and in fact many customers do. Our Agency license is a cost-effective solution for agencies building robust eLearning sites for their clients. ###### BLOG ## Uncanny News [![Hero banner: orange left panel reads 'WHAT'S NEW — The 10 Best LearnDash Plugins for 2026'; right shows a WordPress logo with floating plugin icons around a blue glow.](https://www.uncannyowl.com/wp-content/uploads/2026/06/Uncanny-Blog-The-Best-LD-Plugins-2026.png "Uncanny Blog - The Best LD Plugins 2026 - Uncanny Owl") ](https://www.uncannyowl.com/the-10-best-learndash-plugins-for-2026/) #### [The 10 Best LearnDash Plugins for 2026](https://www.uncannyowl.com/the-10-best-learndash-plugins-for-2026/) [![Laptop displaying an online course interface surrounded by a graduation cap, certificate, lightbulb, and books, illustrating how to create an online course in WordPress.](https://www.uncannyowl.com/wp-content/uploads/2026/07/how-to-create-an-online-course-in-wordpress-featured-image.webp "how-to-create-an-online-course-in-wordpress-featured-image - Uncanny Owl") ](https://www.uncannyowl.com/how-to-create-an-online-course-in-wordpress/) #### [How to Create an Online Course In WordPress: A Practical Walkthrough](https://www.uncannyowl.com/how-to-create-an-online-course-in-wordpress/) [![](https://www.uncannyowl.com/wp-content/uploads/2026/06/Uncanny-Blog-10-years-of-Toolkit.png "Uncanny Blog - 10 years of Toolkit - Uncanny Owl") ](https://www.uncannyowl.com/10-years-of-the-uncanny-toolkit-a-decade-of-learndash-innovation/) #### [10 Years of the Uncanny Toolkit: A Decade of LearnDash Innovation](https://www.uncannyowl.com/10-years-of-the-uncanny-toolkit-a-decade-of-learndash-innovation/) --- ### [Consulting](https://www.uncannyowl.com/consulting/) **Published:** February 20, 2026 **Author:** Daniela Rodriguez **Content:** ###### Custom LearnDash Development by LearnDash Experts # Why LearnDash? We love WordPress and LearnDash for the flexibility and openness of the platform, and that’s why we’ve invested very heavily in it. Businesses choose LearnDash over cloud and other LMS solutions for these reasons: #### You own everything. The data, the code—you control it all. Try finding that with a cloud LMS. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/my-learning-platform.png) ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img-3945313.png "- Uncanny Owl") #### No per-seat costs Whether it’s 10 learners or 100,000, costs don’t change ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img-28404432.png "- Uncanny Owl") #### Extensibility Need something custom? WordPress’ open development ecosystem makes any feature or integration possible. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img-27303.png "- Uncanny Owl") #### Portability and scalability You’re never locked in to another company’s decisions, so you can customize and scale your LearnDash site on your own terms. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img-3749.png "- Uncanny Owl") #### Flexibility The thriving LearnDash add-on community means that adding new features can take as little as a few clicks. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img-29138.png "- Uncanny Owl") #### Simplicity Learners get an intuitive experience that looks great. #### Very low total cost of ownership Easily manage your costs by investing in optimizations that save money now and in the long term. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/low-cost.png) ###### THE RIGHT EXPERTISE AT THE RIGHT TIME ## Why hire a LearnDash expert? Why hiring a LearnDash expert is the right move for many business owners. While experts set up your site, you can focus on growing your business. LearnDash is a fantastic WordPress LMS plugin, but delivering the right learner experience can be hard work. There’s no manual for connecting all of your plugins together, and sometimes getting things just right requires the help of a trusted expert. Over the course of our history, Uncanny Owl has built many LearnDash sites for clients that range from solopreneurs to business with thousands of customers and tens of thousands of users. Over the years we’ve shifted our focus to building out our plugins, but we realize that customers sometimes still need the help of a LearnDash expert. That’s why we’ve partnered with Tangible Inc, a highly accomplished LearnDash consulting agency, to help LearnDash site owners create the perfect elearning website for your business. With over 400 clients and a team of over 30 LearnDash experts, Tangible has years of experience delivering successful LearnDash projects of all sizes. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img-29404.webp "- Uncanny Owl") ###### BUILD EXACTLY WHAT YOUR ORGANIZATION NEEDS ## LearnDash Development As an open source platform, the sky is the limit for a LearnDash site. Unlike cloud LMS products, where everything is locked down and customization is impossible, LearnDash sites can leverage the tens of thousands of plugins in the WordPress ecosystem to create the perfect, custom experience. And when that’s not enough, [Tangible’s team of LearnDash experts](https://teamtangible.com/uncanny-owl-learndash-development/) is ready to fill in the gaps. Here’s a small sample of what Tangible can help you deliver: ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/screen-check.svg "- Uncanny Owl")Complete LearnDash websites, from concept to ongoing support and growth ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/dashboard.svg "- Uncanny Owl")Custom LearnDash dashboards ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/link-icon.svg "- Uncanny Owl")LearnDash integrations with WordPress plugins and non-WordPress apps ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/puzzle-icon.svg "- Uncanny Owl")SCORM and xAPI module support ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/reports-graph.svg "- Uncanny Owl")Custom LearnDash reports ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/server.svg "- Uncanny Owl")Enterprise-grade scaling and performance enhancements ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/icon-0394.svg "- Uncanny Owl")Personalized learning paths ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/calender.svg "- Uncanny Owl")Integration of blended learning and live events ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/cart-icon.svg "- Uncanny Owl")E-commerce and membership support ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Industry-leading-Support-1.svg "- Uncanny Owl")CRM and marketing automation integration ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/pencil-icon.svg "- Uncanny Owl")Course design and development ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/bag-icon.svg "- Uncanny Owl")B2B sales and group management ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/setting-icon.svg "Checkout - Uncanny Owl")Custom plugin development ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Multiple-Redemption-Methods.svg "- Uncanny Owl")Extensions for Uncanny Owl plugins ### Plan your LearnDash Project Uncanny Owl has partnered with Tangible Inc to deliver custom LearnDash development and consulting services. Tangible’s friendly team of LearnDash experts will be able to guide you to making the best decisions for your LMS. [Discover Tangible’s LearnDash expertise!](https://teamtangible.com/uncanny-owl-learndash-development/?ref=uo) ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img-038402.png "- Uncanny Owl") --- ### [Manage email preferences](https://www.uncannyowl.com/manage-email-preferences/) **Published:** May 20, 2026 **Author:** Daniela Rodriguez **Content:** Please enable JavaScript in your browser to complete this form. #### These preferences apply to: blog at Uncanny Email Note: This form is not automatically populated with your current subscriptions. #### Subscriptions I would like to receive: Uncanny Owl blog digest \*- Yes - No A periodic roundup of our latest blog posts — eLearning tutorials, case studies and tips you can put to work right away. eLearning best practices \*- Yes - No Practical guidance on building smarter eLearning platforms and programs on WordPress. Release announcements \*- Yes - No Be the first to hear about new features, integrations, and improvements to Uncanny Owl. Don't want to hear from us at all? \*- No - Yes You’ll still receive essential account and transactional emails (such as receipts, license notifications, and password resets), which aren’t managed on this page. Save preferences![Loading](https://www.uncannyowl.com/wp-content/plugins/wpforms/assets/images/submit-spin.svg) --- ### [Checkout](https://www.uncannyowl.com/checkout/) **Published:** January 16, 2016 **Author:** Ryan Moore **Content:** [![](https://www.uncannyowl.com/wp-content/uploads/2025/09/logo-uncanny.svg "logo-uncanny")](https://www.uncannyowl.com/) [ Choose a plugin ](/?utm_source=uo_web&utm_medium=empty_cart&utm_content=shop_button#our-products) --- ### [Plugin Hooks](https://www.uncannyowl.com/plugin-hooks/) **Published:** April 14, 2026 **Author:** Saad Siddique --- ### [Affiliate Area](https://www.uncannyowl.com/affiliate-area/) **Published:** August 1, 2016 **Author:** Ryan Moore **Content:** Register a new affiliate account Your Name Username Account Email Payment Email Website URL How will you promote us? [Agree to our Terms of Use and Privacy Policy](https://www.uncannyowl.com/affiliate-program-terms-use/) Log into your account Username Password Remember Me [Lost your password?](https://www.uncannyowl.com/wp-login.php?action=lostpassword) --- ### [Plugin Feedback](https://www.uncannyowl.com/request-plugin-feature/) **Published:** November 3, 2017 **Author:** Anthony Lucic **Content:** ## Request a Feature ### Thanks for your interest in our plugins! If there’s a feature that you’d find useful for your site use the form below to tell us about it. We use these suggestions to help inform our product strategy, but unfortunately we can’t guarantee that any submissions will be built. If we do decide to build a feature based on your suggestion, we’ll let you know! If you’re reporting an issue or bug, please submit it via the [support page in My Account](https://www.uncannyowl.com/new-support-request/). -The Uncanny Owl Team Please enable JavaScript in your browser to complete this form. Plugin \*— Select Choice —Uncanny Toolkit for LearnDashUncanny Toolkit Pro for LearnDashTin Canny Reporting for LearnDashUncanny Groups for LearnDashUncanny Enrollment Codes for LearnDashUncanny Continuing Education CreditsNew Plugin Idea Summary \* Details \* Plugin Summary Details Name \*First Last Email \* Submit![Loading](https://www.uncannyowl.com/wp-content/plugins/wpforms/assets/images/submit-spin.svg) --- ### [About](https://www.uncannyowl.com/about/) **Published:** March 17, 2016 **Author:** Ryan Moore **Content:** ###### ABOUT US # Smart plugins for growing sites and businesses ![](https://www.uncannyowl.com/wp-content/uploads/2026/02/About-us-banner-1-scaled.png "About us banner") ## The Uncanny Way We believe in empowering educators and businesses to create world-class online learning experiences **without technical barriers.** Our approach combines powerful features with intuitive design. We understand that effective eLearning isn’t just about content—it’s about creating **engaging, accessible,** and **measurable** learning experiences that drive real results. Whether you’re building your first online course or managing a complex learning environment for thousands of users, our solutions are designed to grow with you. ###### Our Process ## A proven process for business owners and site admins ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/quick-setup-logo.svg "- Uncanny Owl")#### Quick Setup User-friendly wizards get you running with core features in minutes ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/flexible-icon.svg "- Uncanny Owl")#### Flexible Configuration Highly configurable to meet your specific requirements ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/no-code-extendability-icon.svg "- Uncanny Owl")#### No-Code Extendability Easily connect learning activities to other plugins and apps ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Icon-Container-icon.svg "- Uncanny Owl")#### Continuous Updates New functionality and ongoing compatibility ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/world-class-icon.svg "- Uncanny Owl")#### World-Class Support We’re there to help every step of the way ###### Our Values ## 5 core values that guide all of our decisions ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/people-first-icon.svg "- Uncanny Owl")#### People First Respect for our customers and employees ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/simplicity-icon.svg "Sample AD 1 - Uncanny Owl")#### Simplicity & Efficiency Powerful functionality doesn’t need to be complicated ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/custom-icon.svg "- Uncanny Owl")#### Customer Success We win when our customers win ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/icon-0293.svg "- Uncanny Owl")#### Attention To Detail The small things matter when striving for excellence ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/target-icon.svg "- Uncanny Owl")#### Maximizing Our Impact Focusing on what truly matters ###### Meet the Makers ## Headquartered in Toronto, Canada, our team hails from all over the world ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/ken-02.png) ### Ken Co-founder, and CEO Toronto, Canada Ken leads innovation and product direction at Uncanny. With over a decade of WordPress experience, he’s passionate about building awesome products that delight customers. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/saad-1.png) ### Saad Engineering Manager Toronto, Canada A diverse programmer, Saad manages our globally distributed engineering team. He also works tirelessly to optimize our devops pipelines to keep development running smoothly. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/agus-1.png) ### Agus Software Engineer Bogota, Colombia Agustin is obsessed with UI and enamored by the evolution of front-end development. Agustin creates our intuitive learner interfaces and pixel-perfect designs. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/anstasia.png) ### Anastasia Affiliates and Partnerships Manager Corinth, Greece Nastia helps grow our community of affiliates and builds nurturing relationships with our many partners. ![](https://www.uncannyowl.com/wp-content/uploads/2026/01/brendan.png) ### Brendan Content writer Calgary, Canada Brendan Da Costa is a WordPress content writer with a Shakespearean-level gift of gab (his words, not ours). He left a successful career in economics to pursue his passion for writing and discovered the wonderful world of WordPress while building his own website to showcase his work. ![](https://www.uncannyowl.com/wp-content/uploads/2026/01/curt-80x80.png) ### Curt Software Engineer Kincardine, Canada Curt is a full stack developer that has been working with WordPress since Version 3.0. He enjoys collaboration and solving difficult problems, with a passion for UI and API integrations. Loves to delete code almost as much as writing it. ![](https://www.uncannyowl.com/wp-content/uploads/2026/01/dani.png) ### Dani Growth Operations Specialist Bogota, Colombia Dani keeps our growth operations running smoothly—shipping website updates on schedule, continuously refining processes to reduce errors, and fixing issues before they become problems. She also builds high-impact pages, popups, and reusable email templates that improve conversion and help the team work more efficiently. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/david-1.png) ### David Support Specialist Peterborough, Canada David knows our plugins and platforms inside out, supporting clients as they launch world-class eLearning platforms. David keeps our plugins issue-free and client sites operational 24×7. ![](https://www.uncannyowl.com/wp-content/uploads/2026/01/fariha-80x80.png) ### Fariha Operations Coordinator Lahore, Pakistan Fariha “wears many hats”, including coordinating support issues, scoping new integrations, QA’ing new functionality, and even some front-end development. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/joseph-02.png) ### Joseph LLM Engineer Bacolod, Philippines Joseph is a senior engineer at Uncanny Owl focused on building production-grade automation and AI systems for WordPress at scale. An NVIDIA Certified LLM Engineer, he specializes in clean architecture, complex automation logic, and AI-driven tooling often tackling the team’s hardest technical problems and customer issues. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/kimberly-1.png) ### Kimberly Administrator Toronto, Canada From account management and bookkeeping to eLearning development, Kim wears many hats for Uncanny Owl. Formerly an Operations Manager for a fund company, Kimberly’s business background helps keep Uncanny Owl on track. ![](https://www.uncannyowl.com/wp-content/uploads/2026/01/manal-80x80.png) ### Manal Support Coordinator Toront, Ontario Manal helps ensure our support team continues to get accolades for prompt, thorough issue resolution that goes above and beyond. She also helps with QA, ensuring new functionality is throroughly tested. ![](https://www.uncannyowl.com/wp-content/uploads/2026/01/muneeb-80x80.png) ### Muneeb Software Engineer Dubai, U.A.E. Muneeb is a WordPress Developer with a wide range of expertise. Our eLearning and xAPI/SCORM wizard, he enjoys architecting elegant solutions to challenging problems. he enjoys traveling and spending time with his family. ![](https://www.uncannyowl.com/wp-content/uploads/2026/01/rohan-80x80.png) ### Rohan Support Specialist Helsinki, Finland With a background software development, Rohan likes working with customers and solving their technical issues. He also handles support workflows and documentation. Outside of work, he enjoys playing and watching football and chess. ###### Trusted Worldwide ## Helping Millions Learn, Grow, and Thrive + Years in Business + Websites Using Our Plugins + Countries our customers are from /5 Average User Rating (WordPress.org) “Uncanny Owl’s suite of plugins are natural companions to LearnDash. Useful, well coded, and well thought out; there is not a team out there making better add-ons. Support is fast, detailed, and solution oriented. Choosing UO is a no-brainer.” ##### James Morris ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Graphic.png "Graphic") --- ### [Request a Feature](https://www.uncannyowl.com/my-account/request-a-feature/) **Published:** November 3, 2017 **Author:** Anthony Lucic **Content:** ### Request a Feature Please enable JavaScript in your browser to complete this form. Plugin Details Name Plugin \*— Select Choice —Uncanny Toolkit for LearnDashUncanny Toolkit Pro for LearnDashTin Canny Reporting for LearnDashUncanny Groups for LearnDashUncanny Enrollment Codes for LearnDashUncanny Continuing Education CreditsNew Plugin Idea Summary \* Details \* Name \*First Last Email \* Submit![Loading](https://www.uncannyowl.com/wp-content/plugins/wpforms/assets/images/submit-spin.svg) --- ### [Contact us](https://www.uncannyowl.com/contact-us/) **Published:** February 25, 2016 **Author:** Ryan Moore **Content:** ### Contact us We’re happy to help out with any questions you may have about our WordPress elearning and automation plugins. ![](https://www.uncannyowl.com/wp-content/uploads/2026/02/UncannyOwl-Main-Pose-923x1030.png) - [Technical Support](#uagb-tabs__tab0) - [Consulting](#uagb-tabs__tab1) - [Sales / Other](#uagb-tabs__tab2) **Support for Uncanny Toolkit for LearnDash (Free version)** We provide limited support for the free version of the Uncanny Toolkit for LearnDash directly through the WordPress plugin directory page. [Go to wordpress.org](https://wordpress.org/support/plugin/uncanny-learndash-toolkit) **Support for premium Uncanny Owl plugins** If you’re already a customer, the fastest way to get help is through our support ticketing system. [Submit a support ticket](https://www.uncannyowl.com/my-account/submit-a-request/) For custom LearnDash work or consulting inquiries please visit our [Consulting page](/consulting/). Please enable JavaScript in your browser to complete this form. Name \*First Last Email \* Subject Subject Name Message Message Submit![Loading](https://www.uncannyowl.com/wp-content/plugins/wpforms/assets/images/submit-spin.svg) --- ### [Knowledge Base Archive](https://www.uncannyowl.com/knowledge-base/) **Published:** April 8, 2022 **Author:** Ryan Moore --- ### [New Support Request](https://www.uncannyowl.com/new-support-request/) **Published:** August 21, 2025 **Author:** Ken **Content:** Please enable JavaScript in your browser to complete this form. Email \* Subject \*- Technical support - Account/purchase support #### See these articles for quick answers to some commonly asked questions: - [Download your plugins and get your license keys](https://www.uncannyowl.com/knowledge-base/how-to-download-your-plugins-and-get-your-license-keys/) - [Manage Your Subscription](https://www.uncannyowl.com/knowledge-base/manage-your-subscription/) - [Update Your Credit Card or Change Your Payment Method](https://www.uncannyowl.com/knowledge-base/update-your-credit-card-or-change-your-payment-method/) - [Change the Email Address Associated With Your Account](https://www.uncannyowl.com/knowledge-base/change-the-email-address-associated-with-your-account/) - [Change or Reset Your Password](https://www.uncannyowl.com/knowledge-base/change-or-reset-your-password/) - [Generate an Invoice For Your Purchase](https://www.uncannyowl.com/knowledge-base/generate-an-invoice-for-your-purchase/) - [Renew Your License](https://www.uncannyowl.com/knowledge-base/renew-your-license/) - [Upgrade or Downgrade Your License](https://www.uncannyowl.com/knowledge-base/upgrade-or-downgrade-your-license/) - [Transfer Your Plugin License to Another Domain](https://www.uncannyowl.com/knowledge-base/transfer-your-plugin-license-to-another-domain/) Product \*— Select Choice —Uncanny Toolkit for LearnDash (free)Uncanny Toolkit Pro for LearnDashTin Canny ReportingUncanny Groups for LearnDashUncanny Redemption Codes for WordPressUncanny Continuing Education CreditsUncanny LP Support for the Uncanny LearnDash Toolkit (free version) is provided via our [wordpress.org support page](https://wordpress.org/support/plugin/uncanny-learndash-toolkit/), so that questions and answers are available publicly to help the general WordPress community. Thanks! I have a question about: \*— Select Choice —Plugin installation/activationAutocomplete Lessons & TopicsAutocomplete Lessons & Topics on Gravity Forms SubmissionAutocomplete Lessons & Topics on Quiz Results PageAutocomplete Lessons & Topics when Quiz is GradedDays Until Course ExpiryDrip Lessons by LearnDash GroupDuplicate Pages & PostsEnhanced Course GridEnhanced Lesson/Topic GridImport UsersImproved Group Leader InterfaceCourse DashboardCertificate PreviewEmail Course CertificatesEmail Quiz CertificatesGroup ExpirationGroup Login RedirectGroup Logo/ListGroup RegistrationLazy Loading Course NavigationLearner TranscriptLesson/Topic/Quiz Table ColorsReset Progress ButtonSample Lesson LabelSimple Course TimerSomething else System related Messsage This knowledge base article might contain some helpful information: - [Install the Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-pro-for-learndash/) - [Autocomplete Lessons & Topics](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics/) - [Autocomplete Lessons & Topics on Gravity Form Submission](https://www.uncannyowl.com/knowledge-base/gravity-forms-auto-completes-lessons-topics/) - [Autocomplete Lessons & Topics on Quiz Results Page](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics-quiz-results-page/) - [Autocomplete Lessons & Topics when Quiz is Graded](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics-when-quiz-is-graded/) - [Days Until Course Expiry](https://www.uncannyowl.com/knowledge-base/days-until-course-expiry/) - [Drip Lessons by LearnDash Group](https://www.uncannyowl.com/knowledge-base/drip-lessons-by-ldgroup/) - [Duplicate Pages & Posts](https://www.uncannyowl.com/knowledge-base/duplicate-pages-posts/) - [Enhanced Course Grid](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/) - [Enhanced Lesson/Topic Grid](https://www.uncannyowl.com/knowledge-base/enhanced-lessontopic-grid/) - [Import Users](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) - [Improved Group Leader Interface](https://www.uncannyowl.com/knowledge-base/group-leader-access/) - [Course Dashboard](https://www.uncannyowl.com/knowledge-base/learndash-course-dashboard/) - [Certificate Preview](https://www.uncannyowl.com/knowledge-base/certificate-preview/) - [Email Course Certificates](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/) - [Email Quiz Certificates](https://www.uncannyowl.com/knowledge-base/send-quiz-certificates-by-email/) - [Group Expiration](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) - [Group Login Redirect](https://www.uncannyowl.com/knowledge-base/learndash-group-login-redirect/) - [Group Logo/List](https://www.uncannyowl.com/knowledge-base/ld-group-logo-list/) - [Group Registration](https://www.uncannyowl.com/knowledge-base/group-sign-up/) - [Lazy Loading Course Navigation](https://www.uncannyowl.com/knowledge-base/lazy-loading-course-navigation/) - [Learner Transcript](https://www.uncannyowl.com/knowledge-base/learner-transcript/) - [Lesson/Topic/Quiz Table Colors](https://www.uncannyowl.com/knowledge-base/learndash-table-colors/) - [Reset Progress Button](https://www.uncannyowl.com/knowledge-base/learndash-reset/) - [Sample Lesson Label](https://www.uncannyowl.com/knowledge-base/sample-lesson-label/) - [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) The question I have is related to:— Select Choice —Plugin installation/activationSCORM/xAPI statement trackingSCORM/xAPI resume/bookmarkingUploading modulesReportsSomething else These knowledge base articles may contain some helpful information: - [Install the Tin Canny Reporting Plugin](https://www.uncannyowl.com/knowledge-base/tincanny-installation-setup/) - [Setting up Tin Canny Reporting for LearnDash](https://www.uncannyowl.com/knowledge-base/protecting-sharing-content-tin-canny/) - [Supported Authoring Tools](https://www.uncannyowl.com/knowledge-base/authoring-tools-supported/) - [Site Compatibility Check](https://www.uncannyowl.com/knowledge-base/site-check/) - [Captivate Authoring Tips](https://www.uncannyowl.com/knowledge-base/captivate-authoring-tips/) - [iSpring Authoring Tips](https://www.uncannyowl.com/knowledge-base/ispring-authoring-tips/) - [Storyline Authoring Tips](https://www.uncannyowl.com/knowledge-base/storyline-authoring-tips/) - [Supported Authoring Tools](https://www.uncannyowl.com/knowledge-base/authoring-tools-supported/) - [Tin Canny Uploader](https://www.uncannyowl.com/knowledge-base/storyline-captivate-uploader/) - [Managing eLearning Content](https://www.uncannyowl.com/knowledge-base/managing-elearning-content/) - [Course Report](https://www.uncannyowl.com/knowledge-base/course-report/) - [User Report](https://www.uncannyowl.com/knowledge-base/user-report/) - [Tin Can Report](https://www.uncannyowl.com/knowledge-base/tin-can-report/) - [xAPI Quiz Report](https://www.uncannyowl.com/knowledge-base/xapi-quiz-report/) - [Front End Course/User Reports](https://www.uncannyowl.com/knowledge-base/front-end-reports/) - [Front End Quiz Reports](https://www.uncannyowl.com/knowledge-base/front-end-quiz-reports/) The question I have is related to:— Select Choice —Front-end group managementFront-end group reportsSelling group accessGroup registrationFront-end group creationSomething else These knowledge base articles may contain some helpful information: - [Set up Group Management Pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/) - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) - [Front End Essay Question Management](https://www.uncannyowl.com/knowledge-base/front-end-essay-question-management/) - [Front End LearnDash Assignment Management](https://www.uncannyowl.com/knowledge-base/front-end-learndash-assignment-management/) - [Front End LearnDash Group Creation](https://www.uncannyowl.com/knowledge-base/front-end-learndash-group-creation/) - [Using the Group Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/) - [Manage Learner Progress](https://www.uncannyowl.com/knowledge-base/manage-learner-progress/) - [Uncanny Groups for LearnDash – START HERE!](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) - [Enable Users to Build Custom Group Licenses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/) - [Create Pre-configured LearnDash Group Licenses](https://www.uncannyowl.com/knowledge-base/creating-pre-configured-learndash-group-licenses/) - [Configure Bulk Discounts](https://www.uncannyowl.com/knowledge-base/configure-bulk-discounts/) - [Add Seats and Courses after Group Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-and-courses-after-group-purchase/) - [Adding Seats after Subscription-based Group Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-after-subscription-based-group-purchase/) - [Sell LearnDash Group Access to Learners](https://www.uncannyowl.com/knowledge-base/sell-learndash-group-access-to-learners/) - [Set Up User Enrollment](https://www.uncannyowl.com/knowledge-base/set-user-enrollment/) - [Set up Group Management Pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/) - [Front End LearnDash Group Creation](https://www.uncannyowl.com/knowledge-base/front-end-learndash-group-creation/) The question I have is related to:— Select Choice —Admin ReportsFront-end credit reportGenerating historical creditsAwarding certificates for creditsManual credit managementSomething else This knowledge base article may contain some helpful information: - [Continuing Education Admin reports](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-admin-report/) - [Continuing Education Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/) - [Generate Historical LearnDash Course Credits](https://www.uncannyowl.com/knowledge-base/generate-learndash-course-credits/) - [Continuing Education Certificates](https://www.uncannyowl.com/knowledge-base/continuing-education-certificates/) - [Add and Remove Credits](https://www.uncannyowl.com/knowledge-base/add-and-remove-credits/) The question I have is related to:— Select Choice —Generating or adding codesManaging existing codesWooCommerce integrationRedeeming codes via a formSomething else These knowledge base articles may contain some helpful information: - [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/) - [Viewing and Editing Codes](https://www.uncannyowl.com/knowledge-base/view-codes/) - [Cancelling Codes](https://www.uncannyowl.com/knowledge-base/cancelling-codes/) - [Selling Codes with WooCommerce](https://www.uncannyowl.com/knowledge-base/sell-uncanny-codes/) - [Using Redemption Codes with WooCommerce](https://www.uncannyowl.com/knowledge-base/using-codes-woocommerce/) - [Using Codes with WPForms](https://www.uncannyowl.com/knowledge-base/using-codes-with-wpforms/) - [Using Codes with Formidable Forms](https://www.uncannyowl.com/knowledge-base/using-codes-with-formidable-forms/) - [Using Codes with Gravity Forms](https://www.uncannyowl.com/knowledge-base/using-codes-gravity-forms/) - [Using Codes with Theme My Login](https://www.uncannyowl.com/knowledge-base/using-codes-theme-login/) - [Using Codes With the Built-In Registration Form](https://www.uncannyowl.com/knowledge-base/using-codes-custom-registration-form/) - [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/) Checkboxes- The information above did not resolve my issue. Plugin version \*Which version of the plugin are you using on your website? SummaryA short description of the message / question. Messsage / Question detailsInclude details such as error messages, steps to reproduce the issue, steps you have taken to try to resolve the issue and URLs (if accessible without a login). System info \*Paste your system info, which may help us resolve your issue more quickly. You can find this in your WordPress admin panel under LearnDash LMS > Settings > Support > Copy System Info (on the right side). If you’re not using LearnDash, just enter “No LearnDash”. Screenshot / File Upload Drag & Drop Files, Choose Files to Upload You can upload up to 10 files. Please include any screenshots or other files that might help us resolve your issue. Please do not upload Tin Canny modules; .zip files are not supported. Submit![Loading](https://www.uncannyowl.com/wp-content/plugins/wpforms/assets/images/submit-spin.svg) --- ### [New support request](https://www.uncannyowl.com/my-account/submit-a-request/) **Published:** March 15, 2016 **Author:** Ryan Moore **Content:** ### Chat with our Smart Support Assistant! Get answers instantly — faster than waiting for a human! Our AI Assistant is trained to solve common issues and guide you step-by-step. Try it now and get the help you need in seconds. **Our new support assistant is in beta; please rate the response you receive to help it improve!** (If you’d prefer to jump directly to creating a ticket, see the link below the chatbox.) ### Can’t find the answer? If you need more help, [create a support ticket](https://www.uncannyowl.com/new-support-request/) and our team will assist you shortly. --- ### [Privacy Policy](https://www.uncannyowl.com/privacy-policy/) **Published:** March 12, 2017 **Author:** Ryan Moore **Content:** ## Privacy Policy The Privacy Policy was published on May 22, 2018 and last modified November 8, 2024. If you have any questions about this Privacy Policy or our treatment of the information you provide us, please contact our Privacy Officer by email at . Your privacy is very important to us. At Uncanny Owl: - We don’t ask for personal information unless we truly need it. - We don’t share your personal information except to comply with the law, to provide services and to protect our rights. - We don’t store personal information unless it’s required for our services. **Your Rights** As a data subject under the GDPR, you have a number of rights. Subject to any exemptions provided by law, you can: - Access and obtain a copy of your data on request; - Require the organization to change incorrect or incomplete data; - Require the organization to delete or stop processing your data, for example where the data is no longer necessary for the purposes of processing; and - Object to the processing of your data where we are not required by overriding law/regulation as legitimate legal grounds for processing. If you would like to exercise any of these rights, please contact us at . **Website Visitors** Uncanny Owl collects non-personally-identifying information of the sort that web browsers and servers typically make available, such as the browser type, language preference, referring site, geolocation data, and the date and time of each visitor request. Uncanny Owl’s purpose in collecting non-personally identifying information is to better understand how visitors use our website. From time to time, Uncanny Owl may release non-personally-identifying information in the aggregate, such as by publishing a report on trends in the usage of its website. In addition, we use Google Analytics to collect, monitor and analyze this data. Uncanny Owl also collects potentially personally-identifying information like Internet Protocol (IP) addresses for logged in users, for users making purchases and for users leaving comments. Uncanny Owl only discloses logged in user and commenter IP addresses under the same circumstances that it uses and discloses personally-identifying information as described below, except that commenter IP addresses and email addresses are visible and disclosed to the administrators of the blog where the comment was left. **Gathering of Personally-Identifying Information** Visitors who engage in ecommerce transactions with Uncanny Owl are asked to provide additional information, including as necessary the personal and financial information required to process those transactions. In each case, Uncanny Owl collects such information only insofar as is necessary or appropriate to fulfill the purpose of the visitor’s interaction with Uncanny Owl. We use a third party provider, Active Campaign, to deliver our newsletter to subscribers and product and marketing emails to customers. In order to make this possible, we collect the newsletter subscriber’s real name as well their e-mail address and we keep them stored for as long as the newsletter user remains subscribed. Every newsletter sent will also contain unsubscribe instructions by default. People who contact us by email or through our support channels will have data stored internally by tools provided by Help Scout, Google and Slack. Information shared will only be used internally for the purposes of providing support and assistance. Uncanny Owl, being fully PCI compliant, does not directly store, process, view or handle credit card information at all. Personal data required to handle payment processing is handled by Stripe or PayPal. Personal data required for account and invoicing are stored on our accounting and invoicing services, Xero and Harvest. **Cookies** A cookie is a string of information that a website stores on a visitor’s computer, and that the visitor’s browser provides to the website each time the visitor returns. Uncanny Owl uses cookies to help us identify and track visitors, their usage of our website, and their website access preferences. Uncanny Owl visitors who do not wish to have cookies placed on their computers should set their browsers to refuse cookies before using our website. **Security** The security of your personal information is important to us, but remember that no method of transmission over the Internet, or method of electronic storage, is 100% secure. While we strive to use commercially acceptable means to protect your personal information, we cannot guarantee its absolute security. **Privacy Policy Changes** Although most changes are likely to be minor, we may change this Policy from time to time. We encourage visitors to frequently check this page for any changes. Information regarding the last update date will be appended at the top of this Policy. Your continued use of this site after any change in this Policy will constitute your acceptance of such change. --- ### [Terms & Conditions](https://www.uncannyowl.com/terms-conditions/) **Published:** July 20, 2016 **Author:** Ryan Moore **Content:** ## Terms & Conditions **1. Plugin Purchases** **1.1. Plugin Licensing** Uncanny Owl plugins, unless otherwise stated, are licensed under the GNU General Public License (http://www.gnu.org/licenses/gpl.html) version 2.0 or later. **1.2. Plugin Warranty** Plugins sold and distributed by Uncanny Owl Inc. are done so in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Inasmuch as WordPress functions correctly on a clean install of itself, our plugins are guaranteed to function on a clean install of the minimum, stable and required version of WordPress for Uncanny Owl plugins. Because the number and variety of plugins is vast and wide, we do not guarantee that the plugin will function with all third-party plugins, themes or browsers of any kind. We do not assume responsibility and will not be held responsible for any conflicts or compatibility issues that may occur due to third-party software. We assume no responsibility for any data loss as a result of installing or using Uncanny Owl plugins, and any liability is limited to the price paid for one of our plugins. Should conflicts occur with third-party software, we may provide support at our discretion. **1.3. Plugin Support** Uncanny Owl Inc. sells WordPress plugins “as is” and with no implied meaning that plugins will function exactly as you would like, or that they will be compatible with all third-party components and plugins. Support for plugins sold and distributed by Uncanny Owl Inc. is only available for those who have an active, paid plugin license. Support and updates are granted for one year after the original purchase based on the license you have purchased. After one year is completed, the purchaser must renew their license in order to continue receiving support and updates for the items purchased. For purchases that include an automatically renewing subscription, support will be provided for as long as the subscription remains active. Whilst we attempt to provide the best support possible for our plugins, we do not guarantee that any particular support query can, or will be answered to the extent, or within a timeframe that the inquirer is completely satisfied. **1.4. Automatic Updates** Automatic updates are available to license holders who have an active and valid subscription and license key. Automatic updates are available as long as the license key generated from the purchase is valid and active. **1.5. Plugin Delivery** After we have processed your payment successfully, you will receive an email with your order number and other purchase information. Your license key is available in your account area along with your plugin downloads. You can download the plugin by logging into the account created for you when purchasing the plugin and clicking on the appropriate link. Should you not receive an email containing your information, you can contact us by email to request your purchase information. Access to re-download purchased files will be granted so long as your license key is valid. If a license key expires, download access to the associated files will be discontinued until such time as the license key is renewed. **1.6. Plugin Ownership** All plugins are property of Uncanny Owl Inc. Claiming any type of intellectual or exclusive ownership rights of our products is strictly prohibited. Our plugins are provided “as is” without warranty of any kind, expressed or implied. We shall not be liable for any damages, including but not limited to, direct, indirect, special, incidental or consequential damages or losses that occur due to the use or inability to use our plugins. **1.7. Website & Plugin Content** All content found on this site and throughout the plugin including images, documentation, support queries and any other information is property of Uncanny Owl Inc. and may not be redistributed without permission or consent. **1.8. Plugin Refund Policy** If you are unhappy with your plugin purchase, or you have an issue that we are unable to resolve that makes the plugins you have purchased unusable, we will be happy to consider offering a refund. Refunds will be offered at our sole discretion and must meet all of the following conditions fully: - You are within the first 14 days of the initial purchase of the plugin. No refunds will be granted after 14 days. - No refunds will be granted on plugin renewals. You will receive an email reminder before your subscription auto-renews and will have ample time to cancel if you choose not to renew. - Your issue(s) comes from not being able to install the plugin properly or get the plugin to perform its basic functions. - You have attempted to resolve your issue(s) with our support team. - No refunds will be granted after the first 30 days of the initial purchase whatsoever. - Issues caused by 3rd party plugins, themes or other software will not provide grounds for a refund. - You have not received a refund on the product purchase previously. If you make a purchase and receive a refund, then purchase again at a later date, the subsequent purchase will not be eligible for a refund. By purchasing plugin(s) from our site, you agree to this refund policy and relinquish any rights to subject it to any questions, judgment or legal actions. **1.9 Introductory Pricing** Any introductory pricing promotions on Uncanny Owl plugins can be applied a maximum of one-time per customer per plugin. Any subsequent purchases or renewals will be at full price. **2. Uncanny LP Subscriptions** **2.1 Your Uncanny LP Account and Site** You are responsible for maintaining the security of your account and Uncanny LP site, and you are fully responsible for all activities that occur under the account and actions taken in connection with the account. You must immediately notify Uncanny Owl of any unauthorized uses of your site, your account or any other breaches of security. Uncanny Owl will not be liable for any acts or omissions by you, including any damages of any kind incurred as a result of such acts or omissions. **2.2 Your Responsibilities with Content** You are entirely responsible for any content made available from your Uncanny LP website. By making the content available, you represent and warrant that: - the downloading, copying and use of content does not infringe the rights of any third party; - you have fully complied with any third-party licenses relating to the content; - the content does not contain or install any viruses, worms, malware, or other harmful or destructive content; - the content is not spam, is not machine-generated, and does not contain unethical or unwanted commercial content designed to drive traffic to third party sites or to further unlawful acts - the content is not pornographic, does not contain threats or incite violence, and does not violate the privacy or publicity rights of any third party; Uncanny Owl has the right (though not the obligation) to refuse or remove content that, in Uncanny Owl’s reasonable opinion, violates any policy or is in any way harmful or objectionable, and to deny or terminate access to an Uncanny LP site to any individual or entity for any reason, in Uncanny Owl’s sole discretion. Uncanny Owl will have no obligation to provide a refund of any amounts previously paid. **2.3 Payment and Renewal** You agree to pay Uncanny Owl the monthly or annual subscription fees indicated for the service. Payments are charged on a pre-payment basis on the day you sign up. Unless you notify Uncanny Owl before the end of the subscription period that you want to cancel service, the subscription will renew automatically and you authorize us to collect the applicable annual or monthly subscription fee. **2.4 Copyright Infringement** If you believe the material located on an Uncanny LP site violates your copyright, please contact Uncanny Owl. Uncanny Owl will respond to all such notices, including as required or appropriate by removing the infringing material or disabling links to the infringing material. Uncanny Owl will terminate a user’s access if, under appropriate circumstances, the visitor is determined to be a repeat infringer of the copyrights or other intellectual property rights of third parties. **2.5 Disclaimer or Warranties, Limitations of Liability and Indemnification** Your use of an Uncanny LP platform is at your sole risk. The service is provided “as is” and “as available”. We are not liable for damages, direct or consequential, resulting from your use of Uncanny LP, and you agree to defend, indemnify and hold us harmless from any claims, losses, liability costs and expenses (including but not limited to attorney’s fees) arising from your violation of any third-party’s rights. You acknowledge that you have only a limited, non-exclusive, non-transferable license to use Uncanny LP. Because Uncanny LP platforms are not error or bug free, you agree that you will use it carefully and avoid using it ways which might result in any loss of your or any third party’s property or information. **2.6 Email Communications** When you register, you acknowledge that Uncanny Owl will send electronic communications through computer networks in the United States and in other parts of the world. Accordingly, you acknowledge that the use of the platform results in interstate and international data transmissions. Uncanny LP platforms will send transactional emails as part of normal operations, but the use of email communications should be limited to system notifications and standard messaging. If a site sends more than 25,000 emails per month it may be subject to additional fees. **2.7 Backups** Uncanny Owl performs daily backups of all Uncanny LP sites, including files and databases. Backups are stored on Amazon’s S3 service for your protection, but in the event of an extreme catastrophe we cannot guarantee a full retrieval of your platform and cannot be held liable for the loss of data. We will make a best effort to restore your site and recover data but cannot be held liable if our efforts are unsuccessful. Uncanny LP users that have been on the platform for at least 12 consecutive months may request copies of full site backups, which can be moved and restored to any WordPress host. We will also make such backups available to all users if Uncanny Owl discontinues the platform or goes out of business. **2.8. LP Refund Policy** Due to the overhead required to set up a new instance of Uncanny LP, the first month of service is non-refundable. We stand behind LP and will assist you in resolving any problems, but we expect you to adequately understand what you are purchasing and why. **2.9 Bandwidth and Resource Limits** Uncanny LP is suited to sites with up to 7,500 users, up to 100 simultaneous learners, up to 5 GB of storage, and Content Delivery Network bandwidth of up to 100 GB per month. Sites exceeding these guidelines, especially on a regular basis, maybe be subject to additional fees. **2.10 Uncanny LP Service Level Agreement** Uncanny LP sites will provide service availability of 99.95%, calculated on a calendar month basis. Customers will receive a credit of 5% of the monthly service see for each hour in which we fail to meet the service availability for the month. To receive SLA credits, the customer must make a request to Uncanny Owl in writing within 30 days of the month giving rise to the SLA credits. Credits are based on our monitoring, may not exceed the total amount paid for the month, are forfeited on termination of the LP service, may not be aggregated, and will not be paid in cash. LP sites exceeding the bandwidth and resource limits set out above will not be eligible for SLA credit. **2.11 Confidentiality** “Confidential information”, means all of the information about your customers and their data on Uncanny LP sites that has not been deliberately made public by you. “Confidential Information” does not include information that is required to be disclosed by court order or other legal process. Uncanny Owl shall have following obligations regarding treatment of Confidential Information: a) Uncanny Owl shall take all reasonable steps to maintain the confidentiality of the other party’s Confidential Information, b) Uncanny Owl shall not without the other party’s prior written consent disclose, provide or make available any of the other party’s Confidential Information in any form to any person, except employees and contractors of Uncanny Owl whose access is necessary to enable that party to accomplish its obligations and exercise its rights under this agreement. This section shall for five (5) years survive any termination or expiration of the agreement for whatever cause. **3. Email** Uncanny Owl Inc. may occasionally send you emails related to the purchase of product(s) from our company. We may also send you occasional email newsletters relating to Uncanny Owl updates, promotions, services, and plugins. We will never sell or release your email or personal data to any third party vendors. You may opt out of these emails at any time without penalty. **4. Price Changes** Uncanny Owl Inc. reserves the right to modify, change, cancel or upgrade a plugin subscription and/or license key without prior notice or consent. Prices of all products and services are subject to change without prior notice or consent. **5. License Agreement** By purchasing our product(s), you indicate and consent that you have read and agree to the Terms & Conditions listed and detailed on this page. We reserve the right to change or modify the current Terms and Conditions without prior notice or consent. **6. Severability** If any part of this agreement is declared unenforceable or invalid, all remaining clauses in this agreement shall remain binding on the customer. --- ### [Plugin Frequently Asked Questions](https://www.uncannyowl.com/plugin-frequently-asked-questions/) **Published:** February 7, 2017 **Author:** Ryan Moore **Content:** ### Plugin Frequently Asked Questions #### How can I get a trial for a paid plugin? All of our plugins are fully functional without a license key (our aim is to make the plugins as open and flexible as possible), and for this reason we cannot provide trial versions as we have no way to limit them. The license key is required for automatic updates and support, not plugin functionality. Please review our Knowledge Base articles and try our product demos at to better understand how our plugins work and whether or not they’ll fit your requirements. #### Why am I seeing a blank screen in the back end or is functionality not working? Please make sure you are using PHP 7.4 or higher. We generally recommend using PHP 8.0 for maximum compatibility. #### Why does shortcode output look terrible on my site? We generally see 2 reasons for this. First, many of our shortcodes use LearnDash styles so that they inherit any styling you’ve already done for LearnDash. This is a problem when a theme has existing LearnDash styles or overwrite them completely with their own. The University and Social Learner themes are examples of this. If there’s a theme conflict manual styling may unfortunately be required, and if it is a theme conflict we’re unable to support changes specific to your theme. The second issue we often see is users copying and pasting shortcodes and WordPress adding `pre` tags around the shortcodes. This will cause layout issues, so before creating a support ticket, please check the page in the Editor’s Text view and make sure there are no `pre` tags. #### What does “Translation-ready” mean? All of our plugins are “Translation-ready”. This means that we follow WordPress standards for the localization of text, so our plugins should be compatible with most WordPress translation plugins including Loco Translate. This also means that we will provide support for translation issues arising from missing or improperly localized strings in our plugins; however, we will not provide instruction or support on the use of translation plugins. Multilingual plugins, which support using sites in multiple languages, are not fully supported by our plugins. Note: While Right-To-Left (RTL) languages may work, we cannot offer support for issues arising from translation into RTL languages. #### What does “Multisite-ready” mean? All of our plugins are “Multisite-ready”. This means that they will install and activate in a WordPress Multisite environment, and we will provide support them when installed in a WordPress Multisite environment. Having said that, plugins should be activated for the specific network sites where they’re used (rather than network activation), and for support requests we do require that you have a license for every network site on which the plugin is activated. #### Do I need to pay for extra sites to use for Development and Staging environments? No, the following URLs are automatically whitelisted and do not count against the site limit for the license type that you purchased: localhost 10.0.0.0/8 11.172.16.0.0/12 12.192.168.0.0/16 .dev .local dev. staging. #### Do your plugins support mobile use? Generally speaking, they support mobile very well. In a few very specific instances there may be issues; make sure to review Knowledge Base articles first. One example of this is Storyline 2 HTML5-only output with the Tin Canny plugin and controlling Mark Complete behaviours via xAPI/Tin Can; there are some complications to be mindful of. #### Why is the plugin activation saying I have an invalid key? If the key is valid, try clicking **Save** and then **Activate.** Deactivating and reacting the plugin can also sometimes fix this. #### Are prices in US dollars or Canadian dollars? All prices are in US dollars. While we are a Canadian company, we price everything in USD for our international customers to avoid confusion. Canadian customers will still be charged tax based on the billing province or territory. #### Do you offer nonprofit or other discounts? We do not offer any discounts on our products at this time. #### How do I fix Tin Canny and Toolkit Pro issues on Flywheel? Flywheel has a different file structure than is typical for WordPress sites and requires that an unzipped copy of [this file](https://www.uncannyowl.com/email/wp-load.php.zip) be uploaded to the root folder of your WordPress site. #### Where can I find my license key? Your license key(s) can be found in [My Account](https://www.uncannyowl.com/my-account) > [Plugin Licenses](https://www.uncannyowl.com/my-account/licenses/). Use the login info you entered during checkout to log in and access your license keys. If you don’t yet, have a license key, you may [purchase one](https://www.uncannyowl.com/plugins/). --- ### [Access Your Account](https://www.uncannyowl.com/login/) **Published:** March 15, 2016 **Author:** Ryan Moore **Content:** ## Access Your Account ## Login Log in below to access your account. Username or Email Address Password Remember Me [Forgot Password?](https://www.uncannyowl.com/login/?action=lostpassword) ![Automator Mascot Icon 512px](https://www.uncannyowl.com/wp-content/uploads/2022/12/Automator-Mascot-Icon-512px.png "Automator Mascot Icon 512px") Looking for your Uncanny Automator account? [Click here to visit the Uncanny Automator website.](https://automatorplugin.com/login) --- ### [All Access Pass](https://www.uncannyowl.com/all-access-pass/) **Published:** December 1, 2020 **Author:** Ryan Moore **Content:** ###### The Most Popular Plugin Bundle for LearnDash # Unlock the Full Potential of LearnDash With the Uncanny Owl All Access Pass Save big on all 5 essential LearnDash plugins and get everything you need to build a world-class learning platform on LearnDash. It’s the smart choice for serious LearnDash users. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/setting-icon.svg "- Uncanny Owl")Uncanny Toolkit Pro ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/reporting.svg "- Uncanny Owl")Tin Canny Reporting ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/users.svg "- Uncanny Owl")Uncanny Groups ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Single-and-Multi-use-Codes.svg "- Uncanny Owl")Uncanny Codes ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Credit-based-certificates.svg "- Uncanny Owl")Uncanny CE Credits ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Industry-leading-Support-01.svg "- Uncanny Owl")Industry-leading Support [Explore All Access Pass Options](#pricing) [![](https://www.uncannyowl.com/wp-content/uploads/2026/02/verified-1.svg "verified-1")](https://www.g2.com/products/uncanny-owl/reviews) [![](https://www.uncannyowl.com/wp-content/uploads/2025/09/verified.svg "verified")](https://www.wpbeginner.com/solutions/uncanny-automator/) ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/verified-2.svg "verified") ###### the all-in-one addon bundle for learndash ## Everything You Need to Build Your Ideal LearnDash Platform The All Access Pass includes five innovative plugins that expand LearnDash’s capabilities in unique ways. ![](https://www.uncannyowl.com/wp-content/uploads/2026/02/img-02494-v2.png "img-02494-v2") #### Uncanny Toolkit Pro for LearnDash Adds 30+ modules that include powerful features like autocomplete lessons, learner transcripts, enhanced course/lesson grids, and a LearnDash-optimized user import tool. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img0232.png "img0232") #### Uncanny Groups for LearnDash Give Group Leaders the tools they need to self-manage their groups. Customize which functions they can access. Create, manage, and sell access to LearnDash Groups more effectively. Perfect for anyone who heavily leverages LearnDash Groups. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img8332.png "img8332") #### TinCanny Reporting for LearnDash Add advanced drilldown reports for LearnDash available on the front or back end. Upload content like Storyline, Rise, and iSpring and get detailed tracking of SCORM and xAPI activity. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img2839.png "img2839") #### Uncanny Redemption Codes for WordPress Simplify enrollment management. Generate and sell or distribute codes that users can use to unlock access to LearnDash courses and groups. Or pair with Uncanny Automator for virtually limitless possibilities. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/img-239403.png "img-239403") #### Uncanny Continuing Education Credits for WordPress Award and manage continuing education credits for your courses. Issue certificates for multiple course completions. Perfect for professional development programs. #### Bonus Get a coupon for 60% off an Uncanny Automator Plus license with any All Access Purchase. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Automator-Mascot.webp "Automator Mascot") ###### testimonials ## Trusted by thousands of users ![](https://www.uncannyowl.com/wp-content/uploads/2026/02/Chris-Holbrook-80x80.webp) ##### Chris Holbrook Mentor, Advisor & Guest Lecturer, MentorBoost.com Uncanny Owl, and frankly ALL of their plugins make my LearnDash site HUM. Without these plugins I’d be writing custom code and tearing out my hair. Thanks Uncanny Owl!! ![](https://www.uncannyowl.com/wp-content/uploads/2026/01/Jessica-Oberg-80x80.jpeg) ##### Jessica Öberg Founder and Co Owner I love your plugins. They made a project feasible, made my work easier, and made a client very happy with the result. ![](https://www.uncannyowl.com/wp-content/uploads/2026/01/Lia-Grimanis-80x80.jpeg) ##### Lia Grimanis Canadian entrepreneur I deal with a lot of technology and a lot of support. The uncanny owl products are so great, and the support is amazing. Timely responsiveness, and genuine service. This is one of those great companies that exists and is run with all the right principles in mind. They deserve all the success in the world. I am so glad we were smart enough to be uncanny owl clients! ★★★★★ ###### Pricing ## Get Started With The All Access Pass Get everything you need in one go. Join thousands of users that have used the Uncanny Owl All Access Pass to enhance their LearnDash site. ### Get the 2-site Pass Ideal for small business sites. normally $499.00 $ 399 / year Renews at $499/year *Save $1,095/year vs buying plugins individually* [Buy Now](/all-access-2/) ### Get the 10-site Pass Perfect for businesses with multiple LearnDash sites. normally $699.00 $ 499 / year Renews at $699/year *Save $1,845/year vs buying plugins individually* [Buy Now](/all-access-10/) ### Get the 50-site Pass The ultimate solution for agencies and large organizations. normally $999.00 $ 799 / year Renews at $999/year *Save $2,695/year vs buying plugins individually* [Buy Now](/all-access-50/) ###### Need Help? ## Frequently Asked Questions What’s your refund policy? All of our products have a 14-day refund period so you can make sure our products work well for you in your environment and are free of issues. More details are in section 2.8 of our [Terms & Conditions](https://www.uncannyowl.com/terms-conditions/ "Terms & Conditions"). I’m an existing customer. Can I upgrade to the All Access Pass? Yes, current plugin customers can sign into their accounts and visit the [Licenses page](https://www.uncannyowl.com/my-account/licenses/) to see upgrade options. When you upgrade, the full purchase price of the plugin you’re upgrading will be deducted from the All Access Pass price. What license types are included? The All Access Pass allows all plugins to be used on up to 2, 10 or 50 WordPress sites. Please note that the site limit is the total number of active sites across all plugins included with the pass; for example, with a 10-site license it’s not possible to use Toolkit Pro on 10 sites and then Tin Canny on a completely different set of 10 sites. Do the plugins work in multisite environments? Yes, all of our plugins work with multisite and we do support those environments. Please note that each network site does count against the 10 site limit. Can the plugins be translated? Yes, all of our plugins are translation friendly. We don’t have explicit WPML compatibility but all strings in the plugins can be identified and translated in translation plugins. Who should use Uncanny Owl plugins? Uncanny Owl plugins are perfect for business owners, site admins, agencies and anyone else looking to expand the capabilities of LearnDash or their eLearning site and save time and money with no-code automation and AI. Can I use Uncanny Owl plugins on client sites? Yes, you can use Uncanny Owl plugins on client sites and in fact many customers do. Our All Access Pass multi-site licenses are a cost-effective solution for agencies building robust eLearning sites for their clients. --- ### [Cyber Monday 2025](https://www.uncannyowl.com/cyber-week/) **Published:** November 21, 2022 **Author:** Ken **Content:** \[av\_section min\_height=” min\_height\_pc=’25’ min\_height\_px=’500px’ shadow=’no-border-styling’ bottom\_border=’no-border-styling’ bottom\_border\_diagonal\_color=’#333333′ bottom\_border\_diagonal\_direction=” bottom\_border\_style=” padding=’no-padding’ custom\_margin=’0px’ custom\_margin\_sync=’true’ av-desktop-custom\_margin=” av-desktop-custom\_margin\_sync=’true’ av-medium-custom\_margin=” av-medium-custom\_margin\_sync=’true’ av-small-custom\_margin=” av-small-custom\_margin\_sync=’true’ av-mini-custom\_margin=” av-mini-custom\_margin\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” fold\_type=” fold\_height=” fold\_more=’Read more’ fold\_less=’Read less’ fold\_text\_style=” fold\_btn\_align=” color=’main\_color’ background=’bg\_color’ custom\_bg=” background\_gradient\_direction=’diagonal\_tb’ background\_gradient\_color1=’#292929′ background\_gradient\_color2=’#000000′ background\_gradient\_color3=” src=’https://www.uncannyowl.com/wp-content/uploads/2024/11/Uncanny-Web-Banner-Cyber-Monday-bg.jpg’ attachment=’343256′ attachment\_size=’full’ attach=’scroll’ position=’center center’ repeat=’stretch’ video=” video\_ratio=’16:9′ overlay\_opacity=’0.5′ overlay\_color=” overlay\_pattern=” overlay\_custom\_pattern=” custom\_arrow\_bg=” fold\_overlay\_color=” fold\_text\_color=” fold\_btn\_color=’theme-color’ fold\_btn\_bg\_color=” fold\_btn\_font\_color=” size-btn-text=” av-desktop-font-size-btn-text=” av-medium-font-size-btn-text=” av-small-font-size-btn-text=” av-mini-font-size-btn-text=” fold\_timer=” z\_index\_fold=” css\_position\_z\_index=” av-desktop-css\_position\_z\_index=” av-medium-css\_position\_z\_index=” av-small-css\_position\_z\_index=” av-mini-css\_position\_z\_index=” id=” custom\_class=” template\_class=” aria\_label=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-l9yb8wh3′ sc\_version=’1.0′\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’116′ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-l9yxw3qj’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_codeblock wrapper\_element=” wrapper\_element\_attributes=” codeblock\_type=” deactivate\_wrapper=’aviaTBdeactivate\_wrapper’ alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-l9yt63ub’ sc\_version=’1.0′\] var UO\_Bundle = { init: function(){ // Create parallax effect this.Parallax.init(); }, Parallax: { init: function(){ // Create parallax effect this.createParallax(); }, createParallax: function(){ // Check if Rellax is defined if ( typeof Rellax !== 'undefined' ){ var rellax = new Rellax( '.uo-bundle-parallax' ); } } } } }); - - - - - - - - - - \[/av\_codeblock\] \[av\_codeblock wrapper\_element=’style’ wrapper\_element\_attributes=” codeblock\_type=” deactivate\_wrapper=’aviaTBdeactivate\_wrapper’ alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-l9yd8afi’ sc\_version=’1.0′\] /\* Padding at top of page \*/ body .html\_header\_transparency #top .avia-builder-el-0 .container { padding-top: 50px; } /\* General styles \*/ h2 { text-transform:none !important; letter-spacing:0 !important; } .centered-column { float:none !important; margin:auto !important; } .hr-short .hr-inner, .hr-short .hr-inner .hr-inner-style { border-color:#D8D8D8 !important; } .avia-button.avia-size-large { padding: 15px 30px 15px 20px; } .avia-button .avia\_button\_icon.avia\_button\_icon\_right { left: 0.4em; bottom: -3px; font-size:28px; } /\* Remove header padding \*/ .html\_header\_transparency #top .avia-builder-el-0 .container { padding-top:0; } /\* Everything’s going on sale \*/ .bf-everything h1 span { font-size: 70px !important; line-height:1; } @media screen and (max-width:800px) { .bf-everything h1 span { font-size: 48px !important; } } .uo-bundle-hero-animated-boxes { width:200%; left:-50%; } /\* Countdown \*/ .bf-countdown-container { margin:auto !important; float:none !important; } @media (max-width:650px) { .av-countdown-cell { display:inline-block; min-width:50%; margin-bottom:10px; } } \#top .av-default-style .av-countdown-cell-inner { border-radius:500px; margin:0 10px; } /\* Opt-in form \*/ .gform\_footer { display:none !important; } \#field\_submit input { height:100%; font-size:18px; } /\* Floating bracket \*/ .bf-bracket { border-bottom: 0 !important; border-right: 0 !important; border-left: 0 !important; padding-left:40px !important; } .bf-bracket-bottom { border-top: 0 !important; border-right: 0 !important; border-left: 0 !important; } /\* Plugins \*/ @media (max-width:600px) { .bf-bracket h1 { font-size: 35px !important; } } .bf-bracket { padding-left:0 !important; padding-right:0 !important; } @media (min-width:601px) { .bf-plugins-left-column { padding-left:6%; } .bf-plugins-right-column { padding-right:6%; } } @media (max-width:1000px) and (min-width:600px) { .bf-plugins-left-column { padding-right:6%; } .bf-plugins-right-column { padding-left:6%; margin-left:0 !important; } } .bf-discount-amount { border: 2px dotted #4FC3F7 !important; padding: 5px; font-weight:bold; display:inline-block; margin-bottom:10px; } .bf-all-access { max-width:600px; margin:30px auto auto auto; } .bf-all-access .iconbox\_content { border-radius:40px; background-color: #ffe0fe!important; border: 3px dotted #AAA; padding-bottom:100px; } body .main\_color .avia-button { background-color: #884986; border-color: #884986; } .bf-all-access-button { margin-top:-90px; } @media (min-width:601px) { \#top .iconbox.av-no-box .iconbox\_content { padding: 0 40px; } } .iconbox { margin-bottom:10px; } .iconbox p { line-height:1.5em; } .iconbox .iconbox\_content .iconbox\_content\_title { font-weight:bold; text-transform: none; letter-spacing:0; } \#top .iconbox .iconbox\_content .iconbox\_content\_title a, \#top .iconbox.av-no-box .iconbox\_icon { color:#884986; } \#top .iconbox.av-no-box .iconbox\_icon { font-size:50px; } \#top .iconbox.av-no-box .iconbox\_icon:hover { color:#FFF; } \#top .iconbox .iconbox\_content .iconbox\_content\_title a:hover { text-decoration:underline; } /\* Stats styling \*/ .number\_prepared .avia-animated-number-title { color: #FFF !important; font-weight: bold; letter-spacing: 0; } .number\_prepared .avia-animated-number-content { color:#FFF; } @media (max-width:1000px) and (min-width:600px) { .bf-stats-column { margin-left:0 !important; width:50% !important; } } @media (max-width:599px) { .bf-stats-column { margin-top:20px !important; } } /\* Reviews styling \*/ .reviews-section {} .uo-bundle-review-heading-container { text-align: center; } .uo-bundle-review-heading { margin: 0 auto !important; max-width: 800px; } .uo-bundle-review\_\_stars-container { display: flex; justify-content: center; margin: 10px; } .uo-bundle-review\_\_star { width: 20px; margin-right: 5px; } .bf-review-text p { line-height:1.5em; } @media (max-width:1000px) and (min-width:768px) { .bf-review { margin-left:0 !important; } } /\* Automator section \*/ .bf-automator { border-top: 2px solid #EEE !important; } .bf-automator .av-parallax .av-parallax-inner{ background-image: linear-gradient(135deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.8)),url(https://www.uncannyowl.com/wp-content/uploads/2022/11/icon-background-1.jpg) !important; } /\* FAQ styling \*/ .av-minimal-toggle .single\_toggle { border-bottom: 1px solid #633395; padding: 10px 0; } .togglecontainer section:first-child { border-top: 1px solid #633395; } .bf-faq a { color:#4FC3F7 !important; } .bf-faq { background-color: #3d007a !important; } \[/av\_codeblock\] \[av\_one\_full first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ custom\_margin=” margin=’0px’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_flip=” svg\_div\_top\_invert=” svg\_div\_top\_front=” svg\_div\_top\_opacity=” svg\_div\_top\_preview=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_flip=” svg\_div\_bottom\_invert=” svg\_div\_bottom\_front=” svg\_div\_bottom\_opacity=” svg\_div\_bottom\_preview=” border=” border\_style=’solid’ border\_color=” radius=” column\_boxshadow=” column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight=” highlight\_size=” animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=” template\_class=” aria\_label=” av\_uid=’av-77p9juv’ sc\_version=’1.0′\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2025/12/Cyber-Week-2025-transparent-1920×988-1.png’ attachment=’376664′ attachment\_size=’full’ copyright=” caption=” image\_size=” styling=” box\_shadow=’none’ box\_shadow\_width=’10’ box\_shadow\_color=” align=’center’ font\_size=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ link=” target=” animation=’no-animation’ animation\_duration=” animation\_custom\_bg\_color=” animation\_z\_index\_curtain=’100′ parallax\_parallax=” parallax\_parallax\_speed=” av-desktop-parallax\_parallax=” av-desktop-parallax\_parallax\_speed=” av-medium-parallax\_parallax=” av-medium-parallax\_parallax\_speed=” av-small-parallax\_parallax=” av-small-parallax\_parallax\_speed=” av-mini-parallax\_parallax=” av-mini-parallax\_parallax\_speed=” hover=” blur\_image=” grayscale\_image=” fade\_image=” appearance=” css\_position=” css\_position\_location=’,,,’ css\_position\_z\_index=” av-desktop-css\_position=” av-desktop-css\_position\_location=’,,,’ av-desktop-css\_position\_z\_index=” av-medium-css\_position=” av-medium-css\_position\_location=’,,,’ av-medium-css\_position\_z\_index=” av-small-css\_position=” av-small-css\_position\_location=’,,,’ av-small-css\_position\_z\_index=” av-mini-css\_position=” av-mini-css\_position\_location=’,,,’ av-mini-css\_position\_z\_index=” transform\_perspective=” transform\_rotation=’,,,’ transform\_scale=’,,’ transform\_skew=’,’ transform\_translate=’,,’ av-desktop-transform\_perspective=” av-desktop-transform\_rotation=’,,,’ av-desktop-transform\_scale=’,,’ av-desktop-transform\_skew=’,’ av-desktop-transform\_translate=’,,’ av-medium-transform\_perspective=” av-medium-transform\_rotation=’,,,’ av-medium-transform\_scale=’,,’ av-medium-transform\_skew=’,’ av-medium-transform\_translate=’,,’ av-small-transform\_perspective=” av-small-transform\_rotation=’,,,’ av-small-transform\_scale=’,,’ av-small-transform\_skew=’,’ av-small-transform\_translate=’,,’ av-mini-transform\_perspective=” av-mini-transform\_rotation=’,,,’ av-mini-transform\_scale=’,,’ av-mini-transform\_skew=’,’ av-mini-transform\_translate=’,,’ mask\_overlay=” mask\_overlay\_shape=’blob’ mask\_overlay\_size=’contain’ mask\_overlay\_scale=’100%’ mask\_overlay\_position=’center center’ mask\_overlay\_repeat=’no-repeat’ mask\_overlay\_rotate=” mask\_overlay\_rad\_shape=’circle’ mask\_overlay\_rad\_position=’center center’ mask\_overlay\_opacity1=’0′ mask\_overlay\_opacity2=’1′ mask\_overlay\_opacity3=” title\_attr=” alt\_attr=” img\_scrset=” lazy\_loading=’disabled’ id=” custom\_class=” template\_class=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-lar0i2b4′ sc\_version=’1.0′ admin\_preview\_bg=”\]\[/av\_image\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-88tvr91′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_codeblock wrapper\_element=” wrapper\_element\_attributes=” codeblock\_type=” alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-lar0qguk’ sc\_version=’1.0′\] \[hurrytimer id=”84667″\] \[/av\_codeblock\] \[av\_textblock fold\_type=” fold\_height=” fold\_more=’Read more’ fold\_less=’Read less’ fold\_text\_style=” fold\_btn\_align=” textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” fold\_overlay\_color=” fold\_text\_color=” fold\_btn\_color=’theme-color’ fold\_btn\_bg\_color=” fold\_btn\_font\_color=” size-btn-text=” av-desktop-font-size-btn-text=” av-medium-font-size-btn-text=” av-small-font-size-btn-text=” av-mini-font-size-btn-text=” fold\_timer=” z\_index\_fold=” id=” custom\_class=’bf-get-ready’ template\_class=” av\_uid=’av-layvkf8n’ sc\_version=’1.0′ admin\_preview\_bg=”\] Offers end December 5 at 9:00PM Eastern (UTC-5). \[/av\_textblock\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’20’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-layvqs1s’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_one\_full\]\[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-73fnps7′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_section\] \[av\_four\_fifth first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=’50,,0,’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’centered-column’ template\_class=” aria\_label=” av\_uid=’av-7fepjrb’ sc\_version=’1.0′\] \[av\_textblock fold\_type=” fold\_height=” fold\_more=’Read more’ fold\_less=’Read less’ fold\_text\_style=” fold\_btn\_align=” textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” fold\_overlay\_color=” fold\_text\_color=” fold\_btn\_color=’theme-color’ fold\_btn\_bg\_color=” fold\_btn\_font\_color=” size-btn-text=” av-desktop-font-size-btn-text=” av-medium-font-size-btn-text=” av-small-font-size-btn-text=” av-mini-font-size-btn-text=” fold\_timer=” z\_index\_fold=” id=” custom\_class=” template\_class=” av\_uid=’av-l9ycuv9m’ sc\_version=’1.0′ admin\_preview\_bg=”\] ### This year, get a Cyber Week deal that pays for itself. ### **Set your LearnDash site up for growth and success!** ### Get the most-recommended addons for LearnDash at the best prices of the year and build your perfect eLearning platform. \[/av\_textblock\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’100′ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-laluybb7′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_four\_fifth\] \[av\_one\_full first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=’80,40,0,0′ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=’2′ border\_style=’solid’ border\_color=’#aaaaaa’ radius=’100px,100px,0,0′ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-bracket’ template\_class=” aria\_label=” av\_uid=’av-81kiedj’ sc\_version=’1.0′\] \[av\_textblock fold\_type=” fold\_height=” fold\_more=’Read more’ fold\_less=’Read less’ fold\_text\_style=” fold\_btn\_align=” textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” fold\_overlay\_color=” fold\_text\_color=” fold\_btn\_color=’theme-color’ fold\_btn\_bg\_color=” fold\_btn\_font\_color=” size-btn-text=” av-desktop-font-size-btn-text=” av-medium-font-size-btn-text=” av-small-font-size-btn-text=” av-mini-font-size-btn-text=” fold\_timer=” z\_index\_fold=” id=” custom\_class=” template\_class=” av\_uid=’av-l9yocbw8′ sc\_version=’1.0′ admin\_preview\_bg=”\] # **Uncanny Owl’s Cyber Week Offers** \[/av\_textblock\] \[av\_hr class=’short’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-l9z9d4jw’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’25’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-535a0lj’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_icon\_box icon=’ue808′ font=’entypo-fontello’ title=’All Access Pass’ position=’top’ icon\_style=’av-icon-style-no-border’ boxed=” font\_color=” custom\_title=” custom\_content=” color=” custom\_bg=” custom\_font=” custom\_border=” custom\_title\_size=’30’ av-desktop-font-size-title=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” custom\_content\_size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” heading\_tag=” heading\_class=” link=’download,84866′ linktarget=’\_blank’ title\_attr=” linkelement=’both’ id=” custom\_class=’bf-all-access’ template\_class=” av\_uid=’av-l9z0v5vj’ sc\_version=’1.0′ admin\_preview\_bg=”\] Up to 50% off The leading LearnDash plugins bundled together! Our very popular bundle that includes all of the LearnDash plugins below. **Get a coupon for 60% off Uncanny Automator Plus with every All Access purchase, as well as a chance to win 1 of 2 Uncanny Automator Elite Licenses for $1\*!** \*Uncanny Automator Elite License value is $599USD. Winners pay only $1 for the first year. Winners will be announced December 20, 2025. Refunded purchases are not eligible to win. \[/av\_icon\_box\] \[av\_button label=’Get the deal’ icon\_select=’yes-right-icon’ icon=’ue862′ font=’entypo-fontello’ link=’manually,https://www.uncannyowl.com/all-access-pass/’ link\_target=” size=’large’ position=’center’ label\_display=” title\_attr=” color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=” border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’100′ border\_radius\_sync=’true’ box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=’bf-all-access-button’ template\_class=” av\_uid=’av-laluwqvk’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_one\_full\] \[av\_one\_half first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-plugins-left-column’ template\_class=” aria\_label=” av\_uid=’av-gpku953′ sc\_version=’1.0′\] \[av\_icon\_box icon=’ue856′ font=’entypo-fontello’ title=’Uncanny Toolkit Pro’ position=’top’ icon\_style=’av-icon-style-no-border’ boxed=’av-no-box’ font\_color=” custom\_title=” custom\_content=” color=” custom\_bg=” custom\_font=” custom\_border=” custom\_title\_size=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” custom\_content\_size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” heading\_tag=” heading\_class=” link=’download,1377′ linktarget=’\_blank’ linkelement=’both’ id=” custom\_class=” template\_class=” av\_uid=’av-l9ycii8n’ sc\_version=’1.0′ admin\_preview\_bg=”\] Up to 50% off Our most popular premium plugin and a must-have for LearnDash sites. Add functionality that improves your user experience and makes things easier for your students and admins. \[/av\_icon\_box\] \[av\_button label=’Get the deal’ icon\_select=’yes-right-icon’ icon=’ue862′ font=’entypo-fontello’ link=’manually,https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/#pricing’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” title\_attr=” color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=” border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’100′ border\_radius\_sync=’true’ box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-lalv73xk’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_hr class=’short’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-d2v03pj’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_icon\_box icon=’ue80b’ font=’entypo-fontello’ title=’Uncanny Groups for LearnDash’ position=’top’ icon\_style=’av-icon-style-no-border’ boxed=’av-no-box’ font\_color=” custom\_title=” custom\_content=” color=” custom\_bg=” custom\_font=” custom\_border=” custom\_title\_size=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” custom\_content\_size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” heading\_tag=” heading\_class=” link=’download,13839′ linktarget=’\_blank’ linkelement=’both’ id=” custom\_class=” template\_class=” av\_uid=’av-l9ymt9wl’ sc\_version=’1.0′ admin\_preview\_bg=”\] Up to 60% off Make it easy for your customers to manage their learners in the front end, track their progress with powerful reports, and buy courses and course licenses for their organizations. If you use groups in LearnDash, you need Uncanny Groups for LearnDash. \[/av\_icon\_box\] \[av\_button label=’Get the deal’ icon\_select=’yes-right-icon’ icon=’ue862′ font=’entypo-fontello’ link=’manually,https://www.uncannyowl.com/downloads/uncanny-learndash-groups/#pricing’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” title\_attr=” color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=” border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’100′ border\_radius\_sync=’true’ box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-lalv7ngi’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_hr class=’short’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-7g1c0qv’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_icon\_box icon=’ue803′ font=’fontello’ title=’Uncanny Codes’ position=’top’ icon\_style=’av-icon-style-no-border’ boxed=’av-no-box’ font\_color=” custom\_title=” custom\_content=” color=” custom\_bg=” custom\_font=” custom\_border=” custom\_title\_size=” av-desktop-font-size-title=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” custom\_content\_size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” heading\_tag=” heading\_class=” link=’download,4909′ linktarget=’\_blank’ title\_attr=” linkelement=’both’ id=” custom\_class=” template\_class=” av\_uid=’av-l9ymyz6m’ sc\_version=’1.0′ admin\_preview\_bg=”\] Up to 50% off The best code generation, redemption and sales plugin for WordPress. Create and sell or distribute codes for course and group access. Or link code redemption to 50+ WordPress plugins and apps with Uncanny Automator. \[/av\_icon\_box\] \[av\_button label=’Get the deal’ icon\_select=’yes-right-icon’ icon=’ue862′ font=’entypo-fontello’ link=’manually,https://www.uncannyowl.com/downloads/uncanny-learndash-codes/#pricing’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” title\_attr=” color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=” border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’100′ border\_radius\_sync=’true’ box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-lalv84th’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_one\_half\] \[av\_one\_half min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-plugins-right-column’ template\_class=” aria\_label=” av\_uid=’av-cev44xz’ sc\_version=’1.0′\] \[av\_icon\_box icon=’ue8c6′ font=’entypo-fontello’ title=’Tin Canny Reporting for LearnDash’ position=’top’ icon\_style=’av-icon-style-no-border’ boxed=’av-no-box’ font\_color=” custom\_title=” custom\_content=” color=” custom\_bg=” custom\_font=” custom\_border=” custom\_title\_size=” av-desktop-font-size-title=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” custom\_content\_size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” heading\_tag=” heading\_class=” link=’download,4113′ linktarget=’\_blank’ title\_attr=” linkelement=’both’ id=” custom\_class=” template\_class=” av\_uid=’av-l9ymqsx4′ sc\_version=’1.0′ admin\_preview\_bg=”\] Up to 50% off Add powerful back end and front-end reports for LearnDash. Add interactive xAPI and SCORM content to your site with full tracking and statement capture. It’s the most tightly-integrated reporting and xAPI/SCORM plugin available for LearnDash. \[/av\_icon\_box\] \[av\_button label=’Get the deal’ icon\_select=’yes-right-icon’ icon=’ue862′ font=’entypo-fontello’ link=’manually,https://www.uncannyowl.com/downloads/tin-canny-reporting/#pricing’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” title\_attr=” color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=” border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’100′ border\_radius\_sync=’true’ box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-lalv8k60′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_hr class=’short’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-6a42687′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_icon\_box icon=’ue8c9′ font=’entypo-fontello’ title=’Uncanny Continuing Education Credits’ position=’top’ icon\_style=’av-icon-style-no-border’ boxed=’av-no-box’ font\_color=” custom\_title=” custom\_content=” color=” custom\_bg=” custom\_font=” custom\_border=” custom\_title\_size=” av-desktop-font-size-title=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” custom\_content\_size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” heading\_tag=” heading\_class=” link=’download,11141′ linktarget=’\_blank’ title\_attr=” linkelement=’both’ id=” custom\_class=” template\_class=” av\_uid=’av-l9yn23fb’ sc\_version=’1.0′ admin\_preview\_bg=”\] Up to 50% off Track, report on, and award certificates based on credits awarded for completing LearnDash courses. Create permanent course completion records even if course progress is reset. Assign credits, CEUs or CPD values to your courses and track the cumulative accomplishments and certifications of your learners. \[/av\_icon\_box\] \[av\_button label=’Get the deal’ icon\_select=’yes-right-icon’ icon=’ue862′ font=’entypo-fontello’ link=’manually,https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/#pricing’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” title\_attr=” color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=” border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’100′ border\_radius\_sync=’true’ box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-lalv9b98′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_one\_half\] \[av\_one\_full first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ custom\_margin=’aviaTBcustom\_margin’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=’40,0,0,0′ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=’2′ border\_style=’solid’ border\_color=’#aaaaaa’ radius=’0,0,100px,100px’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-bracket-bottom’ template\_class=” aria\_label=” av\_uid=’av-l9z8oua0′ sc\_version=’1.0′\] \[av\_hr class=’short’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-cehf613′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’25’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-6g8xznr’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_one\_full\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’100′ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-7sl80w7′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_section min\_height=” min\_height\_pc=’25’ min\_height\_px=’500px’ padding=’default’ custom\_margin=’0px’ custom\_margin\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” color=’main\_color’ background=’bg\_color’ custom\_bg=’#e0b13a’ background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” attach=’scroll’ position=’top left’ repeat=’no-repeat’ video=” video\_ratio=’16:9′ overlay\_opacity=’0.5′ overlay\_color=” overlay\_pattern=” overlay\_custom\_pattern=” shadow=’no-border-styling’ bottom\_border=’no-border-styling’ bottom\_border\_diagonal\_color=’#333333′ bottom\_border\_diagonal\_direction=” bottom\_border\_style=” custom\_arrow\_bg=” id=” custom\_class=” template\_class=” aria\_label=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-17l3fqdo’ sc\_version=’1.0′\] \[av\_one\_fourth first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-stats-column’ template\_class=” aria\_label=” av\_uid=’av-11hcp7kc’ sc\_version=’1.0′\] \[av\_animated\_numbers number=’6′ start\_from=” icon\_select=’no’ icon=’ue816′ font=’entypo-fontello’ number\_format=” circle=” circle\_custom=” circle\_border\_style=’none’ circle\_border\_color=” circle\_bg\_color=” circle\_border\_width=” circle\_size=” box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” circle\_mobile=” font\_size=’50’ av-medium-font-size-number=” av-small-font-size-number=” av-mini-font-size-number=” font\_size\_description=’20’ av-medium-font-size-text=” av-small-font-size-text=” av-mini-font-size-text=” color=” custom\_color=’#444444′ custom\_color\_desc=’#444444′ timer=” link=” linktarget=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-wskwn64′ sc\_version=’1.0′ admin\_preview\_bg=”\] Professional plugins \[/av\_animated\_numbers\] \[/av\_one\_fourth\]\[av\_one\_fourth min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-stats-column’ template\_class=” aria\_label=” av\_uid=’av-tyn0qbw’ sc\_version=’1.0′\] \[av\_animated\_numbers number=’70,000′ start\_from=” icon\_select=’av-icon-after’ icon=’ue816′ font=’entypo-fontello’ number\_format=” circle=” circle\_custom=” circle\_border\_style=’none’ circle\_border\_color=” circle\_bg\_color=” circle\_border\_width=” circle\_size=” box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” circle\_mobile=” font\_size=’50’ av-desktop-font-size-number=” av-medium-font-size-number=” av-small-font-size-number=” av-mini-font-size-number=” font\_size\_description=’20’ av-desktop-font-size-text=” av-medium-font-size-text=” av-small-font-size-text=” av-mini-font-size-text=” color=” custom\_color=’#444444′ custom\_color\_desc=’#444444′ timer=” link=” linktarget=” title\_attr=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-o067hho’ sc\_version=’1.0′ admin\_preview\_bg=”\] Users \[/av\_animated\_numbers\] \[/av\_one\_fourth\]\[av\_one\_fourth min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-stats-column’ template\_class=” aria\_label=” av\_uid=’av-iyhfdn0′ sc\_version=’1.0′\] \[av\_animated\_numbers number=’4.8/5′ start\_from=” icon\_select=’av-icon-after’ icon=’ue808′ font=’entypo-fontello’ number\_format=” circle=” circle\_custom=” circle\_border\_style=’none’ circle\_border\_color=” circle\_bg\_color=” circle\_border\_width=” circle\_size=” box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” circle\_mobile=” font\_size=’50’ av-medium-font-size-number=” av-small-font-size-number=” av-mini-font-size-number=” font\_size\_description=’20’ av-medium-font-size-text=” av-small-font-size-text=” av-mini-font-size-text=” color=” custom\_color=’#444444′ custom\_color\_desc=’#444444′ timer=” link=” linktarget=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-fs4exho’ sc\_version=’1.0′ admin\_preview\_bg=”\] Rating (Uncanny Toolkit) \[/av\_animated\_numbers\] \[/av\_one\_fourth\]\[av\_one\_fourth min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-stats-column’ template\_class=” aria\_label=” av\_uid=’av-a3a3yq4′ sc\_version=’1.0′\] \[av\_animated\_numbers number=’12’ start\_from=” icon\_select=’av-icon-after’ icon=’ue816′ font=’entypo-fontello’ number\_format=” circle=” circle\_custom=” circle\_border\_style=’none’ circle\_border\_color=” circle\_bg\_color=” circle\_border\_width=” circle\_size=” box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” circle\_mobile=” font\_size=’50’ av-desktop-font-size-number=” av-medium-font-size-number=” av-small-font-size-number=” av-mini-font-size-number=” font\_size\_description=’20’ av-desktop-font-size-text=” av-medium-font-size-text=” av-small-font-size-text=” av-mini-font-size-text=” color=” custom\_color=’#444444′ custom\_color\_desc=’#444444′ timer=” link=” linktarget=” title\_attr=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-7pcjngs’ sc\_version=’1.0′ admin\_preview\_bg=”\] Years in business \[/av\_animated\_numbers\] \[/av\_one\_fourth\] \[/av\_section\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-6koi5s7′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_one\_third first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-review’ template\_class=” aria\_label=” av\_uid=’av-mm4l7t3′ sc\_version=’1.0′\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2022/11/031528834dfcddfe9214179753ef30ba.jpeg’ attachment=’175806′ attachment\_size=’full’ copyright=” caption=” image\_size=” styling=’circle’ align=’center’ font\_size=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ animation=’no-animation’ hover=” appearance=” link=” target=” title\_attr=” alt\_attr=” img\_scrset=” lazy\_loading=’disabled’ id=” custom\_class=” template\_class=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-eqw7lmv’ sc\_version=’1.0′ admin\_preview\_bg=”\]\[/av\_image\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=” template\_class=” av\_uid=’av-aiaoyvb’ sc\_version=’1.0′ admin\_preview\_bg=”\] [@stillinbeta](https://wordpress.org/support/topic/great-plugin-awesome-support-91/) \[/av\_textblock\] \[av\_codeblock wrapper\_element=” wrapper\_element\_attributes=” codeblock\_type=” alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-8ooue2v’ sc\_version=’1.0′\] ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) \[/av\_codeblock\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=’bf-review-text’ template\_class=” av\_uid=’av-l9yozsoi’ sc\_version=’1.0′ admin\_preview\_bg=”\] All of the features work and if you ever run into issues, the support team is top notch. They go out of their way to help and you can really tell that they care about their product. \[/av\_textblock\] \[/av\_one\_third\] \[av\_one\_third min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-review’ template\_class=” aria\_label=” av\_uid=’av-o16lhj’ sc\_version=’1.0′\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2022/11/53c001dfd70d369f4b38ba2124b1ec73.jpeg’ attachment=’175822′ attachment\_size=’full’ copyright=” caption=” image\_size=” styling=’circle’ align=’center’ font\_size=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ animation=’no-animation’ hover=” appearance=” link=” target=” title\_attr=” alt\_attr=” img\_scrset=” lazy\_loading=’disabled’ id=” custom\_class=” template\_class=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-l9yolt48′ sc\_version=’1.0′ admin\_preview\_bg=”\]\[/av\_image\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=” template\_class=” av\_uid=’av-l9yokrs0′ sc\_version=’1.0′ admin\_preview\_bg=”\] [@liagrimanis](https://wordpress.org/support/topic/top-notch-support-great-plugins/) \[/av\_textblock\] \[av\_codeblock wrapper\_element=” wrapper\_element\_attributes=” codeblock\_type=” alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-l9yovfab’ sc\_version=’1.0′\] ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) \[/av\_codeblock\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=’bf-review-text’ template\_class=” av\_uid=’av-l9yoia7u’ sc\_version=’1.0′ admin\_preview\_bg=”\] I deal with a lot of technology and a lot of support. The uncanny owl products are so great, and the support is amazing. I am so glad we were smart enough to be uncanny owl clients! \[/av\_textblock\] \[/av\_one\_third\] \[av\_one\_third min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-review’ template\_class=” aria\_label=” av\_uid=’av-pdyv2tj’ sc\_version=’1.0′\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2022/11/d4d3314b3d5e04490cfad0322cef24b8.png’ attachment=’175825′ attachment\_size=’full’ copyright=” caption=” image\_size=” styling=’circle’ align=’center’ font\_size=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ animation=’no-animation’ hover=” appearance=” link=” target=” title\_attr=” alt\_attr=” img\_scrset=” lazy\_loading=’disabled’ id=” custom\_class=” template\_class=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-mmh3bif’ sc\_version=’1.0′ admin\_preview\_bg=”\]\[/av\_image\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=” template\_class=” av\_uid=’av-i6p6k7b’ sc\_version=’1.0′ admin\_preview\_bg=”\] [@guitarnowonline](https://wordpress.org/support/topic/great-plugins-143/) \[/av\_textblock\] \[av\_codeblock wrapper\_element=” wrapper\_element\_attributes=” codeblock\_type=” alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-azmn8uf’ sc\_version=’1.0′\] ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) \[/av\_codeblock\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=’bf-review-text’ template\_class=” av\_uid=’av-8m2rwhz’ sc\_version=’1.0′ admin\_preview\_bg=”\] Useful, sleek and quick plugin does exactly as outlined in the extensive documentation. Post sales support is A+ – best I have experienced. I am writing for Tin Canny but I could say the same for Groups or the LD Toolkit. \[/av\_textblock\] \[/av\_one\_third\] \[av\_section min\_height=” min\_height\_pc=’25’ min\_height\_px=’500px’ padding=’default’ custom\_margin=’0px’ custom\_margin\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” color=’main\_color’ background=’bg\_color’ custom\_bg=’#f8f8f8′ background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=’https://www.uncannyowl.com/wp-content/uploads/2022/11/icon-background-1.jpg’ attachment=’175982′ attachment\_size=’full’ attach=’parallax’ position=’center center’ repeat=’repeat’ video=” video\_ratio=’16:9′ overlay\_opacity=’0.5′ overlay\_color=” overlay\_pattern=” overlay\_custom\_pattern=” shadow=’no-border-styling’ bottom\_border=’no-border-styling’ bottom\_border\_diagonal\_color=’#333333′ bottom\_border\_diagonal\_direction=” bottom\_border\_style=” custom\_arrow\_bg=” id=” custom\_class=’bf-automator’ template\_class=” aria\_label=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-v5uqe18′ sc\_version=’1.0′\] \[av\_one\_third first min\_height=’av-equal-height-column’ vertical\_alignment=’av-align-middle’ space=’no\_margin’ row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=’40px’ padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=’40px,0,0,40px’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=” template\_class=” aria\_label=” av\_uid=’av-nr54t70′ sc\_version=’1.0′\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2022/11/mascot-cook-pose-1024px.png’ attachment=’175956′ attachment\_size=’full’ copyright=” caption=” image\_size=” styling=” align=’center’ font\_size=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ animation=’no-animation’ hover=” appearance=” link=” target=” title\_attr=” alt\_attr=” img\_scrset=” lazy\_loading=’disabled’ id=” custom\_class=” template\_class=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-m5iull8′ sc\_version=’1.0′ admin\_preview\_bg=”\]\[/av\_image\] \[/av\_one\_third\]\[av\_two\_third min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=’40px’ padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=’40px’ radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=’rgba(235,240,248,0.9)’ background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=” template\_class=” aria\_label=” av\_uid=’av-gadphcc’ sc\_version=’1.0′\] \[av\_textblock fold\_type=” fold\_height=” fold\_more=’Read more’ fold\_less=’Read less’ fold\_text\_style=” fold\_btn\_align=” textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” fold\_overlay\_color=” fold\_text\_color=” fold\_btn\_color=’theme-color’ fold\_btn\_bg\_color=” fold\_btn\_font\_color=” size-btn-text=” av-desktop-font-size-btn-text=” av-medium-font-size-btn-text=” av-small-font-size-btn-text=” av-mini-font-size-btn-text=” fold\_timer=” z\_index\_fold=” id=” custom\_class=” template\_class=” av\_uid=’av-1a40v7w’ sc\_version=’1.0′ admin\_preview\_bg=”\] ### Also save up to 50% on ## **Uncanny Automator** ### …the ultimate plugin for WordPress power users! Connect your WordPress plugins, sites and non-WordPress apps together in minutes, **with no code**. Automate repetitive processes, build custom workflows and even replace custom development. Combine with LearnDash to get better course sales and improved learner engagement. \[/av\_textblock\] \[av\_button label=’Check it out’ icon\_select=’yes-right-icon’ icon=’ue889′ font=’entypo-fontello’ link=’manually,https://automatorplugin.com/black-friday’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” title\_attr=” color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=’none’ border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’20px’ border\_radius\_sync=’true’ box\_shadow=” box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-7j6gyto’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_two\_third\] \[/av\_section\] \[av\_section min\_height=” min\_height\_pc=’25’ min\_height\_px=’500px’ padding=’default’ custom\_margin=’0px’ custom\_margin\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” color=’main\_color’ background=’bg\_color’ custom\_bg=’#3d007a’ background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” attach=’scroll’ position=’top left’ repeat=’no-repeat’ video=” video\_ratio=’16:9′ overlay\_opacity=’0.5′ overlay\_color=” overlay\_pattern=” overlay\_custom\_pattern=” shadow=’no-border-styling’ bottom\_border=’no-border-styling’ bottom\_border\_diagonal\_color=’#333333′ bottom\_border\_diagonal\_direction=” bottom\_border\_style=” custom\_arrow\_bg=” id=” custom\_class=’bf-faq’ template\_class=” aria\_label=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-1doyxq18′ sc\_version=’1.0′\] \[av\_one\_full first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ custom\_margin=” margin=’0px’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_flip=” svg\_div\_top\_invert=” svg\_div\_top\_front=” svg\_div\_top\_opacity=” svg\_div\_top\_preview=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_flip=” svg\_div\_bottom\_invert=” svg\_div\_bottom\_front=” svg\_div\_bottom\_opacity=” svg\_div\_bottom\_preview=” border=” border\_style=’solid’ border\_color=” radius=” column\_boxshadow=” column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight=” highlight\_size=” animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=” template\_class=” aria\_label=” av\_uid=’av-167qu98s’ sc\_version=’1.0′\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-13gtwo3w’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=’custom’ color=’#ffffff’ id=” custom\_class=” template\_class=” av\_uid=’av-10blz4p8′ sc\_version=’1.0′ admin\_preview\_bg=”\] FAQ \[/av\_textblock\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-siff9jg’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_toggle\_container faq\_markup=” initial=’0′ mode=’accordion’ sort=” styling=’av-minimal-toggle’ colors=’custom’ font\_color=’#ffffff’ background\_color=’rgba(0,0,0,0)’ border\_color=’rgba(0,0,0,0)’ toggle\_icon\_color=” colors\_current=” font\_color\_current=” toggle\_icon\_color\_current=” background\_current=” background\_color\_current=” background\_gradient\_current\_direction=’vertical’ background\_gradient\_current\_color1=’#000000′ background\_gradient\_current\_color2=’#ffffff’ background\_gradient\_current\_color3=” hover\_colors=” hover\_font\_color=” hover\_background\_color=” hover\_toggle\_icon\_color=” size-toggle=” av-desktop-font-size-toggle=” av-medium-font-size-toggle=” av-small-font-size-toggle=” av-mini-font-size-toggle=” size-content=” av-desktop-font-size-content=” av-medium-font-size-content=” av-small-font-size-content=” av-mini-font-size-content=” heading\_tag=” heading\_class=” alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-r326wlo’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_toggle title=’What’s your refund policy?’ tags=” custom\_id=” av\_uid=’av-m4kbgi4′ sc\_version=’1.0′\] All of our products have a 14-day refund window so that we can make sure our products work well for you in your environment and are free of issues. More details are in section 2.8 of our Terms & Conditions at . \[/av\_toggle\] \[av\_toggle title=’Can existing users get this price?’ tags=” custom\_id=” av\_uid=’av-ezj0gjw’ sc\_version=’1.0′\] Cyber Monday pricing is available for new product purchases only, but if you are an existing customer and interested in discounted upgrade pricing for Cyber Monday, please [contact us](https://www.uncannyowl.com/contact-us-2/) with your license or purchase ID and we can provide a special link for upgrades. If you are within the 14-day refund window of your initial purchase, we are happy to match Cyber Monday pricing with a partial refund. [Contact us](https://www.uncannyowl.com/contact-us-2/) for more information with your purchase details. \[/av\_toggle\] \[av\_toggle title=’Do the plugins work in multisite environments?’ tags=” custom\_id=” av\_uid=’av-cvo14p8′ sc\_version=’1.0′\] Yes, all of our plugins work with multisite and we do support those environments. Please note that each network site does count against the site limit for your license. \[/av\_toggle\] \[av\_toggle title=’Can the plugins be translated?’ tags=” custom\_id=” av\_uid=’av-5v4o1ak’ sc\_version=’1.0′\] Yes, all of our plugins are translation friendly. \[/av\_toggle\] \[/av\_toggle\_container\] \[/av\_one\_full\]\[/av\_section\] --- ### [Black Friday 2025](https://www.uncannyowl.com/black-friday/) **Published:** November 1, 2022 **Author:** Ken **Content:** \[av\_section min\_height=” min\_height\_pc=’25’ min\_height\_px=’500px’ shadow=’no-border-styling’ bottom\_border=’no-border-styling’ bottom\_border\_diagonal\_color=’#333333′ bottom\_border\_diagonal\_direction=” bottom\_border\_style=” padding=’no-padding’ custom\_margin=’0px’ custom\_margin\_sync=’true’ av-desktop-custom\_margin=” av-desktop-custom\_margin\_sync=’true’ av-medium-custom\_margin=” av-medium-custom\_margin\_sync=’true’ av-small-custom\_margin=” av-small-custom\_margin\_sync=’true’ av-mini-custom\_margin=” av-mini-custom\_margin\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” fold\_type=” fold\_height=” fold\_more=’Read more’ fold\_less=’Read less’ fold\_text\_style=” fold\_btn\_align=” color=’main\_color’ background=’bg\_color’ custom\_bg=” background\_gradient\_direction=’diagonal\_tb’ background\_gradient\_color1=’#292929′ background\_gradient\_color2=’#000000′ background\_gradient\_color3=” src=’https://www.uncannyowl.com/wp-content/uploads/2024/11/Uncanny-BG-Square-Black-Friday-1400-x-1400-px.png’ attachment=’343248′ attachment\_size=’full’ attach=’scroll’ position=’top center’ repeat=’repeat’ video=” video\_ratio=’16:9′ overlay\_enable=’aviaTBoverlay\_enable’ overlay\_opacity=’0.5′ overlay\_color=’#000000′ overlay\_pattern=” overlay\_custom\_pattern=” custom\_arrow\_bg=” fold\_overlay\_color=” fold\_text\_color=” fold\_btn\_color=’theme-color’ fold\_btn\_bg\_color=” fold\_btn\_font\_color=” size-btn-text=” av-desktop-font-size-btn-text=” av-medium-font-size-btn-text=” av-small-font-size-btn-text=” av-mini-font-size-btn-text=” fold\_timer=” z\_index\_fold=” css\_position\_z\_index=” av-desktop-css\_position\_z\_index=” av-medium-css\_position\_z\_index=” av-small-css\_position\_z\_index=” av-mini-css\_position\_z\_index=” id=” custom\_class=” template\_class=” aria\_label=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-l9yb8wh3′ sc\_version=’1.0′\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’116′ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-l9yxw3qj’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_codeblock wrapper\_element=” wrapper\_element\_attributes=” codeblock\_type=” deactivate\_wrapper=’aviaTBdeactivate\_wrapper’ alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-l9yt63ub’ sc\_version=’1.0′\] var UO\_Bundle = { init: function(){ // Create parallax effect this.Parallax.init(); }, Parallax: { init: function(){ // Create parallax effect this.createParallax(); }, createParallax: function(){ // Check if Rellax is defined if ( typeof Rellax !== 'undefined' ){ var rellax = new Rellax( '.uo-bundle-parallax' ); } } } } }); - - - - - - - - - - \[/av\_codeblock\] \[av\_codeblock wrapper\_element=’style’ wrapper\_element\_attributes=” codeblock\_type=” deactivate\_wrapper=’aviaTBdeactivate\_wrapper’ alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-l9yd8afi’ sc\_version=’1.0′\] /\* Padding at top of page \*/ body .html\_header\_transparency #top .avia-builder-el-0 .container { padding-top: 50px; } /\* General styles \*/ h2 { text-transform:none !important; letter-spacing:0 !important; } .centered-column { float:none !important; margin:auto !important; } .hr-short .hr-inner, .hr-short .hr-inner .hr-inner-style { border-color:#D8D8D8 !important; } .avia-button.avia-size-large { padding: 15px 30px 15px 20px; } .avia-button .avia\_button\_icon.avia\_button\_icon\_right { left: 0.4em; bottom: -3px; font-size:28px; } /\* Remove header padding \*/ .html\_header\_transparency #top .avia-builder-el-0 .container { padding-top:0; } /\* Everything’s going on sale \*/ .bf-everything h1 span { font-size: 70px !important; line-height:1; } @media screen and (max-width:800px) { .bf-everything h1 span { font-size: 48px !important; } } .uo-bundle-hero-animated-boxes { width:200%; left:-50%; } .bf-get-ready h2 { line-height:1.7em; } /\* Countdown \*/ .bf-countdown-container { margin:auto !important; float:none !important; } .main\_color .av-default-style .av-countdown-cell-inner .av-countdown-time, .av-countdown-time-label { color:#FFF; } \#top .av-default-style .av-countdown-cell-inner, .av-countdown-cell.av-countdown-days { border:none; margin:0; } .main\_color .av-default-style .av-countdown-cell-inner { background-color:#e042db; } @media (min-width:651px) { .av-countdown-timer-inner { border-radius: 500px; overflow: hidden; } } @media (max-width:650px) { .av-countdown-cell { display:inline-block; min-width:50%; margin-bottom:10px; } } /\* #top .av-default-style .av-countdown-cell-inner { border-radius:500px; margin:0 10px; } \*/ /\* Opt-in form \*/ .gform\_footer { display:none !important; } \#field\_submit input { height:100%; font-size:18px; } /\* Floating bracket \*/ .bf-bracket { border-bottom: 0 !important; border-right: 0 !important; border-left: 0 !important; padding-left:40px !important; } .bf-bracket-bottom { border-top: 0 !important; border-right: 0 !important; border-left: 0 !important; } /\* Plugins \*/ @media (max-width:600px) { .bf-bracket h1 { font-size: 35px !important; } } .bf-bracket { padding-left:0 !important; padding-right:0 !important; } @media (min-width:601px) { .bf-plugins-left-column { padding-left:6%; } .bf-plugins-right-column { padding-right:6%; } } @media (max-width:1000px) and (min-width:600px) { .bf-plugins-left-column { padding-right:6%; } .bf-plugins-right-column { padding-left:6%; margin-left:0 !important; } } .bf-discount-amount { border: 2px dotted #e0b13a !important; padding: 5px; font-weight:bold; display:inline-block; margin-bottom:10px; } .bf-all-access { max-width:600px; margin:30px auto auto auto; } .bf-all-access .iconbox\_content { border-radius:40px; background-color: #fceeca !important; border: 3px dotted #AAA; padding-bottom:100px; } .bf-all-access-button { margin-top:-90px; } @media (min-width:601px) { \#top .iconbox.av-no-box .iconbox\_content { padding: 0 40px; } } .iconbox { margin-bottom:10px; } .iconbox p { line-height:1.5em; } .iconbox .iconbox\_content .iconbox\_content\_title { font-weight:bold; text-transform: none; letter-spacing:0; } \#top .iconbox .iconbox\_content .iconbox\_content\_title a, \#top .iconbox.av-no-box .iconbox\_icon { color:#e0b13a; } \#top .iconbox.av-no-box .iconbox\_icon { font-size:50px; } \#top .iconbox.av-no-box .iconbox\_icon:hover { color:#FFF; } \#top .iconbox .iconbox\_content .iconbox\_content\_title a:hover { text-decoration:underline; } /\* Stats styling \*/ .number\_prepared .avia-animated-number-title { color: #FFF !important; font-weight: bold; letter-spacing: 0; } .number\_prepared .avia-animated-number-content { color:#FFF; } @media (max-width:1000px) and (min-width:600px) { .bf-stats-column { margin-left:0 !important; width:50% !important; } } @media (max-width:599px) { .bf-stats-column { margin-top:20px !important; } } /\* Reviews styling \*/ .reviews-section {} .uo-bundle-review-heading-container { text-align: center; } .uo-bundle-review-heading { margin: 0 auto !important; max-width: 800px; } .uo-bundle-review\_\_stars-container { display: flex; justify-content: center; margin: 10px; } .uo-bundle-review\_\_star { width: 20px; margin-right: 5px; } .bf-review-text p { line-height:1.5em; } @media (max-width:1000px) and (min-width:768px) { .bf-review { margin-left:0 !important; } } /\* Automator section \*/ .bf-automator { border-top: 2px solid #EEE !important; } .bf-automator .av-parallax .av-parallax-inner{ background-image: linear-gradient(135deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.8)),url(https://www.uncannyowl.com/wp-content/uploads/2022/11/icon-background-1.jpg) !important; } /\* FAQ styling \*/ .av-minimal-toggle .single\_toggle { border-bottom: 1px solid #633395; padding: 10px 0; } .togglecontainer section:first-child { border-top: 1px solid #633395; } .bf-faq a { color:#e0b13a !important; } .bf-faq { background-color: #3d007a !important; } \[/av\_codeblock\] \[av\_one\_full first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ custom\_margin=” margin=’0px’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_flip=” svg\_div\_top\_invert=” svg\_div\_top\_front=” svg\_div\_top\_opacity=” svg\_div\_top\_preview=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_flip=” svg\_div\_bottom\_invert=” svg\_div\_bottom\_front=” svg\_div\_bottom\_opacity=” svg\_div\_bottom\_preview=” border=” border\_style=’solid’ border\_color=” radius=” column\_boxshadow=” column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight=” highlight\_size=” animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=” template\_class=” aria\_label=” av\_uid=’av-77p9juv’ sc\_version=’1.0′\] \[av\_codeblock wrapper\_element=” wrapper\_element\_attributes=” codeblock\_type=” alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-l9yxphma’ sc\_version=’1.0′\] ![](https://www.uncannyowl.com/wp-content/uploads/2025/11/Black-Friday-2025.png) \[/av\_codeblock\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-6m3407b’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_textblock fold\_type=” fold\_height=” fold\_more=’Read more’ fold\_less=’Read less’ fold\_text\_style=” fold\_btn\_align=” textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” fold\_overlay\_color=” fold\_text\_color=” fold\_btn\_color=’theme-color’ fold\_btn\_bg\_color=” fold\_btn\_font\_color=” size-btn-text=” av-desktop-font-size-btn-text=” av-medium-font-size-btn-text=” av-small-font-size-btn-text=” av-mini-font-size-btn-text=” fold\_timer=” z\_index\_fold=” id=” custom\_class=’bf-get-ready’ template\_class=” av\_uid=’av-l9yb8co3′ sc\_version=’1.0′ admin\_preview\_bg=”\] ## Unlock Big Savings at Our Biggest Sale of the Year —But only for a limited time. ## Deals end December 1 at 9:00AM Eastern (UTC-5). \[/av\_textblock\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” av-desktop-hide=’aviaTBav-desktop-hide’ av-medium-hide=’aviaTBav-medium-hide’ av-small-hide=’aviaTBav-small-hide’ av-mini-hide=’aviaTBav-mini-hide’ id=” custom\_class=” template\_class=” av\_uid=’av-5gw5ip6′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_one\_full\]\[av\_two\_third first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-countdown-container’ template\_class=” aria\_label=” av\_uid=’av-6k4uutj’ sc\_version=’1.0′\] \[av\_countdown date=’12 / 01 / 2025′ hour=’9′ minute=’0′ timezone=’America/Toronto’ min=’1′ max=’4′ appearance=” finished\_msg=” margin=” margin\_sync=’true’ padding=” padding\_sync=’true’ av-desktop-margin=” av-desktop-margin\_sync=’true’ av-desktop-padding=” av-desktop-padding\_sync=’true’ av-medium-margin=” av-medium-margin\_sync=’true’ av-medium-padding=” av-medium-padding\_sync=’true’ av-small-margin=” av-small-margin\_sync=’true’ av-small-padding=” av-small-padding\_sync=’true’ av-mini-margin=” av-mini-margin\_sync=’true’ av-mini-padding=” av-mini-padding\_sync=’true’ number\_space=” align=’av-align-center’ size=” av-desktop-font-size-title=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” size-text=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” style=’av-default-style’ color\_numbers=” color\_timeunit=” style\_flip=’av-default-style’ color\_numbers\_top=” color\_numbers\_bottom=” color\_bg\_top=” color\_bg\_bottom=” gradient\_bg\_top\_direction=’vertical’ gradient\_bg\_top\_1=’#000000′ gradient\_bg\_top\_2=’#ffffff’ gradient\_bg\_top\_3=” gradient\_bg\_bottom\_direction=’vertical’ gradient\_bg\_bottom\_1=’#000000′ gradient\_bg\_bottom\_2=’#ffffff’ gradient\_bg\_bottom\_3=” color\_timeunit\_flip=” animation=’no-animation’ animation\_duration=” animation\_custom\_bg\_color=” animation\_z\_index\_curtain=’100′ av-desktop-hide=’aviaTBav-desktop-hide’ av-medium-hide=’aviaTBav-medium-hide’ av-small-hide=’aviaTBav-small-hide’ av-mini-hide=’aviaTBav-mini-hide’ alb\_description=” id=” custom\_class=’bf-countdown’ template\_class=” av\_uid=’av-l9yd4ccf’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_two\_third\]\[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’100′ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-73fnps7′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_section\] \[av\_four\_fifth first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=’50,,0,’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’centered-column’ template\_class=” aria\_label=” av\_uid=’av-7fepjrb’ sc\_version=’1.0′\] \[av\_textblock fold\_type=” fold\_height=” fold\_more=’Read more’ fold\_less=’Read less’ fold\_text\_style=” fold\_btn\_align=” textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” fold\_overlay\_color=” fold\_text\_color=” fold\_btn\_color=’theme-color’ fold\_btn\_bg\_color=” fold\_btn\_font\_color=” size-btn-text=” av-desktop-font-size-btn-text=” av-medium-font-size-btn-text=” av-small-font-size-btn-text=” av-mini-font-size-btn-text=” fold\_timer=” z\_index\_fold=” id=” custom\_class=” template\_class=” av\_uid=’av-l9ycuv9m’ sc\_version=’1.0′ admin\_preview\_bg=”\] ### Imagine turning your LearnDash site into a world-class learning platform. ### Now make it a reality with Uncanny Owl’s most powerful tools—at the lowest prices of the year. --- For a limited time, get big discounts on ALL of our industry-standard LearnDash plugins. Whether you’re looking to add **bespoke course features**, **group management capabilities**, **SCORM/xAPI support**, or **powerful front or back-end reports**, Uncanny Owl’s feature-rich plugins will improve the experience for both users and administrators. Don’t miss out—transform your LearnDash site today and **save big with the best deals of the year!** \[/av\_textblock\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’100′ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-laluybb7′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_four\_fifth\] \[av\_one\_full first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=’80,40,0,0′ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=’2′ border\_style=’solid’ border\_color=’#aaaaaa’ radius=’100px,100px,0,0′ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-bracket’ template\_class=” aria\_label=” av\_uid=’av-81kiedj’ sc\_version=’1.0′\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=” template\_class=” av\_uid=’av-l9yocbw8′ sc\_version=’1.0′ admin\_preview\_bg=”\] # **Uncanny Owl’s Black Friday Deals** \[/av\_textblock\] \[av\_hr class=’short’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-l9z9d4jw’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’25’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-535a0lj’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_icon\_box icon=’ue808′ font=’entypo-fontello’ title=’All Access Pass’ position=’top’ icon\_style=’av-icon-style-no-border’ boxed=” font\_color=” custom\_title=” custom\_content=” color=” custom\_bg=” custom\_font=” custom\_border=” custom\_title\_size=’30’ av-desktop-font-size-title=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” custom\_content\_size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” heading\_tag=” heading\_class=” link=’download,84866′ linktarget=’\_blank’ title\_attr=” linkelement=’both’ id=” custom\_class=’bf-all-access’ template\_class=” av\_uid=’av-l9z0v5vj’ sc\_version=’1.0′ admin\_preview\_bg=”\] Up to 50% off The leading LearnDash plugins bundled together! Our very popular bundle that includes all of the LearnDash plugins below. **Get a coupon for 60% off Uncanny Automator Plus with every All Access purchase, as well as a chance to win 1 of 2 Uncanny Automator Elite Licenses for $1\*!** \*Uncanny Automator Elite License value is $599USD. Winners pay only $1 for the first year. Winners will be announced December 20, 2025. Refunded purchases are not eligible to win. \[/av\_icon\_box\] \[av\_button label=’Get the deal’ icon\_select=’yes-right-icon’ icon=’ue862′ font=’entypo-fontello’ link=’manually,https://www.uncannyowl.com/all-access-pass/’ link\_target=” size=’large’ position=’center’ label\_display=” title\_attr=” color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=” border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’100′ border\_radius\_sync=’true’ box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=’bf-all-access-button’ template\_class=” av\_uid=’av-laluwqvk’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_one\_full\] \[av\_one\_half first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-plugins-left-column’ template\_class=” aria\_label=” av\_uid=’av-gpku953′ sc\_version=’1.0′\] \[av\_icon\_box icon=’ue856′ font=’entypo-fontello’ title=’Uncanny Toolkit Pro’ position=’top’ icon\_style=’av-icon-style-no-border’ boxed=’av-no-box’ font\_color=” custom\_title=” custom\_content=” color=” custom\_bg=” custom\_font=” custom\_border=” custom\_title\_size=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” custom\_content\_size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” heading\_tag=” heading\_class=” link=’download,1377′ linktarget=’\_blank’ linkelement=’both’ id=” custom\_class=” template\_class=” av\_uid=’av-l9ycii8n’ sc\_version=’1.0′ admin\_preview\_bg=”\] Up to 50% off Our most popular premium plugin and a must-have for LearnDash sites. Add functionality that improves your user experience and makes things easier for your students and admins. \[/av\_icon\_box\] \[av\_button label=’Get the deal’ icon\_select=’yes-right-icon’ icon=’ue862′ font=’entypo-fontello’ link=’manually,https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/#pricing’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” title\_attr=” color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=” border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’100′ border\_radius\_sync=’true’ box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-lalv73xk’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_hr class=’short’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-d2v03pj’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_icon\_box icon=’ue80b’ font=’entypo-fontello’ title=’Uncanny Groups for LearnDash’ position=’top’ icon\_style=’av-icon-style-no-border’ boxed=’av-no-box’ font\_color=” custom\_title=” custom\_content=” color=” custom\_bg=” custom\_font=” custom\_border=” custom\_title\_size=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” custom\_content\_size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” heading\_tag=” heading\_class=” link=’download,13839′ linktarget=’\_blank’ linkelement=’both’ id=” custom\_class=” template\_class=” av\_uid=’av-l9ymt9wl’ sc\_version=’1.0′ admin\_preview\_bg=”\] Up to 60% off Make it easy for your customers to manage their learners in the front end, track their progress with powerful reports, and buy courses and course licenses for their organizations. If you use groups in LearnDash, you need Uncanny Groups for LearnDash. \[/av\_icon\_box\] \[av\_button label=’Get the deal’ icon\_select=’yes-right-icon’ icon=’ue862′ font=’entypo-fontello’ link=’manually,https://www.uncannyowl.com/downloads/uncanny-learndash-groups/#pricing’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” title\_attr=” color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=” border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’100′ border\_radius\_sync=’true’ box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-lalv7ngi’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_hr class=’short’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-7g1c0qv’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_icon\_box icon=’ue803′ font=’fontello’ title=’Uncanny Codes’ position=’top’ icon\_style=’av-icon-style-no-border’ boxed=’av-no-box’ font\_color=” custom\_title=” custom\_content=” color=” custom\_bg=” custom\_font=” custom\_border=” custom\_title\_size=” av-desktop-font-size-title=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” custom\_content\_size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” heading\_tag=” heading\_class=” link=’download,4909′ linktarget=’\_blank’ title\_attr=” linkelement=’both’ id=” custom\_class=” template\_class=” av\_uid=’av-l9ymyz6m’ sc\_version=’1.0′ admin\_preview\_bg=”\] Up to 50% off The best code generation, redemption and sales plugin for WordPress. Create and sell or distribute codes for course and group access. Or link code redemption to 185+ WordPress plugins and apps with Uncanny Automator. \[/av\_icon\_box\] \[av\_button label=’Get the deal’ icon\_select=’yes-right-icon’ icon=’ue862′ font=’entypo-fontello’ link=’manually,https://www.uncannyowl.com/downloads/uncanny-learndash-codes/#pricing’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” title\_attr=” color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=” border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’100′ border\_radius\_sync=’true’ box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-lalv84th’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_one\_half\] \[av\_one\_half min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-plugins-right-column’ template\_class=” aria\_label=” av\_uid=’av-cev44xz’ sc\_version=’1.0′\] \[av\_icon\_box icon=’ue8c6′ font=’entypo-fontello’ title=’Tin Canny Reporting for LearnDash’ position=’top’ icon\_style=’av-icon-style-no-border’ boxed=’av-no-box’ font\_color=” custom\_title=” custom\_content=” color=” custom\_bg=” custom\_font=” custom\_border=” custom\_title\_size=” av-desktop-font-size-title=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” custom\_content\_size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” heading\_tag=” heading\_class=” link=’download,4113′ linktarget=’\_blank’ title\_attr=” linkelement=’both’ id=” custom\_class=” template\_class=” av\_uid=’av-l9ymqsx4′ sc\_version=’1.0′ admin\_preview\_bg=”\] Up to 50% off Add powerful back end and front-end reports for LearnDash. Add interactive xAPI and SCORM content to your site with full tracking and statement capture. It’s the most tightly-integrated reporting and xAPI/SCORM plugin available for LearnDash. \[/av\_icon\_box\] \[av\_button label=’Get the deal’ icon\_select=’yes-right-icon’ icon=’ue862′ font=’entypo-fontello’ link=’manually,https://www.uncannyowl.com/downloads/tin-canny-reporting/#pricing’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” title\_attr=” color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=” border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’100′ border\_radius\_sync=’true’ box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-lalv8k60′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_hr class=’short’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-6a42687′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_icon\_box icon=’ue8c9′ font=’entypo-fontello’ title=’Uncanny Continuing Education Credits’ position=’top’ icon\_style=’av-icon-style-no-border’ boxed=’av-no-box’ font\_color=” custom\_title=” custom\_content=” color=” custom\_bg=” custom\_font=” custom\_border=” custom\_title\_size=” av-desktop-font-size-title=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” custom\_content\_size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” heading\_tag=” heading\_class=” link=’download,11141′ linktarget=’\_blank’ title\_attr=” linkelement=’both’ id=” custom\_class=” template\_class=” av\_uid=’av-l9yn23fb’ sc\_version=’1.0′ admin\_preview\_bg=”\] Up to 50% off Track, report on, and award certificates based on credits awarded for completing LearnDash courses. Create permanent course completion records even if course progress is reset. Assign credits, CEUs or CPD values to your courses and track the cumulative accomplishments and certifications of your learners. \[/av\_icon\_box\] \[av\_button label=’Get the deal’ icon\_select=’yes-right-icon’ icon=’ue862′ font=’entypo-fontello’ link=’manually,https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/#pricing’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” title\_attr=” color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=” border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’100′ border\_radius\_sync=’true’ box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-lalv9b98′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_one\_half\] \[av\_one\_full first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ custom\_margin=’aviaTBcustom\_margin’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=’40,0,0,0′ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=’2′ border\_style=’solid’ border\_color=’#aaaaaa’ radius=’0,0,100px,100px’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-bracket-bottom’ template\_class=” aria\_label=” av\_uid=’av-l9z8oua0′ sc\_version=’1.0′\] \[av\_hr class=’short’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-cehf613′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’25’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-6g8xznr’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_one\_full\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’100′ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-7sl80w7′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_section min\_height=” min\_height\_pc=’25’ min\_height\_px=’500px’ padding=’default’ custom\_margin=’0px’ custom\_margin\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” color=’main\_color’ background=’bg\_color’ custom\_bg=’#f8f8f8′ background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=’https://www.uncannyowl.com/wp-content/uploads/2022/11/icon-background-1.jpg’ attachment=’175982′ attachment\_size=’full’ attach=’parallax’ position=’center center’ repeat=’repeat’ video=” video\_ratio=’16:9′ overlay\_opacity=’0.5′ overlay\_color=” overlay\_pattern=” overlay\_custom\_pattern=” shadow=’no-border-styling’ bottom\_border=’no-border-styling’ bottom\_border\_diagonal\_color=’#333333′ bottom\_border\_diagonal\_direction=” bottom\_border\_style=” custom\_arrow\_bg=” id=” custom\_class=’bf-automator’ template\_class=” aria\_label=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-l9z70zz1′ sc\_version=’1.0′\] \[av\_one\_third first min\_height=’av-equal-height-column’ vertical\_alignment=’av-align-middle’ space=’no\_margin’ row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=’40px’ padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=’40px,0,0,40px’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=” template\_class=” aria\_label=” av\_uid=’av-a5qsypz’ sc\_version=’1.0′\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2022/11/mascot-cook-pose-1024px.png’ attachment=’175956′ attachment\_size=’full’ copyright=” caption=” image\_size=” styling=” align=’center’ font\_size=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ animation=’no-animation’ hover=” appearance=” link=” target=” title\_attr=” alt\_attr=” img\_scrset=” lazy\_loading=’disabled’ id=” custom\_class=” template\_class=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-l9z5uzeh’ sc\_version=’1.0′ admin\_preview\_bg=”\]\[/av\_image\] \[/av\_one\_third\]\[av\_two\_third min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=’40px’ padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=’40px’ radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=’rgba(235,240,248,0.9)’ background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=” template\_class=” aria\_label=” av\_uid=’av-679nm6f’ sc\_version=’1.0′\] \[av\_textblock fold\_type=” fold\_height=” fold\_more=’Read more’ fold\_less=’Read less’ fold\_text\_style=” fold\_btn\_align=” textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-desktop-font-size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” fold\_overlay\_color=” fold\_text\_color=” fold\_btn\_color=’theme-color’ fold\_btn\_bg\_color=” fold\_btn\_font\_color=” size-btn-text=” av-desktop-font-size-btn-text=” av-medium-font-size-btn-text=” av-small-font-size-btn-text=” av-mini-font-size-btn-text=” fold\_timer=” z\_index\_fold=” id=” custom\_class=” template\_class=” av\_uid=’av-l9z60nf5′ sc\_version=’1.0′ admin\_preview\_bg=”\] ### Also save up to 50% on ## **Uncanny Automator** ### …the ultimate plugin for LearnDash power users! Connect LearnDash to other WordPress plugins, sites and non-WordPress apps together in minutes, **with no code**. Create personalized learning paths, automate group and course enrollment. Automate marketing and administration, build custom workflows and even replace custom development. It’s the best return you’ll get on any Black Friday investment this year. \[/av\_textblock\] \[av\_button label=’Check it out’ icon\_select=’yes-right-icon’ icon=’ue889′ font=’entypo-fontello’ link=’manually,https://automatorplugin.com/black-friday’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” title\_attr=” size-text=” av-desktop-font-size-text=” av-medium-font-size-text=” av-small-font-size-text=” av-mini-font-size-text=” margin=” margin\_sync=’true’ padding=” padding\_sync=’true’ av-desktop-margin=” av-desktop-margin\_sync=’true’ av-desktop-padding=” av-desktop-padding\_sync=’true’ av-medium-margin=” av-medium-margin\_sync=’true’ av-medium-padding=” av-medium-padding\_sync=’true’ av-small-margin=” av-small-margin\_sync=’true’ av-small-padding=” av-small-padding\_sync=’true’ av-mini-margin=” av-mini-margin\_sync=’true’ av-mini-padding=” av-mini-padding\_sync=’true’ color\_options=” color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ btn\_color\_bg=’theme-color’ btn\_custom\_grad\_direction=’vertical’ btn\_custom\_grad\_1=’#000000′ btn\_custom\_grad\_2=’#ffffff’ btn\_custom\_grad\_3=” btn\_custom\_grad\_opacity=’0.7′ btn\_custom\_bg=’#444444′ btn\_color\_bg\_hover=’theme-color-highlight’ btn\_custom\_bg\_hover=’#444444′ btn\_color\_font=’theme-color’ btn\_custom\_font=’#ffffff’ btn\_color\_font\_hover=’white’ btn\_custom\_font\_hover=’#ffffff’ border=’none’ border\_width=” border\_width\_sync=’true’ border\_color=” border\_radius=’20px’ border\_radius\_sync=’true’ box\_shadow=” box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” animation=” animation\_duration=” animation\_custom\_bg\_color=” animation\_z\_index\_curtain=’100′ hover\_opacity=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ css\_position=” css\_position\_location=’,,,’ css\_position\_z\_index=” av-desktop-css\_position=” av-desktop-css\_position\_location=’,,,’ av-desktop-css\_position\_z\_index=” av-medium-css\_position=” av-medium-css\_position\_location=’,,,’ av-medium-css\_position\_z\_index=” av-small-css\_position=” av-small-css\_position\_location=’,,,’ av-small-css\_position\_z\_index=” av-mini-css\_position=” av-mini-css\_position\_location=’,,,’ av-mini-css\_position\_z\_index=” id=” custom\_class=” template\_class=” av\_uid=’av-l9z6f2l5′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[/av\_two\_third\] \[/av\_section\] \[av\_section min\_height=” min\_height\_pc=’25’ min\_height\_px=’500px’ padding=’default’ custom\_margin=’0px’ custom\_margin\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” color=’main\_color’ background=’bg\_color’ custom\_bg=’#e0b13a’ background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” attach=’scroll’ position=’top left’ repeat=’no-repeat’ video=” video\_ratio=’16:9′ overlay\_opacity=’0.5′ overlay\_color=” overlay\_pattern=” overlay\_custom\_pattern=” shadow=’no-border-styling’ bottom\_border=’no-border-styling’ bottom\_border\_diagonal\_color=’#333333′ bottom\_border\_diagonal\_direction=” bottom\_border\_style=” custom\_arrow\_bg=” id=” custom\_class=” template\_class=” aria\_label=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-1mhxy6f’ sc\_version=’1.0′\] \[av\_one\_fourth first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-stats-column’ template\_class=” aria\_label=” av\_uid=’av-ahp9d3b’ sc\_version=’1.0′\] \[av\_animated\_numbers number=’6′ start\_from=” icon\_select=’no’ icon=’ue816′ font=’entypo-fontello’ number\_format=” circle=” circle\_custom=” circle\_border\_style=’none’ circle\_border\_color=” circle\_bg\_color=” circle\_border\_width=” circle\_size=” box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” circle\_mobile=” font\_size=’50’ av-medium-font-size-number=” av-small-font-size-number=” av-mini-font-size-number=” font\_size\_description=’20’ av-medium-font-size-text=” av-small-font-size-text=” av-mini-font-size-text=” color=” custom\_color=’#444444′ custom\_color\_desc=’#444444′ timer=” link=” linktarget=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-mubdxj’ sc\_version=’1.0′ admin\_preview\_bg=”\] Professional plugins \[/av\_animated\_numbers\] \[/av\_one\_fourth\]\[av\_one\_fourth min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-stats-column’ template\_class=” aria\_label=” av\_uid=’av-cw7nuiv’ sc\_version=’1.0′\] \[av\_animated\_numbers number=’70,000′ start\_from=” icon\_select=’av-icon-after’ icon=’ue816′ font=’entypo-fontello’ number\_format=” circle=” circle\_custom=” circle\_border\_style=’none’ circle\_border\_color=” circle\_bg\_color=” circle\_border\_width=” circle\_size=” box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” circle\_mobile=” font\_size=’50’ av-desktop-font-size-number=” av-medium-font-size-number=” av-small-font-size-number=” av-mini-font-size-number=” font\_size\_description=’20’ av-desktop-font-size-text=” av-medium-font-size-text=” av-small-font-size-text=” av-mini-font-size-text=” color=” custom\_color=’#444444′ custom\_color\_desc=’#444444′ timer=” link=” linktarget=” title\_attr=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-8msdjif’ sc\_version=’1.0′ admin\_preview\_bg=”\] Users \[/av\_animated\_numbers\] \[/av\_one\_fourth\]\[av\_one\_fourth min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-stats-column’ template\_class=” aria\_label=” av\_uid=’av-lzejmmf’ sc\_version=’1.0′\] \[av\_animated\_numbers number=’4.8/5′ start\_from=” icon\_select=’av-icon-after’ icon=’ue808′ font=’entypo-fontello’ number\_format=” circle=” circle\_custom=” circle\_border\_style=’none’ circle\_border\_color=” circle\_bg\_color=” circle\_border\_width=” circle\_size=” box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” circle\_mobile=” font\_size=’50’ av-medium-font-size-number=” av-small-font-size-number=” av-mini-font-size-number=” font\_size\_description=’20’ av-medium-font-size-text=” av-small-font-size-text=” av-mini-font-size-text=” color=” custom\_color=’#444444′ custom\_color\_desc=’#444444′ timer=” link=” linktarget=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-fia5fev’ sc\_version=’1.0′ admin\_preview\_bg=”\] Rating (Uncanny Toolkit) \[/av\_animated\_numbers\] \[/av\_one\_fourth\]\[av\_one\_fourth min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-stats-column’ template\_class=” aria\_label=” av\_uid=’av-cb9bn2f’ sc\_version=’1.0′\] \[av\_animated\_numbers number=’12’ start\_from=” icon\_select=’av-icon-after’ icon=’ue816′ font=’entypo-fontello’ number\_format=” circle=” circle\_custom=” circle\_border\_style=’none’ circle\_border\_color=” circle\_bg\_color=” circle\_border\_width=” circle\_size=” box\_shadow=’none’ box\_shadow\_style=’0px,0px,0px,0px’ box\_shadow\_color=” circle\_mobile=” font\_size=’50’ av-desktop-font-size-number=” av-medium-font-size-number=” av-small-font-size-number=” av-mini-font-size-number=” font\_size\_description=’20’ av-desktop-font-size-text=” av-medium-font-size-text=” av-small-font-size-text=” av-mini-font-size-text=” color=” custom\_color=’#444444′ custom\_color\_desc=’#444444′ timer=” link=” linktarget=” title\_attr=” sonar\_effect\_effect=” sonar\_effect\_color=” sonar\_effect\_duration=’1′ sonar\_effect\_scale=” sonar\_effect\_opac=’0.5′ id=” custom\_class=” template\_class=” av\_uid=’av-2a9kzr’ sc\_version=’1.0′ admin\_preview\_bg=”\] Years in business \[/av\_animated\_numbers\] \[/av\_one\_fourth\] \[/av\_section\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-6koi5s7′ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_one\_third first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-review’ template\_class=” aria\_label=” av\_uid=’av-mm4l7t3′ sc\_version=’1.0′\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2022/11/031528834dfcddfe9214179753ef30ba.jpeg’ attachment=’175806′ attachment\_size=’full’ copyright=” caption=” image\_size=” styling=’circle’ align=’center’ font\_size=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ animation=’no-animation’ hover=” appearance=” link=” target=” title\_attr=” alt\_attr=” img\_scrset=” lazy\_loading=’disabled’ id=” custom\_class=” template\_class=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-eqw7lmv’ sc\_version=’1.0′ admin\_preview\_bg=”\]\[/av\_image\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=” template\_class=” av\_uid=’av-aiaoyvb’ sc\_version=’1.0′ admin\_preview\_bg=”\] [@stillinbeta](https://wordpress.org/support/topic/great-plugin-awesome-support-91/) \[/av\_textblock\] \[av\_codeblock wrapper\_element=” wrapper\_element\_attributes=” codeblock\_type=” alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-8ooue2v’ sc\_version=’1.0′\] ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) \[/av\_codeblock\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=’bf-review-text’ template\_class=” av\_uid=’av-l9yozsoi’ sc\_version=’1.0′ admin\_preview\_bg=”\] All of the features work and if you ever run into issues, the support team is top notch. They go out of their way to help and you can really tell that they care about their product. \[/av\_textblock\] \[/av\_one\_third\] \[av\_one\_third min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-review’ template\_class=” aria\_label=” av\_uid=’av-o16lhj’ sc\_version=’1.0′\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2022/11/53c001dfd70d369f4b38ba2124b1ec73.jpeg’ attachment=’175822′ attachment\_size=’full’ copyright=” caption=” image\_size=” styling=’circle’ align=’center’ font\_size=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ animation=’no-animation’ hover=” appearance=” link=” target=” title\_attr=” alt\_attr=” img\_scrset=” lazy\_loading=’disabled’ id=” custom\_class=” template\_class=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-l9yolt48′ sc\_version=’1.0′ admin\_preview\_bg=”\]\[/av\_image\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=” template\_class=” av\_uid=’av-l9yokrs0′ sc\_version=’1.0′ admin\_preview\_bg=”\] [@liagrimanis](https://wordpress.org/support/topic/top-notch-support-great-plugins/) \[/av\_textblock\] \[av\_codeblock wrapper\_element=” wrapper\_element\_attributes=” codeblock\_type=” alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-l9yovfab’ sc\_version=’1.0′\] ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) \[/av\_codeblock\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=’bf-review-text’ template\_class=” av\_uid=’av-l9yoia7u’ sc\_version=’1.0′ admin\_preview\_bg=”\] I deal with a lot of technology and a lot of support. The uncanny owl products are so great, and the support is amazing. I am so glad we were smart enough to be uncanny owl clients! \[/av\_textblock\] \[/av\_one\_third\] \[av\_one\_third min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ margin=’0px’ margin\_sync=’true’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” padding\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” border=” border\_style=’solid’ border\_color=” radius=” radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight\_size=’1.1′ animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=’bf-review’ template\_class=” aria\_label=” av\_uid=’av-pdyv2tj’ sc\_version=’1.0′\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2022/11/d4d3314b3d5e04490cfad0322cef24b8.png’ attachment=’175825′ attachment\_size=’full’ copyright=” caption=” image\_size=” styling=’circle’ align=’center’ font\_size=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ animation=’no-animation’ hover=” appearance=” link=” target=” title\_attr=” alt\_attr=” img\_scrset=” lazy\_loading=’disabled’ id=” custom\_class=” template\_class=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-mmh3bif’ sc\_version=’1.0′ admin\_preview\_bg=”\]\[/av\_image\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=” template\_class=” av\_uid=’av-i6p6k7b’ sc\_version=’1.0′ admin\_preview\_bg=”\] [@guitarnowonline](https://wordpress.org/support/topic/great-plugins-143/) \[/av\_textblock\] \[av\_codeblock wrapper\_element=” wrapper\_element\_attributes=” codeblock\_type=” alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-azmn8uf’ sc\_version=’1.0′\] ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) ![](https://www.uncannyowl.com/wp-content/plugins/_uncanny-learndash-bundle/assets/img/icon-star.svg) \[/av\_codeblock\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=’bf-review-text’ template\_class=” av\_uid=’av-8m2rwhz’ sc\_version=’1.0′ admin\_preview\_bg=”\] Useful, sleek and quick plugin does exactly as outlined in the extensive documentation. Post sales support is A+ – best I have experienced. I am writing for Tin Canny but I could say the same for Groups or the LD Toolkit. \[/av\_textblock\] \[/av\_one\_third\] \[av\_section min\_height=” min\_height\_pc=’25’ min\_height\_px=’500px’ padding=’default’ custom\_margin=’0px’ custom\_margin\_sync=’true’ svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_opacity=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_opacity=” color=’main\_color’ background=’bg\_color’ custom\_bg=’#3d007a’ background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” attachment=” attachment\_size=” attach=’scroll’ position=’top left’ repeat=’no-repeat’ video=” video\_ratio=’16:9′ overlay\_opacity=’0.5′ overlay\_color=” overlay\_pattern=” overlay\_custom\_pattern=” shadow=’no-border-styling’ bottom\_border=’no-border-styling’ bottom\_border\_diagonal\_color=’#333333′ bottom\_border\_diagonal\_direction=” bottom\_border\_style=” custom\_arrow\_bg=” id=” custom\_class=’bf-faq’ template\_class=” aria\_label=” av\_element\_hidden\_in\_editor=’0′ av\_uid=’av-l9ysket6′ sc\_version=’1.0′\] \[av\_one\_full first min\_height=” vertical\_alignment=’av-align-top’ space=” row\_boxshadow=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ custom\_margin=” margin=’0px’ mobile\_breaking=” mobile\_column\_order=” min\_col\_height=” padding=” svg\_div\_top=” svg\_div\_top\_color=’#333333′ svg\_div\_top\_width=’100′ svg\_div\_top\_height=’50’ svg\_div\_top\_max\_height=’none’ svg\_div\_top\_flip=” svg\_div\_top\_invert=” svg\_div\_top\_front=” svg\_div\_top\_opacity=” svg\_div\_top\_preview=” svg\_div\_bottom=” svg\_div\_bottom\_color=’#333333′ svg\_div\_bottom\_width=’100′ svg\_div\_bottom\_height=’50’ svg\_div\_bottom\_max\_height=’none’ svg\_div\_bottom\_flip=” svg\_div\_bottom\_invert=” svg\_div\_bottom\_front=” svg\_div\_bottom\_opacity=” svg\_div\_bottom\_preview=” border=” border\_style=’solid’ border\_color=” radius=” column\_boxshadow=” column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_direction=’vertical’ background\_gradient\_color1=’#000000′ background\_gradient\_color2=’#ffffff’ background\_gradient\_color3=” src=” background\_position=’top left’ background\_repeat=’no-repeat’ highlight=” highlight\_size=” animation=” link=” linktarget=” link\_hover=” title\_attr=” alt\_attr=” mobile\_display=” mobile\_col\_pos=’0′ id=” custom\_class=” template\_class=” aria\_label=” av\_uid=’av-a8itscn’ sc\_version=’1.0′\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-15ka2pz’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_textblock textblock\_styling\_align=” textblock\_styling=” textblock\_styling\_gap=” textblock\_styling\_mobile=” size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=’custom’ color=’#ffffff’ id=” custom\_class=” template\_class=” av\_uid=’av-l9ysr5g5′ sc\_version=’1.0′ admin\_preview\_bg=”\] FAQ \[/av\_textblock\] \[av\_hr class=’invisible’ icon\_select=’yes’ icon=’ue808′ font=’entypo-fontello’ position=’center’ shadow=’no-shadow’ height=’50’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ custom\_border\_color=” custom\_icon\_color=” id=” custom\_class=” template\_class=” av\_uid=’av-5no4ybr’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_toggle\_container faq\_markup=” initial=’0′ mode=’accordion’ sort=” styling=’av-minimal-toggle’ colors=’custom’ font\_color=’#ffffff’ background\_color=’rgba(0,0,0,0)’ border\_color=’rgba(0,0,0,0)’ toggle\_icon\_color=” colors\_current=” font\_color\_current=” toggle\_icon\_color\_current=” background\_current=” background\_color\_current=” background\_gradient\_current\_direction=’vertical’ background\_gradient\_current\_color1=’#000000′ background\_gradient\_current\_color2=’#ffffff’ background\_gradient\_current\_color3=” hover\_colors=” hover\_font\_color=” hover\_background\_color=” hover\_toggle\_icon\_color=” size-toggle=” av-desktop-font-size-toggle=” av-medium-font-size-toggle=” av-small-font-size-toggle=” av-mini-font-size-toggle=” size-content=” av-desktop-font-size-content=” av-medium-font-size-content=” av-small-font-size-content=” av-mini-font-size-content=” heading\_tag=” heading\_class=” alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-l9ysljsv’ sc\_version=’1.0′ admin\_preview\_bg=”\] \[av\_toggle title=’What’s your refund policy?’ tags=” custom\_id=” av\_uid=’av-l9ysl90o’ sc\_version=’1.0′\] All of our products have a 14-day refund window so that we can make sure our products work well for you in your environment and are free of issues. More details are in section 1.8 of our Terms & Conditions at . \[/av\_toggle\] \[av\_toggle title=’Can existing users get this price?’ tags=” custom\_id=” av\_uid=’av-la7apcts’ sc\_version=’1.0′\] As per our [Terms and Conditions](https://www.uncannyowl.com/terms-conditions/), Black Friday pricing is available for new product purchases only. If you are an existing customer and interested in discounted upgrade pricing for Black Friday, discounted All Access Pass upgrades can be viewed on your [Plugin Licenses](https://www.uncannyowl.com/my-account/licenses/) page. If you would like to upgrade to a higher tier of a single plugin license, please [contact us](https://www.uncannyowl.com/contact-us-2/) with your license or purchase ID and we can provide a special link for upgrades. If you are within the 14-day refund period of your initial purchase, we are happy to match Black Friday pricing with a partial refund. [Contact us](https://www.uncannyowl.com/contact-us-2/) for more information with your purchase details. \[/av\_toggle\] \[av\_toggle title=’Do the plugins work in multisite environments?’ tags=” custom\_id=” av\_uid=’av-8dlcj5z’ sc\_version=’1.0′\] Yes, all of our plugins work with multisite and we do support those environments. Please note that each network site does count against the site limit for your license. \[/av\_toggle\] \[av\_toggle title=’Can the plugins be translated?’ tags=” custom\_id=” av\_uid=’av-l9ysq2fl’ sc\_version=’1.0′\] Yes, all of our plugins are translation friendly. \[/av\_toggle\] \[/av\_toggle\_container\] \[/av\_one\_full\]\[/av\_section\] --- ### [Your subscription is active.](https://www.uncannyowl.com/your-subscription-is-active/) **Published:** September 16, 2025 **Author:** Ken **Content:** ### Your subscription is active. You will continue to enjoy the uninterrupted benefits of an Uncanny Owl subscription until you decide to cancel your subscription. If you decide at any time you want to cancel your subscription, simply return to the [purchases and subscriptions page](https://www.uncannyowl.com/my-account/invoices/). Go to [My Account](/my-account/?utm_medium=cf&utm_campaign=cancelled). --- ### [Invalid Subscription](https://www.uncannyowl.com/invalid-subscription/) **Published:** September 22, 2025 **Author:** Ken **Content:** The subscription you attempted to cancel appears to be invalid. Please contact if you believe this to be an error. --- ### [Before you go…](https://www.uncannyowl.com/before-you-go/) **Published:** September 16, 2025 **Author:** Ken **Content:** Please enable JavaScript in your browser to complete this form. ## \[usermeta value=”first\_name”\], before you go… Looking to cancel your subscription? No problem. You’ll still have an active license until the end of your current billing period on \[uo\_sub\_expiration\_date\]. We recommend that you keep your subscription active to ensure you continue to receive updates with new features and fixes. An active subscription also gives you access to our world-class support team, who can help you quickly resolve any unexpected plugin issues that may impact your business. **We send an email two weeks before your renewal date to remind you that your subscription is about renew, along with the amount that will be billed, so there are no surprises.** Would you like to keep your subscription active? [Yes! keep my subscription active for now.](https://www.uncannyowl.com/your-subscription-is-active/?utm_medium=cf&utm_campaign=before-you-go) Continue![Loading](https://www.uncannyowl.com/wp-content/plugins/wpforms/assets/images/submit-spin.svg) # Help us improve We’re interested in learning more about why you want to cancel your subscription. Your responses will be kept confidential. Cancellation reason(s): \*- I don’t want to be automatically charged - I don’t use it enough - It’s too expensive - I found a better alternative - It’s too difficult to use - It doesn’t do what I need - Something else… Please let us know what product was a better fit: Please let us know what functionality was missing: Please let us why you are cancelling your subscription: Next![Loading](https://www.uncannyowl.com/wp-content/plugins/wpforms/assets/images/submit-spin.svg) Renewal let (Price ## Having trouble getting started? Run into an issue? We’re here to help! Before you cancel your subscription, is there something our support team can help you with? **We’ve helped many customers get tremendous value from our plugins by helping to get them up and running.** [Yes, I would like help setting up the plugin.](https://www.uncannyowl.com/my-account/new-support-request/?utm_medium=cf&utm_campaign=get-support) No thanks, continue![Loading](https://www.uncannyowl.com/wp-content/plugins/wpforms/assets/images/submit-spin.svg) ## Don’t like unexpected renewal charges? Neither do we. We send a renewal reminder email 2 weeks before your subscription renews. At that point, you can decide if Uncanny Owl has been able to: 1. **Save you time** by providing intuitive capabilities for your users that reduce the need for manual admin intervention. 2. **Save you money** by providing enhanced LearnDash functionality without the need for custom-built solutions. 3. **Improve the learning experience for your users** with industry-leading features. Would you like to keep your subscription active while you evaluate everything Uncanny Owl plugins can do? [Yes! keep my subscription active for now.](https://www.uncannyowl.com/your-subscription-is-active/?utm_medium=cf&utm_campaign=automatic-renewal) Next![Loading](https://www.uncannyowl.com/wp-content/plugins/wpforms/assets/images/submit-spin.svg) ## Confirm Cancellation Once cancelled, your Uncanny Owl license will expire on \[uo\_sub\_expiration\_date\]. **After that date:** 1. **You’ll stop receiving plugin updates** New features, bug fixes and security updates keep your business running smoothly. 2. **Uncanny Owl’s world-class support team may not be able to help** Our team has helped customers get the most out of their Uncanny Owl plugins, providing tremendous value in the niche WordPress LMS industry. [Keep my subscription active for now.](https://www.uncannyowl.com/your-subscription-is-active/?utm_medium=cf&utm_campaign=confirmation) By clicking below, I confirm that I would like to cancel my subscription. I acknowledge that my license will expire on \[uo\_sub\_expiration\_date\] unless I renew or reactivate before that date. Confirm Cancellation![Loading](https://www.uncannyowl.com/wp-content/plugins/wpforms/assets/images/submit-spin.svg) --- ### [Reasons to Avoid Nulled Uncanny Owl Plugins](https://www.uncannyowl.com/nulled-uncanny-owl-plugins/) **Published:** December 9, 2020 **Author:** Ryan Moore **Content:** We sometimes see questions about the use of our plugins when purchased from sites other than uncannyowl.com and automatorplugin.com, so we put this article together to explain what those plugins are and the risks associated with using them. All Uncanny Owl plugins are released under a GPL (GNU General Public License), meaning the source code is open and can be modified and reused. This keeps things far easier for our customers and for developers that use our products. ## What are nulled plugins? Sometimes people take our plugins and make them available for unauthorized use. Nulled plugins are pirated copies of premium WordPress plugins like ours that are distributed unethically online. Organizations that do this are not affiliated with Uncanny Owl, and users that support these types of sites cause us to lose money and release fewer features. Most importantly for our users, nulled WordPress plugins can compromise the security and integrity of the websites on which these cracked plugins are used, and they are often the cause of website hacks. ## Where to get Uncanny Owl plugins The only authorized places to download and purchase Uncanny Owl plugins are on [uncannyowl.com](https://www.uncannyowl.com/plugins/) and [automatorplugin.com](https://automatorplugin.com/). There are *no other download locations* that are guaranteed to have safe code and where our developers are paid for their work. More specifically, here is a list of our plugins and a link to their download locations: 1. [Uncanny Toolkit for LearnDash](https://wordpress.org/plugins/uncanny-learndash-toolkit/) 2. [Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) 3. [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) 4. [Tin Canny Reporting for LearnDash](https://www.uncannyowl.com/downloads/tin-canny-reporting/) 5. [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) 6. [Uncanny Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) 7. [Uncanny Automator](https://wordpress.org/plugins/uncanny-automator/) 8. [Uncanny Automator Pro](https://automatorplugin.com/pricing/) ## Why you should avoid nulled Uncanny Owl plugins We know that as a business starting out, WordPress plugins can quickly increase your costs. If you’re using Uncanny Owl plugins, maybe our [All Access Pass](https://www.uncannyowl.com/all-access-pass/) can offer some cost savings or if you’re a non-profit you can [contact us](https://www.uncannyowl.com/contact-us-2/) for options. Here are some of the top reasons you should never used a nulled Uncanny Owl plugin: ### 1. Security Uncanny Owl and Uncanny Automator nulled versions are very dangerous and can negatively impact your WordPress security. That’s because many cracked plugins are known to carry malware. Here’s a recent example of nulled plugins opening security vulnerabilities on a WordPress website that were easily exploited: . Hacked plugins can compromise websites and allow attackers to gain personal user information, inject dangerous links, break functionality and become blacklisted from search engines. The potential risk is not worth the reduced cost. ### 2. No support from Uncanny Owl Our team is only able to provide support for users of Uncanny Owl plugins that have an active, legitimate license. Users without a valid license will unfortunately be turned away and there is no third-party provider of support for our plugins. Nulled plugin users are completely on their own if anything goes wrong. ### 3. No access to plugin updates We release plugin updates regularly to ensure compatibility with WordPress, with LearnDash, and with our other plugins. In a typical year we publish approximately 50 plugin updates. Nulled plugin users cannot access these updates and will lose out on important fixes, compatibility changes, new features and more. ### 4. Privacy breaches Downloads that claim to be Uncanny Owl plugins can contain a variety of harmful code. Some may steal site information or intercept information provided by site users, including their usernames, email address and passwords. A customer data breach can significantly damage a brand and organization. These types of issues with cracked plugins can be hard to detected and can often go unnoticed for months as the WordPress site keeps functioning normally. ### 5. Bad for SEO Pirated plugins can destroy search engine rankings. By adding spam links to a site that hijack visitor activity, search engines will start to flag the site itself as malicious and penalize it. In some cases, hacked plugins can even result in search engines delisting your WordPress site completely. ### 6. Developers don’t get paid When nulled plugins are purchased from unauthorized third parties, the money doesn’t go to developers; in fact, it can be used to finance other nefarious activity. There is often no named or known entity behind GPL sites. By diverting revenue away from plugin developers, it makes it harder to continue funding releases and adding new features for Uncanny Owl plugin users. This also makes it harder for us to provide support, create documentation, hire staff and grow the business. Dealing with nulled plugin users also takes time away from our team that could be used making better plugins and supporting paying customers. ## Buying Uncanny Owl plugins through legitimate sources Our Uncanny Toolkit and Uncanny Automator plugins are completely free and a great way to get started with our products. Here’s a complete list with links of where to find our plugins: 1. [Uncanny Toolkit for LearnDash](https://wordpress.org/plugins/uncanny-learndash-toolkit/) 2. [Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) 3. [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) 4. [Tin Canny Reporting for LearnDash](https://www.uncannyowl.com/downloads/tin-canny-reporting/) 5. [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) 6. [Uncanny Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) 7. [Uncanny Automator](https://wordpress.org/plugins/uncanny-automator/) 8. [Uncanny Automator Pro](https://automatorplugin.com/pricing/) All of our plugins come with a 14 day refund period, so there’s really no risk in buying directly from Uncanny Owl, the only legitimate source for our plugins. --- ### [Affiliate Registration](https://www.uncannyowl.com/affiliate-registration/) **Published:** November 14, 2022 **Author:** Ken **Content:** # Earn commissions for Uncanny Owl referrals! Join the Uncanny Owl affiliate program and earn **25% of the price paid** for all licenses purchased through your personal links. For full terms check out [our Affiliate Program Terms of Use](https://www.uncannyowl.com/affiliate-program-terms-use/) page, then set up your affiliate account below to get started! Register a new affiliate account Your Name Username Account Email Payment Email Website URL How will you promote us? [Agree to our Terms of Use and Privacy Policy](https://www.uncannyowl.com/affiliate-program-terms-use/) --- ### [Thank you!](https://www.uncannyowl.com/thank-you/) **Published:** April 14, 2018 **Author:** Ken **Content:** \[av\_section min\_height=” min\_height\_px=’500px’ padding=’default’ shadow=’no-shadow’ bottom\_border=’no-border-styling’ id=’#customtitlebar’ color=’main\_color’ custom\_bg=” src=’https://uncannyowlcom.wpengine.com/wp-content/uploads/2016/03/Title-bar\_1.jpg’ attachment=’1217′ attachment\_size=’full’ attach=’scroll’ position=’top left’ repeat=’stretch’ video=” video\_ratio=’16:9′ overlay\_opacity=’0.5′ overlay\_color=” overlay\_pattern=” overlay\_custom\_pattern=” av\_uid=’av-1k2ukbo’\] \[av\_one\_full first min\_height=” vertical\_alignment=” space=” custom\_margin=” margin=’0px’ padding=’0px’ border=” border\_color=” radius=’0px’ background\_color=” src=” background\_position=’top left’ background\_repeat=’no-repeat’ animation=” av\_uid=’av-1i0ot7o’\] \[av\_textblock size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=” template\_class=” av\_uid=’av-1g2qlck’ sc\_version=’1.0′ admin\_preview\_bg=”\] # Thank You For Completing The Survey! \[/av\_textblock\] \[/av\_one\_full\]\[/av\_section\]\[av\_section min\_height=” min\_height\_px=’500px’ padding=’default’ shadow=’no-shadow’ bottom\_border=’no-border-styling’ id=’plugins-row’ color=’main\_color’ custom\_bg=” src=” attachment=” attachment\_size=” attach=’scroll’ position=’top left’ repeat=’no-repeat’ video=” video\_ratio=’16:9′ overlay\_opacity=’0.5′ overlay\_color=” overlay\_pattern=” overlay\_custom\_pattern=” av\_uid=’av-1ek67r8′\] \[av\_one\_third first min\_height=” vertical\_alignment=’av-align-top’ space=” margin=’0px’ margin\_sync=’true’ row\_boxshadow\_color=” row\_boxshadow\_width=’10’ link=” linktarget=” link\_hover=” padding=’0px’ padding\_sync=’true’ highlight\_size=’1.1′ border=” border\_color=” radius=’0px’ radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_color1=” background\_gradient\_color2=” background\_gradient\_direction=’vertical’ src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ animation=” mobile\_breaking=” mobile\_display=” av\_uid=’av-19rn0d0′ custom\_class=”\] \[av\_textblock size=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” font\_color=” color=” id=” custom\_class=” template\_class=” av\_uid=’av-16jhro4′ sc\_version=’1.0′ admin\_preview\_bg=”\] All of your entries have been saved in the system. If you provided an email address, we’ll follow up soon. We hope you continue to find value in your Uncanny Owl plugin! Please have a look at our other LearnDash plugins. \[/av\_textblock\] \[/av\_one\_third\]\[av\_one\_third min\_height=” vertical\_alignment=’av-align-top’ space=” margin=’0px’ margin\_sync=’true’ row\_boxshadow\_color=” row\_boxshadow\_width=’10’ link=” linktarget=” link\_hover=” padding=’0px’ padding\_sync=’true’ highlight\_size=’1.1′ border=” border\_color=” radius=’0px’ radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=’#f0f0f0′ background\_gradient\_color1=” background\_gradient\_color2=” background\_gradient\_direction=’vertical’ src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ animation=” mobile\_breaking=” mobile\_display=” av\_uid=’av-19rn0d0′ custom\_class=”\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2021/02/all-access-pass-v2.png’ attachment=’95276′ attachment\_size=’full’ align=’center’ styling=” hover=” link=’manually,https://www.uncannyowl.com/all-access-pass/’ target=’\_blank’ caption=” font\_size=” appearance=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ copyright=” animation=’no-animation’ av\_uid=’av-17xp944′ custom\_class=” admin\_preview\_bg=”\]\[/av\_image\] \[av\_textblock size=” font\_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” av\_uid=’av-16jhro4′ custom\_class=” admin\_preview\_bg=”\] ### All Access Pass for LearnDash Plugins Get all 5 of our premium LearnDash plugins for up to 10 websites. This bundle includes **Toolkit Pro**, **Uncanny Groups**, **Tin Canny**, **Uncanny Codes** and **Uncanny Continuing Education Credits.** \[/av\_textblock\] \[av\_button label=’Learn More’ link=’manually,https://www.uncannyowl.com/all-access-pass/’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” icon\_select=’no’ icon=’ue800′ font=’entypo-fontello’ color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ av\_uid=’av-14s2w10′ custom\_class=” admin\_preview\_bg=”\] \[/av\_one\_third\]\[av\_one\_third min\_height=” vertical\_alignment=’av-align-top’ space=” margin=’0px’ margin\_sync=’true’ row\_boxshadow\_color=” row\_boxshadow\_width=’10’ link=” linktarget=” link\_hover=” padding=’0px’ padding\_sync=’true’ highlight\_size=’1.1′ border=” border\_color=” radius=’0px’ radius\_sync=’true’ column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=’#f0f0f0′ background\_gradient\_color1=” background\_gradient\_color2=” background\_gradient\_direction=’vertical’ src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ animation=” mobile\_breaking=” mobile\_display=” av\_uid=’av-19rn0d0′ custom\_class=”\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2017/09/Free@2x.png’ attachment=’12851′ attachment\_size=’full’ align=’center’ styling=” hover=” link=’manually,https://en-ca.wordpress.org/plugins/uncanny-learndash-toolkit/’ target=’\_blank’ caption=” font\_size=” appearance=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ copyright=” animation=’no-animation’ av\_uid=’av-17xp944′ custom\_class=” admin\_preview\_bg=”\]\[/av\_image\] \[av\_textblock size=” font\_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” av\_uid=’av-16jhro4′ custom\_class=” admin\_preview\_bg=”\] ### Uncanny Toolkit for LearnDash Adds a variety of functions to LearnDash sites to improve the learner experience and LearnDash development workflow. **Recommended by LearnDash**, this plugin is a must for all new LearnDash sites. \[/av\_textblock\] \[av\_button label=’Free Download!’ link=’manually,https://wordpress.org/plugins/uncanny-learndash-toolkit/’ link\_target=’\_blank’ size=’large’ position=’center’ icon\_select=’no’ icon=’ue800′ font=’entypo-fontello’ color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ av\_uid=’av-14s2w10′\] \[/av\_one\_third\]\[av\_one\_third first min\_height=” vertical\_alignment=’av-align-top’ space=” margin=’0px’ margin\_sync=’true’ padding=’0px’ padding\_sync=’true’ border=” border\_color=” radius=’0px’ radius\_sync=’true’ background\_color=’#f0f0f0′ src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ animation=” av\_uid=’av-12eq6qs’\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2017/09/Pro@2x.png’ attachment=’12853′ attachment\_size=’full’ align=’center’ styling=” hover=” link=’download,1377′ target=” caption=” font\_size=” appearance=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ copyright=” animation=’no-animation’ av\_uid=’av-110c23o’ custom\_class=” admin\_preview\_bg=”\] Uncanny LearnDash Toolkit Pro \[/av\_image\] \[av\_textblock size=” font\_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” av\_uid=’av-zk0ww4′ custom\_class=” admin\_preview\_bg=”\] ### Uncanny Toolkit Pro for LearnDash Adds even more powerful features to LearnDash sites including **autocomplete lessons and topics**, a **learner transcript**, an **enhanced course grid**, a LearnDash-optimized **user import tool** and much more. \[/av\_textblock\] \[av\_button label=’Learn More’ link=’manually,https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/’ link\_target=” size=’large’ position=’center’ icon\_select=’no’ icon=’ue800′ font=’entypo-fontello’ color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ av\_uid=’av-3bqibo’\] \[/av\_one\_third\]\[av\_one\_third min\_height=” vertical\_alignment=’av-align-top’ space=” margin=’0px’ margin\_sync=’true’ padding=’0px’ padding\_sync=’true’ border=” border\_color=” radius=’0px’ radius\_sync=’true’ background\_color=’#f0f0f0′ src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ animation=” av\_uid=’av-3859jo’\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2017/09/tincanny@2x.png’ attachment=’12854′ attachment\_size=’full’ align=’center’ styling=” hover=” link=’download,4113′ target=” caption=” font\_size=” appearance=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ copyright=” animation=’no-animation’ av\_uid=’av-usbxgk’ custom\_class=” admin\_preview\_bg=”\]\[/av\_image\] \[av\_textblock size=” font\_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” av\_uid=’av-sp9dsk’ custom\_class=” admin\_preview\_bg=”\] ### Tin Canny Reporting for LearnDash Adds **powerful reporting tools** to your LearnDash site. Easily upload **Storyline**, **Captivate** and other eLearning media to your LearnDash courses. Combine with the Uncanny Toolkit Pro to add **time metrics** to the reports. \[/av\_textblock\] \[av\_button label=’Learn More’ link=’manually,https://www.uncannyowl.com/downloads/tin-canny-reporting/’ link\_target=” size=’large’ position=’center’ icon\_select=’no’ icon=’ue800′ font=’entypo-fontello’ color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ av\_uid=’av-s1ltxg’\] \[/av\_one\_third\]\[av\_one\_third min\_height=” vertical\_alignment=’av-align-top’ space=” margin=’0px’ margin\_sync=’true’ padding=’0px’ padding\_sync=’true’ border=” border\_color=” radius=’0px’ radius\_sync=’true’ background\_color=’#f0f0f0′ src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ animation=” av\_uid=’av-anr6j8′\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2016/03/learndash-groups-banner-small.png’ attachment=’13957′ attachment\_size=’full’ align=’center’ styling=” hover=” link=’download,13839′ target=” caption=” font\_size=” appearance=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ copyright=” animation=’no-animation’ av\_uid=’av-95cdk4′ custom\_class=” admin\_preview\_bg=”\]\[/av\_image\] \[av\_textblock size=” font\_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” av\_uid=’av-6uxrpw’ custom\_class=” admin\_preview\_bg=”\] ### Uncanny Groups for LearnDash Make it easy for your customers and member organizations to **manage their learners in the front end**, **track their progress** with powerful reports, and **buy courses and course licenses**. \[/av\_textblock\] \[av\_button label=’Learn More’ link=’download,13839′ link\_target=” size=’large’ position=’center’ icon\_select=’no’ icon=’ue800′ font=’entypo-fontello’ color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ av\_uid=’av-n1pok’\] \[/av\_one\_third\]\[av\_one\_third first min\_height=” vertical\_alignment=’av-align-top’ space=” margin=’0px’ margin\_sync=’true’ padding=’0px’ padding\_sync=’true’ border=” border\_color=” radius=’0px’ radius\_sync=’true’ background\_color=’#f0f0f0′ src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ animation=” av\_uid=’av-q26ghg’\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2017/09/codes@2x.png’ attachment=’12865′ attachment\_size=’full’ align=’center’ styling=” hover=” link=’download,4909′ target=” caption=” font\_size=” appearance=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ copyright=” animation=’no-animation’ av\_uid=’av-os6iac’ custom\_class=” admin\_preview\_bg=”\]\[/av\_image\] \[av\_textblock size=” font\_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” av\_uid=’av-87lac’ custom\_class=” admin\_preview\_bg=”\] ### Uncanny Codes for WordPress The best code **generation**, **redemption** and **sales** plugin for WordPress. Link codes to 50+ WordPress plugins and apps. \[/av\_textblock\] \[av\_button label=’Learn More’ link=’manually,https://www.uncannyowl.com/downloads/uncanny-learndash-codes/’ link\_target=” size=’large’ position=’center’ icon\_select=’no’ icon=’ue800′ font=’entypo-fontello’ color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ av\_uid=’av-k9lo4k’\] \[/av\_one\_third\]\[av\_one\_third min\_height=” vertical\_alignment=’av-align-top’ space=” margin=’0px’ margin\_sync=’true’ padding=’0px’ padding\_sync=’true’ border=” border\_color=” radius=’0px’ radius\_sync=’true’ background\_color=’#f0f0f0′ src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ animation=” av\_uid=’av-ilsoes’\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2017/09/ceu@2x.png’ attachment=’12850′ attachment\_size=’full’ align=’center’ styling=” hover=” link=’download,11141′ target=” caption=” font\_size=” appearance=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ copyright=” animation=’no-animation’ av\_uid=’av-hxb4as’ custom\_class=” admin\_preview\_bg=”\]\[/av\_image\] \[av\_textblock size=” font\_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” av\_uid=’av-f88e44′ custom\_class=” admin\_preview\_bg=”\] ### Uncanny Continuing Education Credits Track, report on, and **award certificates based on credits** awarded for completing LearnDash courses. **Assign credits, CEUs or CPD values to your courses** and track the cumulative accomplishments and certifications of your learners. \[/av\_textblock\] \[av\_button label=’Learn More’ link=’manually,https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/’ link\_target=” size=’large’ position=’center’ icon\_select=’no’ icon=’ue800′ font=’entypo-fontello’ color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ av\_uid=’av-dmkzlw’\] \[/av\_one\_third\]\[av\_one\_third min\_height=” vertical\_alignment=’av-align-top’ space=” margin=’0px’ margin\_sync=’true’ padding=’0px’ padding\_sync=’true’ border=” border\_color=” radius=’0px’ radius\_sync=’true’ background\_color=’#f0f0f0′ src=” attachment=” attachment\_size=” background\_position=’top left’ background\_repeat=’no-repeat’ animation=” av\_uid=’av-anr6j8′\] \[av\_image src=’https://www.uncannyowl.com/wp-content/uploads/2020/05/uncanny-automator-for-learndash-1030×579.png’ attachment=’64834′ attachment\_size=’large’ align=’center’ styling=” hover=” link=’manually,https://automatorplugin.com/’ target=” caption=” font\_size=” appearance=” overlay\_opacity=’0.4′ overlay\_color=’#000000′ overlay\_text\_color=’#ffffff’ copyright=” animation=’no-animation’ av\_uid=’av-95cdk4′ custom\_class=” admin\_preview\_bg=”\]\[/av\_image\] \[av\_textblock size=” font\_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” av\_uid=’av-6uxrpw’ custom\_class=” admin\_preview\_bg=”\] ### Uncanny Automator Connect Learndash to other plugins automatically to slash admin time and plugin costs. Use triggers like filling out a form, passing a quiz or simply clicking a button to enroll users in courses and groups or mark things complete or incomplete. Build custom workflows without custom code! \[/av\_textblock\] \[av\_button label=’Free Download!’ link=’manually,https://wordpress.org/plugins/uncanny-automator/’ link\_target=’\_blank’ size=’large’ position=’center’ label\_display=” icon\_select=’no’ icon=’ue800′ font=’entypo-fontello’ color=’theme-color’ custom\_bg=’#444444′ custom\_font=’#ffffff’ av\_uid=’av-n1pok’ custom\_class=” admin\_preview\_bg=”\] \[/av\_one\_third\]\[/av\_section\]\[av\_codeblock wrapper\_element=’style’ wrapper\_element\_attributes=’type=text/css’ codeblock\_type=” deactivate\_shortcode=’aviaTBdeactivate\_shortcode’ deactivate\_wrapper=’aviaTBdeactivate\_wrapper’ alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-2duikk’ sc\_version=’1.0′\] \#plugins-row p {line-height:normal;} .avia-image-container{height:200px;overflow:hidden;} \#plugins-row h3 {padding:15px 0;} @media(min-width:661px){ .av-image-caption-overlay{ height:40%;top:25%; } } .av-caption-image-overlay-bg{opacity:0.8 !important;} .av-image-caption-overlay-center {font-weight:bold;} body .av-overlay-hover-deactivate:hover .av-caption-image-overlay-bg{opacity:0.5 !important} @media(max-width:1200px){ .av-image-caption-overlay{ height:60%; } .av-image-caption-overlay-center {font-size:20px;}} .tablepress tr th:first-child, .tablepress tr td:first-child {border-left:none;font-weight:normal;} @media(max-width:660px){ \#tablepress-30, #tablepress-30 tbody, #tablepress-30 thead, #tablepress-30 tr, #tablepress-30 th, #tablepress-30 td { display: block; width: 100% !important; } \#tablepress-30 td { border-top: 1px solid #ddd !important; } } \[/av\_codeblock\] \[av\_textblock size=” font\_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” av\_uid=’av-k87pf3h7′ custom\_class=” admin\_preview\_bg=”\] ### Customer Feedback \[/av\_textblock\] \[av\_hr class=’invisible’ height=’20’ shadow=’no-shadow’ position=’center’ custom\_border=’av-border-thin’ custom\_width=’50px’ custom\_border\_color=” custom\_margin\_top=’30px’ custom\_margin\_bottom=’30px’ icon\_select=’yes’ custom\_icon\_color=” icon=’ue808′ font=’entypo-fontello’ av\_uid=’av-k87pmfy1′ custom\_class=” admin\_preview\_bg=”\] \[av\_textblock size=” font\_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” av\_uid=’av-k87pf3h7′ custom\_class=” admin\_preview\_bg=”\] \[table id=30 /\] \[/av\_textblock\] --- ### [Support for Free Uncanny Owl LearnDash Plugins](https://www.uncannyowl.com/support-for-free-uncanny-owl-learndash-plugins/) **Published:** March 6, 2016 **Author:** Ryan Moore **Content:** \[av\_section min\_height=” min\_height\_px=’500px’ padding=’default’ shadow=’no-shadow’ bottom\_border=’no-border-styling’ id=’#customtitlebar’ color=’main\_color’ custom\_bg=” src=’https://www.uncannyowl.com/wp-content/uploads/2016/03/Title-bar\_1.jpg’ attachment=’1217′ attachment\_size=’full’ attach=’scroll’ position=’top left’ repeat=’stretch’ video=” video\_ratio=’16:9′ overlay\_opacity=’0.5′ overlay\_color=” overlay\_pattern=” overlay\_custom\_pattern=” av\_uid=’av-pwgmz’\] \[av\_one\_full first min\_height=” vertical\_alignment=” space=” custom\_margin=” margin=’0px’ padding=’0px’ border=” border\_color=” radius=’0px’ background\_color=” src=” background\_position=’top left’ background\_repeat=’no-repeat’ animation=” av\_uid=’av-lmnln’\] \[av\_textblock size=” font\_color=” color=” av\_uid=’av-ddb4j’\] # Support for Free LearnDash Plugins \[/av\_textblock\] \[/av\_one\_full\] \[/av\_section\] \[av\_textblock size=” font\_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” av\_uid=’av-3q83′ custom\_class=” admin\_preview\_bg=”\] We provide limited, generic (i.e. not site specific) support for the Uncanny LearnDash Toolkit directly through the [WordPress plugin directory page](https://wordpress.org/support/plugin/uncanny-learndash-toolkit). We’ll do our best to provide general support there if you do run into any issues. \[/av\_textblock\] \[av\_codeblock wrapper\_element=” wrapper\_element\_attributes=” codeblock\_type=” alb\_description=” id=” custom\_class=” template\_class=” av\_uid=’av-kqv9x108′ sc\_version=’1.0′\] \[/av\_codeblock\] --- ### [Uncanny LP Survey](https://www.uncannyowl.com/uncanny-lp-survey/) **Published:** March 12, 2018 **Author:** Ken **Content:** \[gravityform id=”16″ title=”false” description=”false”\] --- ### [How to cancel your subscription](https://www.uncannyowl.com/how-to-cancel-your-subscription/) **Published:** September 29, 2017 **Author:** Ken **Content:** ### If you paid by entering your credit card information on our site: 1. Log into [your account](https://www.uncannyowl.com/my-account/). 2. Click *Purchases*. 3. Find the subscription you wish to cancel under *Subscriptions*. 4. Click *Cancel*, then confirm the cancellation by clicking *OK.* ### If you paid via PayPal: 1. Log in to [PayPal](https://paypal.com). 2. Click the *gear icon.* 3. Click *Payments*. 4. Click *Manage pre-approved payments*. 5. Find the subscription payment in the list and click the associated link. 6. Click *Cancel*. ![](https://www.uncannyowl.com/wp-content/uploads/2017/09/paypal-subscription.png "paypal-subscription - Uncanny Owl") --- ### [Cookie Policy](https://www.uncannyowl.com/cookie-policy/) **Published:** May 24, 2018 **Author:** Ryan Moore **Content:** This site uses cookies – small text files that are placed on your machine to help the site provide a better user experience. In general, cookies are used to retain user preferences, store information for things like shopping carts, and provide anonymised tracking data to third party applications like Google Analytics. As a rule, cookies will make your browsing experience better. However, you may prefer to disable cookies on this site and on others. The most effective way to do this is to disable cookies in your browser. We suggest consulting the Help section of your browser or taking a look at [the About Cookies website](https://www.aboutcookies.org) which offers guidance for all modern browsers --- ### [Affiliate Program Terms of Use](https://www.uncannyowl.com/affiliate-program-terms-use/) **Published:** August 1, 2016 **Author:** Ryan Moore **Content:** Payments are processed by PayPal. You must have an account with PayPal to join the affiliate program. All payments will be made in US dollars. We reserve the right to reverse commissions on chargeback or fraud transactions. Affiliate program cookies are stored on client devices for 10 days. You cannot earn commissions on your own affiliate purchases. You cannot earn commissions by placing PPC ads (e.g. Google Adsense) unless explicitly specified and approved. Affiliates that are found to be in violation of the Affiliate Program terms will forfeit commissions related to aforementioned violations, and may result in termination of the affiliate account without notice. --- ### [Uncanny LP Migration](https://www.uncannyowl.com/uncanny-lp-migration/) **Published:** October 10, 2019 **Author:** Ken **Content:** \[av\_one\_half first min\_height=” vertical\_alignment=” space=” custom\_margin=” margin=’0px’ row\_boxshadow=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ link=” linktarget=” link\_hover=” padding=’0px’ highlight=” highlight\_size=” border=” border\_color=” radius=’0px’ column\_boxshadow=” column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_color1=” background\_gradient\_color2=” background\_gradient\_direction=’vertical’ src=” background\_position=’top left’ background\_repeat=’no-repeat’ animation=” mobile\_breaking=” mobile\_display=” av\_uid=’av-1pjw4id’\] \[av\_textblock size=” font\_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” av\_uid=’av-k1l2qxtq’ custom\_class=” admin\_preview\_bg=”\] ### Uncanny LP Migration Scheduling Request We will be migrating all Uncanny LP sites to a new host on Amazon Web Services (AWS) to increase the reliability and performance of Uncanny LP sites. Here’s an overview of the process: 1. Complete the form on the right to request a migration date and time. 2. We will confirm the date and time via email. 3. At the designated time, your site will be placed into maintenance mode for anywhere from 1-3 hours (typically closer to 1 hour) while the site is migrated. 4. We will send an email with your site’s new IP address as soon as the site has been migrated so that you can update your domain’s DNS records. **You will need to have someone available to do this during the migration window, or your site will remain in maintenance mode until this step is completed.** 5. Once the DNS change has propagated, we will turn off maintenance mode and access to your site will return to normal. We realize this is an inconvenience, but believe this is a necessary change that will result in a much improved experience for you and your customers moving forward. If you have any questions about this process, please don’t hesitate to email us at . \[/av\_textblock\] \[/av\_one\_half\]\[av\_one\_half min\_height=” vertical\_alignment=” space=” custom\_margin=” margin=’0px’ row\_boxshadow=” row\_boxshadow\_color=” row\_boxshadow\_width=’10’ link=” linktarget=” link\_hover=” padding=’0px’ highlight=” highlight\_size=” border=” border\_color=” radius=’0px’ column\_boxshadow=” column\_boxshadow\_color=” column\_boxshadow\_width=’10’ background=’bg\_color’ background\_color=” background\_gradient\_color1=” background\_gradient\_color2=” background\_gradient\_direction=’vertical’ src=” background\_position=’top left’ background\_repeat=’no-repeat’ animation=” mobile\_breaking=” mobile\_display=” av\_uid=’av-185oefp’\] \[av\_textblock size=’12’ font\_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” av\_uid=’av-olvw8l’ custom\_class=” admin\_preview\_bg=”\] \[gravityform id=”19″ title=”false” description=”true”\] \[/av\_textblock\] \[/av\_one\_half\] --- ### [Cart](https://www.uncannyowl.com/cart/) **Published:** March 17, 2016 **Author:** Ryan Moore **Content:** Number of items in cart: 0 - [ Choose a plugin ](/?utm_source=uo_web&utm_medium=empty_cart&utm_content=shop_button#our-products) - Subtotal: $0.00 - Estimated Tax: $0.00 - Total: $0.00 - [Checkout](https://www.uncannyowl.com/checkout/) --- ### [Uncanny LP Documentation and Training](https://www.uncannyowl.com/uncanny-lp-learndash-lms-documentation/) **Published:** June 17, 2017 **Author:** Ken **Content:** \[av\_textblock size=” font\_color=” color=”\] **Welcome to Uncanny LP documentation and training!** We’ve set up Uncanny LP documentation as a series of LearnDash courses. Go through the courses and lessons in order, or jump around between lessons and topics as needed. **Are you an Uncanny LP customer?** [Log in now to track your progress](/login)! \[/av\_textblock\] \[av\_textblock size=” font\_color=” color=”\] \[uo\_dashboard orderby=”menu\_order” order=”asc” show=”open”\] \[/av\_textblock\] --- ## Articles ### [Translating Uncanny Owl Groups plugin using WPML](https://www.uncannyowl.com/knowledge-base/translating-uncanny-owl-groups-plugin-using-wpml/) **Published:** June 16, 2023 **Author:** Ryan Moore **Content:** ### Overview Uncanny Groups for LearnDash is fully compatible with WPML. You can translate all plugin strings — labels, buttons, messages, and form text — using WPML’s built-in String Translation interface. ### Prerequisites Before translating, ensure the following plugins are installed and active: - **WPML Multilingual CMS** - **WPML String Translation** You will also need at least one secondary language configured in **WPML > Languages**. ### Setting up WPML Language URL Format Uncanny Groups requires the WPML Language URL format to be set to **Different languages in directories.** With this option select for Language URL format, groups will be able to display language specific group user records in Group Management and Report pages. After selecting the option **Different languages in directories**, check the option **Use directory for default language** and then check the option **A page** (see image below for reference). ![Language URL format settings panel with options to determine which language visitors see (directories, root page, or per-language domain) and a Save button.](https://www.uncannyowl.com/wp-content/uploads/2023/06/WPML-set-up-for-Groups-1.png "WPML set up for Groups - Uncanny Owl")### Choosing a Translation Method WPML offers two ways to translate plugin strings. You can use either method independently or combine them. **Method****Best for****PO file export/import**Translating many strings at once, or collaborating with a translator outside WordPress**Manual string translation**Translating a small number of strings, or making quick edits to existing translations### Method 1: PO File Export and Import This method lets you export all translatable strings to a .po file, edit translations offline using a tool like [Poedit](https://poedit.net/), and then re-import the file into WPML. #### Export the PO file 1. In the WordPress admin, go to **WPML > String Translation**. 2. In the **Domain** dropdown, select uncanny-learndash-groups. 3. Check **Also include translations** to include any strings already translated. 4. Click **Download** to save the .po file to your computer. ![WPML String Translation: Export strings to .po/.pot file; select domain and include translations (German).​](https://www.uncannyowl.com/wp-content/uploads/2023/06/steps-1-5-1030x450.png "steps 1-5 - Uncanny Owl") #### Add translations offline 5. Open the .po file in Poedit or another .po editor. 6. Add or update translations for each string. 7. Save the file. #### Import the translated PO file 8. Return to **WPML > String Translation**. 9. Click **Import** and select your edited .po file. 10. When prompted, select **Also create translations according to the .po file** to apply all translated strings automatically. 11. Click **Import**. A review page will appear. 12. Review the strings to be added and click **Add selected strings** to finalize the import. ![WPML admin screen showing Import/export .po file options with file picker and German translations setting](https://www.uncannyowl.com/wp-content/uploads/2023/06/steps-8-13-1030x446.png "steps 8-13 - Uncanny Owl") ### Method 2: Manual String Translation This method lets you translate individual strings directly inside the WordPress admin without any file downloads. 1. In the WordPress admin, go to **WPML > String Translation**. 2. In the **Domain** dropdown, select uncanny-learndash-groups. 3. Browse the list of strings or use the search field to find the string you want to translate. 4. Click the **+** (plus) icon next to a string to open the translation field. 5. Enter your translation and click **Save**. Repeat process for each string you want to translate. ![WPML String Translation screen in WordPress admin, showing domain filter set to uncanny-learndash-groups (910) and a list of translatable strings](https://www.uncannyowl.com/wp-content/uploads/2023/06/manual-string-translation-steps-1-3-1030x664.png "manual string translation steps 1-3 - Uncanny Owl") ![Panel labeled Translation to German with a large text box for entering the translation.](https://www.uncannyowl.com/wp-content/uploads/2023/06/add-translation.png "add translation - Uncanny Owl") ### Combining Both Methods We recommend using the PO file method for your initial translation, then using manual string translation for minor corrections or additions. After a successful PO file import, all imported strings remain individually editable in the String Translation interface — there is no need to re-upload the entire file for small updates. ### Related Articles - [Uncanny Groups Overview](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) - [Getting Started with Uncanny Groups](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-groups-for-learndash/) - [Template Overrides](https://www.uncannyowl.com/knowledge-base/extending-uncanny-learndash-groups/) - [Actions and Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers/) - [Shortcode Quick Reference](https://www.uncannyowl.com/knowledge-base/shortcode-quick-reference/) **Article Categories:** Uncanny Groups for LearnDash --- ### [Getting Started with Uncanny Codes](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-codes/) **Published:** June 2, 2026 **Author:** David Chambo **Content:** ### What Is Uncanny Codes? Uncanny Redemption Codes lets you create unique codes that grant users access to LearnDash courses, LearnDash groups, or WordPress roles when redeemed. You generate batches of codes, then distribute them to users through forms, email, WooCommerce, or any other channel. When a user enters a valid code, they automatically receive the access associated with that code. Common use cases include selling course access through unique codes, distributing promotional or gift codes, onboarding corporate or institutional learners in bulk, and providing access codes as part of a product bundle. ### How Codes Work The basic flow is straightforward: 1. **Create a code batch** — Generate a batch of codes and associate them with one or more LearnDash courses, groups, or WordPress roles. 2. **Distribute the codes** — Share the codes with your users through a registration form, a redemption page, a WooCommerce product, or any other method. 3. **Users redeem codes** — When a user enters a valid code, they are automatically enrolled in the associated courses or groups. Each code can be configured for single or multiple redemptions, and you can track redemption status, cancel codes, and export code data at any time. ### Choose Your Workflow Uncanny Codes supports several different workflows depending on how you want to distribute codes. Use the guide below to find the right approach for your site. #### I want to sell codes through my WooCommerce store If you’re selling course or group access as a product in WooCommerce, you can link a code batch to a WooCommerce product. When customers purchase the product, they automatically receive codes from the batch. **Start here:** - [Selling Codes with WooCommerce](https://www.uncannyowl.com/knowledge-base/sell-uncanny-codes/) — Set up a WooCommerce product linked to a code batch #### I want users to redeem codes during registration If you want new users to enter a code as part of the registration process (so they create an account and get enrolled in one step), you can add a code field to a registration form. Uncanny Codes works with several popular form plugins. **Start here:** - [Using Codes with Gravity Forms](https://www.uncannyowl.com/knowledge-base/using-codes-gravity-forms/) - [Using Codes with WPForms](https://www.uncannyowl.com/knowledge-base/using-codes-with-wpforms/) - [Using Codes with Formidable Forms](https://www.uncannyowl.com/knowledge-base/using-codes-with-formidable-forms/) - [Using Codes With the Built-In Registration Form](https://www.uncannyowl.com/knowledge-base/using-codes-custom-registration-form/) - [Using Codes with Theme My Login](https://www.uncannyowl.com/knowledge-base/using-codes-theme-login/) #### I want existing users to redeem codes on my site If your users already have accounts and you want to give them a simple way to enter a code and gain access, use the standalone redemption shortcode. This places a code input field on any page. **Start here:** - [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/) — Add a redemption form to any page with a shortcode #### I want to distribute codes manually (email, print, etc.) You can generate a batch of codes and export them as a CSV file, then distribute the codes however you like — by email, printed on cards, included in event materials, etc. Users can then redeem the codes through a form or standalone redemption page on your site. **Start here:** - [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/) — Create a code batch - [Viewing and Editing Codes](https://www.uncannyowl.com/knowledge-base/view-codes/) — Export codes as CSV for distribution #### I want to use codes with Uncanny Automator If you use Uncanny Automator, you can trigger automations when codes are redeemed, or generate and send codes as part of an automation recipe. **Start here:** - [Connecting codes to Uncanny Automator](https://www.uncannyowl.com/knowledge-base/connect-codes-to-uncanny-automator/) ### First-Time Setup Checklist Before distributing codes, make sure you’ve completed these steps: 1. **Install and activate** the Uncanny Redemption Codes plugin and enter your license key. See [Set up Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/). 2. **Review the Settings page** under **Uncanny Codes > Settings**. Pay particular attention to the LearnDash group behavior setting — this controls whether users are removed from existing groups when they redeem a new group code. We recommend leaving the “keep existing groups” option checked. 3. **Create your first code batch** under **Uncanny Codes > Add New Batch**. See [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/). 4. **Set up a redemption method** — choose a form plugin integration, the standalone redemption shortcode, or WooCommerce, depending on your workflow (see the section above). 5. **Test the flow** — Generate a test code, redeem it as a test user, and verify that the correct course or group access is granted. ### Managing Codes Once your codes are in use, you’ll want to monitor and manage them: - [Viewing and Editing Codes](https://www.uncannyowl.com/knowledge-base/view-codes/) — Check redemption status, edit individual codes, and download CSV reports - [Cancelling Codes](https://www.uncannyowl.com/knowledge-base/cancelling-codes/) — Revoke codes that are no longer valid - [Template Overrides](https://www.uncannyowl.com/knowledge-base/template-overrides/) — Customize the appearance of code forms using theme-safe template overrides ### Related Articles - [Set up Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/) — Installation, settings, and configuration - [Troubleshooting & FAQ](https://www.uncannyowl.com/knowledge-base/troubleshooting-faq/) — Common issues and solutions - [Developer Hooks & Filters Reference](https://www.uncannyowl.com/knowledge-base/developer-hooks-filters-reference/) — Extensibility points for developers **Article Categories:** Uncanny Redemption Codes --- ### [Actions/Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers/) **Published:** March 19, 2019 **Author:** Ken **Excerpt:** A quick reference guide to the actions/filters available for developers. **Content:** ### Overview Uncanny Groups exposes a number of actions and filters for advanced developers building custom functionality on top of the plugin. **Please note:** No support is provided for the use of these hooks. They’re intended for developers comfortable working with WordPress actions and filters. ### Group Management & report customization **Hook****Type****What it does**`uo_report_menu_items`Filter**(New in 6.1.2)** Adds or modifies items in the Group Management page’s user dropdown menu, so you can surface custom actions to Group Leaders.`ulgm_group_course_report_columns`Filter**(6.1.4)** Adds, removes, or reorders columns in the Group Course Report.`ulgm_group_courses_list_get_posts_vars`FilterFilters the query variables used to retrieve courses on the Group Management page (receives post vars and group ID).`ulgm_group_courses_list_courses`FilterFilters the retrieved courses list before it’s displayed.`ulgmGroupLeaderData`FilterFilters all data sent to the Group Management page tables (enrolled users, leader data, management features).#### Example: add a custom item to the user dropdown ``` add_filter( 'uo_report_menu_items', function ( $items, $buttons ) { // Each item is an HTML string (typically a ). Add your own: $items['view_profile'] = '' . esc_html__( 'View Profile', 'your-textdomain' ) . ''; return $items; }, 10, 2 ); ``` Illustrative only. In v6.1.7 the filter receives the menu items as an associative array of **HTML strings** (keyed by button name, e.g. quiz\_report\_button), and a second argument that is an **array of boolean flags** indicating which built-in buttons are enabled — not a group ID. Inspect the incoming values before modifying them, as the shape may change between versions. ### Front-end table events (JavaScript) These jQuery events fire after the front-end tables finish loading, so you can hook in with custom scripts: - `enrolledUsersTableDataTableCreated` - `enrolledLeaderTableDataTableCreated` ### User management **Hook****Type****What it does**`ulgm_existing_group_user_added`ActionFires when an existing user is added to a group.`ulgm_group_user_invited`ActionFires when a new user is invited.`ulgm_group_user_removed`ActionFires when a user is removed.`ulgm_do_not_send_existing_user_email`FilterControls whether the email is sent for existing users.`ulgm_do_not_send_new_user_email`FilterControls whether the email is sent for newly invited users.`ulgm_gdpr_is_group_leader_allowed`FilterValidates group leader permissions before a user is added.### Leader management **Hook****Type****What it does**`ulgm_group_leader_added`ActionFires when a group leader is added.`ulgm_group_leader_removed`ActionFires when a group leader is removed.### Email customization **Hook****What it controls**`ulgm_redemption_email_to` / `ulgm_redemption_email_subject` / `ulgm_redemption_email_body`Redemption email recipient, subject, and body`ulgm_welcome_email_to` / `ulgm_welcome_email_subject` / `ulgm_welcome_email_body`Welcome email recipient, subject, and body`ld_group_email_users_personalize_subject` / `ld_group_email_users_personalize_message`Personalization of bulk “Email Users” campaigns`ulgm_redemption_email_sent`Action fired when a redemption email is sent`ulgm_do_not_send_redemption_email`Controls whether the redemption email is sent### Other hooks **Hook****Type****What it does**`uo_redirect_after_group_created`FilterFilters the redirect URL after a group is created.### REST API filters These filter the data returned by the plugin’s REST API endpoints: - `ulgm_rest_api_get_user_course_data` - `ulgm_rest_api_get_group_courses` - `ulgm_rest_api_get_essays_data` - `ulgm_rest_api_get_quiz_data` - `ulgm_rest_api_get_assignments_data` ### Related Articles - [Template Overrides](https://www.uncannyowl.com/knowledge-base/extending-uncanny-learndash-groups/) - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) - [Configure Group Emails](https://www.uncannyowl.com/knowledge-base/configuring-group-emails/) **Article Categories:** Uncanny Groups for LearnDash --- ### [Add Seats and Courses after Group Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-and-courses-after-group-purchase/) **Published:** September 19, 2017 **Author:** Ryan Moore **Excerpt:** Learn how Group Leaders can add seats or courses to their groups after their initial purchase. **Content:** ### Overview After a group has been purchased, Group Leaders can expand it on their own — adding more seats to bring in new learners, or adding courses to give the group access to new content — all without contacting an admin. ### Which Groups Support This Feature The **Add Seats** and **Add Courses** buttons appear on the Group Management page only for groups that were created through a WooCommerce purchase. Specifically: **Group type****Add Seats Button****Add Courses Button**Created via **Custom Group License** (Buy Courses/Group page)YesYesCreated via **pre-configured license** (non-subscription)YesNoCreated via **subscription-based license**Yes — see [Adding Seats after Subscription Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-after-subscription-based-group-purchase/)No**Manually created** (admin-created, no purchase)NoNo**Note:** If a Group Leader does not see these buttons, confirm that their group was created through a qualifying purchase and that the buttons have not been hidden using the Group Management page attributes. ### Adding Seats Group Leaders use **Add Seats** to increase the maximum number of learners their group can hold. 1. The Group Leader navigates to their **Group Management page** (the frontend page configured under **Uncanny Groups > Settings**). 2. They click the **Add Seats** button for the relevant group. 3. They are redirected to a Woo cart where they can enter the number of **additional seats** they want to purchase. 4. They review the price — bulk discounts are applied automatically based on the group’s *total* seat count after the purchase, not just the seats being added. (See the example below.) 5. They complete the checkout. Once the order reaches **Completed** status, the new seats are added to the group. ![Enrolled users panel: 1 user, 19 of 20 seats remaining, with an Add seats button.](https://www.uncannyowl.com/wp-content/uploads/2017/09/Add-Seats-button.png "Add Seats button - Uncanny Owl") #### How Bulk Discounts Apply to Seat Additions Bulk discounts are calculated against the group’s total seat count after the addition, which means adding seats can reduce the per-seat price retroactively for the whole group. **Illustrative example (numbers are for explanation only, not actual product pricing):** Suppose a group has 10 seats and the Group Leader adds 2 more, bringing the total to 12. If a bulk discount tier applies to groups of 10 or more, that tier is evaluated against the new total of 12 seats. Under that tier, the discount applies to all 12 seats. See [Configure Bulk Discounts](https://www.uncannyowl.com/knowledge-base/configure-bulk-discounts/) for instructions on setting up discount tiers. ### Adding Courses If a group is created by the purchase of a **Custom Group Licenses** on the Buy Courses/Group page, then Group Leaders will see the **Add Courses** button on the **Group Management page**. Group Leaders use **Add Courses** to give their group access to additional LearnDash courses. Only courses with a corresponding **LearnDash Group Course** WooCommerce product are available to add. 1. The Group Leader navigates to their **Group Management page**. 2. They click the **Add Courses** button for the relevant group. 3. They are redirected to the assigned **Buy Courses page** where they see a list of available **LearnDash Group Course** products with individual prices. Bulk discounts apply if configured. 4. They select the course(s) to add and proceed to checkout. 5. Once the order reaches **Completed** status, the selected courses are added to the group and all current group members gain access. ![Group Courses header with three listed courses and an Add Courses button; items are Building An Online Course, Create Effective Online Quizzes, Managing User Progress.](https://www.uncannyowl.com/wp-content/uploads/2017/09/Add-Courses-button.png "Add Courses button - Uncanny Owl") **Note:** The **Add Courses** button is not available for subscription-based groups. If your Group Leaders need to manage courses on a subscription group, contact your site admin. ### Order Status and Access Activation Seat and course additions are activated when the WooCommerce order reaches **Completed** status. If your payment gateway leaves orders in **Processing** by default, we recommend enabling automatic order completion for virtual/downloadable products in **WooCommerce > Settings > Products**. Until the order completes, the new seats or courses will not be active. ### Important: Do Not Delete Associated Products or Orders The WooCommerce products and orders tied to a group’s purchase history must remain intact. Deleting or trashing them can cause errors when Group Leaders attempt to add users, seats, or courses. If a product or order has been accidentally deleted and a group is now broken, the group can be downgraded to a Basic LearnDash Group from the **Edit Group** page in the WordPress admin. This removes the WooCommerce association and restores basic functionality, but the Group Leader will no longer be able to use the Add Seats or Add Courses buttons. ### Subscription-Based Groups Adding seats to a subscription-based group follows a different process. See [Add Seats after Subscription Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-after-subscription-based-group-purchase/) for full instructions. ### Related Articles - [Enable Custom Group Licenses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/) — set up the Group License product and Buy Courses page that enables this workflow - [Set up LearnDash Group Course Products](https://www.uncannyowl.com/knowledge-base/setting-learndash-group-course-products/) — create the course products that appear in the Add Courses list - [Configure Bulk Discounts](https://www.uncannyowl.com/knowledge-base/configure-bulk-discounts/) — set up volume pricing for seats and courses - [Add Seats after Subscription Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-after-subscription-based-group-purchase/) — the parallel workflow for subscription-based groups - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) — full reference for the Group Leader’s frontend management interface **Article Categories:** Uncanny Groups for LearnDash --- ### [Adding Seats after Subscription-based Group Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-after-subscription-based-group-purchase/) **Published:** April 20, 2022 **Author:** Saad Siddique **Content:** ### Overview When group purchases are tied to WooCommerce Subscriptions, you can let customers buy additional seats without disrupting their existing subscription — each seat block gets its own subscription for clean renewal management. ### Prerequisites - **Uncanny Groups for LearnDash** installed and active - **WooCommerce** and **WooCommerce Subscriptions** installed and active - At least one LearnDash group product set up as a subscription in WooCommerce ### Enabling the Feature This is a global setting — once enabled it applies to every subscription-based group on your site. 1. Go to **Uncanny Groups > Settings** in your WordPress admin. 2. Locate the **WooCommerce Subscriptions** section. 3. Enable the **Enable “Add seats” option for subscription-based groups** option. 4. Click **Save Changes**. ![WooCommerce Subscriptions settings panel with a checked 'Enable Add seats' option for subscription groups, plus Learn more URL field and Save Changes button.](https://www.uncannyowl.com/wp-content/uploads/2022/04/Woo-Add-Seats-Subscription.png "Woo Add Seats Subscription - Uncanny Owl") #### Optional: Synchronise Renewal Dates When a customer adds seats, a new subscription is created for those additional seats. If you want all of a customer’s seat subscriptions to renew on the same date, enable renewal date synchronisation in WooCommerce: 1. Go to **WooCommerce > Settings > Subscriptions**. 2. Enable subscription renewal synchronization. We recommend enabling this — it simplifies billing for your customers and reduces support queries about multiple renewal dates. #### Optional: Add a “Learn More” Link You can add an optional **Learn more** link that appears on the **Group Management page** for users interested in buying more seats. Use it to point customers to a page explaining how additional seats are billed and renewed. Configure this link using the **Learn more URL** field in the same **WooCommerce Subscriptions** section of Uncanny Groups settings. ### What Happens When Seats Are Added When a Group Leader or customer purchases additional seats for an existing subscription-based group: - A **new subscription** is created in WooCommerce for the additional seats. - The original group subscription remains unchanged. - The new seats are immediately added to the group. ### Cancellation and Reactivation Behaviour Uncanny Groups modifies the default WooCommerce Subscriptions cancellation behaviour so that all subscriptions tied to a group are managed together. #### Cancellations Cancelling a group membership cancels **all** associated subscriptions for that group simultaneously — the original subscription and any additional-seat subscriptions. #### Reactivations Reactivation behaviour depends on the subscription status at the time of reactivation: **Situation****What happens**Subscription is **pending cancellation** (not yet expired)All group subscriptions reactivate togetherSubscription has **fully expired**The user creates a single new subscription sized to match their current group needs### Important Limitations Before enabling this feature, be aware of the following constraints: - **Global setting only.** This cannot be enabled for individual groups — it applies to all subscription-based groups on your site. - **Courses cannot be added.** It is not possible to add courses to subscription-based groups. If you need to add courses after purchase, use a standard (non-subscription) group product instead. - **One-time purchase groups are unaffected.** The **Add Seats** button for non-subscription groups works independently and is documented separately (see [Adding Seats and Courses after Group Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-and-courses-after-group-purchase/)). ### Related Articles - [Uncanny Groups Plugin Overview](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) - [Adding Seats and Courses after Group Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-and-courses-after-group-purchase/) - [Set Up User Enrollment](https://www.uncannyowl.com/knowledge-base/set-user-enrollment/) - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) - [Frequently Asked Questions](https://www.uncannyowl.com/knowledge-base/frequently-asked-questions-2/) **Article Categories:** Uncanny Groups for LearnDash --- ### [BuddyBoss Group Sync](https://www.uncannyowl.com/knowledge-base/buddyboss-group-sync/) **Published:** February 3, 2021 **Author:** Ryan Moore **Content:** ### Overview If your site uses BuddyBoss alongside LearnDash, Uncanny Groups can keep the two systems in sync — so adding or removing users in a LearnDash group automatically updates the corresponding BuddyBoss social group, without any manual duplication. ### Prerequisites The following must all be in place before sync will work: - **Uncanny Groups for LearnDash** v3.9 or later installed and active - **BuddyBoss Platform** installed and active - **LearnDash** installed and active - Two specific settings enabled in BuddyBoss (see below) #### Required BuddyBoss Settings These settings are in BuddyBoss, not in Uncanny Groups. Both must be enabled: 1. Go to **BuddyBoss > Integrations > LearnDash**. 2. Enable **LearnDash Group Sync**. 3. Enable **Auto Create Social Group**. 4. Save your changes. ![BuddyBoss Groups Sync with LearnDash Groups](https://www.uncannyowl.com/wp-content/uploads/2021/02/BuddyBoss_Groups_Sync_with_LearnDash_Groups.png "BuddyBoss_Groups_Sync_with_LearnDash_Groups - Uncanny Owl") If either setting is disabled, group sync will not function — no error will be shown, actions simply will not carry over to BuddyBoss. ### What Gets Synced Once the prerequisites are met, the following actions in Uncanny Groups automatically sync to BuddyBoss: **Action in Uncanny Groups / LearnDash****Result in BuddyBoss**New LearnDash group created via the pluginA matching BuddyBoss social group is created automaticallyUser added as a student via the Group Management page (single, bulk, or CSV import)User added to the BuddyBoss group as a **Member**User added as a Group Leader via the Group Management pageUser added to the BuddyBoss group as an **Organizer**User removed from a group via the Group Management pageUser removed from the corresponding BuddyBoss groupAdministrator modifies group membership via the LearnDash edit group interfaceChanges sync to the associated BuddyBoss group#### User Role Mapping Uncanny Groups maps LearnDash roles to BuddyBoss roles as follows: - **Students** in the LearnDash group → **Members** in the BuddyBoss group - **Group Leaders** in the LearnDash group → **Organizers** in the BuddyBoss group This means Group Leaders retain elevated access in the BuddyBoss social group, consistent with their LearnDash role. ### What Does Not Sync To set accurate expectations: - Changes made **directly inside BuddyBoss** (e.g., adding a user to a BuddyBoss group manually) do **not** sync back to the LearnDash group. Sync is one-directional: LearnDash/Uncanny Groups → BuddyBoss. - Course progress, quiz results, and LearnDash activity are not affected by group sync — this feature covers group membership only. ### Troubleshooting If users are not appearing in BuddyBoss groups after being added in Uncanny Groups: 1. Confirm both required BuddyBoss settings (**LearnDash Group Sync** and **Auto Create Social Group**) are enabled under **BuddyBoss > Integrations > LearnDash**. 2. Confirm the LearnDash group was created after those settings were enabled. Groups created before the settings were turned on may not have a corresponding BuddyBoss group — try creating a new test group to verify. 3. Check that the user addition was made via the **Group Management page** or the **LearnDash edit group interface**, not through another enrollment method that bypasses the sync hooks. ### Related Articles - [Uncanny Groups Plugin Overview](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) - [Set Up User Enrollment](https://www.uncannyowl.com/knowledge-base/set-user-enrollment/) - [Manage Groups as Administrator](https://www.uncannyowl.com/knowledge-base/set-up-a-learndash-group/) - [Frequently Asked Questions](https://www.uncannyowl.com/knowledge-base/frequently-asked-questions-2/) **Article Categories:** Uncanny Groups for LearnDash --- ### [Configure Bulk Discounts](https://www.uncannyowl.com/knowledge-base/configure-bulk-discounts/) **Published:** October 1, 2017 **Author:** Ken **Excerpt:** Learn how to configure discounts that vary based on the number of group seats users purchase. **Content:** ### Overview Reward bigger orders with automatic volume pricing. Set discount tiers based on how many seats a buyer purchases, and the savings are calculated and applied at checkout — no coupon codes, no manual math. It’s a proven way to nudge organizations toward larger purchases. Bulk discounts apply automatically to **Group License** purchases at the cart and checkout steps, based on the number of seats. Discounts also **recalculate automatically** when a Group Leader adds seats to an existing license later — so volume pricing stays consistent over the life of the account. ### Prerequisites - Uncanny Groups installed with WooCommerce — see **[Getting Started](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-groups-for-learndash/)**. ### Set up bulk discounts 1. Go to **Uncanny Groups > Bulk Discount**. 2. Tick the **Enable Bulk Discount** checkbox. 3. Add a discount rule: set the **minimum seat quantity** and the **discount percentage**, then click **Add discount line**. 4. Repeat to add more tiers. Use **Remove last discount line** to delete the most recent rule. 5. Click **Save Bulk Discount**. **Number of rules:** You can add up to **ten** discount rules. ![](https://www.uncannyowl.com/wp-content/uploads/2018/04/Groups_bulk_discounts.png "Groups_bulk_discounts - Uncanny Owl") Fig. 9. Up to three bulk discount rules can be applied to the purchase of Group Course Products, automatically calculated at the cart and check out steps.### Worked example Suppose you sell a course license at **$50 per seat** and set these tiers: **Minimum seats****Discount**1010%2515%5020%A buyer purchasing **30 seats** automatically gets the 15% tier — $42.50 per seat — applied at checkout, with no code required. If their Group Leader later adds 25 more seats (reaching 55), the order recalculates at the 20% tier. ### Related Articles - [Enable Users to Build Custom Group Licenses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/) - [Create Pre-configured LearnDash Group Licenses](https://www.uncannyowl.com/knowledge-base/creating-pre-configured-learndash-group-licenses/) - [Add Seats and Courses after Group Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-and-courses-after-group-purchase/) - [Sell Online Courses to Businesses & Teams](https://www.uncannyowl.com/knowledge-base/sell-online-courses-to-businesses-teams-with-learndash/) **Article Categories:** Uncanny Groups for LearnDash --- ### [Configure Group Emails](https://www.uncannyowl.com/knowledge-base/configuring-group-emails/) **Published:** October 16, 2019 **Author:** Ken **Excerpt:** Learn how to customize the emails sent to group leaders and members. **Content:** ### Overview Uncanny Groups for LearnDash sends automated emails at key moments in the group lifecycle — when users are invited, enrollment keys are distributed, and group leaders are assigned. This article explains how to customize those email templates, personalize messages with dynamic variables, and make sure your emails actually reach learners. ### Before you start - You need **Administrator** access to your WordPress site. - Navigate to **Uncanny Groups > Settings > Email Settings** to access all the options below. - If you have high learner volumes, set up a transactional email service **before** testing (see [Deliverability](https://docs.google.com/document/d/1Vd8crBY_Szkd04wjFzY-2rr08pmUcO2Vvm1dhd1pFBY/edit#deliverability) below). ### Global sender settings At the top of the **Email Settings** tab, configure the details that appear on every group email sent by the plugin: **Setting****What it does****From Email**The email address that appears in the “From” field**From Name**The display name shown alongside the From address**Reply To**Where replies are directed (can differ from From Email)These settings apply globally to all group email templates. To change the underlying WordPress sender defaults, use a plugin such as **Change Mail Sender**. You can also **disable any template** by unchecking the checkbox next to it. Disabling a template suppresses that email entirely and, in some cases, removes the related action from the Group Management interface (see template details below). Group Specific Emails While there are 5 global email templates, there are also 3 email templates available for individual groups. Admins can enable and edit individual group emails for **Add and invite (new user)**, **Add and invite (existing user)** and **Send enrollment key. When any of these 3 emails are enabled on the group edit page (found in the Uncanny Groups tab), they will override the email sent to users for the group they are associated with. ### Email variables All templates support dynamic variables that pull data from the user’s profile, the group, and your site. Insert any of the following tokens directly into the subject line or body of a template: **Variable****Inserts**`#SiteUrl`Your website address`#LoginUrl`Your site’s login page URL`#RedemptionKey`The enrollment key for group registration`#Email`The user’s email address`#EmailEncoded`The user’s email address, URL-encoded`#Username`The user’s WordPress username`#FirstName`The user’s first name`#LastName`The user’s last name`#DisplayName`The user’s display name`#Password`The auto-generated password for new user registrations`#SiteName`Your site name`#GroupName`The name of the group the user is being added to`#Courses`The list of courses assigned to the group`#GroupLeaderInfo`The names and email addresses of the group’s leaders### Email templates The plugin includes six built-in templates. Each fires at a specific point in the group workflow. #### Add and Invite (New User) **When it sends:** A Group Leader uses **Add and Invite** for an email address not yet registered on your site. The plugin automatically creates a WordPress account for the user and adds them to the LearnDash group. Because the password is system-generated, include #Password in this template — or replace it with a password-reset link — so the new user can log in. #### Add and Invite (Existing User) **When it sends:** A Group Leader invites a user who already has a WordPress account but is not yet a member of the current group. **Tip:** If you disable both invitation emails (new and existing user), the **Add and Invite User** button label in the Group Management interface changes to **Add User**. #### Send Enrollment Key **When it sends:** A Group Leader selects **Send Enrollment Key** for one or more users. Unlike the invitation emails, this template does **not** register the user automatically. The user must visit your registration page and enter their key. Your template must include clear instructions plus the `#RedemptionKey` variable — and either `#SiteUrl` or `#LoginUrl` so users know where to go. **Note:** Disabling this template removes the **Send Enrollment Key** option from the Add User dialog entirely. #### Add Group Leader / Create Group (New User) **When it sends:** An admin clicks **Add Group Leader** for an unregistered email, or uses **Uncanny Groups > Create Group** with an email address not yet on the site. The plugin registers the new user and assigns them the Group Leader role. Include `#Password` or a reset link in this template. #### Add Group Leader / Create Group (Existing User) **When it sends:** Adding a Group Leader or creating a group when the email address is already registered on the site. #### New Group Purchase **When it sends:** A user completes a group license purchase through WooCommerce. Use this template to confirm the purchase, summarize what was purchased, and link to the **Group Management** page. Including `#GroupName` and `#Courses` gives buyers an immediate overview of what they have access to. ### Deliverability The plugin can send a large number of emails as your learner base grows. To protect deliverability and avoid messages being flagged as spam, we recommend routing all plugin email through a **transactional email service** such as SparkPost, SendGrid, or Postmark. Configure your chosen service at the WordPress level (via its plugin or SMTP settings) and all group emails will route through it automatically. ### Critical: test before you launch **Important:** In most cases, a group email cannot be re-triggered once it has been sent. Build your templates carefully, insert all required variables, and **send test messages before adding real learners** to any group. ![Screenshot of an Email templates form titled 'Send enrollment key' with options to Add and invite (new user) and a Subject field 'You have been added to #SiteUrl' and a Body area showing token buttons (#SiteUrl, #SiteName, etc.).](https://www.uncannyowl.com/wp-content/uploads/2019/10/group-email-templates.png "group email templates - Uncanny Owl") ### Related Articles - [Install and Set Up Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/) — complete first-time configuration guide - [Set Up Group Management Pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/) — configure the front-end pages Group Leaders use - [Manage LearnDash Groups as a WordPress Administrator](https://www.uncannyowl.com/knowledge-base/set-up-a-learndash-group/) — create groups, assign seats, and manage enrollment - [Set Up User Enrollment](https://www.uncannyowl.com/knowledge-base/set-user-enrollment/) — enrollment key and invitation options in detail - [Frequently Asked Questions](https://www.uncannyowl.com/knowledge-base/frequently-asked-questions-2/) — common setup and troubleshooting answers **Article Categories:** Uncanny Groups for LearnDash --- ### [Create Pre-configured LearnDash Group Licenses](https://www.uncannyowl.com/knowledge-base/creating-pre-configured-learndash-group-licenses/) **Published:** September 18, 2017 **Author:** Ken **Excerpt:** Learn how to create group license products for your customers that are pre-configured with different course bundles. **Content:** ### Overview Pre-configured licenses are ready-made group packages you define in advance — a fixed course bundle at a set per-seat price, like “Compliance Training – 25 seats.” Buyers simply pick a quantity and check out; the group is created and they become its Group Leader automatically. It’s the simplest way to sell predictable team packages. When Uncanny Groups and WooCommerce are both active, you get two product types: - **LearnDash Group Course** — the individual course(s) that can be sold into groups. - **LearnDash Group License** — the purchasable package that bundles seats with one or more Group Courses. A *pre-configured* license is a Group License **Admins** build, so the courses and pricing are fixed before the buyer arrives. (Prefer to let buyers choose their own courses? Use [custom group licenses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/) instead.) ### Prerequisites - Uncanny Groups installed — see **Getting Started**. - Your [LearnDash Group Course products](https://www.uncannyowl.com/knowledge-base/setting-learndash-group-course-products/) created first. ### Choose a license type **One-time payment****Subscription****Product type**LearnDash Group LicenseSimple Subscription**Requires**WooCommerceWooCommerce **+ WooCommerce Subscriptions****Best for**One-off team purchasesRecurring/renewing team access### Create a one-time payment license 1. Make sure your [Group Course products](https://www.uncannyowl.com/knowledge-base/setting-learndash-group-course-products/) exist. 2. Create a new WooCommerce product (**Products > Add New**). 3. Set the product type to **LearnDash Group License**. 4. Set a **per-seat price**. Leave it blank to auto-calculate from the linked courses. 5. Open the **Licensed Course(s)** tab and select the courses this license includes. 6. Set **catalog visibility** so the product shows where you want it. 7. **Publish.** ![LearnDash admin: Linked Courses section with a note to create at least one Group Course product if the box is empty.](https://www.uncannyowl.com/wp-content/uploads/2017/09/Group-License-Product-info.png "Group License Product info - Uncanny Owl") ### Create a subscription license Follow the same steps, but at step 3 choose **Simple Subscription** as the product type and configure the subscription billing interval. **Note:** With subscription licenses, only administrators can change the included courses after purchase — Group Leaders cannot. ![Admin screen showing Simple subscription settings for a product, with price, interval, and tax options.](https://www.uncannyowl.com/wp-content/uploads/2017/09/Simple-Subscription.png "Simple Subscription - Uncanny Owl") ### Pricing and quantity controls After the Group License product has been published, additional options will appear in the General tab that allow you to set fixed pricing as well as minimum and/or maximum quantities. **Control****What it does****Fixed price**Overrides the auto-calculated per-seat price with a price you set**Minimum quantity**The fewest seats a buyer must purchase**Maximum quantity**The most seats a buyer can purchase![Pricing options form with a Fixed price toggle and fields for Minimum quantity and Maximum quantity.](https://www.uncannyowl.com/wp-content/uploads/2017/09/min-max-fixed.png "min max fixed - Uncanny Owl") ### At checkout Buyers see a **Group Name** field during checkout — this names their group. The order must reach **Completed** status before group access is granted, so enable order auto-completion if needed (see the [FAQ](https://www.uncannyowl.com/knowledge-base/frequently-asked-questions-2/)). Admins have the option to hide the Group Name field on checkout and or product pages. They can also make the “Group Name” field non-editable on cart page. These options can be enabled/disabled on the Groups > Settings page. ### Group Product Swap A single product can serve double duty: bought at **quantity 1** it grants individual course access, and at **quantity 2 or more** it creates a group. This lets you sell to individuals and teams from the same product. ### Things to know - **Orders must be Completed** to create the group — use auto-completion to avoid stuck “Processing” orders. - **Don’t delete products or orders** tied to active groups; it can break group functionality. - A group can be **downgraded** to a basic LearnDash group if you ever need to. ### Related Articles - [Set up LearnDash Group Course Products](https://www.uncannyowl.com/knowledge-base/setting-learndash-group-course-products/) - [Enable Users to Build Custom Group Licenses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/) - [Configure Bulk Discounts](https://www.uncannyowl.com/knowledge-base/configure-bulk-discounts/) - [Add Seats and Courses after Group Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-and-courses-after-group-purchase/) **Article Categories:** Uncanny Groups for LearnDash --- ### [Enable Users to Build Custom Group Licenses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/) **Published:** September 18, 2017 **Author:** Anthony Lucic **Excerpt:** Learn how to let customer select and purchase courses for their groups. **Content:** ### Overview Let buyers build and purchase their own group license — picking the courses they want and the number of seats they need — all from a single page on your site. They check out through WooCommerce and instantly become a Group Leader who can manage their own team. It’s the most flexible way to sell to organizations, with zero manual setup on your end per sale. A *custom* group license lets the customer decide what they’re buying: they name their group, choose how many seats they need, and select from your available courses. Pricing and any bulk discounts are calculated automatically before checkout. Once the order completes, the group is created and the buyer becomes its Group Leader. This is ideal when you want to offer choice — for example, a training provider whose clients each need a different mix of courses and team sizes. ### Prerequisites - Uncanny Groups installed and activated — see **Getting Started**. - At least one [LearnDash Group Course product](https://www.uncannyowl.com/knowledge-base/setting-learndash-group-course-products/) set up. ### Set up a Buy Courses page When Uncanny Groups is installed alongside WooCommerce, a **Buy Courses** page is created for you automatically. To build one manually: 1. Create a new page. 2. Add the **Buy Courses** block, or insert the shortcode `[uo_groups_buy_courses]`. 3. Publish the page. ![Checkout-style form: left column for Group name and Seats, right column shows Cart total and Add to cart button](https://www.uncannyowl.com/wp-content/uploads/2017/09/Buy-Courses-Page-3-1030x612.png "Buy Courses Page - Uncanny Owl") ### Buy Courses page options The `[uo_groups_buy_courses]` shortcode and block accept optional attributes to control which courses appear and how many seats buyers can purchase: **Attribute****What it does****Example**`product_cat`Shows only courses in the given product category IDs — useful for multi-organization or multi-catalog sites`product_cat="193,203"``product_tag`Shows only courses with the given product tag IDs`product_tag="179,398"``min_qty`Sets the minimum number of seats a buyer must purchase`min_qty="5"``max_qty`Sets the maximum number of seats a buyer can purchase`max_qty="10"`**Combined example:** ``` [uo_groups_buy_courses product_cat="193,203" product_tag="179,398" min_qty="5" max_qty="10"] ``` ### What the buyer does From the Buy Courses page, the customer: 1. **Names their group** — this becomes the license/group name. 2. **Chooses a seat count.** 3. **Selects one or more courses** from your available Group Course products. 4. **Reviews the auto-calculated price** (including any bulk discounts) and checks out. After checkout, they land in their front-end [Group Management page](https://www.uncannyowl.com/knowledge-base/group-management-page/), ready to invite their team. ### Things to know - **Orders must reach “Completed” status** before the group is created. If orders sit in “Processing,” install an autocompletion plugin or enable the auto-complete setting for virtual products. See the [FAQ](https://www.uncannyowl.com/knowledge-base/frequently-asked-questions-2/). - **Abandoned licenses are cleaned up automatically** — a license tied to an incomplete purchase is removed after 24 hours. - **Don’t delete the products or orders** tied to active groups — doing so can break group functionality. - **Linking from a WooCommerce shop:** to surface the Buy Courses page in your shop, create an **External/Affiliate** product that links to it. ### Related Articles - [Set up LearnDash Group Course Products](https://www.uncannyowl.com/knowledge-base/setting-learndash-group-course-products/) - [Create Pre-configured LearnDash Group Licenses](https://www.uncannyowl.com/knowledge-base/creating-pre-configured-learndash-group-licenses/) - [Configure Bulk Discounts](https://www.uncannyowl.com/knowledge-base/configure-bulk-discounts/) - [Sell Online Courses to Businesses & Teams](https://www.uncannyowl.com/knowledge-base/sell-online-courses-to-businesses-teams-with-learndash/) **Article Categories:** Uncanny Groups for LearnDash --- ### [Frequently Asked Questions](https://www.uncannyowl.com/knowledge-base/frequently-asked-questions-2/) **Published:** October 12, 2018 **Author:** Ken **Excerpt:** Frequently Asked Questions about Uncanny Groups. **Content:** ### How does Uncanny LearnDash Groups manage user roles? Uncanny Groups *adds* the Group Leader role on top of a user’s existing roles rather than replacing them. Some sites don’t natively support users having multiple roles, so editing a Group Leader’s profile in the WordPress backend can strip the Group Leader role. If you manage roles manually, install a plugin like **[User Role Editor](https://en-ca.wordpress.org/plugins/user-role-editor/)** that supports multiple roles, so all permissions are preserved when profiles are updated. ### Can I show content to specific groups? Yes. Use the restrict-content shortcode: ``` [uo_groups_restrict_content user_groups="123"]Welcome![/uo_groups_restrict_content] ``` Target multiple groups by separating IDs with commas. To find a group’s ID, edit the group as an administrator and read the number in the URL’s `?post=` parameter. ### Why are users randomly being added to my groups? LearnDash has an automatic group-enrollment setting that’s rarely useful with Uncanny Groups. Keep it disabled so group membership stays under your control. [![Enable Auto-enrollment Setting](https://www.uncannyowl.com/wp-content/uploads/2017/09/Enable-auto-setting.png "Enable Auto-enrollment Setting - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/09/Enable-auto-setting.png)### Can I sell courses to individuals as well as groups? Yes. Install the official LearnDash WooCommerce integration and create **Course**-type products for individual sales. Group Course products can also be sold to individuals for single-seat enrollment. ### Do Group Leaders have access to courses? You decide. A setting controls whether group leaders are also enrolled as group members — useful when a leader manages a group but doesn’t need to take the course themselves. ![](https://www.uncannyowl.com/wp-content/uploads/2018/01/Settings_‹_Uncanny_LearnDash_Groups_—_WordPress.png "Settings_‹_Uncanny_LearnDash_Groups_—_WordPress - Uncanny Owl")### Why can’t my Group Leaders add courses to their group? The **Add Courses** button only appears for groups created through the **Custom Group License** process. It isn’t available for pre-configured licenses (including subscription licenses), or manually created groups. ### Why can’t my Group Leaders add seats to their group? The **Add Seats** button is available only for groups created through a Custom Group License or a pre-configured license. It isn’t shown for manually created groups. ### Why can’t a Group Leader see their group on the Group Management page? Groups created in LearnDash’s native interface must be **upgraded** before they appear on the front-end Group Management page. See [Upgrade Existing LearnDash Groups](https://www.uncannyowl.com/knowledge-base/upgrade-existing-learndash-groups/). ### Why can’t I find my group options after updating WordPress? WordPress 7.0 redesigned the block editor and, by default, hides classic plugin metaboxes behind a collapsed **“Meta Boxes”** pane. After upgrading, some group options could appear to be missing for that reason. As of **Uncanny Groups 6.1.8**, every Uncanny Groups setting for a group is grouped under a dedicated **Uncanny Groups** tab at the top of the group’s edit page — so they’re always easy to find. Open a group under **LearnDash LMS > Groups** and click the **Uncanny Groups** tab. If you’re on a version older than 6.1.8, update to 6.1.8 or later, or open the **Meta Boxes** pane in the editor to reveal the options. WooCommerce orders must reach **Completed** status to trigger group creation and enrollment. Orders stuck in **Processing** won’t create a group. An autocompletion plugin (such as Autocomplete WooCommerce Orders), or the plugin’s auto-complete setting for virtual products, resolves this. ### Related Articles - [Install and Set Up Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/) - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) - [Groups Shortcode/Gutenberg Quick Reference](https://www.uncannyowl.com/knowledge-base/shortcode-quick-reference/) **Article Categories:** Uncanny Groups for LearnDash --- ### [Front End LearnDash Assignment Management](https://www.uncannyowl.com/knowledge-base/front-end-learndash-assignment-management/) **Published:** October 11, 2018 **Author:** Ryan Moore **Excerpt:** Learn how Group Leaders can grade and approve assignments on the front end. **Content:** ### Overview Group Leaders can download, review, and grade LearnDash file assignments directly on the front end — no WordPress admin access required. This makes it practical to delegate assignment review to instructors or managers without granting them backend access. ### Prerequisites - Uncanny Groups for LearnDash - LearnDash configured with at least one assignment-enabled lesson - A WordPress page where you can place the block or shortcode - We recommend a full-width page layout — the assignment table is wide and sidebars will crowd the interface ### Adding the Assignment Management Page Add the **Assignment Report** block to any WordPress page (search **Uncanny Groups** in the block inserter), or place the `[uo_groups_assignments]` shortcode there. Group Leaders assigned to your site will see a dashboard showing submissions from learners in their groups. ``` [uo_groups_assignments] ``` ### Block Settings / Shortcode Attributes Both attributes are optional. When omitted, the defaults shown apply. **Setting / Attribute****Description****Accepted Values****Default**`status`Which assignments load by default`all`, `graded`, `ungraded``ungraded``columns`Columns visible on first load`Title`, `Student`, `Status`, `Points`, `Assigned Course,` `Assigned Lesson`, `Comments`, `Date` (comma-separated)All columns**Example — show only core columns and default to ungraded:** ``` [uo_groups_assignments status="ungraded" columns="Title, Student, Status, Points, Assigned Course, Date"] ``` Hidden columns remain accessible — Group Leaders can toggle them using the column visibility controls in the table header at any time. ### What Group Leaders Can Do Once on the assignment management page, Group Leaders can: - **Filter** assignments by group, course, lesson, and status - **Search** across any visible column - **Sort** by any column (click the column header) - **Toggle column visibility** and reorder columns via drag-and-drop - **Resize columns** to fit their screen - **Hover over an assignment title** to reveal download and delete options - **Select checkboxes** to perform bulk actions across multiple submissions - **Click an assignment title** to open the grading panel, assign a point value, and approve the submission Group Leaders only see submissions from learners in their assigned groups. Submissions from other groups are not visible. ### Exporting Submissions Add the `excel_export_button` and/or `csv_export_button` attributes (or enable the block settings) to display export controls above the table: ``` [uo_groups_assignments excel_export_button="show" csv_export_button="show"] ``` Exports reflect the current filter state — if a Group Leader has filtered to a specific course or status, only matching records are included in the export. ![UI for a Group Assignment Report: filters for Group, Course, Lesson/Topic, Status, a search bar, export buttons, and a table of student assignments with columns Title, Student, Status, Points, Assigned Course, Assigned Lesson, Comments, Date (two rows shown).](https://www.uncannyowl.com/wp-content/uploads/2018/10/group-assignment-report-1030x571.png "group assignment report - Uncanny Owl") ### Related Articles - [Uncanny Groups for LearnDash — Plugin Overview](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) — start here if you’re new to the plugin - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) — how Group Leaders manage learners and groups - [Front End Essay Question Management](https://www.uncannyowl.com/knowledge-base/front-end-essay-question-management/) — similar front-end interface for essay questions - [Group Leader Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/) — progress and completion reporting for Group Leaders - [Shortcode Quick Reference](https://www.uncannyowl.com/knowledge-base/shortcode-quick-reference/) — all Uncanny Groups shortcodes in one place **Article Categories:** Uncanny Groups for LearnDash --- ### [Front End Essay Question Management](https://www.uncannyowl.com/knowledge-base/front-end-essay-question-management/) **Published:** October 11, 2018 **Author:** Ryan Moore **Excerpt:** Learn how Group Leaders can grade and approve quiz essay questions on the front end. **Content:** ### Overview Group Leaders can review, grade, and manage LearnDash essay submissions directly on the front end — no WordPress admin access required. This keeps instructors in their learner-facing environment and simplifies delegation to non-admin Group Leaders. ### Prerequisites - Uncanny Groups for LearnDash installed and activated - At least one LearnDash quiz with essay questions configured - A WordPress page where you can place the shortcode - We recommend a full-width page layout — the essay table is wide and sidebars will crowd the interface ### Adding the Essay Management Page Add the **Essay Report** block to any WordPress page (search **Uncanny Groups** in the block inserter), or place the \[uo\_groups\_essays\] shortcode there. That page instantly becomes an essay management dashboard for Group Leaders assigned to that site. ``` [uo_groups_essays] ``` ### Block Settings / Shortcode Attributes Both attributes below are optional. When omitted, the defaults shown apply. All values added must be comma separated. **Setting / Attribute****Description****Accepted Values****Default**`columns`Columns visible on first load`Title`, `Student`, `Status`, `Points`, `Question`, `Content`, `Course`, `Lesson`, `Quiz`, `Comments`, `Date` (comma-separated)All columns`status`Which submissions load by default`all`, `graded`, `ungraded``ungraded`**Example — show only the most relevant columns and default to ungraded submissions:** ``` [uo_groups_essays status="ungraded" columns="Title, Student, Status, Points, Course, Quiz, Date"] ``` Hidden columns remain accessible — Group Leaders can toggle them on or off at any time using the column visibility controls in the table header. ### What Group Leaders Can Do Once on the essay management page, Group Leaders can: - **Filter** submissions by group, course, lesson, quiz, and status - **Search** across any visible column - **Sort** by any column (click the column header) - **Toggle column visibility** and reorder columns via drag-and-drop - **Resize columns** to fit their screen - **Click an essay title** to open the grading panel, assign a point value, and mark the submission as graded - **Hover over a title** to reveal a delete option for removing a submission Group Leaders only see submissions from learners in their assigned groups. They cannot access submissions outside their groups. ### Exporting Submissions Add the `excel_export_button` and/or `csv_export_button` attributes to display export controls above the table: ``` [uo_groups_essays excel_export_button="show" csv_export_button="show"] ``` Exports respect the current filter state — if a Group Leader has filtered to a specific course or status, only those results are exported. ![Group Essay Report interface with filters (Group, Course, Lesson/Topic, Quiz, Status) and export buttons (CSV/Excel). Shows a table of essays with IDs 7456 and 7455, statuses 'approve', and content previews.](https://www.uncannyowl.com/wp-content/uploads/2018/10/group-essay-report-with-CSV-Excel-export-1030x622.png "group essay report with CSV Excel export - Uncanny Owl") ### Related Articles - [Uncanny Groups for LearnDash — Plugin Overview](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) — start here if you’re new to the plugin - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) — how Group Leaders manage learners and groups - [Front End LearnDash Assignment Management](https://www.uncannyowl.com/knowledge-base/front-end-learndash-assignment-management/) — similar front-end interface for file assignments - [Group Leader Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/) — progress and completion reporting for Group Leaders - [Shortcode Quick Reference](https://www.uncannyowl.com/knowledge-base/shortcode-quick-reference/) — all Uncanny Groups shortcodes in one place **Article Categories:** Uncanny Groups for LearnDash --- ### [Front End Group Creation](https://www.uncannyowl.com/knowledge-base/front-end-learndash-group-creation/) **Published:** October 2, 2017 **Author:** Ken **Excerpt:** Learn how to let your Group Leaders and Administrators create groups on the front end. **Content:** ### Overview The \[uo\_groups\_create\_group\] shortcode lets Group Leaders and administrators create new LearnDash groups from any page on your WordPress front end — no admin access required. Place it on a Group Management page to give Group Leaders a self-serve way to set up their own groups. ### Before You Start - Uncanny Groups must be installed and activated (version 2.6 or later). - You need a published WordPress page where you want the group creation form to appear. - The user viewing the page must be logged in as a **Group Leader** or **Administrator** to see and use the form. ### Add the Shortcode to a Page 1. In your WordPress admin, open the page where you want the form to appear (or create a new page). 2. Add the **Create Group** block (search **Uncanny Groups** in the inserter) — or add a shortcode block containing: ``` [uo_groups_create_group] ``` 3. Publish or update the page. When a Group Leader or Administrator visits that page, they will see the same group creation form available under **Uncanny Groups > Create Group** in the admin. ![](https://www.uncannyowl.com/wp-content/uploads/2019/10/create-learndash-group-front-end-626x1030.png "create-learndash-group-front-end - Uncanny Owl") ### Shortcode Attributes Both attributes are optional. Both limit which courses appear in the form’s course selector — `category` filters by the standard WordPress Category taxonomy and `course_category` filters by the LearnDash Course Category taxonomy. **Attribute****Description**`category`A category slug (or comma-separated list of slugs) using the standard WordPress **Category** taxonomy that limits the **courses available to assign** to the group.`course_category`A category slug (or comma-separated list of slugs) using the LearnDash **Course Category** taxonomy that limits the **courses available to assign** to the group.**Example — restrict to a single course category:** ``` [uo_groups_create_group course_category="compliance-training"] ``` **Example — restrict to multiple course categories:** ``` [uo_groups_create_group course_category="compliance-training,onboarding"] ``` Leaving both attributes blank (or omitting them entirely) shows all available courses. ### Required Fields The person creating the group must complete all of the following: - **Group name** — the display name for the group - **Total seats available** — the number of learner seats in the group - **Courses** — one or more courses to assign to the group - **Group leader email address** — the email of the person who will manage the group - **Group leader first name** - **Group leader last name** ### Optional Fields - **Parent Group** — When the Group Hierarchy option is enabled (found on the page LearnDash LMS > Groups > Settings tab), a drop down selector will appear. This selector will list all available groups that can be assigned as the Parent Group in the hierarchy (making the created group a child in the hierarchy). By default, this option will be set to “No Parent”. If “No Parent” is selected, then the group created on form submission will not be assigned to a hierarchy. - **Group image** — a cover image for the group. This image is used by the [Uncanny Toolkit Pro Group Logo/List module](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-pro/) for group branding on the front end. ### What Happens After the Form Is Submitted Once the form is submitted, the group is created immediately and becomes available for the assigned Group Leader to manage via their Group Management page. Notification emails are sent automatically based on whether the Group Leader is a new or existing user: - **New user:** An email is sent to the Group Leader containing their username and temporary password so they can log in and access the group. - **Existing user:** The user receives a notification email and will see the new group the next time they log in. **Note:** The group creation form is only visible to logged-in Group Leaders and Administrators. Other user roles — including standard learners — will not see the form. ### Related Articles - [Uncanny Groups for LearnDash – Plugin Overview](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) — Understand the full scope of what Uncanny Groups can do. - [Set Up Group Management Pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/) — Configure the front-end pages used for group management, including where to place this shortcode. - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) — What Group Leaders can do after a group has been created. - [Manage Groups as Administrator](https://www.uncannyowl.com/knowledge-base/set-up-a-learndash-group/) — How administrators create and configure groups from the WordPress admin. - [Set Up User Enrollment](https://www.uncannyowl.com/knowledge-base/set-user-enrollment/) — Configure how learners are enrolled into groups after creation. **Article Categories:** Uncanny Groups for LearnDash --- ### [Install and Set Up Uncanny Groups for LearnDash](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/) **Published:** September 7, 2017 **Author:** Anthony Lucic **Excerpt:** Learn how to set up the Groups plugin and about the options available on the Settings page. **Content:** ### Overview This article walks you through installing Uncanny Groups, activating your license, and configuring the settings that control how groups behave on your site. ### Before you start - Confirm your site meets the [Technical Requirements](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-technical-requirements/). - Have your plugin ZIP file and license key ready. Both are in your purchase email and your [Uncanny Owl account](https://www.uncannyowl.com/account/). ### Install the plugin 1. In WordPress, go to **Plugins > Add New > Upload Plugin**. 2. Upload the Uncanny Groups ZIP file and click **Install Now**. 3. Click **Activate**. 4. On the **Uncanny Groups > Settings** page, paste your license key and activate. This enables automatic updates. ![License management screen for LearnDash: masked key field with green status check, shows lifetime expires, 1 of 1 activations, account details on left, Help links on right, and Deactivate / Clear license buttons](https://www.uncannyowl.com/wp-content/uploads/2017/09/Group-license-registration-1030x397.png "Group license registration - Uncanny Owl") On activation, Uncanny Groups automatically creates the front-end pages it needs and sets up default email templates. You’ll find everything under **Uncanny Groups > Settings**. ### Group Management pages The **Settings** page tells the plugin which front-end pages handle group management, registration, and reports. These are created for you on install, but you can swap in your own pages here. Setting a dropdown to **None** hides its associated button from the interface. ![Group Management Page settings with dropdowns for management and reports, a progress-permission checkbox, and a Save Changes button at bottom arc adjacent to a Regenerate area.](https://www.uncannyowl.com/wp-content/uploads/2017/09/Group-Management-page-settings-1030x708.png "Group Management page settings - Uncanny Owl") ### Settings reference #### General Options **Setting****What it does****When to use it****Per Seat Text**Renames the “Seat” label (e.g. “License” or “User”) throughout the interfaceMatch your audience’s vocabulary**Allow Group Leaders to remove students at any time**Lets leaders remove members even after they’ve started a courseTurn off to protect in-progress enrollments**Do not free up a seat when a student with “Completed” status is removed**Keeps the seat consumed when a finished learner is removedUse when completions should permanently count against seats**Group Leaders don’t use seats**Excludes leaders from the seat countUse when leaders manage but don’t take the course**Do not automatically add Group Leaders as Group Members**Prevents leaders from also being enrolled as learnersUse for manager-only leaders**Allow Group Leaders to edit users**Lets leaders edit member profile details from the front endUse when leaders own account management**Allow Group Leaders to change email**Lets leaders update a member’s email addressUseful when leaders correct sign-up typos or manage logins on members’ behalf**Allow Group Leaders to change username**Lets leaders change member usernamesEnable only if usernames need to be editable**Use Progress Report instead of Course Report for individual users**Swaps the default report styleChoose the view your leaders prefer**Show “basic” (non-upgraded) groups in front end with access to reports only**Shows non-upgraded native groups in the interface (reports only)Use during migration from native groups#### LearnDash Options **Setting****What it does****Use LearnDash’s “legacy” course progress data**Reports from older progress data for backward compatibility**Hide the Courses / Users column in the list of LearnDash groups**Removes a heavy column to speed up report loading on large groups**Include data from child groups in reports**Rolls child-group progress up into the parent group’s reports#### eCommerce Options (WooCommerce) **Setting****What it does****Automatically include Group Course products in Group License purchases**Bundles the course product into license sales**Enable association of products and groups**Maps products to groups for automatic enrollment on purchase**Autocomplete Uncanny Groups orders**Marks qualifying orders complete so groups are created without manual steps**Default License Product category**Assigns a category to licenses created on the fly**Adding Seats Message**Customizes the text shown when leaders add seats#### Group Registration Form – Terms & Conditions Add text here to display a **terms acceptance checkbox** on the built-in group registration form. Leave it blank to hide the checkbox. ![Terms & Conditions editor UI showing a paragraph: “I agree to all terms and conditions.”](https://www.uncannyowl.com/wp-content/uploads/2017/09/terms-and-conditions-1030x377.png "terms and conditions - Uncanny Owl") ### Where a group’s settings appear on the edit page As of **Uncanny Groups 6.1.8**, every Uncanny Groups setting for a group lives under a dedicated **Uncanny Groups** tab at the top of the group’s edit page. Open a group under **LearnDash LMS > Groups** and click the **Uncanny Groups** tab to find **Total seats**, **Remaining seats**, the **Reconcile seat count** and **Downgrade this group** controls, and the group-specific email overrides. This also resolves a WordPress 7.0 change: the redesigned block editor tucks classic plugin metaboxes behind a collapsed **“Meta Boxes”** pane, so group options could seem to disappear after upgrading. The dedicated **Uncanny Groups** tab gives those settings a permanent, visible home. If you’re on a version older than 6.1.8 and can’t find a group option, update to 6.1.8 or later — or open the **Meta Boxes** pane in the editor. ![Navigation bar showing tabs: Group page, Extend Access, Settings, Courses, Users, Uncanny Groups (selected)](https://www.uncannyowl.com/wp-content/uploads/2017/09/Uncanny-Groups-tab.png "Uncanny Groups tab - Uncanny Owl") ### Next steps - New here? Follow the [Getting Started walkthrough](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-groups-for-learndash/). - [Set up your Group Management pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/). - [Configure Group Emails](https://www.uncannyowl.com/knowledge-base/configuring-group-emails/). ### Related Articles - [Uncanny Groups – START HERE!](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) - [Upgrade Existing LearnDash Groups](https://www.uncannyowl.com/knowledge-base/upgrade-existing-learndash-groups/) - [Frequently Asked Questions](https://www.uncannyowl.com/knowledge-base/frequently-asked-questions-2/) **Article Categories:** Uncanny Groups for LearnDash --- ### [Manage LearnDash Groups as a WordPress Administrator](https://www.uncannyowl.com/knowledge-base/set-up-a-learndash-group/) **Published:** September 30, 2017 **Author:** Anthony Lucic **Excerpt:** Learn how to manage groups and seat counts as a WordPress admin. **Content:** ### Overview Uncanny Groups gives WordPress Administrators a central place to create groups, control seat counts, manage enrollment keys, and handle edge cases like WooCommerce-purchased groups. This article covers the full administrator workflow so you can get groups up and running — and keep them running — with confidence. ### Before you start - You need **Administrator** access to your WordPress site. - Uncanny Groups for LearnDash must be activated and configured. If you haven’t done that yet, see [Install and Set Up Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/). - Courses must exist in LearnDash before you can assign them to a group. - If you plan to assign a Group Leader at creation time, have their username or email address handy (for Group Wizard) ### Creating a group with the Create Group Wizard The **Create Group Wizard** consolidates everything you need for a new group into a single screen — no jumping between LearnDash settings and the plugin. 1. In your WordPress admin, go to **Uncanny Groups > Create Group**. 2. Fill in the required fields: **Field****Notes****Group Name**The name that appears in the Group Management interface and in email templates via #GroupName**Total Seats**The maximum number of members the group can hold**Courses**One or more LearnDash courses to assign to the group3. Optionally, add a Group Leader: **Field****Notes****First Name**Required in versions earlier than 4.0; optional in 4.0+**Last Name**Required in versions earlier than 4.0; optional in 4.0+**Email Address**If the address is not yet registered, the plugin creates a WordPress account automatically4. Click **Process Group**. The plugin creates the LearnDash group, assigns the leader (if provided), and redirects you to the **LearnDash Group Edit** page. If a new user was created for the Group Leader, they receive an email with their login credentials. ![Interface to create a new group with fields for group details, courses, image, and leader information.](https://www.uncannyowl.com/wp-content/uploads/2017/09/Group-Wizard-full-1001x1030.png "Group Wizard full - Uncanny Owl") **Tip:** You can always add a Group Leader later from the group’s edit screen or from the front-end Group Management page. ### Where to find a group’s settings **Uncanny Groups 6.1.8+:** Every Uncanny Groups setting for a group now lives under a dedicated **Uncanny Groups** tab at the top of the group’s edit page. Open a group under **LearnDash LMS > Groups**, then click the **Uncanny Groups** tab to find **Total seats**, **Remaining seats**, the **Reconcile seat count** and **Downgrade this group** controls, and the group-specific email overrides. If a setting seems to be missing after a WordPress or plugin update, this tab is where it now lives. ![Navigation bar showing tabs: Group page, Extend Access, Settings, Courses, Users, Uncanny Groups (selected)](https://www.uncannyowl.com/wp-content/uploads/2017/09/Uncanny-Groups-tab.png "Uncanny Groups tab - Uncanny Owl") ### Managing seats Seat counts control how many members a group can hold. Administrators can adjust seats at any time, even while Group Leaders are actively managing their groups. #### Editing seats 1. Go to **LearnDash LMS > Groups** and open the group you want to edit. 2. Open the **Uncanny Groups** tab, find the **Total seats** field, and enter a new value (this value only appears for upgraded groups. Groups created using the Uncanny Group Wizard tool are already upgraded, however, see [Upgrade Existing LearnDash Groups](https://www.uncannyowl.com/knowledge-base/upgrade-existing-learndash-groups/) for more info on upgrading basic LearnDash groups). 3. Save the group. #### How seat counts adjust automatically When an administrator adds users or seats directly from the LearnDash backend: - The number of seats is automatically updated for that group and the remaining seats are adjusted accordingly. - If an admin adds more users than there are seats, the overall seat count is increased to accommodate them and the remaining seats are set to zero. #### Reconciling seat counts If a seat count appears out of sync with the actual member list (for example, after a bulk import or manual database change), use the **Reconcile seat count** button under the **Uncanny Groups** tab on the group’s edit page. This recalculates the count based on current group membership. ![Admin panel showing group seats: Total seats 20, Remaining seats 16 (read-only); button 'Reconcile seat count'](https://www.uncannyowl.com/wp-content/uploads/2017/09/reconcile-seat-count.png "reconcile seat count - Uncanny Owl") ### Managing users with pending enrollment keys When a Group Leader sends enrollment keys to users, those users hold reserved seats from the moment the key is issued — even before they register. The group edit screen (in newer versions of Groups, the Uncanny Groups tab) shows a list of **pending key holders** (users who received a key but haven’t completed registration). You can: - **Review** who is holding reserved seats. - **Remove** a pending user to free up their reserved seat. Removing a pending user does not invalidate the key itself; if seats are available when the user later tries to register, the key will still work. ![Edit Uncanny Groups page changes](https://www.uncannyowl.com/wp-content/uploads/2021/06/Edit-Group-page-changes.png "Edit Group page changes - Uncanny Owl") ### The Group List: seats column and Download Keys In **LearnDash LMS > Groups**, Uncanny Groups adds two enhancements to the standard group list: - **Seats column** — shows used versus available seats at a glance (for example, “12 / 50” indicates 12 seats used out of 50 available seats). - **Download Keys** — hover over a group name to reveal the **Download Keys** option (a link under the group name); it exports all enrollment keys for that group as a CSV. ![Admin dashboard for enrolled users: shows 4 users, 16 of 20 seats remaining; a dropdown menu with actions (Download keys highlighted); table lists last names Chu, Reese, Fitzgerald, Freeman with emails.](https://www.uncannyowl.com/wp-content/uploads/2017/09/download-key-option.png "download key option - Uncanny Owl") ### Downgrading WooCommerce groups Groups created through WooCommerce are linked to the originating order and product. If that order or product is deleted, the group may lose WooCommerce-dependent functionality (such as seat top-ups through the storefront). You can **downgrade** a WooCommerce group to a standard LearnDash group. After downgrading: - The group and all its members remain intact. - Reporting functionality is preserved. - WooCommerce-specific features (purchasing additional seats, purchase history) are no longer available for that group. To downgrade, open the group in **LearnDash LMS > Groups**, select the **Uncanny Groups** tab, and use the **Downgrade this group** button. **Note:** Downgrading is not reversible through the plugin interface. Only downgrade a group when the WooCommerce connection is no longer needed. ![Button: 'Downgrade this group'. Warning: Downgrading to 'basic' will remove Group Leaders' management of seats, courses, and users and delete enrollment keys.](https://www.uncannyowl.com/wp-content/uploads/2017/09/downgrade-group-button.png "downgrade group button - Uncanny Owl") ### Related Articles - [Install and Set Up Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/) — activate and configure the plugin for the first time - [Set Up Group Management Pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/) — configure the front-end pages Group Leaders use - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) — Group Leader’s guide to adding members, distributing keys, and running reports - [Set Up User Enrollment](https://www.uncannyowl.com/knowledge-base/set-user-enrollment/) — enrollment key settings and invitation options - [Upgrade Existing LearnDash Groups](https://www.uncannyowl.com/knowledge-base/upgrade-existing-learndash-groups/) — convert standard LearnDash groups to Uncanny Groups **Article Categories:** Uncanny Groups for LearnDash --- ### [Manage Learner Progress](https://www.uncannyowl.com/knowledge-base/manage-learner-progress/) **Published:** July 18, 2019 **Author:** Ryan Moore **Excerpt:** Learn how Group Leaders can view and manage the course progress of their members on the front end. **Content:** ### Overview The Manage Learner Progress page lets Group Leaders and Administrators view — and optionally mark complete or incomplete — individual learners’ progress through courses, all from the front end of your site. When Uncanny Groups for LearnDash is activated, it automatically creates a **Manage Progress** page containing the \[uo\_groups\_manage\_progress\] shortcode. This gives Group Leaders a hierarchical view of every course, lesson, topic, and quiz assigned to their groups, with checkboxes to mark items complete or incomplete without touching the WordPress back end. Whether Group Leaders can *edit* progress (or only view it) is controlled by the plugin’s admin settings. Administrators always have full edit access. **Important:** Progress changes are applied **instantly and cannot be undone.** Marking a course complete triggers any associated certificates and LearnDash notifications immediately. We recommend confirming with the learner before making changes on their behalf. ### Setup The Manage Progress page is created automatically on plugin activation. If you need to add it to a different page, add the **Progress Report** block (search **Uncanny Groups** in the inserter), or use the `[uo_groups_manage_progress]` shortcode: ``` [uo_groups_manage_progress] ``` #### Block Settings / Shortcode Attributes **Settings / Attribute****Values****Default****Description**`orderby``"title"`, `"date"`, `"menu_order"`, `"ID"``"ID"`How courses are sorted in the progress view`order``"asc"` / `"desc"``"desc"`Sort direction for courses`expand_by_default``"yes"` / `"no"``"no"`Whether all lessons and topics are expanded when the page loads**Example — sorted alphabetically with all items expanded:** ``` [uo_groups_manage_progress orderby="title" order="asc" expand_by_default="yes"] ``` ### Finding a learner Use the **search bar** at the top of the page to locate a learner by first name, last name, or email address. Partial matches are supported — entering “smi” will match “Smith,” “Smithson,” and so on. **Scope of search results:** - **Group Leaders** see only users enrolled in their managed groups. The search is further scoped to the **currently selected group** (available since v4.0), so selecting a group first narrows results to that group’s members. - **Administrators** can search across all users on the site. ![Manage LearnDash Progress](https://www.uncannyowl.com/wp-content/uploads/2019/07/manage-learndash-progress.gif "manage-learndash-progress - Uncanny Owl") ### Viewing progress After selecting a learner, the page displays a collapsible tree of all courses they are enrolled in through the group: - **Courses** — top-level items, each expandable to show lessons - **Lessons** — expandable to show topics (when applicable) - **Topics** — individual content items - **Quizzes** — shown inline at the course, lesson, or topic level Completed items are checked. Items not yet started or in progress are unchecked. Set `expand_by_default="yes"` on the shortcode to open the full tree automatically, which is helpful for shorter courses or when you need a complete overview at a glance. ### Editing progress When the plugin settings allow Group Leaders to edit progress (or for Administrators), a **checkbox** appears next to each item in the tree. #### Marking an item complete 1. Locate the course, lesson, topic, or quiz in the progress tree. 2. Check the checkbox next to the item. 3. If the item has children (e.g., you are completing a lesson that contains topics), a confirmation dialog appears asking whether to mark all child items complete as well. Confirm to proceed. #### Marking an item incomplete 1. Uncheck the checkbox next to a completed item. 2. Confirm the dialog if prompted. Unchecking a parent item can also mark child items incomplete. **Reminder:** These changes are instant. Completing a course that has a certificate assigned will generate and send that certificate immediately — this cannot be reversed. ![](https://www.uncannyowl.com/wp-content/uploads/2019/08/group-leader-certificate-download.png "group-leader-certificate-download - Uncanny Owl") ### Certificates Group Leaders can download or print certificates directly from the progress view: - A **Certificate** button appears next to a course or quiz that has a certificate assigned and that the **learner** has completed. - For **quizzes**, certificates are only available for completions made by the learner themselves — quizzes marked complete by a Group Leader or Administrator using this tool do **not** display a downloadable certificate button in this view, though the completion is still recorded. ### Related Articles - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) — The main front-end hub for managing group members - [Using the Group Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/) — Course and quiz completion reports for Group Leaders - [Set Up Group Management Pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/) — Configure and customize the Manage Progress page - [Front End Assignment Management](https://www.uncannyowl.com/knowledge-base/front-end-learndash-assignment-management/) — Review and approve learner assignment submissions from the front end - [Front End Essay Question Management](https://www.uncannyowl.com/knowledge-base/front-end-essay-question-management/) — Grade learner essay responses from the front end **Article Categories:** Uncanny Groups for LearnDash --- ### [Pooled Seats](https://www.uncannyowl.com/knowledge-base/pooled-seats/) **Published:** October 5, 2022 **Author:** Ryan Moore **Content:** ### Overview Pooled Seats lets a parent group and all of its child groups share a single seat count, so you can allocate capacity flexibly across an organisation rather than locking a fixed number of seats into each group. ### What Is a Pooled Seat? Normally each LearnDash group has its own seat limit — a child group’s seats are entirely separate from its parent group’s seats. With **Pooled Seats** enabled, the seat counts for a parent group and all of its child groups are combined into one shared pool. Any child group can draw from that pool when enrolling users. When a seat is used in any group in the hierarchy, the available total decreases for all groups in that hierarchy. **Example:** A parent group has 100 seats and one child group has 50 seats. With pooling enabled, the combined pool is **150 seats**. If 30 users enrol through the child group, 120 seats remain available across the entire hierarchy. ### Prerequisites - **Uncanny Groups for LearnDash** v5.0 or later - **LearnDash Group Hierarchies** enabled (see below) - At least one parent group with one or more child groups configured #### Enable LearnDash Group Hierarchies Pooled Seats requires group hierarchies to be active. To enable them: 1. Go to **LearnDash LMS > Groups > Settings (tab)**. 2. Enable **LearnDash Group Hierarchies**. 3. Click **Save Settings**. **Important:** Only administrators can create group hierarchies. Group Leaders cannot link groups into parent-child relationships unless the front end “Edit Group” option is enabled. See [New Edit Group Wizard](https://www.uncannyowl.com/uncanny-groups-new-edit-group-wizard/) for more info. ![UI settings panel for Groups: toggles for Hierarchy, Table Pagination (default 20), and Courses Order (Date, Ascending).](https://www.uncannyowl.com/wp-content/uploads/2022/10/group-hierarchy-enabled-1030x397.png "group hierarchy enabled - Uncanny Owl") ### Configuring Pooled Seats There are two ways to enable Pooled Seats, depending on how much control you want to give Group Leaders. #### Option 1: Let Group Leaders Manage Pooled Seats per Hierarchy Use this approach when you want Group Leaders to decide whether pooling is active for their own hierarchy. 1. Go to **Uncanny Groups > Settings**. 2. In the **Pooled Seats** section, enable **Allow Group Leaders to enable seat pooling from the Group Management page**. 3. Click **Save Settings**. Once enabled, Group Leaders will see a **Pooled Seats** toggle on the Group Management page for any hierarchy they manage. They can turn pooling on or off independently for each hierarchy. ![Checkbox: 'Allow Group Leaders to enable seat pooling from the Group Management page'. Pooled seats, when enabled, are shared across all groups in the hierarchy.](https://www.uncannyowl.com/wp-content/uploads/2022/10/Allow-group-leaders-to-enable-pooled-settng.png "Allow group leaders to enable pooled settng - Uncanny Owl") #### Option 2: Enable Pooled Seats Globally for All Hierarchies Use this approach when you want pooling active across every hierarchy on your site without requiring Group Leaders to configure it. 1. Go to **Uncanny Groups > Settings**. 2. In the **Pooled Seats** section, enable **Enable pooled seats for all groups in hierarchies**. 3. Click **Save Settings**. When this option is active, Group Leaders do **not** see a toggle on the Group Management page — pooling is always on for every hierarchy. ![Checked checkbox labeled 'Enable pooled seats for all groups in hierarchies' with explanatory text about effects and overrides when enabled.](https://www.uncannyowl.com/wp-content/uploads/2022/10/enable-pooled-seats-for-all-setting.png "enable pooled seats for all setting - Uncanny Owl") ### How Seat Counts Are Displayed When Pooled Seats is active for a hierarchy, the seat count shown on the Group Management page reflects the **combined pool** across the parent and all child groups — not just the seats for the individual group being viewed. Group Leaders can see at a glance how many seats remain across the entire hierarchy. ### Important Limitations - **Hierarchies are admin-only.** Group Leaders can use an existing hierarchy but cannot create one. An administrator must set up the parent-child group structure. - **Pooling is per-hierarchy.** If you have multiple independent hierarchies, each one has its own pool — seats do not flow between unrelated hierarchies. - **Enrollment keys and child groups.** When a user redeems an enrollment key for a child group, they are enrolled in that child group (not the parent). This behaviour was corrected in v6.1.2/6.1.3 — if you were seeing users land in the wrong group after key redemption, updating to the current version resolves this. ### Related Articles - [Uncanny Groups Plugin Overview](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) - [Manage Groups as Administrator](https://www.uncannyowl.com/knowledge-base/set-up-a-learndash-group/) - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) - [Create Pre-configured Licenses](https://www.uncannyowl.com/knowledge-base/creating-pre-configured-learndash-group-licenses/) - [Adding Seats and Courses after Group Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-and-courses-after-group-purchase/) **Article Categories:** Uncanny Groups for LearnDash --- ### [Sell LearnDash Group Access to Learners](https://www.uncannyowl.com/knowledge-base/sell-learndash-group-access-to-learners/) **Published:** September 20, 2017 **Author:** Ryan Moore **Excerpt:** Learn how to sell access to existing groups. **Content:** ### Overview Instead of selling entire groups to customers, you sell membership to a specific LearnDash group — automatically adding each purchaser to the group and granting them course access the moment their order completes. ### How It Works When you associate a WooCommerce product with a LearnDash Group, every customer who completes a purchase of that product is automatically enrolled as a **member** of the mapped group. They gain access to all courses assigned to that group, without any manual admin action. This feature is distinct from the Group Leader purchasing workflow, where an organization creates and manages a group of learners. Here, each buyer simply joins a group as a learner. ### Prerequisites - **WooCommerce** installed and active - **Uncanny Groups for LearnDash** installed and active - At least one published LearnDash Group to associate with a product ### Enable Product–Group Associations Before you can link products to groups, you must turn on the feature: 1. Navigate to **Uncanny Groups > Settings**. 2. Enable **Enable association of products and groups**. 3. Click **Save Changes**. ![Checkbox: Enable association of products and groups; LearnDash Groups appear on the Edit Product screen and link purchases to selected groups on save.](https://www.uncannyowl.com/wp-content/uploads/2017/09/Groups-enable-association-checked.png "Groups - enable association checked - Uncanny Owl") Once enabled, a **Related Groups** field appears on the **General** tab of supported WooCommerce product types. ### Supported Product Types Three WooCommerce product types support group associations: **Product Type****Best for****Notes****Group**Products whose sole purpose is granting group accessAdded by Uncanny Groups when the association feature is enabled; keeps the product simple and purpose-built**Simple Product**Complex purchase rulesUse when the product also grants independent course access, has physical components, or needs custom purchase logic**Simple Subscription**Recurring group accessRequires [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/); group membership is revoked when the subscription lapses or is cancelledFor most straightforward group-access sales, **Group** is the right product type — it is the cleanest option and signals intent clearly to both admins and customers. ### Map a Group to a Product 1. Create a new product (or edit an existing one) and set its **product type** to one of the supported types above. 2. Open the **General** tab in the **Product Data** panel. 3. In the **Related Groups** field, search for and select the LearnDash Group you want buyers to join. 4. Set your price, configure any other product settings, and click **Publish** (or **Update**). ![Product data form in an admin UI showing price fields, tax status, and related groups for a simple product.](https://www.uncannyowl.com/wp-content/uploads/2017/09/related-group-panel.png "related group panel - Uncanny Owl") You can map a single product to multiple groups if a purchase should enroll the buyer in more than one group simultaneously. ### Important Notes **Order status must reach Completed.** Group enrollment is triggered when a WooCommerce order reaches **Completed** status. If your payment gateway leaves orders in **Processing** by default, we recommend enabling automatic order completion for virtual/downloadable products in **WooCommerce > Settings > Products** — otherwise learners will not receive access until you manually complete the order. **Purchases do not change user roles.** Buyers are added to the group as members with the standard **Customer** role. They are not made Group Leaders and cannot manage the group. **Subscription expiry removes access.** For **Simple Subscription** products, group membership is automatically revoked when the subscription is cancelled, expires, or lapses. No manual action is required. **Do not delete products or orders tied to active groups.** If you delete a WooCommerce product or order associated with an active group, users may encounter errors and the group may lose its associated data. Unpublish products rather than deleting them, and archive orders rather than trashing them. ### Related Articles - [Uncanny Groups Plugin Overview](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) — understand how groups, leaders, and members fit together - [Install and Set Up Uncanny Groups for LearnDash](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/) — install the plugin and activate your license - [Enable Custom Group Licenses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/) — sell group licenses to organizations instead of individual learners - [Add Seats after Subscription Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-after-subscription-based-group-purchase/) — manage seat counts for subscription-based groups - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) — what Group Leaders can do once a group is created **Article Categories:** Uncanny Groups for LearnDash --- ### [Tin Canny Blocks & Shortcodes Quick Reference](https://www.uncannyowl.com/knowledge-base/tin-canny-blocks-shortcodes-quick-reference/) **Published:** July 5, 2026 **Author:** David Chambo **Content:** Tin Canny lets you place reports anywhere on your site — on a member dashboard, a Group Leader page, or a learner’s profile. **The easiest way is with a Tin Canny block.** Where a report has no block, a shortcode does the same job. This article lists them all in one place. **New to front-end reports?** Read [Front End LearnDash Reports](https://www.uncannyowl.com/knowledge-base/front-end-reports/) and [Front End Quiz Reports](https://www.uncannyowl.com/knowledge-base/front-end-quiz-reports/) first for the full context. This page is the at-a-glance reference. ### How to use these - **Prefer the block.** When editing a page, click **+**, search **Tin Canny**, and choose the report — it gives you a visual interface with the options in the block sidebar. Tin Canny registers **six** blocks (listed below). - **Use the shortcode when there’s no block.** A few reports (the combined interface, Tin Can Report, xAPI Quiz Report, and the Detailed Quiz Report) are shortcode-only. Paste the shortcode into any page, post, or text widget — in the block editor, use a **Shortcode block**. - Reports render wide tables, so use a **full-width page template** with no sidebar for the best layout. - Most reports are visible only to **administrators and Group Leaders**; the learner-facing quiz report is the exception. ### Admin & Group Leader reports These surface the same data as the back-end reports, on the front end. **Block (search “Tin Canny”)****Shortcode****What it displays****Who can view****Tin Canny Course/User Report**`[tincanny_course_report]`The Course Report on its own.Admins, Group Leaders**Tin Canny Course/User Report**`[tincanny_user_report]`The User Report on its own.Admins, Group Leaders*No block — shortcode only*`[tincanny_tin_can_report]`The Tin Can Report on its own.Admins, Group Leaders*No block — shortcode only*\[`tincanny_xapi_quiz_report]`The xAPI Quiz Report on its own.Admins, Group Leaders*No block — shortcode only*`[tincanny]`The full front-end reporting interface — Course, User, Tin Can, and xAPI Quiz reports in one tabbed view.Admins, Group Leaders**Tin Canny Lesson Report**`[uotc_lesson_report]`Lesson completion report: which learners completed a chosen lesson, with optional group/course filters.Admins, Group Leaders**Tin Canny Topic Report**`[uotc_topic_report]`Topic completion report: the same view, scoped to a topic.Admins, Group Leaders**Note:** The single **Tin Canny Course/User Report** block covers both the Course Report and the User Report. The **Tin Can** and **xAPI Quiz** reports only appear (in `[tincanny]` or via their own shortcodes) if data capture is enabled in **Tin Canny Reporting > Settings**. ### Quiz reports **Block (search “Tin Canny”)****Shortcode****What it displays****Who can view****Tin Canny Individual Quiz Report**`[uo_individual_quiz_report]`The viewing learner’s own LearnDash quiz scores plus SCORM/xAPI scores across all their courses.Students, Group Leaders, Admins**Tin Canny Group Quiz Report**`[uo_group_quiz_report]`Consolidated quiz data and Tin Canny scores (H5P, iSpring, Storyline, etc.) by group and course.Admins, Group Leaders*No block — shortcode only*`[uotc_ld_quiz_report]`Detailed quiz report: all attempts for all users, including learners who haven’t completed a quiz, across courses. Columns are customizable.Admins, Group Leaders (adjustable via filter)#### Quiz report attributes These attributes apply when you use the **shortcode** form: **Attribute****Used on****Description**`user_report_url="%URL%"``[uo_group_quiz_report]`Turns learner names into links to their individual user report. Replace `%URL%` with the page holding `[uo_individual_quiz_report]`. *(Verified in source.)*`exclude_non_course_quizzes="yes"``[uo_individual_quiz_report]`Added in **v5.0**. Set to `yes` to hide quizzes that aren’t mapped to a course, so the report shows only course-based quizzes. Default is `no`. *(Verified in source — attribute lives on the* ***individual*** *quiz report shortcode, not the detailed report.)***Developers:** the `userReportUrl` value on the detailed quiz report can also be set globally with the `uo_tincanny_quiz_report_user_report_url` filter. See [Actions/Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers-2/). ### The six Tin Canny blocks When editing a page, click **+**, search **Tin Canny**, and choose: - **Tin Canny Course/User Report** — the Course Report and User Report - **Tin Canny Lesson Report** — lesson completion - **Tin Canny Topic Report** — topic completion - **Tin Canny Individual Quiz Report** — a learner’s own quiz scores - **Tin Canny Group Quiz Report** — quiz scores by group and course - **Tin Canny Content** — embeds an eLearning module into a lesson/topic (see below) - Each block exposes its options in the block sidebar — for example, the group/course selectors on the Lesson and Topic reports, and the column options on the quiz reports. **Shortcode-only reports:** there is **no** block for the combined `[tincanny]` interface, the **Tin Can Report**, the **xAPI Quiz Report**, or the **Detailed Quiz Report** (`[uotc_ld_quiz_report]`) — use their shortcodes for those. ### Embedding eLearning modules To place a module (not a report), use the **Tin Canny Content** block while editing a lesson or topic — or the **Tin Canny Uploader** button in the Classic Editor. See [Tin Canny Uploader](https://www.uncannyowl.com/knowledge-base/storyline-captivate-uploader/). ### Related Articles - [Front End LearnDash Reports](https://www.uncannyowl.com/knowledge-base/front-end-reports/) — placing the main report interface on a page - [Front End Quiz Reports](https://www.uncannyowl.com/knowledge-base/front-end-quiz-reports/) — the three quiz reports in depth - [Lesson and Topic Completion Reports](https://www.uncannyowl.com/knowledge-base/lesson-and-topic-completion-reports/) — the lesson/topic reports in depth - [Actions/Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers-2/) — filters that customize report behaviour **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Set up LearnDash Group Course Products](https://www.uncannyowl.com/knowledge-base/setting-learndash-group-course-products/) **Published:** September 16, 2017 **Author:** Ken **Excerpt:** Learn how to set up group course products that form the basis of group license purchases. **Content:** ### Overview Installing WooCommerce alongside Uncanny Groups for LearnDash unlocks two new product types that power your group-selling workflow. Setting these up correctly is the foundation for everything from simple corporate seat sales to fully self-serve group licensing. ### How the Two Product Types Work Together When WooCommerce is active, Uncanny Groups for LearnDash adds two product types to WooCommerce: **Product Type****Role****Sold to customers?****LearnDash Group Course**Represents an individual course that can be bundled into a group licenseRarely — usually only as a standalone fallback**LearnDash Group License**The purchasable product that creates a group and grants course access to its membersYes — this is what Group Leaders and learners buy**LearnDash Group Course** products are the building blocks. Each one maps to a single LearnDash course. On their own they behave like a standard LearnDash–WooCommerce product (purchase = course enrollment), but their real purpose is to be bundled into a **LearnDash Group License** product so that a single purchase grants group access to one or more courses. ### Prerequisites - **WooCommerce** installed and active - **LearnDash LMS** installed and active - **Uncanny Groups for LearnDash** installed and active - At least one published LearnDash course to associate with the product ### Create a LearnDash Group Course Product You need one **LearnDash Group Course** product for each course you want to include in group licenses. Create as many as you need — one per course. 1. In your WordPress admin, navigate to **Products > Add New**. 2. Enter a **Product Name** (e.g., “Introduction to Safety Procedures”). 3. Optionally add a product description and featured image. 4. In the **Product Data** panel, open the product type dropdown and select **LearnDash Group Course**. 5. In the **General** tab, set the **Regular Price** (and optionally a **Sale Price**). This price is used as the per-seat license for this course when customers purchase a group license through the Buy Courses page.. 6. In the **Courses** tab, select the **LearnDash course** this product represents. 7. Click **Publish**. 8. Repeat for each additional course you want to make available in group licenses. ![LearnDash group course editor: left navigation with Courses selected; main area shows Course dropdown set to 'Company Onboarding' with helper text nearby.](https://www.uncannyowl.com/wp-content/uploads/2017/09/Group-Course-Product-data-1030x306.png "Group Course Product data - Uncanny Owl") **Note:** The price you set here appears to Group Leaders when they use the **Add Courses** feature on the Group Management page. We recommend keeping it consistent with how the course is priced in your Group License products. ### What Happens After You Create Group Course Products Once published, your **LearnDash Group Course** products become available in two places: - **Backend (admin):** When you create a **LearnDash Group License** product, you can bundle any number of Group Course products into it. The license product is what customers purchase. - **Frontend (Group Leaders):** Group Leaders who created their group through a Custom Group License can visit their Group Management page and use the **Add Courses** button to purchase additional courses for their group. Only Group Course products appear in that list. **Important:** Do not delete or trash a Group Course product that is referenced by an active Group License product or an existing group. Doing so can cause errors when Group Leaders try to manage their groups. If you need to retire a course product, unpublish it rather than deleting it. ### Product Settings Reference **Setting****Location****Description****Product Name**Title fieldDisplayed to Group Leaders on the Add Courses page**Regular Price**General tabPer-course price charged when adding courses to an existing group**Sale Price**General tabOptional discounted price**Course**Courses tabThe LearnDash course this product grants access to### Related Articles - [Install and Set Up Uncanny Groups for LearnDash](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/) — install the plugin and activate your license - [Enable Custom Group Licenses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/) — set up the Group License product type and the Buy Courses page - [Create Pre-configured Licenses](https://www.uncannyowl.com/knowledge-base/creating-pre-configured-learndash-group-licenses/) — bundle Group Course products into a Group License for sale - [Add Seats and Courses after Group Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-and-courses-after-group-purchase/) — how Group Leaders use the Add Courses feature - [Configure Bulk Discounts](https://www.uncannyowl.com/knowledge-base/configure-bulk-discounts/) — apply volume pricing to course and seat purchases **Article Categories:** Uncanny Groups for LearnDash --- ### [Set up Group Management Pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/) **Published:** September 7, 2017 **Author:** Ken **Excerpt:** Learn how to set up the front-end group management pages and reports for Group Leaders. **Content:** ### Overview When you activate Uncanny Groups for LearnDash, the plugin automatically creates a set of pages on your site — each pre-loaded with the shortcode its feature needs. This article explains what those pages do, how to customize them with shortcode attributes, and how to surface them to Group Leaders through your site menu. Each page can be built with its matching **Uncanny Groups block** (search the block inserter) or the equivalent shortcode shown below. ### Before you start - You need **Administrator** access to your WordPress site. - The plugin must be activated. If the pages below are missing, you can regenerate them (see [Regenerating pages](https://docs.google.com/document/d/171KSmkdresh4cK30Gmj6l4NpzllWRqxfFw67z2mLL5k/edit#regenerating-pages) below). - Avoid using `/groups/` in any of these page URLs — LearnDash reserves that path and duplicate routes will cause conflicts. ### Auto-generated pages On first activation, the plugin creates the following pages. You can rename them, customize their slugs, and add them to your navigation at any time. Also, while shortcodes are used for auto-generated pages, blocks are available. **Page****What it does****Shortcode / Block****Default slug****Group Management**Core hub where Group Leaders manage members, seats, keys, and courses`[uo_groups]`Course Report`group-management`**Course Report**Lets leaders view member progress by course`[uo_groups_course_report]`Course Report`group-management-report`**Quiz Report**Lets leaders view quiz results for their members`[uo_groups_quiz_report]` Quiz Report`group-quiz-report`**Buy Courses**Lets users purchase courses and create groups (requires WooCommerce)`[uo_groups_buy_courses]` Buy Courses`group-management-buy-courses`**Manage Assignments**Front-end assignment review and grading for leaders`[uo_groups_assignments]` Assignment Management`assignment-management-page`**Manage Essays**Front-end essay review for leaders`[uo_groups_essays]`Essay Management`essay-management-page`**Manage Learner Progress**View and edit individual learner progress`[uo_groups_manage_progress]` Progress Report`group-progress-report`**URL warning:** Do not use /groups/ as any part of these page slugs. LearnDash uses this route internally, and duplicating it will break navigation. ### Regenerating pages If a page is accidentally deleted or you need to reassign which page the plugin points to, you have two options: 1. **Regenerate automatically** — go to **Uncanny Groups > Settings** and use the **Regenerate Pages** option. The plugin recreates any missing pages with the correct shortcodes. 2. **Re-select an existing page** — if you have already created a replacement page manually, go to **Uncanny Groups > Settings** and select that page from the appropriate dropdown. The plugin will use your custom page going forward. ![UI panel titled Regenerate Pages with explanatory text about generating missing Uncanny Groups pages and a Regenerate button](https://www.uncannyowl.com/wp-content/uploads/2017/09/regenerate-pages-button.png "regenerate pages button - Uncanny Owl") ### Configuring the Group Management page The **Group Management** page is the most customizable. Use block settings or shortcode attributes to show or hide specific features for your Group Leaders. All attributes accept “show” or “hide” unless noted otherwise. #### Feature visibility settings / attributes **Setting / Attribute****What it controls****Default**`group_name_selector`Group selection dropdown`show``seats_quantity`Seat count display`show``add_seats_button`Button to purchase additional seats`show``add_courses_button`Button to purchase additional courses`show``add_user_button`Add user options in the Users panel`show``remove_user_button`Remove user capability`show``upload_users_button`Bulk user upload option`show``download_keys_button`Download enrollment keys option`show``key_column`Enrollment keys column in the user table`show``key_options`Key distribution options`show``group_leader_section`Group Leaders listing section`show``add_group_leader_button`Add Group Leader capability`show``group_courses_section`Group courses listing section`show``csv_export_button`CSV export option`show``excel_export_button`Excel export option`hide``group_email_button`Email users functionality`hide``first_last_name_required`Require first and last name in the bulk add tool`no` (values: `yes` / `no`)#### Pagination settings / attributes **Setting / Attribute****What it controls****Default**`enrolled_users_page_length`Members shown per page (numeric)`50``enrolled_users_length_menu`Page-length dropdown options`25,50,100,All``group_leaders_page_length`Leaders shown per page (numeric)`50``group_leaders_length_menu`Leaders page-length dropdown options`25,50,100,All`#### Edit Group Wizard redirect settings / attributes **Setting / Attribute****What it controls****Example value**`edit_page_id`ID of the page containing the Edit Group Wizard`142``edit_url`Relative URL of the page containing the Edit Group Wizard`/edit-group/`Use either `edit_page_id` or `edit_url` — not both. #### Example: hide all optional features ``` [uo_groups group_name_selector="hide" add_courses_button="hide" seats_quantity="hide" add_seats_button="hide" add_user_button="hide" remove_user_button="hide" upload_users_button="hide" download_keys_button="hide" group_leader_section="hide" add_group_leader_button="hide" key_options="hide" csv_export_button="hide"] ``` To fully lock down the interface, also set all report pages to **None** in **Uncanny Groups > Settings**. ![Group Management page showing a Sales Training group with four courses, enrolled users, and group leaders in a dashboard layout.](https://www.uncannyowl.com/wp-content/uploads/2026/07/group-management-page-852x1030.png "group management page - Uncanny Owl") ### Configuring the Course Report page Control how courses and exports appear in the Course Report. The Course Report can be added via the **Course Report** block or the following shortcode ``` [uo_groups_course_report course-order="title" csv_export_button="show"] ``` **Setting / Attribute****Values****Default**`course-order``ID`, `title`, `date`, `menu_order`*(empty — uses LearnDash default order)*`csv_export_button``show`, `hide``show``excel_export_button``show`, `hide``show`### Configuring the Quiz Report page Control how quizzes and courses are ordered in the Quiz Report. The Quiz Report can be added via the **Quiz Report** block or the following shortcode ``` [uo_groups_quiz_report course-orderby="title" course-order="ASC" quiz-orderby="title" quiz-order="ASC"] ``` **Attribute****Values****Default**`course-orderby``ID, title, date, menu_order``title``course-order``ASC, DESC``ASC``quiz-orderby``ID`, `title`, `date`, `menu_order``title``quiz-order``ASC`, `DESC``ASC``csv_export_button``show`, `hide``show``excel_export_button``show`, `hide``show`### Adding pages to your site menu The auto-generated pages are not added to your navigation automatically. To surface them for Group Leaders: 1. Go to **Appearance > Menus** in your WordPress admin. 2. Find the **Group Management** section in the page list on the left, and check the pages you want to add. 3. Click **Add to Menu**, then drag items into the position you want. 4. If you have the **Nav Menu Roles** plugin installed, set the visibility of each item to **Group Leader** so the links only appear to the right users. 5. Click **Save Menu**. **Note:** Without Nav Menu Roles, menu links are visible to all logged-in users — but non-Group Leaders who click through will see a message indicating they don’t have access. ### Adding a Group Management button or link To place a contextual button or link anywhere on your site — visible only to logged-in Group Leaders — use one of these shortcodes: **Button:** ``` [uo_groups_button text="Group Management"] ``` **Text link:** ``` [uo_groups_link text="Group Management"] ``` Both shortcodes hide themselves from users who are not Group Leaders. Customize the label with the `text` attribute. ### Controlling the Reports menu The **Course Report**, **Quiz Report**, **Manage Progress**, **Assignments**, and **Essays** entries in the Group Leader navigation are controlled from **Uncanny Groups > Settings**. To hide any of these from the menu, set the corresponding page to **None** in Settings. ### Related Articles - [Install and Set Up Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/) — first-time activation and settings - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) — a Group Leader’s guide to day-to-day management - [Using Group Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/) — understanding course, quiz, and progress reports - [Manage LearnDash Groups as a WordPress Administrator](https://www.uncannyowl.com/knowledge-base/set-up-a-learndash-group/) — create groups, manage seats, and handle enrollment - [Front-End Group Creation](https://www.uncannyowl.com/knowledge-base/front-end-learndash-group-creation/) — let Group Leaders create their own groups from the front end **Article Categories:** Uncanny Groups for LearnDash --- ### [Set Up User Enrollment](https://www.uncannyowl.com/knowledge-base/set-user-enrollment/) **Published:** September 15, 2017 **Author:** Ken **Excerpt:** Learn the various ways users can enroll into groups. **Content:** ### Overview Uncanny Groups supports several ways to enroll learners into groups — from manually distributed enrollment keys to self-service registration forms and third-party form integrations. This article covers the available enrollment methods and how to configure each one. ### How Enrollment Keys Work Each group can have a pool of enrollment keys. Group Leaders distribute these keys to invited learners, who redeem them to join the group and access the associated courses. Key lifecycle: - **Available** — the key has not yet been redeemed - **Used** — a learner has redeemed the key and is enrolled in the group Keys are tied to the group they were generated for. If a child group has its own keys, redeeming one of those keys places the learner in the child group (not the parent group). This behaviour was corrected in Uncanny Groups v6.1.2 and v6.1.3. For details on generating and managing keys, see [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/). ### Registration Page A registration page lets new users create an account and redeem an enrollment key in a single step. This page is optional — it’s only needed when you’re distributing keys to users who don’t yet have a WordPress account. Because email templates do not include a registration page variable, we recommend adding the page URL manually to your email templates or linking to it from the site menu. See [Configure Group Emails](https://www.uncannyowl.com/knowledge-base/configuring-group-emails/) for guidance on editing email templates. ### Built-In Registration Form The plugin includes a lightweight registration form by adding the **Enrollment Key Registration** block or shortcode for new user sign-up and key redemption: ``` [uo_groups_registration_form] ``` Add the **Enrollment Key Registration** block, or place the `[uo_groups_registration_form]` shortcode, on any WordPress page to create the registration page. #### Registration Form Settings / Attributes **Setting / Attribute****Description****Accepted Values****Default**`redirect`Page to redirect the user to after successful registrationRelative or absolute URLNone (user stays on the same page)`code_optional`Whether the enrollment key field is required`yes`, `no``no``auto_login`Whether the user is automatically logged in after registering`yes`, `no``yes``role`WordPress role assigned to newly registered usersAny valid WordPress role slug (e.g., `subscriber`, `group_leader`)`subscriber`**Example:** ``` [uo_groups_registration_form redirect="/dashboard" auto_login="yes" code_optional="no"] ``` ![Groups Registration form with fields for first name, last name, email/username, password, confirm password, enrollment key and a Register your account button.](https://www.uncannyowl.com/wp-content/uploads/2017/09/groups-front-end-registration-form.png "groups - front end registration form - Uncanny Owl") #### Terms & Conditions Administrators can define a custom Terms & Conditions statement in the plugin settings. When enabled, a checkbox is automatically added to the registration form requiring acceptance before submission. This setting does not apply when using Gravity Forms for group registration. ### Enrollment Form for Existing Users For learners who already have a WordPress account, add the **Enrollment Key Redemption** block or use the redemption form shortcode. Logged-in users enter their enrollment key to join the associated group: ``` [uo_groups_redemption_form] ``` This shortcode supports the redirect and role attributes described in the registration form table above. ![Enrollment key label with an input field and a Redeem code button](https://www.uncannyowl.com/wp-content/uploads/2017/09/groups-redemption-key-form.png "groups redemption key form - Uncanny Owl") ### CSV Enrollment Administrators can bulk-enroll users by uploading a CSV file from the Group Management page. Each row represents one user. **Required CSV format:** ``` user_email,user_pass,first_name,last_name ``` - Columns are **comma-separated** (the importer also auto-detects semicolons) - Include a header row matching the format above - For new users, `user_pass` sets the initial password; if the user already exists, the account is reused - Users who don’t yet have an account are created automatically and enrolled ![Modal to upload a CSV and add users; shows 7 seats remaining and options to send enrollment keys or suppress emails; Add users button at bottom.](https://www.uncannyowl.com/wp-content/uploads/2018/10/CSV-Add-Users-Group-Management.png "CSV Add Users Group Management - Uncanny Owl") ### Gravity Forms Integration Uncanny Groups v4.0 and later support enrollment key redemption through Gravity Forms. **Requirements:** - Gravity Forms installed and active - Gravity Forms User Registration add-on (required when registering new users during key redemption) **Setup:** 1. Edit your Gravity Forms form 2. Add the **Uncanny Key** field from the **Advanced Fields** section 3. Save the form **Behaviour:** - A signed-in user submitting a valid key is added to the associated group - A new user submitting a registration form with a valid key is created and added to the group Gravity Forms User Verification is supported for users who register and redeem a key in the same submission. ![Grid of form fields: Name, Date, Time, Phone, Address, Website, Email, Password, File Upload, CAPTCHA, List, Multi Select, Consent, Uncanny Key](https://www.uncannyowl.com/wp-content/uploads/2017/09/Gravity-Forms-Uncanny-Key.png "Gravity Forms - Uncanny Key - Uncanny Owl") ### WPForms Integration Uncanny Groups v4.0 and later support enrollment key redemption through WPForms. **Requirements:** - WPForms Pro or higher (required for registering new users directly into groups) **Setup:** 1. Edit your WPForms form 2. Add the **Uncanny Key** field type from the “Standard Fields” picker 3. Save the form When a user submits a valid key, they are added to the associated group and the key is marked as redeemed. ![Form builder options panel showing blue rounded buttons for various field types (Text, Paragraph, Dropdown, Multiple Choice, Checkboxes, Numbers, Name, Email, Number Slider, CAPTCHA, Uncanny Key).](https://www.uncannyowl.com/wp-content/uploads/2017/09/WP-Forms-Uncanny-Key.png "WP Forms - Uncanny Key - Uncanny Owl")### Formidable Forms Integration Uncanny Groups v4.0 and later support enrollment key redemption through Formidable Forms. **Setup:** 1. Edit your Formidable Forms form 2. Add the **Uncanny Key** field type 3. Save the form When a user submits a valid key, they are added to the associated group and the key is marked as redeemed. ![UI mockup of a form builder: tabs 'Add Fields' and 'Field Options' with a search box and a grid of field types (Text, Paragraph, Checkboxes, Radio Buttons, Dropdown, Email, Website/URL, Number, Name, Phone, HTML, Hidden, User ID, Captcha, Payment, Uncanny Key).](https://www.uncannyowl.com/wp-content/uploads/2017/09/Formidable-Forms-Uncanny-Key.png "Formidable Forms - Uncanny Key - Uncanny Owl") ### Theme My Login Integration Uncanny Groups v2.6 and later support enrollment via Theme My Login registration forms. **Setup:** 1. Create a Theme My Login registration form on a new page and confirm it works correctly 2. Navigate to **Uncanny Groups > Theme My Login** in the WordPress admin 3. Check **Custom Theme My Login registration form including registration code field** 4. An enrollment key field is automatically appended to the registration form ![Theme My Login registration settings panel showing two options: Add Registration code field (checked) and Make Registration code field required (unchecked); a blue Save Theme My Login changes button.](https://www.uncannyowl.com/wp-content/uploads/2017/09/Theme-My-Login-Uncanny-Key.png "Theme My Login - Uncanny Key - Uncanny Owl") ### Related Articles - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) — generate and manage enrollment keys, view key status - [Configure Group Emails](https://www.uncannyowl.com/knowledge-base/configuring-group-emails/) — set up invitation emails that include enrollment key links - [Uncanny Groups for LearnDash — Plugin Overview](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) — feature overview and getting started - [Manage Learner Progress](https://www.uncannyowl.com/knowledge-base/manage-learner-progress/) — track and update learner course progress after enrollment - [Group Leader Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/) — reporting tools available to Group Leaders **Article Categories:** Uncanny Groups for LearnDash --- ### [Groups Block and Shortcode Quick Reference](https://www.uncannyowl.com/knowledge-base/shortcode-quick-reference/) **Published:** October 12, 2018 **Author:** Anthony Lucic **Excerpt:** A quick reference guide to the shortcodes available in Uncanny Groups. **Content:** ### Overview Uncanny Groups for LearnDash adds its features to the WordPress editor in two ways: as **Gutenberg blocks** and as **shortcodes**. Most features offer both — use whichever you prefer: - **Blocks** are the easiest option in the block editor. Click the **+** inserter and search for the feature name, or browse the **Uncanny Groups for LearnDash** block category. - **Shortcodes** work anywhere shortcodes are supported — the Classic editor, widgets, page-builder text modules, and template files. A handful of utility features (links, buttons, content restriction, and seat counts) are **shortcode-only** and have no block; these are marked accordingly below. Use this page as a lookup reference. For full setup instructions, follow the links in each section and in **Related Articles** below. ### Group management & registration The core front-end experience for Group Leaders and the forms members use to join a group. **Block****Shortcode****What it does****Key attributes****Group Management**`[uo_groups]`The full Group Management page, where Group Leaders add/remove members, manage seats, and open reports. Place on a dedicated page.None required**Create Group**`[uo_groups_create_group]`Front-end form that lets eligible users create a new group.See [Front End Group Creation](https://www.uncannyowl.com/knowledge-base/front-end-learndash-group-creation/)**Enrollment Key Registration**`[uo_groups_registration_form]`Combined registration + enrollment-key form, for inviting new users to register and join a group in one step.None required**Enrollment Key Redemption**`[uo_groups_redemption_form]`Single-field form for existing, logged-in users to redeem an enrollment key and join a group.None required*Shortcode only — no block*`[uo_groups_link text="Link Text"]`A text link to the Group Management page, shown only to logged-in Group Leaders.`text` — link label**Group Management Link**`[uo_groups_button text="Button Text"]`A button linking to the Group Management page, shown only to logged-in Group Leaders.`text` — button label### Reports & learner management Front-end access to progress, quiz data, and grading — no WordPress admin access required for Group Leaders. **Block****Shortcode****What it does****Key attributes****Course Report**`[uo_groups_course_report]`Each member’s progress through assigned courses. Also reachable from the Group Management page.See [Using the Group Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/)**Quiz Report**`[uo_groups_quiz_report]`Quiz attempts and scores for group members.See [Using the Group Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/)**Essay Report**`[uo_groups_essays]`Lets Group Leaders review and grade submitted essay responses on the front end.See [Front End Essay Question Management](https://www.uncannyowl.com/knowledge-base/front-end-essay-question-management/)**Assignment Report**`[uo_groups_assignments]`Lets Group Leaders review and grade submitted assignment files on the front end.See [Front End Assignment Management](https://www.uncannyowl.com/knowledge-base/front-end-learndash-assignment-management/)**Progress Report**`[uo_groups_manage_progress]`Lets Group Leaders and admins edit course/lesson completion for learners on the front end.See [Manage Learner Progress](https://www.uncannyowl.com/knowledge-base/manage-learner-progress/)\[Screenshot: The Course Report block rendered on the front end, showing member progress rows\] ### Selling courses The purchase workflow that lets Group Leaders and new customers buy seats and create groups directly. Requires WooCommerce. **Block****Shortcode****What it does****Key attributes****Buy Courses**`[uo_groups_buy_courses]`A purchase page for buying course seats and creating a new group. Auto-generated only if WooCommerce was active when the plugin was activated; otherwise add the block/shortcode to a page yourself.`product_cat`, `product_tag`, `min_qty`, `max_qty` — see [Enable Custom Group Licenses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/)\[Screenshot: The Buy Courses block showing course selection and seat-quantity options\] ### Content restriction (shortcode only) Show or hide content based on group membership or Group Leader role. **These are shortcodes only — there are no matching blocks.**Show or hide content based on group membership or Group Leader role. **These are shortcodes only — there are no matching blocks.** **Shortcode****What it does****Key attributes**`[uo_groups_restrict_content user_groups="123,456"]`Wraps content visible only to logged-in members of the listed groups. Admins always see it.`user_groups` — comma-separated group IDs (omit for members of any group)`[uo_groupleader_restrict_content user_groups="123,456"]`Wraps content visible only to logged-in Group Leaders of the listed groups. Admins always see it.`user_groups` — comma-separated group IDs (optional)**Example — member-only content:** `[uo_groups_restrict_content user_groups="42"]` This message is only visible to members of group 42. `[/uo_groups_restrict_content]` ### Seat displays (shortcode only) Output dynamic seat counts for a specific group — handy on landing pages, confirmations, or dashboards. **These are shortcodes only — there are no matching blocks.** **Shortcode****What it does****Key attributes**`[uo_group_seats_total id="123"]`Outputs the total number of seats assigned to the group.`id` — group post ID (required)`[uo_group_seats_remaining id="123"]`Outputs the number of seats still available in the group.`id` — group post ID (required)To find a group’s ID, open it under **LearnDash LMS > Groups** — the ID appears in the page URL. **Example:** Your group has `[uo_group_seats_total id="123"]` total seats, with `[uo_group_seats_remaining id="123"] `still available. ### Related Articles - [Uncanny Groups Overview](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) - [Using the Group Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/) - [Enable Custom Group Licenses / Buy Courses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/) - [Actions and Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers/) **Article Categories:** Uncanny Groups for LearnDash --- ### [Uncanny Groups for LearnDash - Technical Requirements](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-technical-requirements/) **Published:** October 12, 2018 **Author:** Ken **Excerpt:** Technical requirements for running Uncanny Groups on your site. **Content:** ### Overview Uncanny Groups for LearnDash is designed to work on any modern WordPress installation that meets the requirements below. Review these before installing the plugin or upgrading an existing setup. ### End-User Requirements Learners and Group Leaders accessing the front-end Group Management page need a modern browser. The following are supported: - Google Chrome (latest) - Mozilla Firefox (latest) - Microsoft Edge (latest) - macOS Safari (latest) ### WordPress and Server Requirements #### Minimum Requirements **Component****Minimum version**PHP7.4WordPress5.8LearnDash4.2WordPress memory limit256 MBWooCommerce4.5 *(only required if using WooCommerce-based group sales)*WooCommerce SubscriptionsAny compatible version *(only required for subscription-based group licensing)*Permalink structure**Post Name****Important:** Permalinks must be set to **Post Name** (`/%postname%/`). Go to **Settings > Permalinks** in your WordPress admin and confirm this is selected. Other permalink structures will cause the front-end Group Management pages to function incorrectly. #### Recommended for Optimal Performance - **PHP 7.4 or higher** — this is also the minimum, so any supported version is fine; newer PHP releases deliver better performance. - A **WordPress-optimised host** such as WP Engine or Pressidium for the best page-load times on front-end group pages. ### WooCommerce WooCommerce integration is **optional**. You only need WooCommerce if you plan to sell group licenses through your site’s store. For sites that manage groups without ecommerce (for example, manual group creation or Uncanny Automator-powered enrollment), WooCommerce does not need to be installed. WooCommerce Subscriptions is additionally required only if you want group licenses sold as recurring subscriptions. ### Installing on an Existing LearnDash Site Uncanny Groups installs alongside your existing LearnDash setup — you do not need to reinstall or reconfigure LearnDash. Any existing LearnDash groups on your site can be [upgraded to Uncanny Groups](https://www.uncannyowl.com/knowledge-base/upgrade-existing-learndash-groups/) after installation. ### Performance Note Since version 6.1.2, Uncanny Groups stores certain plugin data outside the WordPress autoload cache. This reduces the amount of data loaded on every page request across your site, which can improve overall site performance — particularly on larger installations with many groups. ### Related Articles - [Install and Set Up Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/) — Step-by-step installation and initial configuration. - [Uncanny Groups for LearnDash – Plugin Overview](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) — What Uncanny Groups does and how it fits into a LearnDash site. - [Upgrade Existing LearnDash Groups](https://www.uncannyowl.com/knowledge-base/upgrade-existing-learndash-groups/) — Convert pre-existing LearnDash groups to fully managed Uncanny Groups. - [Frequently Asked Questions](https://www.uncannyowl.com/knowledge-base/frequently-asked-questions-2/) — Common compatibility and configuration questions. **Article Categories:** Uncanny Groups for LearnDash --- ### [Template Overrides](https://www.uncannyowl.com/knowledge-base/extending-uncanny-learndash-groups/) **Published:** April 22, 2019 **Author:** Ken **Excerpt:** A guide to overriding template files in Uncanny Groups. **Content:** ### Overview Uncanny Groups for LearnDash allows developers to customize front-end templates without editing plugin files directly. By placing override files in your theme, your customizations survive plugin updates. **Developer feature:** Template overrides require PHP development experience. We cannot provide support for custom code. Only attempt customizations if you are comfortable working with PHP templates. ### How Template Overrides Work Template overrides were introduced in Uncanny Groups version 3.0.4. The plugin checks your active theme for a matching template file before falling back to its own. If a match is found in your theme, the theme file is used instead. This means you can safely modify the plugin’s output and your changes will not be overwritten when the plugin updates. ### Override Directory Structure Template files live inside the plugin at: ``` wp-content/plugins/uncanny-learndash-groups/src/templates/ ``` To override a file, copy it into your theme using the same folder structure, but **omit the `/src/templates/` prefix**. Place overrides inside a folder named `uncanny-groups/` at the root of your theme. ``` wp-content/themes/your-theme/uncanny-groups/ ``` ### Step-by-Step: Creating a Template Override 1. **Locate the template file** you want to customize inside the plugin: ``` wp-content/plugins/uncanny-learndash-groups/src/templates/ ``` 2. **Copy the file** to your theme, replicating the subfolder path and omitting `/src/templates/`: ``` wp-content/themes/your-theme/uncanny-groups/ ``` 3. **Edit the copy** in your theme. The plugin will now load your version instead of its own. 4. **Test your changes** on the front end to confirm the override is working correctly. **Important:** Never edit files inside `wp-content/plugins/uncanny-learndash-groups/` directly. Plugin updates will overwrite any changes you make there. ### Worked Example Suppose you want to customize the users table actions in the Group Management page. **Source file (plugin — do not edit):** ``` wp-content/plugins/uncanny-learndash-groups/src/templates/frontend-uo_groups/users-table-actions.php ``` **Override file (your theme — edit this):** ``` wp-content/themes/your-theme/uncanny-groups/frontend-uo_groups/users-table-actions.php ``` The plugin detects the file in your theme and loads it instead of the default. ### Child Themes If you are using a child theme, place override files in the child theme’s directory rather than the parent theme. WordPress loads child theme files first, so the override will still be detected correctly. ``` wp-content/themes/your-child-theme/uncanny-groups/ ``` ### Compatibility Note Uncanny Groups integrates with LearnDash, WooCommerce, Gravity Forms, and Theme My Login. Some templates interact with these plugins. We recommend reviewing integration-specific templates carefully before modifying them, and thoroughly testing any overrides in a staging environment before deploying to production. ### Related Articles - [Uncanny Groups Overview](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) - [Actions and Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers/) - [Shortcode Quick Reference](https://www.uncannyowl.com/knowledge-base/shortcode-quick-reference/) - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) - [Getting Started with Uncanny Groups](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-groups-for-learndash/) **Article Categories:** Uncanny Groups for LearnDash --- ### [Uncanny Groups for LearnDash - START HERE!](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) **Published:** September 6, 2017 **Author:** Anthony Lucic **Excerpt:** Just getting started with Groups? You'll want to start here. **Content:** Uncanny Groups turns LearnDash’s basic group feature into a complete team-training and course-selling toolkit. It lets **Group Leaders manage their own members from the front end** — adding learners, sending invitations, and tracking progress — without ever logging into WordPress. You can use it to sell course access to organizations, train your own team, or run cohort programs. This article helps you choose the right setup for your goal. If you’d rather just dive in, jump to the **Getting Started walkthrough**. ![Group Management page showing a Sales Training group with four courses, enrolled users, and group leaders in a dashboard layout.](https://www.uncannyowl.com/wp-content/uploads/2026/07/group-management-page-852x1030.png "group management page - Uncanny Owl") ### New to Groups? Start here If this is your first time, the fastest way to understand Uncanny Groups is to build one working group end to end. Our **Getting Started with Uncanny Groups** guide walks you from install to enrolled learners and live reports in about 15 minutes. When you’re ready to choose a long-term setup, use the decision guide below. ### Choose how you’ll use Uncanny Groups There are three ways to run Groups. You can use one, or combine several on the same site. **Approach****Best for****What happens****Manual group management**Training your own team; running a course where you control enrollmentYou create groups in the admin and assign Group Leaders. Leaders manage members from the front end.**Sell custom licenses**Letting buyers choose their own courses and seat countsVisitors build their own license on a Buy Courses page and check out via WooCommerce, becoming Group Leaders automatically.**Sell pre-configured licenses**Offering fixed team packages (e.g. “50 seats – Compliance”)You define the course bundle and seat count; buyers simply purchase it.**Selling through WooCommerce?** Disable guest checkout in WooCommerce so buyers have an account to manage their group from. #### Manual group management — setup steps 1. [Install and set up Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/). 2. Create a group and enroll your course(s) — see [Manage LearnDash Groups as a WordPress Administrator](https://www.uncannyowl.com/knowledge-base/set-up-a-learndash-group/). 3. (Upgrading old groups?) [Upgrade existing LearnDash groups](https://www.uncannyowl.com/knowledge-base/upgrade-existing-learndash-groups/). 4. [Set up your Group Management pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/). 5. Assign Group Leaders and [add users](https://www.uncannyowl.com/knowledge-base/set-user-enrollment/). #### Sell custom licenses — setup steps 1. [Install and set up Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/). 2. [Set up your LearnDash Group Course products](https://www.uncannyowl.com/knowledge-base/setting-learndash-group-course-products/). 3. [Enable users to build custom group licenses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/). 4. [Set up your Group Management pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/). 5. Place a Buy Courses page so visitors can purchase. 6. *(Optional)* [Configure bulk discounts](https://www.uncannyowl.com/knowledge-base/configure-bulk-discounts/). 7. *(Optional)* [Sell group access directly to learners](https://www.uncannyowl.com/knowledge-base/sell-learndash-group-access-to-learners/). #### Sell pre-configured licenses — setup steps 1. [Install and set up Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/). 2. [Set up your LearnDash Group Course products](https://www.uncannyowl.com/knowledge-base/setting-learndash-group-course-products/). 3. [Create pre-configured group licenses](https://www.uncannyowl.com/knowledge-base/creating-pre-configured-learndash-group-licenses/). 4. [Set up your Group Management pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/). 5. Add the products to your store. 6. *(Optional)* [Configure bulk discounts](https://www.uncannyowl.com/knowledge-base/configure-bulk-discounts/). 7. *(Optional)* [Add seats and courses after purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-and-courses-after-group-purchase/). ### See Groups in action Not sure which fits your business? These usage scenarios show what’s possible: - **Sell Online Courses to Businesses & Teams** - **Onboard & Train Your Team with LearnDash Groups** - **Run Cohort-Based Courses & Group Coaching Programs** ### How users manage their own groups Once a group exists, Group Leaders take over the day-to-day work from the front end: - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) — add, invite, and remove members. - [Using the Group Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/) — track course and quiz progress. ### Related Articles - [Getting Started with Uncanny Groups](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-groups-for-learndash/) - [Install and Set Up Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/) - [Frequently Asked Questions](https://www.uncannyowl.com/knowledge-base/frequently-asked-questions-2/) - [Technical Requirements](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-technical-requirements/) **Article Categories:** Uncanny Groups for LearnDash --- ### [Upgrade Existing LearnDash Groups](https://www.uncannyowl.com/knowledge-base/upgrade-existing-learndash-groups/) **Published:** September 16, 2017 **Author:** Ken **Excerpt:** Learn how to enable seat tracking on your existing LearnDash Groups. **Content:** ### Overview If you installed Uncanny Groups on a site that already has LearnDash groups, you can convert those existing groups into fully managed Uncanny Groups — giving Group Leaders front-end access to enroll users, track progress, and manage seats. ### Understanding Group Types Uncanny Groups recognises two kinds of groups on your site: **Type****How it was created****Front-end management****Basic group**Created via **LearnDash LMS > Groups > New Group**, or created before Uncanny Groups was installedNot visible on the front end by default**Uncanny Group**Created via **Uncanny Groups > Create Group**, or upgraded from a basic LeaenDash groupFull front-end management for Group LeadersBasic groups are not visible on the front-end Group Management page unless you enable the **Show “basic” (non-upgraded) groups in front end with access to reports only** setting. When that setting is enabled, basic groups appear on the front end with access to reporting functions only — Group Leaders cannot add or remove members from them. Upgrading a basic group converts it to an Uncanny Group and makes it fully manageable. ### Before You Start - Uncanny Groups must be installed and activated. - You need WordPress administrator access to run the bulk upgrade. - We recommend reviewing your existing groups first so you understand which ones will be affected. ### Bulk Upgrade All Basic Groups When you first set up Uncanny Groups, the plugin’s settings page includes a one-time option to upgrade all basic groups at once. This is the fastest way to bring every pre-existing LearnDash group under Uncanny Groups management. 1. Navigate to **Uncanny Groups > Settings** in your WordPress admin. 2. Locate the **Upgrade LearnDash Groups** section. 3. Click **Start Process**. ![Panel titled 'Upgrade LearnDash Groups' explaining upgrade to include seat management, with a warning about reversion and a 'Start Process' button.](https://www.uncannyowl.com/wp-content/uploads/2017/09/bulk-upgrade-button.png "bulk upgrade button - Uncanny Owl") **Warning:** As noted in this section of the plugin, groups upgraded in bulk cannot be reverted to basic groups via a bulk option (each individual group needs to be downgraded independently). To enable seat management on only some groups, use the **Upgrade Group** button on each group’s Edit page instead. Once the process runs, every LearnDash group that was created through the standard interface — including any groups created before Uncanny Groups was installed — becomes an Uncanny Group. Group Leaders for those groups will then be able to manage them from the front-end Group Management page. #### How Seats Are Calculated on Upgrade The upgrade automatically sets the seat count for each converted group. The calculation is: **Seats = number of existing group members + number of Group Leaders** Because all current members are set as enrolled users, the remaining seats after upgrade will be 0. If you need additional seats, you can edit the group after the upgrade to increase the total. ![Uncanny Group Management: total seats 10, remaining seats 0; blue 'Reconcile seat count' button.](https://www.uncannyowl.com/wp-content/uploads/2017/09/upgrade-individual-group.png "upgrade individual group - Uncanny Owl")### Upgrade an Individual Group If you only want to convert a single group — for example, to test the process before running it in bulk — you can upgrade groups one at a time. 1. In your WordPress admin, navigate to **LearnDash LMS > Groups**. 2. Open the group you want to convert by clicking its title to go to the **Edit** page. 3. Select the **Uncanny Groups** tab (Uncanny Groups 6.1.8+), then click **Upgrade Group** in the **Uncanny Group Management** box. **Tip:** That same box notes that you can bulk-upgrade every group from the link to **Uncanny Groups > Settings**. ![Group management panel titled 'Uncanny Group Management' with an 'Upgrade group' button and explanatory text about enabling seat and front-end management, plus a Settings link.](https://www.uncannyowl.com/wp-content/uploads/2017/09/upgrade-individual-group-button.png "upgrade individual group button - Uncanny Owl") The group is immediately converted and will appear on the front-end Group Management page for its Group Leader. ### Can you downgrade a group? Any upgraded group can be downgraded. However, downgrading a group permanently deletes all enrollment keys (these are assigned to users to provide seat access). When a WooCommerce-created group is downgraded, it returns to basic group status, no longer appears on the front-end Group Management page (unless **Show “basic” (non-upgraded) groups in front end with access to reports only** is enabled), and its Group Leaders lose front-end management access for that group. ### What Happens to Basic Groups You Don’t Upgrade Basic groups remain fully functional in the LearnDash admin. However, they are hidden from the front-end Group Management page unless you enable **Show “basic” (non-upgraded) groups in front end with access to reports only** in **Uncanny Groups > Settings**. Enabling that setting lets Group Leaders see their basic groups on the front end with access to reporting functions only — they cannot add or remove members from these groups without fully converting them to Uncanny Groups. ### Related Articles - [Uncanny Groups for LearnDash – Plugin Overview](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) — Start here if you’re new to Uncanny Groups. - [Install and Set Up Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/) — How to install the plugin and complete initial configuration. - [Set Up Group Management Pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/) — Create the front-end pages that Group Leaders use to manage their groups. - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) — A walkthrough of everything a Group Leader can do from the front end. - [Manage Groups as Administrator](https://www.uncannyowl.com/knowledge-base/set-up-a-learndash-group/) — How administrators create and configure Uncanny Groups from the WordPress admin. **Article Categories:** Uncanny Groups for LearnDash --- ### [Using The Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) **Published:** October 11, 2018 **Author:** Anthony Lucic **Excerpt:** Learn how the front-end group management page helps Group Leaders manage their groups. **Content:** ### Overview The Group Management page is the front-end hub where Group Leaders manage their groups — adding and removing users, distributing enrollment keys, resetting passwords, and emailing members — without needing WordPress admin access. When the Uncanny Groups for LearnDash plugin is activated, it automatically creates a Group Management page built with the **Group Management** block (equivalently, the `[uo_groups]` shortcode). Group Leaders are redirected to this page after login and can also reach it via any `[uo_groups_link]` or `[uo_groups_button]` shortcode you place in your theme navigation. Access is restricted to users with the **Group Leader** role. While Administrators can also view and edit groups via the Group Management page, the Group Management page was designed for Group Leaders to use. **Tip:** Before customizing the page, review [Set Up Group Management Pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/) for instructions on renaming, configuring shortcode attributes, and adding pages to your site menu. ![Group Management page showing a Sales Training group with four courses, enrolled users, and group leaders in a dashboard layout.](https://www.uncannyowl.com/wp-content/uploads/2026/07/group-management-page-852x1030.png "group management page - Uncanny Owl") ### Group information At the top of the page, Group Leaders see a summary of the selected group: - **Group name selector** — a dropdown listing every group the leader manages. If they manage only one group, the dropdown is hidden and the single group name is displayed. - **Seats remaining / Total seats** — displays available seats alongside the total seat allocation for the group. Seats are consumed the moment a user is enrolled (not on invitation), and remain occupied regardless of course completion status. - **Associated courses** — links to each course assigned to the group, so leaders can quickly navigate to course content. When **child group reporting** is enabled in the plugin settings, parent groups display combined seat and user data rolled up from all child groups. ![Group Management page showing the selected group 'March Coaching Circle' with three course links and enrollment: 7 users, 13 seats remaining of 20 total.](https://www.uncannyowl.com/wp-content/uploads/2018/10/Group-Information.png "Group Information - Uncanny Owl") ### Enrolled users The **Enrolled Users** table lists every user currently associated with the group. For each user you can see: - Display name (linked to the user edit dialog when **Allow group leaders to edit users** is enabled in settings) - Email address - Enrollment status (see [User status reference](https://docs.google.com/document/d/12AWkcxVwE4W4QkPjDywjz4iT-OKelHjQ_b-6k9Kas9s/edit#user-status-reference) below) - Enrollment key used (if applicable), controlled by the `key_column` shortcode attribute #### User status reference **Status****Meaning****Enrollment key status****Not Enrolled**User received an invitation or key but has not yet redeemed itAvailable**Not Started**User is enrolled in the group but has not begun any courseAvailable**In Progress**User has started at least one courseUsed**Completed**User has completed all courses assigned to the groupUsed### Adding users Group Leaders can add users to a group in three ways, depending on which buttons are enabled via shortcode attributes: #### Invite a single user 1. Click the **Users** button. 2. Select **Add one**. A form appears with two options, **Add and invite user** and **Send enrollment key** (see Send enrollment keys section below). Check **Add and invite user.** 3. Enter the user’s first name, last name, email address and optional password. 4. Click **Add User**. An email is sent to the user based on the [email message settings](https://www.uncannyowl.com/knowledge-base/configuring-group-emails/) set up by your Administrator. The user is added to the list of users in the group and they take up a seat in your group, and their status is set to *Not Started*. If you add a user that already exists on the site, the system will automatically assign a key, add them to the group and send the *Add and invite (existing user)* email. They then occupy a seat in the group just like a new user. #### Invite Multiple users 1. Click the **Users** button 2. Select the **Add multiple** option. The Bulk Add & Invite Users form appears. 3. Enter the user’s first name, last name, email address and optional password. 4. Click the **Add & Invite Users** button. The same process will occur as outlined in step 4 of **Invite a single user** (see above) #### Send enrollment keys Group Leaders can add users to their group by sending them an enrollment key which requires the user redeem the key to be added to the group. If the user is not registered on the site, then they would need to redeem the enrollment key via registration (see [Set Up User Enrollment](https://www.uncannyowl.com/knowledge-base/set-user-enrollment/) for more info) . 1. Click the **Users** button 2. Select **Add one**. Select the option **Send enrollment key** 3. Enter the user’s first name, last name, email address (there is no password field when **Send enrollment key** is selected 4. Click **Add User.** 5. Users will receive the Send enrollment key email. Once that user registers and redeems that key, they take up a seat in the group, are enrolled in the group and can begin group courses. #### Bulk upload via CSV To add many users at once, upload a CSV file: 1. Click **Upload Users**. 2. Prepare your CSV file using the following column format (the first row is a header row of column names): ``` user_email,user_pass,first_name,last_name ``` 3. Select the file and click **Upload**. The plugin creates new WordPress user accounts for any email addresses not already in the system, enrolls all users in the group, and sends invitation emails. **Note:** For the bulk upload to work properly, a CSV file formatted with the following column order and headings must be used: user\_email; user\_pass; first\_name; last\_name. CSV files that have incorrect formatting of email addresses, column names, etc will not be uploaded. You can download a sample file from the **Upload Users** modal box. If the user\_pass cells are blank, a random password will be used, but the column heading should still be included. A column for “username” can optionally be included as the first column but is not required; if it exists but is left blank, username will default to the email address. ![Modal to upload a CSV and add users; shows 7 seats remaining and options to send enrollment keys or suppress emails; Add users button at bottom.](https://www.uncannyowl.com/wp-content/uploads/2018/10/CSV-Add-Users-Group-Management.png "CSV Add Users Group Management - Uncanny Owl") ### Removing users To remove users from a group, select the users you would like to remove from the Enrolled User list, and a Remove User(s) button will appear. Click on the Remove User(s) button. You will be prompted to confirm your action. Whether or not a Group Leader can remove users from the group, depends on the users group status: - **Always** — Group Leaders can remove users at any stage. - **Before course enrollment begins** — Leaders can only remove users who have not yet started any course. - **Before course completion** — Leaders can remove users until they complete all group courses. Depending on the options set by your site administrator, you may only be able to remove group members before they have enrolled and begun their courses. Once a learner has begun completing the courses that are available in the group, or if they have completed all of the courses and their status is set to Completed, it may no longer be possible to remove them from the group. **Note:** Removing a user from a group un-enrolls them from the group’s courses. The seat they occupied becomes available again. ### Password resets If a user has forgotten their password, a Group Leader can trigger a reset without accessing the WordPress back end: 1. Locate and select the user in the **Enrolled Users** table. A **Send password reset** button will appear. 2. Click the **Send password reset** 3. The user will be emailed a link to reset their password. ### Downloading enrollment keys Group Leaders can download a CSV of all unassigned enrollment keys for the group — useful for distributing keys manually or tracking redemptions in a spreadsheet. Click Users > **Download Keys** to export a CSV file containing each unused key and its status. This button is shown or hidden via the `download_keys_button` shortcode or block settings attribute. ### Emailing group members Group Leaders can easily email all members of their group based on their course status (Not enrolled, Not started, In progress and/or Completed). Clicking Users > Email Users brings up the email group members interface. Emails sent via this interface use the Group Leader’s name as the From Name, the Group Leader’s email address as the Reply-to Email, and the From Email address in Uncanny Groups > Settings as the From Email. This is to reduce the likelihood that the emails are flagged as spam. Members are sent the email via BCC, so group members will not see each others’ email addresses. Note that this feature is not available by default. On your Group Management page, you must add the group\_email\_button=”show” attribute to your `[uo_groups]` shortcode to display the button to Group Leaders. For full details on composing and customizing group emails, see [Configure Group Emails](https://www.uncannyowl.com/knowledge-base/configuring-group-emails/). **Note:** The group\_email\_button attribute defaults to `"hide"`. You must explicitly set it to `"show"` to expose this feature to Group Leaders. ### Group Leader management The **Group Leaders** section (shown when `group_leader_section="show"`) lets an existing Group Leader: - **Add a Group Leader** — enter a user’s email address to grant them Group Leader status for this group. The button is controlled by `add_group_leader_button`. - **Remove a Group Leader** — click the remove icon next to any leader’s name. Group Leaders cannot remove themselves from the list. ![Group leaders management panel with one leader (Brian Fasbender) and email, plus Add/Remove buttons, search field, and pagination.](https://www.uncannyowl.com/wp-content/uploads/2018/10/GM-Group-Leaders-section-with-remove-button.png "GM - Group Leaders section - with remove button - Uncanny Owl") ### Adding seats and courses If the group was purchased through WooCommerce (as a subscription or group license), Group Leaders may see **Add Seats** and **Add Courses** buttons, depending on the purchase model: - **Add Seats** — increases the seat count for the group (only appears for groups created via the purchase of a [Custom Group License](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/). - **Add Courses** — adds additional courses to the group’s curriculum. Individual seats that have already been used cannot be refunded or removed. For full details on expanding groups after purchase, see [Add Seats and Courses after Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-and-courses-after-group-purchase/). These buttons are controlled by the `add_seats_button` and `add_courses_button` shortcode attributes. ### Shortcode reference The **Group Management** block and `[uo_groups]` shortcode have the following settings / attributes to control which features are visible on the page: **Setting / Attribute****Values****Default****Controls**`group_name_selector``"show"` / `"hide"``"show"`Group name dropdown`seats_quantity``"show"` / `"hide"``"show"`Seat count display`add_seats_button``"show"` / `"hide"``"show"`Add Seats button`add_courses_button``"show"` / `"hide"``"show"`Add Courses button`add_user_button``"show"` / `"hide"``"show"`Add User / invite button`remove_user_button``"show"` / `"hide"``"show"`Remove User button`first_last_name_required``"yes"` / `"no"``"no"`Makes first/last name mandatory when adding a user`group_email_button``"show"` / `"hide"``"hide"`Send Email button`upload_users_button``"show"` / `"hide"``"show"`Bulk CSV upload button`download_keys_button``"show"` / `"hide"``"show"`Download Keys button`key_options``"show"` / `"hide"``"show"`Enrollment key options in the Add User dialog`key_column``"show"` / `"hide"``"show"`Key column in the Enrolled Users table`group_courses_section``"show"` / `"hide"``"show"`Associated courses list`group_leader_section``"show"` / `"hide"``"show"`Group Leaders section`add_group_leader_button``"show"` / `"hide"``"show"`Add Group Leader button`quiz_report_button``"show"` / `"hide"``"show"`Quiz Report button`assignments_button``"show"` / `"hide"``"show"`Assignments button`essays_button``"show"` / `"hide"``"show"`Essays button`progress_report_button``"show"` / `"hide"``"show"`Progress Report button`progress_management_report_button``"show"` / `"hide"``"show"`Manage Progress button`csv_export_button``"show"` / `"hide"``"show"`CSV export of enrolled users`excel_export_button``"show"` / `"hide"``"hide"`Excel export of enrolled users`enrolled_users_page_length`numeric`50`Default rows per page in the Enrolled Users table`enrolled_users_length_menu`comma-separated list`25,50,100,-1 : All`Row-count options in the Enrolled Users table`group_leaders_page_length`numeric`50`Default rows per page in the Group Leaders table`group_leaders_length_menu`comma-separated list`25,50,100,-1 : All`Row-count options in the Group Leaders table`enrolled_users_orderby_column`column name`First name`Column used to sort the Enrolled Users table`enrolled_users_order_column``"asc" `/ `"desc"``"asc"`Sort direction for the Enrolled Users table`group_leaders_orderby_column`column name`First name`Column used to sort the Group Leaders table`group_leaders_order_column``"asc"` / `"desc"``"asc"`Sort direction for the Group Leaders table`edit_page_id`page ID*(none)*ID of a custom user-edit page`edit_url`relative URL*(none)*URL of a custom user-edit page (alternative to `edit_page_id`)**Example — showing the email button and hiding key management:** ``` [uo_groups group_email_button="show" key_column="hide" key_options="hide"] ``` ### Related Articles - [Set Up Group Management Pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/) — Configure which pages the plugin creates and customize their shortcode attributes - [Using the Group Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/) — Course and quiz reporting available from the front-end Reports menu - [Configure Group Emails](https://www.uncannyowl.com/knowledge-base/configuring-group-emails/) — Customize invitation, key, and leader email templates - [Set Up User Enrollment](https://www.uncannyowl.com/knowledge-base/set-user-enrollment/) — Control how users are enrolled in groups and courses - [Add Seats and Courses after Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-and-courses-after-group-purchase/) — Expand existing groups created through WooCommerce purchases **Article Categories:** Uncanny Groups for LearnDash --- ### [Using the Group Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/) **Published:** October 11, 2018 **Author:** Anthony Lucic **Excerpt:** Learn how to use the powerful and versatile front-end reports for Group Leaders. **Content:** ### Overview Uncanny Groups for LearnDash automatically creates front-end report pages that Group Leaders can use to track learner progress — no WordPress admin access required. This article covers the Course Report, Quiz Report, and the individual progress view accessible from the Group Management page. When the plugin is activated, it creates two report pages: - **Course Report** — the **Course Report** block, or the `[uo_groups_course_report] `shortcode - **Quiz Report** — the **Quiz Report** block, or the `[uo_groups_quiz_report]` shortcode Group Leaders access these pages via the **Reports** menu on the Group Management page, or you can add them directly to your site navigation. Administrators can also access both pages. **Before you start:** The report pages are created automatically on activation. If you need to recreate or reconfigure them, see [Set Up Group Management Pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/). ![Enrolled users dashboard: four users listed with names and emails, search field, Users dropdown, and Reports menu on a table of statuses and seats remaining (16/20).](https://www.uncannyowl.com/wp-content/uploads/2018/10/reports-tab.png "reports tab - Uncanny Owl") ### Course Report The Course Report gives Group Leaders a completion overview for any group-and-course combination they manage. #### Using the Course Report 1. Navigate to the **Course Report** page directly or via the Group Management page by clicking Reports > Course. 2. Use the **Group** dropdown to select the group you want to report on. 3. Use the **Course** dropdown to select the course. 4. The report table loads automatically. The default columns include: **Column****Description****User**Learner’s display name**Email**Learner’s email address**Completion %**Percentage of course content completed**Completion Date**Date the learner completed the course (blank if not yet complete)![Group Course Report page with a table of student course progress (names, emails, completion %, dates, course and group).](https://www.uncannyowl.com/wp-content/uploads/2018/10/course-report-1030x734.png "course report - Uncanny Owl") #### Exporting the Course Report If export buttons are enabled via shortcode attributes (see [Shortcode reference](https://docs.google.com/document/d/1WamS8Tx-cvhbsULoYn3h1wLuGWuvswTIvi_nyJtK_AY/edit#course-report-shortcode-reference) below), Group Leaders can download the report as a **CSV** or **Excel** file. #### Transcript integration If you are using the Uncanny Toolkit Pro transcript feature, you can link to a transcript page from within the Course Report. Add the transcript-page-id attribute to the `[uo_groups_course_report]` shortcode with the ID of your transcript page. A **Transcript** column will appear in the report table, allowing Group Leaders to view a learner’s full course transcript. #### Customizing report columns (developers) Developers can add, remove, or reorder Course Report columns using the ulgm\_group\_course\_report\_columns filter, introduced in **Uncanny Groups v6.1.4**. This allows teams with custom reporting requirements to tailor the table without modifying plugin files. See [Actions/Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers/) for implementation details. #### Course Report shortcode reference Add the **Course Report** block, or place the `[uo_groups_course_report]` shortcode, on any WordPress page to create a Course Report page: ``` `[uo_groups_course_report]` ``` **Setting / Attribute****Values****Default****Description**`course-order`“`ID`“, “`title`“, “`date`“, “`menu_order`“*(empty)*Sort order for the Course dropdown`columns`comma-separated column keys`user_name`, `first_name`, `last_name`, `user_email`, `percent_completed`, `date_completed`, `date_enrolled`, `course_name`, `group_name`, `transcript_page_url`, `course_time`Which columns appear in the report table`orderby_column`column nameD`ate Completed`Column used to sort the report table`order_column`“`asc`” / “`desc`““desc”Sort direction for the report table`csv_export_button`“`show`” / “`hide`““show”Show or hide the CSV export button`excel_export_button`“`show`” / “`hide`““show”Show or hide the Excel export button`transcript-page-id`page ID`0`Enables the Transcript column when set to a valid transcript page ID### Quiz Report The Quiz Report lets Group Leaders drill into quiz results for any combination of group, course, and quiz — including individual question-by-question breakdowns. #### Using the Quiz Report 1. Navigate to the **Quiz Report** page directly or via the Group Management page by clicking Reports > Quiz. 2. Select a **Group** from the first dropdown. 3. Select a **Course** from the second dropdown. The quiz list updates to show all quizzes within that course, including course-level quizzes. 4. Select a **Quiz** from the third dropdown. 5. The results table loads, showing every enrolled user’s score for that quiz. **Note:** As of v6.1.5, the quiz dropdown correctly includes course-level quizzes alongside lesson and topic quizzes. ![Group Quiz Report page with filters for Group (March Coaching Circle), Course (Company Wellness & Productivity), and Quiz (Workplace Safety – Intro Assessment); export buttons (CSV, Excel); a search box; and a user table with columns Username, First Name, Last Name, Email, Quiz score, Detailed report, and Date, showing five sample rows.](https://www.uncannyowl.com/wp-content/uploads/2018/10/quiz-report-1030x713.png "quiz report - Uncanny Owl") #### Detailed per-attempt report If LearnDash **quiz statistics** are enabled for a quiz, a detail icon appears next to each user’s result. Clicking it opens a per-attempt breakdown showing: - Each question in the quiz - The answer the learner selected - Whether the answer was correct This view is read-only — it cannot be used to change quiz scores. ![Quiz results for david@uncannyowl.com showing one question answered: 'Group Leaders can create new users?' with 100% score on the date 2018-05-09 3:11 PM, total 1 point, time 00:00:03.](https://www.uncannyowl.com/wp-content/uploads/2018/10/detailed-report-David2-1030x385-1.png "detailed-report-David2-1030x385 - Uncanny Owl") #### Exporting the Quiz Report If export buttons are enabled via shortcode attributes, Group Leaders can download results as a **CSV** or **Excel** file. #### Quiz Report shortcode reference Place the **Quiz Report** block or the following shortcode on any WordPress page to create a Quiz Report page: ``` [uo_groups_quiz_report] ``` **Setting / Attribute****Values****Default****Description**`course-orderby`“`ID`“, “`title`“, “`date`“, “`menu_order`““`title`“Sort field for the Course dropdown`course-order`“`ASC`” / “`DESC`““`ASC`“Sort direction for the Course dropdown`quiz-orderby`“`ID`“, “`title`“, “`date`“, “`menu_order`““`title`“Sort field for the Quiz dropdown`quiz-order`“`ASC`” / “`DESC`““`ASC`“Sort direction for the Quiz dropdown`columns`comma-separated column keys`user_name`, `first_name`, `last_name`, `user_email`, `quiz_score`, `quiz_modal`, `quiz_date`Which columns appear in the report table`score-type`“`percent`” / “`points`““`percent`“Whether quiz scores display as a percentage or points`orderby_column`column name`Date`Column used to sort the report table`order_column`“`asc`” / “`desc`““`desc`“Sort direction for the report table`csv_export_button`“`show`” / “`hide`““`show`“Show or hide the CSV export button`excel_export_button`“`show`” / “`hide`““`show`“Show or hide the Excel export button### Individual progress view For a quick look at a single learner’s progress across all their enrolled courses, Group Leaders can use the individual progress view without leaving the Group Management page: 1. Go to the **Group Management** page. 2. Find the user in the **Enrolled Users** table. 3. Click the **In Progress** status link next to their name. A panel opens showing that learner’s progress across every course they are enrolled in through the group. This view is read-only — to mark items complete or incomplete, use the [Manage Learner Progress](https://www.uncannyowl.com/knowledge-base/manage-learner-progress/) page instead. ## Related Articles - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) — The main front-end hub for Group Leaders - [Manage Learner Progress](https://www.uncannyowl.com/knowledge-base/manage-learner-progress/) — View and edit individual learner progress from the front end - [Set Up Group Management Pages](https://www.uncannyowl.com/knowledge-base/set-group-management-pages/) — Configure and customize the report pages - [Actions/Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers/) — Hooks available for customizing Group Leader reports - [Front End Essay Question Management](https://www.uncannyowl.com/knowledge-base/front-end-essay-question-management/) — Review and grade essay submissions from the front end **Article Categories:** Uncanny Groups for LearnDash --- ### [Run Cohort-Based Courses & Group Coaching Programs](https://www.uncannyowl.com/knowledge-base/run-cohort-based-courses-group-coaching-programs/) **Published:** July 13, 2026 **Author:** David Chambo **Content:** Cohort-based courses and group coaching are some of the most profitable formats in online education — learners pay a premium to move through material *together* with guidance. Uncanny Groups gives you the structure to run them: organize each intake as a group, give coaches their own dashboard, and track the whole cohort as one. ### Why cohorts need more than a course A self-paced course sells once. A cohort program sells an *experience* — a defined start, a shared group, and a coach who keeps people on track. To deliver that without drowning in spreadsheets, you need to: - Group each intake separately so cohorts don’t blur together. - Give coaches visibility into their cohort’s progress. - Add and remove participants as enrollments open and close. That’s exactly what Groups provides. ### One group per cohort Spin up a group for each intake — “Spring 2026 Cohort”, “March Coaching Circle” — and enroll the program’s courses into it. Each cohort stays neatly separated, with its own members, its own progress, and its own reports. When the next intake opens, create a new group and you’re ready to go. ![Two side-by-side group management pages: left shows Spring 2026 Cohort; right shows March Coaching Circle, each with group courses and enrolled users.](https://www.uncannyowl.com/wp-content/uploads/2026/07/2-cohorts-1030x372.png "2 cohorts - Uncanny Owl") ### Give every coach their own command center Assign each coach as a **Group Leader** for their cohort. From a single front-end page — no WordPress login needed — they can: - See who has started, who’s mid-way, and who’s stalled. - Re-send invitations and trigger password-reset emails. - Welcome late joiners and remove drop-outs. This lets coaches focus on coaching, while you stay out of the day-to-day. See [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/). ### Keep the whole cohort moving Group reports show the cohort’s progress side by side, so coaches can spot who’s falling behind and reach out before they drop. Quiz reports surface where the group is struggling, so you can adjust a live session or follow-up. See [Using the Group Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/). For programs with essays or assignments, coaches can review and grade submissions right from the front end: - [Front End Essay Question Management](https://www.uncannyowl.com/knowledge-base/front-end-essay-question-management/) - [Front End LearnDash Assignment Management](https://www.uncannyowl.com/knowledge-base/front-end-learndash-assignment-management/) ### Sell seats to each intake Pair Groups with WooCommerce and you can sell a fixed number of seats per cohort — creating natural scarcity (“only 20 spots”) that drives signups. When a cohort sells out, close it and open the next. See [Sell LearnDash Group Access to Learners](https://www.uncannyowl.com/knowledge-base/sell-learndash-group-access-to-learners/). ### Why this wins - **Premium pricing** — cohorts and coaching command higher prices than self-paced courses. - **Clean separation** — every intake is its own group, with its own reports. - **Coaches stay empowered** — front-end management, no admin access. - **Built-in scarcity** — seat-limited cohorts create urgency that sells. ### How to set it up 1. Install Uncanny Groups — see [Getting Started](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-groups-for-learndash/). 2. Create a group for your first cohort and enroll its courses. 3. Assign the coach as the cohort’s [Group Leader](https://www.uncannyowl.com/knowledge-base/group-management-page/). 4. (Optional) [Sell seats](https://www.uncannyowl.com/knowledge-base/sell-learndash-group-access-to-learners/) to fill the cohort. 5. Use [reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/) to keep the cohort on track. ### Related Articles - [Front End LearnDash Group Creation](https://www.uncannyowl.com/knowledge-base/front-end-learndash-group-creation/) - [Pooled Seats](https://www.uncannyowl.com/knowledge-base/pooled-seats/) - [Onboard & Train Your Team with LearnDash Groups](https://www.uncannyowl.com/knowledge-base/onboard-train-your-team-with-learndash-groups/) --- ### [Onboard & Train Your Team with LearnDash Groups](https://www.uncannyowl.com/knowledge-base/onboard-train-your-team-with-learndash-groups/) **Published:** July 13, 2026 **Author:** David Chambo **Content:** Whether you’re onboarding new hires, rolling out annual compliance training, or upskilling a department, Uncanny Groups gives you a structured way to organize learners, hand day-to-day management to the right people, and prove who completed what. ### The challenge with team training Training a team in plain LearnDash quickly gets messy. You end up managing every enrollment yourself, you can’t easily see who’s behind, and there’s no clean way to let a department head run their own group. For onboarding and compliance, you also need **evidence of completion** you can stand behind. Uncanny Groups solves all of this by mapping naturally onto how organizations already work: teams, managers, and reporting lines. ### Organize learners the way your org actually works Create a group for each team, cohort, department, or location — “Sales Onboarding”, “2026 Compliance”, “Warehouse – Safety”. Each group has its own courses, its own members, and its own leader. Parent and child groups let you mirror a larger structure (e.g. a regional group containing several store-level groups) and **roll child-group progress up into the parent’s reports**. ![Group Management screen with a dropdown to select a group, showing 'Sales and Marketing Regional Group A' and an Edit Group button.](https://www.uncannyowl.com/wp-content/uploads/2026/07/group-hierarchy.png "group hierarchy - Uncanny Owl") ### Delegate management to team leads You don’t have to be the bottleneck. Assign a **Group Leader** — a manager, team lead, or HR coordinator — and they get a front-end page to: - Add new hires and remove people who leave. - Send invitations and password-reset emails. - See exactly who has and hasn’t finished. All of this happens **without WordPress admin access**, so you keep your dashboard locked down while still empowering managers. See [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/). ### Prove completion for compliance and audits For mandatory training, “I think they did it” isn’t good enough. Group Leaders and admins can pull **course and quiz reports** showing each learner’s status and scores, and export them to CSV for HR records or audits. See [Using the Group Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/). **Tip:** Pair Groups with [Uncanny Continuing Education Credits](https://www.uncannyowl.com/article-categories/uncanny-ceus-learndash/) when you need to award and track formal credits, or with [Tin Canny Reporting](https://www.uncannyowl.com/article-categories/tin-canny-learndash-reporting/) for deeper, site-wide analytics. ### Onboard new hires on autopilot New people join all year round. Instead of manually enrolling each one, a manager simply adds them to the onboarding group — they’re enrolled in the right courses instantly and receive a welcome email with their login. As they finish, the manager watches progress fill in on the same page. ### Why this wins - **Less admin for you** — managers run their own teams. - **Clear accountability** — every learner’s status is visible to the right leader. - **Exportable completion records** — pull status, scores, and completion dates to CSV for your HR or compliance files. - **Scales cleanly** — parent/child groups handle multi-team and multi-location structures. ### How to set it up 1. Install Uncanny Groups — see [Getting Started](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-groups-for-learndash/). 2. Create a group per team and enroll the relevant courses. 3. Assign each team’s manager as the [Group Leader](https://www.uncannyowl.com/knowledge-base/group-management-page/). 4. Have managers [add their team members](https://www.uncannyowl.com/knowledge-base/set-user-enrollment/) by invite or CSV. 5. Use [reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/) to track completion and export records. ### Related Articles - [Manage Learner Progress](https://www.uncannyowl.com/knowledge-base/manage-learner-progress/) - [Configure Group Emails](https://www.uncannyowl.com/knowledge-base/configuring-group-emails/) - [Sell Online Courses to Businesses & Teams](https://www.uncannyowl.com/knowledge-base/sell-online-courses-to-businesses-teams-with-learndash/) **Article Categories:** Uncanny Groups for LearnDash --- ### [Sell Online Courses to Businesses & Teams with LearnDash](https://www.uncannyowl.com/knowledge-base/sell-online-courses-to-businesses-teams-with-learndash/) **Published:** July 13, 2026 **Author:** David Chambo **Content:** Selling a course one seat at a time leaves money on the table. The biggest orders come from organizations that need to train **whole teams** — and they expect to buy in bulk and manage their own people. Uncanny Groups makes that possible, turning your LearnDash site into a B2B course storefront. ### The opportunity A single corporate sale can be worth dozens or hundreds of individual enrollments. But businesses won’t buy if it means emailing you a spreadsheet of names every time someone joins or leaves. They want to: - Buy a block of seats in one transaction. - Add and remove their own employees on demand. - See who has finished training — without asking you. Uncanny Groups delivers exactly this experience, so you can close bigger deals and spend less time on manual account admin. ### What the buyer experience looks like 1. **A company finds your course** and chooses how many seats it needs. 2. **They check out through WooCommerce** like any other product — including volume discounts you set. 3. **They instantly become a Group Leader** with a front-end management page. 4. **They invite their team** by email, enrollment key, or CSV upload — no help from you. 5. **They track completion** in built-in reports and add more seats whenever they grow. ![Group Management page showing a Sales Training group with four courses, enrolled users, and group leaders in a dashboard layout.](https://www.uncannyowl.com/wp-content/uploads/2026/07/group-management-page-852x1030.png "group management page - Uncanny Owl")### Two ways to sell You can offer either model — or both — depending on how much choice you want buyers to have. **Model****Best for****How it works****Pre-configured licenses**A fixed catalog of team packages (e.g. “Compliance Training – 50 seats”)You define the course bundle and seat count; the buyer simply purchases it.**Custom licenses**Buyers who want to pick their own courses and seat countsThe buyer builds their own package on a Buy Courses page and checks out.See [Create Pre-configured LearnDash Group Licenses](https://www.uncannyowl.com/knowledge-base/creating-pre-configured-learndash-group-licenses/) and [Enable Users to Build Custom Group Licenses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/). ### Close bigger deals with volume pricing Businesses expect a better per-seat price as the order grows. With Uncanny Groups you can set **bulk discount tiers** — for example, 10% off at 25 seats and 20% off at 100 — to nudge buyers toward larger purchases. See [Configure Bulk Discounts](https://www.uncannyowl.com/knowledge-base/configure-bulk-discounts/). ### Let accounts grow without friction Organizations rarely buy the perfect number of seats up front. When they need more, Group Leaders can **add seats and courses** to an existing license themselves, so expansion revenue flows in without a support ticket. Please note that additional courses cannot be added to subscription-based group licenses. See [Add Seats and Courses after Group Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-and-courses-after-group-purchase/). ### Why this wins - **Bigger average order value** — sell 50 seats, not 1. - **Near-zero admin overhead** — customers manage their own people. - **Recurring revenue** — pair licenses with WooCommerce Subscriptions for renewing seats. - **A professional buyer experience** that competes with dedicated corporate-LMS platforms, on your own site. ### How to set it up 1. Install Uncanny Groups and the official LearnDash WooCommerce integration — see [Getting Started](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-groups-for-learndash/). 2. [Set up your LearnDash Group Course products](https://www.uncannyowl.com/knowledge-base/setting-learndash-group-course-products/). 3. Choose your selling model: [pre-configured](https://www.uncannyowl.com/knowledge-base/creating-pre-configured-learndash-group-licenses/) or [custom licenses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/). 4. [Configure bulk discounts](https://www.uncannyowl.com/knowledge-base/configure-bulk-discounts/) to reward larger orders. 5. Point buyers to a Buy Courses page and start selling. ### Related Articles - [Sell LearnDash Group Access to Learners](https://www.uncannyowl.com/knowledge-base/sell-learndash-group-access-to-learners/) - [Adding Seats after Subscription-based Group Purchase](https://www.uncannyowl.com/knowledge-base/adding-seats-after-subscription-based-group-purchase/) - **Onboard & Train Your Team with LearnDash Groups** **Article Categories:** Uncanny Groups for LearnDash --- ### [Getting Started with Uncanny Groups for LearnDash](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-groups-for-learndash/) **Published:** July 13, 2026 **Author:** David Chambo **Content:** New to Uncanny Groups? This guide takes you from a fresh install to a fully working group — with learners enrolled and progress reports running — in about 15 minutes. No coding, and no need to give anyone access to your WordPress dashboard. **Looking for the bigger picture first?** The [Uncanny Groups – START HERE!](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) article explains the three ways to use Groups (manual, selling custom licenses, and selling pre-configured licenses). This guide walks through the **manual** path — the fastest way to see Groups in action. ### What Uncanny Groups does LearnDash includes a basic “Groups” feature, but it lives entirely in the WordPress admin and offers little more than bulk enrollment. Uncanny Groups turns that into a complete team-training toolkit: - **Group Leaders manage their own people** from a clean front-end page — no WordPress admin access required. - **Seats and enrollment keys** let leaders add, invite, and remove learners without your involvement. - **Built-in reports** show course and quiz progress for the whole group at a glance. - **WooCommerce integration** (optional) lets you *sell* group licenses, so organizations buy seats and self-manage from there. This guide covers the essentials so you can see the value immediately. Links throughout point to deeper articles when you’re ready. ### Key terms (read this first) A few words appear constantly in Groups. Here’s what they mean: **Term****Plain-English meaning****Group**A set of learners enrolled in the same course(s) — e.g. “Acme Corp – Onboarding 2026”.**Group Leader**A person who manages a group from the front end (adds learners, views reports). Usually a manager, trainer, or client contact.**Seat**One spot in a group. A 25-seat group can hold 25 learners.**Enrollment key**A code that enrolls one learner into a group. Leaders hand these out or send invites; keys are used as learners join.**License**A purchasable bundle of seats + course(s), used when you *sell* group access through WooCommerce.### What you’ll need - A working WordPress site with **LearnDash** and at least one published course. - The **Uncanny Groups** plugin file and your license key (both are in your purchase email and your [Uncanny Owl account](https://www.uncannyowl.com/account/)). #### Step 1 — Install and activate 1. In your WordPress dashboard, go to **Plugins > Add New > Upload Plugin**. 2. Upload the Uncanny Groups ZIP file and click **Install Now**, then **Activate**. 3. When prompted, open the **License Activation** screen and paste your license key. Activation enables automatic updates. On activation, the plugin automatically creates the front-end pages it needs (Group Management, registration, and reports) and sets up default email templates — so you’re ready to go without building anything by hand. For the full install walkthrough, see [Install and Set Up Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/). #### Step 2 — Create your first group You can create a group in two ways, with the Uncanny Group Creation Wizard or by creating and upgrading an LearnDash group. For your first time, the Uncanny Group Creation Wizard is fatsest: 1. Go to **Uncanny Groups > Create Group** to launch the Uncanny Group Creation Wizard. 2. Fill out the **Group details** section by adding a **Group name**, the **Total seats** you want the group to have (each seat can be assigned to a single user), **Group Courses** and if desired a **Group image**. If group hierarchy is enabled in LearnDash group options, then you can also assign a **Parent group**. 3. You can also assign an existing user as the Group Leader or create a new Group Leader user by filling out the **First name**, **Last name** and **E-mail** fields under the **Group leader details** section. 4. Click the **Create group** button to create a new upgraded group. **Already have native LearnDash groups?** You can *upgrade* existing or new LearnDash groups to unlock the Uncanny front-end features. See [Upgrade Existing LearnDash Groups](https://www.uncannyowl.com/knowledge-base/upgrade-existing-learndash-groups/). ![UI screenshot of a LearnDash 'Uncanny Groups' create group form with fields for parent, name, seats, courses, image upload, and a yellow 'Create group' button](https://www.uncannyowl.com/wp-content/uploads/2026/07/create-group-wizard-1030x634.png "create group wizard - Uncanny Owl") #### Step 3 — Add and invite learners This is where Group Leaders do most of their work. From the front-end **Group Management** page, a leader can: - **Add and invite a user** — creates the account and emails them an invitation. - **Send an enrollment key** — emails a code an existing user can redeem. - **Bulk add** multiple users at once, or **upload a CSV** for large groups. - The CSV format is simple: user\_email,user\_pass,first\_name,last\_name. ![Modal form 'Add user' over a blurred page; fields for First name, Last name, Email, Password; password note; and an 'Add user' button. Backdrop shows an 'Enrolled users' table.](https://www.uncannyowl.com/wp-content/uploads/2026/07/add-a-user-group-management-1030x672.png "add a user group management - Uncanny Owl") As learners join, **seats fill up** and **enrollment keys are marked used**. Leaders always see how many seats remain at the top of the page. Full details: [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/). #### Step 4 — Watch progress with reports Once learners start, Group Leaders can track everyone from the same front-end page. 1. Review each learner’s group progress status — **Not started**, **In progress**, or **Completed**. 2. To view group reports, click the **Reports** button. A dropdown list of all enabled reports will appear (reports are enabled on the page Uncanny Groups > Settings under the heading **Page Setup** – follow details on that page for setting up report pages) . - Click the **Course** option to view the **Course Report** where you can view group members course progress by selecting a group (if your the leader of more than one group) and course assigned to the selected group. - Click the **Quiz** option to view the **Quiz Report** for scores, and export any report to CSV. - Click the **Progress** option to view the **Progress Report** for individual user progress in all group courses. - Click the **Assignments** option to view the **Assignment Report** to manage uploaded LearnDash assignments in the front end. - Click the **Essays** option to view the **Essay Report t**o manage essay question answers from LearnDash quizzes in the front end. ![Group Course Report page showing filters for Group and Course, a search box, and a participant table with names, emails, and progress data.](https://www.uncannyowl.com/wp-content/uploads/2026/07/group-course-report-1030x664.png "group course report - Uncanny Owl") That’s it — you now have a working group, enrolled learners, and live reporting that your Group Leaders can run on their own. See [Using the Group Reports](https://www.uncannyowl.com/knowledge-base/group-leader-reports/) for everything reports can do. **Note:** Non-upgraded LearnDash groups can still be viewed on the Group Management page by Group Leaders. Just enable the option”Show “basic” (non-upgraded) groups in front end with access to reports only” on the Uncanny Groups > Settings page (found under the heading “General”. These groups will only have reporting functions, Group Leaders cannot add/remove members of “Basic” groups. ### Where to go next Pick the path that matches your goal: - **Want to sell course access to organizations?** Start with [Sell LearnDash Group Access to Learners](https://www.uncannyowl.com/knowledge-base/sell-learndash-group-access-to-learners/) and [Set up LearnDash Group Course Products](https://www.uncannyowl.com/knowledge-base/setting-learndash-group-course-products/). - **Want leaders to buy and build their own licenses?** See [Enable Users to Build Custom Group Licenses](https://www.uncannyowl.com/knowledge-base/group-leader-purchase-experience/). - **Training your own team?** Read **Onboard & Train Your Team with LearnDash Groups**. - **Customizing emails or behavior?** See [Configure Group Emails](https://www.uncannyowl.com/knowledge-base/configuring-group-emails/) and [Actions/Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers/). ### Related Articles - [Uncanny Groups – START HERE!](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) — choose the right setup for your goal - [Install and Set Up Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/) — full installation and settings reference - [Using the Group Management Page](https://www.uncannyowl.com/knowledge-base/group-management-page/) — the Group Leader’s command center - [Frequently Asked Questions](https://www.uncannyowl.com/knowledge-base/frequently-asked-questions-2/) — quick answers to common setup questions **Article Categories:** Uncanny Groups for LearnDash --- ### [Continuing Education Admin Reports](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-admin-report/) **Published:** July 23, 2017 **Author:** Ryan Moore **Excerpt:** Learn how to track continuing education credits as a LearnDash administrator. **Content:** ### Overview The admin Credit Report is your command center for continuing education data. From a single screen you can filter credit records by user, group, course, and date range, export them to CSV or Excel, manage individual records, and see who hasn’t met their requirements. Uncanny CEUs provides two ways to view credit data: - **This article — the admin Credit Report** at **Uncanny CEUs > Credit Report**, for administrators working inside the WordPress dashboard. - **The front-end report**, which you place on a page with a shortcode or block so learners and group leaders can view credits without admin access. See [Continuing Education Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/). The admin Credit Report shows learner name, email address, course name, completion date, credits earned for the course, and total credits earned — all filterable and exportable. ### Accessing the Report Go to **Uncanny CEUs > Credit Report**. The report opens with two tabs: - **Credit Report** — all earned-credit records. - **Deficiency Report** — learners who haven’t met their required credits (see below). ![Dashboard for Uncanny Owl Continuing Education Credits showing filters, actions, and a credits table with users, course titles, dates, and totals.](https://www.uncannyowl.com/wp-content/uploads/2017/07/Admin-Report-1030x405.png "Admin Report - Uncanny Owl") ### Filtering Records Use the filters at the top of the report to narrow the data, then click **Filter** to update the table. You can filter by: - **Date range** — limit results to a specific period. - **User** — search for and select a learner. - **Group** — select a LearnDash group. - **Course** — select a specific course. If you’ve enabled child-group support (see Settings below), selecting a parent group also returns records for its child groups. ### Managing Credits from the Report You can adjust credit records directly from the report. These actions are covered in full in [Add, Edit, and Remove Credits](https://www.uncannyowl.com/knowledge-base/add-and-remove-credits/): - **Add** — Click **Add credits** to award credits, including for educational activities that happened outside LearnDash. - **Edit** — Select a record and use **Edit credits** to correct its amount or date. - **Delete** — Select one or more records with the checkboxes and click **Delete credits**. ### Exporting Data The **Export** buttons generate CSV and Excel files, letting you analyze credit data externally in a spreadsheet. The export reflects your current filters and columns, so filter the report first to export exactly the data set you need. ### Deficiency Report The **Deficiency Report** tab lists learners who have **not** met their required credits, based on the rollover date and the credit requirements set at the group or individual level. Learners who have met their requirement don’t appear, so everyone on the list still has credits to earn. The Deficiency Report supports the same filtering and export options as the Credit Report, making it easy to hand a compliance officer a list of who’s behind. Requirements and rollover dates are configured in [Required Credits](https://www.uncannyowl.com/knowledge-base/required-credits/). ### Credit Report Settings Configure the report’s defaults under **Uncanny CEUs > Settings**. #### Show User Avatars Optionally displays user avatars in the report. It’s **off by default**, because loading avatars for large reports can affect performance. #### Report Mode Controls how the report retrieves credit data. Choose the mode that best fits your site’s size: **Mode****Best for****How it works****Legacy**Sites with custom code built before v4.1The original data-retrieval method, kept for compatibility.**Performance** *(default)*Most sitesCaptures credit data as users are updated, reducing the number of queries the report has to run.**Ludicrous**Very large sitesBuilds a cached copy of credit data hourly via cron and loads it on demand for the fastest reports.![Credit Report Settings panel with 'Show user avatars' checked and fields for mode, date range, page length, plus a Save Changes button.](https://www.uncannyowl.com/wp-content/uploads/2017/07/Credit-Report-Settings-1030x381.png "Credit Report Settings - Uncanny Owl") #### Default Date Range & Rows Per Page Set the date range the report loads with, and how many rows appear per page, so the report opens the way your team prefers. #### Include Results for Child Groups When a parent group is selected, this option includes records from its child groups in the report. *(Added in v5.0.)* It appears only when LearnDash group hierarchies are in use. ### User Profiles Credit totals also appear on each user’s profile page in the WordPress admin, showing both the learner’s total credits and the credits they’ve earned since the rollover date — a quick way to check one person without opening the full report. ### Related Articles - [Continuing Education Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/) — The front-end report for learners and group leaders - [Add, Edit, and Remove Credits](https://www.uncannyowl.com/knowledge-base/add-and-remove-credits/) — Manage individual credit records - [Required Credits](https://www.uncannyowl.com/knowledge-base/required-credits/) — Set the requirements behind the Deficiency Report - [Set Up the Uncanny Continuing Education Credits Plugin](https://www.uncannyowl.com/knowledge-base/setup-continuing-education-credits-plugin/) — Configure report defaults and the rollover date - [Continuing Education Shortcodes](https://www.uncannyowl.com/knowledge-base/continuing-education-shortcodes/) — Display credit data anywhere on your site **Article Categories:** Uncanny Continuing Education Credits --- ### [Continuing Education Shortcodes](https://www.uncannyowl.com/knowledge-base/continuing-education-shortcodes/) **Published:** August 5, 2017 **Author:** Ryan Moore **Excerpt:** Learn about the shortcodes that are available in Uncanny Continuing Education Credits. **Content:** ### Overview Uncanny CEUs includes a set of shortcodes — each with a matching Gutenberg block — for displaying credit information anywhere on your site. Use them to show learners their earned credits, how many credits remain before a rollover date, certificate descriptions, and more. Every shortcode below has an equivalent block in the **Uncanny Continuing Education Credits** block category. Shortcodes are ideal for page builders, widgets, and templates; blocks offer the same output with a visual settings panel in the WordPress editor. Both produce identical results, so use whichever fits your workflow. Wherever a shortcode references “credits,” the output uses the credit label you set under **Uncanny CEUs > Settings** (for example, CEUs, CPDs, or PDUs) ### Shortcodes/Blocks Here’s a list of shortcodes and blocks and how to use them: ### Available Course Credits ``` [uo_ceu_available course-id="id"] ``` Block Name: **Available Credits** This shortcode displays the number of credits available for the course (as set in the Edit page for that course). The course-id attribute is optional and is used to associated the shortcode with a particular course. If the shortcode is used on a course page, no ID is required. On other pages it should be added. If you are using blocks, the optional *Course ID* will appear in the block side menu, under *Available Credits Settings*. ### Earned Course Credits ``` [uo_ceu_earned course-id="id" since-rollover="yes"] ``` Block Name: **Earned Credits** This shortcode shows the number of credits earned by the learner for the associated course. Once again, course-id is optional and not required on a course page. If the user has not earned any credits for the course, the system will display a value of 0. If *since\_rollover* is set to *yes*, it shows the number of credits earned since the rollover date. If credits were earned before the date, a value of 0 is shown. If you are using blocks, the options *Course ID* and *Since Rollover* will appear in the block side menu, under *Earned Credits Settings*. ### Total Credits Earned ``` [uo_ceu_total user-id=""] ``` Block Name: **Total Credits** This shortcode shows the total number of credits (regardless of rollover date) for the associated user. If the user\_id attribute is not included, the value is shown for the current user. If you are using blocks, the option *User ID* will appear in the block side menu, under *Total Credits Settings*. ### Total Credits Earned since Rollover Date ``` [uo_ceu_total_rollover user-id=""] ``` Block Name: **Total Rollover Credits** This shortcode is much like the total one except that it only sums credits earned on or after the rollover date. If you are using blocks, the options *User ID* and *On or After Rollover* will appear in the block side menu. ### Days Remaining until Rollover Date ``` [uo_ceu_days_remaining] ``` Block Name: **Days Remaining** This shortcode/block outputs the number of days that remain until the rollover date. Learners can reference this value so they know how much time they have until all of their credits must be earned. ### Credits Remaining before Rollover Date ``` [uo_ceu_credits_remaining user_id="id"] ``` Block Name: **Credits Remaining** This shortcode/block shows users how many credits they need to earn before the rollover date. If no user\_id is specified, the shortcode/block will show the value for the current user. As a reminder, the number of credits shown is the *highest* of a user’s associated individual and group credit requirements. ### Certificate Trigger Description ``` [uo_ceu_certificate_description certificate-id="678"] ``` Block Name: **Certificate Trigger Description** This shortcode/block displays the description text configured on a CEU certificate trigger. Useful for showing learners what a certificate represents on a course or profile page. The LearnDash certificate ID is optional. If no ID is used, it defaults to the current certificate/post. See [Continuing Education Certificates](https://www.uncannyowl.com/knowledge-base/continuing-education-certificates/) for how to configure the description. ### Continuing Education Report ``` [uo_ceu_report] ``` Block Name: **Continuing Education Report** This shortcode/block displays a front-end credit report. By default it shows a learner-facing search report; with the enhanced attribute enabled it becomes a full report for administrators and group leaders, with column customization, filtering, export, and inline credit editing. **Attribute****Description**`enhanced`off (default) shows the standard learner search report; on loads the enhanced report (admins and group leaders only).`columns`A comma-separated list of columns to show, each as `key`mode`The data source used to build the report: meta (recommended), json (fastest), legacy, or tables.`add`on enables the “Add credits” action in the enhanced report.`edit`on enables inline editing of existing credit records.`delete`on enables deleting credit records.Because the enhanced report and its add/edit/delete actions are powerful, they are only available to administrators and group leaders. For a full walkthrough, see [Continuing Education Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/) and [Add and Remove Credits](https://www.uncannyowl.com/knowledge-base/add-and-remove-credits/). ### Using the Blocks To add any of these as a block, edit a page or post, click the **+** (Add Block) button, and search for the block name from the Quick Reference table above — or browse the **Uncanny Continuing Education Credits** block category. Each block exposes the same options as its shortcode in the block’s sidebar settings panel. ### Related Articles - [Required Credits](https://www.uncannyowl.com/knowledge-base/required-credits/) - [Continuing Education Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/) - [Continuing Education Certificates](https://www.uncannyowl.com/knowledge-base/continuing-education-certificates/) **Article Categories:** Uncanny Continuing Education Credits --- ### [Continuing Education Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/) **Published:** July 22, 2017 **Author:** Ryan Moore **Excerpt:** Learn how to embed a report that enables third parties to verify credits earned by your users. **Content:** ### Overview The Continuing Education Report puts credit data on the front end of your site. Learners can look up their own earned credits, and administrators and group leaders can run a full report — with filtering, export, and inline credit management — without going into the WordPress admin. The report is added with a shortcode or block and comes in two forms: - **Standard report** — A search box anyone can use to look up course completions and earned credits. - **Enhanced report** — A full data table for administrators and group leaders, with custom columns, date filtering, CSV and Excel export, and the ability to add, edit, and delete credits. ### Adding the Report Add the report with the shortcode: ``` [uo_ceu_report] ``` Or insert the **Continuing Education Report** block from the **Uncanny Continuing Education Credits** block category. The block exposes the same options as the shortcode in its settings panel. ### The Standard Report By default, `[uo_ceu_report]` displays a search-based report. A visitor enters a search term and the report returns matching learners and their credits. - Searches require a **minimum of 3 characters**. - The search matches against email address, first name, last name, and display name. - Results are paginated for readability. This standard view is suitable for a public or learner-facing page where people look up their own records. ### The Enhanced Report Add enhanced=”on” or enable the **Enhanced** block option, to unlock the full report: `[uo_ceu_report enhanced="on"]` The enhanced report is available only to logged-in administrators and group leaders. It displays all accessible credit data in a sortable, filterable table with: - **Filtering** by user, group, course, and date range - **Export** to CSV and Excel - **Custom columns** (see below) - **Inline credit management** — add, edit, and delete records (see below) #### Enabling Credit Editing The enhanced report can let group leaders and admins manage credits directly. Each action is turned on with its own attribute: `[uo_ceu_report enhanced="on" add="on" edit="on" delete="on"]` **Attribute****What it enables**`add`An **Add Credits** button for awarding new credits`edit`Inline editing of existing credit records (added in v5.0)`delete`Selecting and deleting credit recordsFor a full walkthrough of these actions, see [Add, Edit, and Remove Credits](https://www.uncannyowl.com/knowledge-base/add-and-remove-credits/). #### Customizing Columns Use the columns attribute to choose which columns appear and what they’re labeled. Each column is written as key||Label, separated by commas: `[uo_ceu_report enhanced="on" columns="user||User,course||Course,date||Date,ceus_earned||Credits,total||Total"]` Common column keys include user, course, date, ceus\_earned, and total. #### Report Performance Mode Large sites can choose how the report retrieves data using the mode attribute (meta is recommended for most sites; json is fastest). The default for all reports is set under **Uncanny CEUs > Settings**. See [Continuing Education Admin Reports](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-admin-report/) for the full explanation of report modes. ### For Developers: Custom Columns and Data Developers can extend the report with custom columns and data using filters: - `uo_ceu_credit_report_column_config` — Define the report’s columns and their data structure (added in v5.0 for finer control over columns and the data behind them). - `uo_ceu_credit_report_table_data` — Modify the credit data before it’s displayed, including injecting values for custom columns. Combine the two to add a column and populate it with your own data. These filters are intended for developers comfortable working with PHP. ### Related Articles - [Continuing Education Admin Reports](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-admin-report/) — The in-admin Credit Report, report modes, and child-group settings - [Add, Edit, and Remove Credits](https://www.uncannyowl.com/knowledge-base/add-and-remove-credits/) — Manage credit records from the report - [Continuing Education Shortcodes](https://www.uncannyowl.com/knowledge-base/continuing-education-shortcodes/) — All CEU shortcodes and blocks **Article Categories:** Uncanny Continuing Education Credits --- ### [Continuing Education Certificates](https://www.uncannyowl.com/knowledge-base/continuing-education-certificates/) **Published:** July 24, 2017 **Author:** Ryan Moore **Excerpt:** Learn how to award certificates for completing a set of LearnDash courses or achieving a minimum number of credits, units, hours, etc. **Content:** ### Overview Uncanny CEUs can issue a certificate automatically when a learner earns enough credits or completes a defined set of courses, then email it to the learner — and optionally to group leaders and administrators. CEU certificates are separate from LearnDash’s standard per-course certificates. They’re designed for milestones that span more than one course, such as: - **Credit-based certificates** — awarded when a learner’s total earned credits reach a threshold you set. - **Multi-course certificates** — awarded when a learner completes a specific combination of courses. Because these certificates are triggered by cumulative achievement rather than a single course completion, they’re delivered by email. A copy can also be stored on your server. Certificates are attached to emails as PDF files and can be optionally stored on the server (in /wp-content/uploads/ceu-certs/ for easy FTP access). ### Enabling Certificates 1. Go to **Uncanny CEUs > Settings** and open the certificate email settings. 2. Enable the certificate type(s) you want to use — credit-based, multi-course, or both. 3. Set the **email subject** and **message**, and choose who receives the email (learner, and optionally group leaders and administrators). 4. Optionally enable server storage. Stored certificates are saved to /wp-content/uploads/ceu-certs/. The email subject and message support personalization variables, the same way reminder emails do. ![Certificate Email Settings form showing checkboxes for enabling Multi Course and CEU Credits certificates, both selected at the top](https://www.uncannyowl.com/wp-content/uploads/2017/07/certificate-email-settings-500x329.png "certificate email settings - Uncanny Owl") **Note:** The certificate email subject, message, and recipient settings apply to all CEU certificate types. Make sure your wording works for every certificate you issue. ### Configuring a Certificate Trigger CEU certificates are configured on the LearnDash **Certificate** itself. 1. Edit (or create) the certificate under **LearnDash > Certificates**. 2. In the Uncanny CEUs certificate settings on that screen, choose the trigger: - **Required courses** — Select the courses a learner must complete to earn this certificate. - **Credit threshold** — Enter the number of credits a learner must earn to be awarded this certificate. 3. Optionally add a **description** explaining what the certificate represents. You can display this text elsewhere on your site using the `[uo_ceu_certificate_description] `shortcode — see [Continuing Education Shortcodes](https://www.uncannyowl.com/knowledge-base/continuing-education-shortcodes/). 4. Save the certificate. ![UI form to award CEU: input shows 25 credits earned in a text box on a card labeled Award Certificate for CEU Earned.](https://www.uncannyowl.com/wp-content/uploads/2017/07/certificate-trigger-settings.png "certificate trigger settings - Uncanny Owl") **Important:** A credit-threshold certificate is awarded **once** per learner. If you later raise the threshold, learners who already received the certificate are not issued a new one. ### How Learners Receive Certificates Because CEU certificates are triggered by cumulative achievement, they’re delivered by email rather than through LearnDash’s standard certificate display (such as the ld\_profile shortcode). Email delivery is how learners get these certificates, so confirm your site can reliably send email before relying on this feature. Note that generating historical credit records (see [Generate Historical LearnDash Course Credits](https://www.uncannyowl.com/knowledge-base/generate-learndash-course-credits/)) backfills credit data but does **not** trigger new certificate emails. ### Related Articles - [Continuing Education Shortcodes](https://www.uncannyowl.com/knowledge-base/continuing-education-shortcodes/) — Display certificate descriptions with `[uo_ceu_certificate_description]` - [Required Credits](https://www.uncannyowl.com/knowledge-base/required-credits/) — Set the credit requirements that pair with credit-based certificates - [Set Up the Uncanny Continuing Education Credits Plugin](https://www.uncannyowl.com/knowledge-base/setup-continuing-education-credits-plugin/) — Configure credit labels and email settings **Article Categories:** Uncanny Continuing Education Credits --- ### [Add and Remove Credits](https://www.uncannyowl.com/knowledge-base/add-and-remove-credits/) **Published:** December 18, 2020 **Author:** Ryan Moore **Content:** ### Overview Credits are awarded automatically when learners complete courses, but you’ll sometimes need to manage them by hand — to award credit for an activity that happened outside of LearnDash, to correct a record, or to remove one. You can do all of this directly from the Credit Report. The Credit Report supports three manual actions on credit records: - **Add** a new credit record — for a LearnDash course or for an activity that doesn’t exist as a course on your site (a webinar, a workshop, an in-person session). - **Edit** an existing record — adjust the credit amount or date of a record that’s already there. - **Delete** a record — permanently remove a credit a learner earned. Adding and deleting credits have been available since version 3.1. Editing existing records inline was added in **version 5.0**. These actions are available to administrators and group leaders in the enhanced report. If you’re displaying the report on the front end with the \[uo\_ceu\_report\] shortcode or block, each action is enabled with its own attribute (add=”on”, edit=”on”, delete=”on”). See [Continuing Education Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/) for those options. ### Adding Credits 1. Go to **Uncanny CEUs > Credit Report** (or open an enhanced front-end report). 2. Click the **Add Credits** button to open the entry form. 3. Choose what the credit is for: - **A LearnDash course** — Select the course. The credit amount matches the value already assigned to that course, so the course must have a credit value set. See [Adding Credits to Courses](https://www.uncannyowl.com/knowledge-base/adding-course-credits/). - **A non-LearnDash activity** — Enter a title, the number of credits, and the date and time the credit was earned. 4. Select the learner the credit applies to. 5. Save the entry. ![Modal dialog titled 'Add credits' containing form fields: User (dropdown), LearnDash course (dropdown with 'No LearnDash association'), Title (text), Number of CEUs (text), Date and time (text), and an 'Add credits' button.](https://www.uncannyowl.com/wp-content/uploads/2020/12/Add-CEU-credits-modal-449x500.png "Add CEU credits modal - Uncanny Owl") **Tip:** If you award a credit with a date in the future, it won’t appear in the report under the default date range. Set a custom date range with an end date past the award date to see it. ### Editing Credits As of version 5.0, you can correct an existing credit record without deleting and re-adding it. If the credit is awarded via course completion, you will be able to edit the options **Complete Course** and **Date and time**. If the credit was awarded without course completion, you will be able to edit the **Title**, **Number of CEUs** and **Date and time** options. 1. In the Credit Report, find the record you want to change and check the box on the left. 2. Click the **Edit** **credits** button. 3. Update the credits options depending on type of credit (detailed above). 4. Save the change. This is the quickest way to fix a typo in a credit amount or correct an award date. ![Edit credits modal: No selected for Complete Course, date July 5, 2026 9:44 AM, and Update credits button.](https://www.uncannyowl.com/wp-content/uploads/2020/12/Edit-Credit-500x349.png "Edit Credit - Uncanny Owl") ### Deleting Credits 1. In the Credit Report, select the record (or records) you want to remove using the row checkboxes. 2. Click the **Delete Credits** button below the filters. 3. Confirm the deletion when prompted. Deleting a credit record is permanent. If you only need to change a value, use **Edit** instead. ### Related Articles - [Continuing Education Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/) — Enable add/edit/delete on the front-end report - [Adding Credits to Courses](https://www.uncannyowl.com/knowledge-base/adding-course-credits/) — Set the course credit values used when adding LearnDash credits - [Continuing Education Admin Reports](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-admin-report/) — Filter and export the Credit Report **Article Categories:** Uncanny Continuing Education Credits --- ### [Use Case: Selling Accredited & Continuing Education Courses](https://www.uncannyowl.com/knowledge-base/use-case-selling-accredited-continuing-education-courses/) **Published:** July 5, 2026 **Author:** David Chambo **Content:** ### Overview “Earn 3 CPD credits” is a powerful reason to buy a course. When your courses count toward a license or designation, the credits *are* the product. Uncanny CEUs lets you advertise accredited credit on every course and award it automatically after purchase — turning continuing education into a revenue stream. Selling continuing education means combining three things: 1. **A way to sell course access** — WooCommerce, redemption codes, or memberships. 2. **Credits that are awarded on completion** — handled by Uncanny CEUs. 3. **Proof of credit** — certificates and transcripts learners can submit to their board. Uncanny CEUs supplies the credit layer and works alongside the Uncanny tools you already use to sell and deliver courses. ### Why Credits Sell Courses - **Credits are the value proposition.** Professionals shop for courses by the credits they award. Displaying the credit value upfront answers their main question before they buy. - **Automatic delivery.** Credits are awarded on completion with no manual step — the learner buys, learns, and earns. - **Trust through certificates.** An automatic certificate gives buyers confidence the course truly counts toward their requirement. - **Repeat business.** Professionals come back every renewal cycle. A clear credit transcript keeps them returning to you for their next credits. ### Building the Offer #### Step 1: Assign and Advertise the Credit Value Set each course’s credit value on its edit screen (see [Adding Credits to Courses](https://www.uncannyowl.com/knowledge-base/adding-course-credits/)). Then advertise it on the sales page using the available-credits shortcode or block, so shoppers see exactly what they’ll earn: ``` [uo_ceu_available course-id="123"] ``` Place it near the price and the buy button — e.g., “Complete this course and earn \[uo\_ceu\_available\] CPD credits.” ![Atom model illustration on a teal background, used as the course thumbnail for Introductory Physics I / Mechanics.](https://www.uncannyowl.com/wp-content/uploads/2026/07/CEU-for-course-purcahse-page-1030x405.png "CEU for course purcahse page - Uncanny Owl") #### Step 2: Sell Course Access Use whichever Uncanny tool fits your sales model: - **WooCommerce** — Sell courses or bundles as products. On purchase, the learner is enrolled and earns credits automatically on completion. - **Redemption codes** — Sell or distribute access codes for individual and bulk purchases with [Uncanny Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/). Ideal for selling seats to an employer who then distributes them to staff. - **Group licenses** — Sell access to organizations with [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/), where a buyer purchases a block of seats and manages their own learners. Uncanny CEUs sits underneath all of these — however the learner gets access, completing the course awards the credits. #### Step 3: Deliver Certificates Automatically Configure a certificate to issue when the learner completes the course or reaches a credit milestone, and have it emailed to them. This is what buyers submit to their licensing board as proof. See [Continuing Education Certificates](https://www.uncannyowl.com/knowledge-base/continuing-education-certificates/). #### Step 4: Give Buyers a Lasting Transcript Add a credit report or transcript shortcodes to the account/dashboard area so returning customers can always see the credits they’ve purchased and earned with you. See [Continuing Education Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/). ### Selling to Employers and Organizations A large share of continuing education is bought by employers for their teams. To serve that market: - Sell **bulk seats** via [Uncanny Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) or **group licenses** via [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/). - Make the **purchasing manager a group leader** so they can enroll staff and run the front-end Continuing Education Report to track their team’s credits. - For larger organizations with a hierarchy, enable the **child groups** option so a head-office report rolls up every sub-group. See [Continuing Education Admin Reports](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-admin-report/). This combination lets you sell one license to an organization and hand them a self-service portal for enrollment and credit tracking. ### Automating the Buyer Journey Uncanny CEUs integrates with [Uncanny Automator](https://automatorplugin.com/) so you can build the credit milestones into a larger automation. The **Uncanny CEUs** integration includes two triggers and an action: - A **trigger** for when *a user earns a number of CEUs* — fires each time a learner earns credits. - A **trigger** for when *the total number of CEUs earned by a user is greater than or equal to a specific number* — use it to send a congratulations email, issue a coupon for the next course, add a badge, or notify a CRM when a buyer hits a credit milestone. - An **action** that *awards a number of custom CEUs to the user* — use it to grant credits as part of a recipe, such as after a purchase or an event registration. See the [Uncanny Continuing Education Credits integration](https://automatorplugin.com/integration/uncanny-continuing-education-credits/) for available triggers and actions. ### Related Articles - [Continuing Education Certificates](https://www.uncannyowl.com/knowledge-base/continuing-education-certificates/) — Proof of credit for buyers - [Use Case: Continuing Education for Professional Associations](https://www.uncannyowl.com/knowledge-base/use-case-continuing-education-for-professional-associations/) — Run a full CE program - [Uncanny Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) — Sell and distribute course access codes - [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) — Sell group licenses with leader-managed reporting - [Getting Started with Uncanny Continuing Education Credits](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-continuing-education-credits/) — Choose the right workflow **Article Categories:** Uncanny Continuing Education Credits --- ### [Use Case: Continuing Education for Professional Associations](https://www.uncannyowl.com/knowledge-base/use-case-continuing-education-for-professional-associations/) **Published:** July 5, 2026 **Author:** David Chambo **Content:** ### Overview Professional associations, certifying bodies, and training providers award continuing education to members so they can maintain a license or designation — CME for clinicians, CLE for lawyers, CPD for accountants and engineers, PDUs for project managers, and so on. Uncanny CEUs gives you the credit-tracking, certificates, and member-facing transcripts these programs depend on, right inside LearnDash. A continuing education program has a few defining needs: - Credits that use the **right terminology** for your profession. - A way for members to **see and prove** the credits they’ve earned. - **Certificates** members can submit to a licensing board. - **Reporting** for your team and for partner organizations. Uncanny CEUs covers all four, and works alongside WooCommerce and Uncanny Groups when you sell courses or serve organizational members. ### Why Associations Choose Uncanny CEUs - **Your terminology, everywhere.** Label credits as CME, CPD, PDUs, contact hours — whatever your accreditation uses. The label flows through reports, certificates, and emails automatically. - **A permanent member record.** Earned credits are stored permanently and independently of course data, so a member’s history stays accurate for years — exactly what audits and renewals require. - **Certificates on autopilot.** Issue a certificate the moment a member earns enough credits or finishes a required series of courses. - **Member self-service.** Members look up their own totals and download what they need, reducing email to your staff. ### Setting Up Your Program #### Step 1: Set Your Credit Terminology Under **Uncanny CEUs > Settings**, set the singular and plural credit labels to match your accreditation — for example, “CME Credit” / “CME Credits” or “PDU” / “PDUs.” This is the first thing to configure, because the label appears everywhere members and staff see credits. #### Step 2: Assign Credit Values to Courses Give each course its accredited credit value on the course edit screen. Decimal values are supported (for example, 1.5 credits), which matters when accreditation bodies award partial credits. See [Adding Credits to Courses](https://www.uncannyowl.com/knowledge-base/adding-course-credits/). #### Step 3: Issue Certificates of Completion Configure certificates to award members automatically: - **Per credit milestone** — e.g., a certificate when a member reaches 20 CME credits. - **Per course series** — e.g., a certificate for completing all courses in a designation track. Members receive the certificate by email, and a copy can be stored on your server for your records. See [Continuing Education Certificates](https://www.uncannyowl.com/knowledge-base/continuing-education-certificates/). #### Step 4: Give Members a Credit Transcript Add a front-end report or credit shortcodes to a member dashboard so members can view and verify their credits at any time: - `[uo_ceu_total]` — Lifetime credits earned - `[uo_ceu_earned course-id="123"]` — Credits earned for a specific course - `[uo_ceu_report] `— A searchable record of completions and credits ![CEU Report: a table for David Chambers listing three courses, their completion dates, and earned CEUs (10, 15, 20).](https://www.uncannyowl.com/wp-content/uploads/2026/07/CEU-Report-1030x373.png "CEU Report - Uncanny Owl") See [Continuing Education Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/) and [Continuing Education Shortcodes](https://www.uncannyowl.com/knowledge-base/continuing-education-shortcodes/). #### Step 5: Account for Pre-Existing Credits If members completed courses before you installed the plugin, backfill their records so transcripts are complete from day one. See [Generate Historical LearnDash Course Credits](https://www.uncannyowl.com/knowledge-base/generate-learndash-course-credits/). ### Handling Credits Earned Outside Your Courses Members often earn credits at conferences, webinars, or partner events that aren’t courses on your site. Add those credits manually so a member’s transcript reflects their full continuing education — enter a title, the credit amount, and the date from the Credit Report. See [Add, Edit, and Remove Credits](https://www.uncannyowl.com/knowledge-base/add-and-remove-credits/). ### Serving Organizational Members If your association serves companies or chapters — not just individuals — pair Uncanny CEUs with [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/). A chapter administrator becomes a group leader who can: - Enroll their members - Run continuing education reports on their group from the front end - Track each member’s credits toward designation requirements For multi-level structures (national → regional → local chapters), enable the **child groups** option so a parent’s report rolls up its sub-groups. See [Continuing Education Admin Reports](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-admin-report/). ### Related Articles - [Continuing Education Certificates](https://www.uncannyowl.com/knowledge-base/continuing-education-certificates/) — Credit-based and multi-course certificates - [Continuing Education Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/) — Member-facing transcripts - [Use Case: Selling Accredited & Continuing Education Courses](https://www.uncannyowl.com/knowledge-base/use-case-selling-accredited-continuing-education-courses/) — Monetize your CE program - [Getting Started with Uncanny Continuing Education Credits](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-continuing-education-credits/) — Choose the right workflow **Article Categories:** Uncanny Continuing Education Credits --- ### [Use Case: Compliance & Recertification Training](https://www.uncannyowl.com/knowledge-base/use-case-compliance-recertification-training/) **Published:** July 5, 2026 **Author:** David Chambo **Content:** ### Overview Many industries require employees to complete a set amount of training every year — safety, HIPAA, anti-harassment, financial compliance, and more. Uncanny CEUs is built for exactly this: assign credits to your training courses, set an annual requirement, and let the plugin track who’s on track and who’s falling behind. A compliance program usually comes down to one rule: *every learner must earn at least X credits within each compliance period.* Uncanny CEUs turns that rule into an automated system. - Learners earn credits automatically as they complete courses. - A **rollover date** defines the start of each compliance period. - A **required credits** value sets the minimum each learner (or group) must reach. - A **Deficiency Report** shows exactly who hasn’t met the requirement yet. - **Reminder emails** nudge learners before the deadline. The result is a self-running compliance tracker that replaces the spreadsheets most organizations rely on. ### Why Use Uncanny CEUs for Compliance - **Audit-ready records.** Every earned credit is stored permanently, with course name, amount, and date — even if a course is later edited or reset. When an auditor asks for proof, the data is there. - **Annual reset without losing history.** The rollover date starts a fresh period each year while keeping lifetime totals intact. - **No manual chasing.** Reminder emails and the Deficiency Report surface at-risk learners automatically. - **Works per group.** Set different requirements for different departments or locations using LearnDash groups. ### The Workflow #### Step 1: Assign Credits to Your Compliance Courses For each required course, set a credit value on the course edit screen. A one-hour module might be worth 1 credit; a half-day course, 4. See [Adding Credits to Courses](https://www.uncannyowl.com/knowledge-base/adding-course-credits/). #### Step 2: Set Your Rollover Date Under **Uncanny CEUs > Settings**, set the rollover date to the first day of your compliance period — for example, January 1 for a calendar-year program. The rollover date is a single, site-wide **day and month** (it has no year), so the same period applies to every learner. The plugin does not support per-learner rollover dates tied to individual hire or enrollment dates. The rollover date is what makes annual tracking work: credits earned “since rollover” are what count toward the current period’s requirement. #### Step 3: Set the Required Credits Define how many credits each learner must earn in a period: - **Per group** — Edit a LearnDash group and set its required credits. Everyone in that group inherits the requirement. Ideal for “all warehouse staff need 6 safety credits per year.” - **Per individual** — Set a requirement on a specific user’s profile when one person’s obligations differ from the group. When a learner belongs to more than one group, the plugin applies the **highest** requirement. See [Required Credits](https://www.uncannyowl.com/knowledge-base/required-credits/) for the full setup. #### Step 4: Turn On Reminder Emails In **Settings**, enable reminder emails and choose how many days before the rollover date they should send. Learners who haven’t met their requirement receive a personalized nudge with their name, how many credits they still need, and the deadline. **Tip:** When you have a large learner base, stagger reminders or test with a small group first to avoid sending a large volume of email all at once. #### Step 5: Monitor with the Deficiency Report Open **Uncanny CEUs > Credit Report** and go to the **Deficiency Report** tab. It lists every learner who hasn’t met their requirement, filterable by user and group. Learners who have met their requirement drop off the list automatically — so anyone showing up still needs to act. Export the report to CSV or Excel for management or compliance officers. ![Deficiency report: two users (Curtis and Dafney) with required CEUs 25 each; Curtis earned 25, Dafney 12.](https://www.uncannyowl.com/wp-content/uploads/2026/07/deficiency-report-1030x378.png "deficiency report - Uncanny Owl") ### Showing Learners Their Status Help learners stay ahead of the deadline by displaying their progress on a dashboard or profile page: - `[uo_ceu_credits_remaining]` — How many credits they still need this period - `[uo_ceu_days_remaining]` — Days left until the rollover date - `[uo_ceu_total_rollover] `— Credits earned this period See [Continuing Education Shortcodes](https://www.uncannyowl.com/knowledge-base/continuing-education-shortcodes/) for all display options. ### Scaling to Multiple Departments For organizations with several teams or locations, use LearnDash groups to set per-group requirements, and pair Uncanny CEUs with [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/). Group leaders can then run the front-end Continuing Education Report on their own team — checking who’s compliant without needing admin access. If your program runs across a hierarchy of groups, enable the **child groups** option in the report settings so a parent group’s report includes its sub-groups. See [Continuing Education Admin Reports](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-admin-report/). ### Related Articles - [Required Credits](https://www.uncannyowl.com/knowledge-base/required-credits/) — Requirements, rollover dates, and reminders - [Continuing Education Admin Reports](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-admin-report/) — Deficiency Report and exports - [Getting Started with Uncanny Continuing Education Credits](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-continuing-education-credits/) — Choose the right workflow - [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) — Group leader reporting for departments and locations **Article Categories:** Uncanny Continuing Education Credits --- ### [Getting Started with Uncanny Continuing Education Credits](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-continuing-education-credits/) **Published:** July 5, 2026 **Author:** David Chambo **Content:** ### Overview Uncanny Continuing Education Credits (CEUs) turns your LearnDash courses into a complete credit-tracking system. This guide explains what the plugin does, how the pieces fit together, and where to go next based on what you’re trying to achieve. ### What Is Uncanny CEUs? Uncanny CEUs lets you assign a credit value to any LearnDash course and automatically award those credits to learners when they complete it. You decide what the credits are called — CEUs, CPDs, PDUs, CMEs, contact hours, or any custom label — and the plugin tracks every credit each learner earns over time. Once credits are flowing, you can: - **Report on credits** through front-end reports for learners and group leaders, and detailed admin reports for administrators. - **Set credit requirements** for individuals or groups, with annual rollover dates and automated reminder emails for learners who fall short. - **Issue certificates** automatically when a learner earns enough credits or completes a defined set of courses. - **Keep a permanent record** of every credit earned — even if a course is later edited, reset, or removed. Common use cases include compliance and recertification training, professional continuing-education programs run by associations, and selling accredited courses that award contact hours. ### How CEUs Work The basic flow is straightforward: 1. **Assign credits to courses** — Set a credit value on each LearnDash course you want to track. 2. **Learners complete courses** — When a learner completes a course, the plugin automatically awards the assigned credits and stores a permanent record. 3. **Track, require, and certify** — Use reports to monitor earned credits, set requirements with rollover dates, and award certificates when thresholds are met. Every earned credit is stored as its own record with the course name, credit amount, and date. Because these records live outside of LearnDash’s own completion data, edits to a course never change credits a learner has already earned. ### Choose Your Workflow Uncanny CEUs supports several workflows depending on how your organization uses credits. Use the guide below to find the right starting point. #### I want to award credits for completing courses This is the core of the plugin. Assign a credit value to each course, and learners earn those credits automatically on completion. **Start here:** - [Adding Credits to Courses](https://www.uncannyowl.com/knowledge-base/adding-course-credits/) — Set a credit value on any LearnDash course - [Generate Historical LearnDash Course Credits](https://www.uncannyowl.com/knowledge-base/generate-learndash-course-credits/) — Award credits retroactively for completions that happened before you installed the plugin #### I want to enforce annual training requirements If learners must earn a minimum number of credits within a recurring period — for example, an annual compliance requirement — set a rollover date and define how many credits each learner or group must earn. **Start here:** - [Required Credits](https://www.uncannyowl.com/knowledge-base/required-credits/) — Set per-user and per-group requirements, rollover dates, and reminder emails #### I want learners and managers to see their credit totals Display credit totals on any page using shortcodes or blocks, give learners a front-end report, and let group leaders run reports on their teams without admin access. **Start here:** - [Continuing Education Report](https://www.uncannyowl.com/knowledge-base/continuing-education-report/) — Add a front-end credit report for learners and group leaders - [Continuing Education Shortcodes](https://www.uncannyowl.com/knowledge-base/continuing-education-shortcodes/) — Display credit totals, remaining credits, and more on any page #### I want detailed reporting for administrators Administrators get a full Credit Report inside WordPress with filtering by user, group, course, and date range, plus CSV and Excel export. **Start here:** - [Continuing Education Admin Reports](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-admin-report/) — Filter, export, and configure the admin Credit Report #### I want to award certificates based on credits Issue certificates automatically when a learner reaches a credit threshold or completes a specific combination of courses, and email them to learners, group leaders, or admins. **Start here:** - [Continuing Education Certificates](https://www.uncannyowl.com/knowledge-base/continuing-education-certificates/) — Configure credit-based and multi-course certificates #### I want to manually adjust a learner’s credits Award credits for activities completed outside of LearnDash (such as a webinar or an in-person workshop), or correct an existing record directly from the report. **Start here:** - [Add and Remove Credits](https://www.uncannyowl.com/knowledge-base/add-and-remove-credits/) — Add, edit, and delete credit records from the Credit Report #### I want to automate actions when learners earn credits Uncanny CEUs integrates with [Uncanny Automator](https://automatorplugin.com/). You can start a recipe when a learner’s earned credits reach a threshold, or award credits as a step in a larger automation. **Start here:** - The **Uncanny CEUs** integration in Automator includes a trigger that fires when *the total number of credits earned by a user is greater than or equal to a specific number*, and an action that *awards a number of custom credits to a user*. See the [Uncanny Continuing Education Credits integration](https://automatorplugin.com/integration/uncanny-continuing-education-credits/) for setup details. ### First-Time Setup Checklist Before learners start earning credits, complete these steps: 1. **Install and activate** the plugin and enter your license key under **Uncanny CEUs > Settings**. See [Set Up the Uncanny Continuing Education Credits Plugin](https://www.uncannyowl.com/knowledge-base/setup-continuing-education-credits-plugin/). 2. **Set your credit label** under **Uncanny CEUs > Settings**. Choose the singular and plural names for your credits (for example, “CPD” / “CPDs”) so they appear correctly everywhere on your site. 3. **Set a rollover date** if learners need to meet a recurring requirement. Leave it blank if you only want to track lifetime totals. 4. **Assign credits to your courses** under each course’s edit screen. See [Adding Credits to Courses](https://www.uncannyowl.com/knowledge-base/adding-course-credits/). 5. **Add reporting and display** — place a front-end report or credit shortcodes where learners can see their progress. 6. **Test the flow** — complete a course as a test learner and confirm the correct credits are awarded and appear in the report. ### Managing Credits Over Time Once credits are being earned, these tools help you monitor and maintain them: - [Continuing Education Admin Reports](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-admin-report/) — Filter and export credit data, and configure report defaults - [Add and Remove Credits](https://www.uncannyowl.com/knowledge-base/add-and-remove-credits/) — Adjust records for individual learners - [Required Credits](https://www.uncannyowl.com/knowledge-base/required-credits/) — Track who has and hasn’t met their requirements with the Deficiency Report ### Related Articles - [Set Up the Uncanny Continuing Education Credits Plugin](https://www.uncannyowl.com/knowledge-base/setup-continuing-education-credits-plugin/) — Installation, license, and configuration - [Continuing Education Shortcodes](https://www.uncannyowl.com/knowledge-base/continuing-education-shortcodes/) — Full shortcode and block reference - [Uncanny Continuing Education Credits – Changelog](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-changelog/) — Version history **Article Categories:** Uncanny Continuing Education Credits --- ### [Tin Canny Reporting for LearnDash - Overview](https://www.uncannyowl.com/knowledge-base/tin-canny-learndash-reporting-overview/) **Published:** September 1, 2017 **Author:** yuehchin **Content:** Tin Canny Reporting turns LearnDash into a complete reporting platform for interactive eLearning. LearnDash does not natively support uploading or embedding interactive SCORM or xAPI (Tin Can) eLearning content into your course, however, this is possible using Tin Canny Reporting for LearnDash. Upload your Articulate, Captivate, iSpring, or H5P content, embed it in your courses, and capture detailed completion, score, and engagement data — all stored on your own site, with no external Learning Record Store to run. **New here?** Jump straight to [Getting Started with Tin Canny Reporting](https://www.uncannyowl.com/knowledge-base/getting-started-with-tin-canny-reporting-for-learndash/) for a 20-minute install-to-first-report walkthrough. ### What Tin Canny does LearnDash tracks whether a lesson is complete. Tin Canny adds everything that happens *inside* your interactive content: 1. **Upload eLearning content** — embed SCORM and xAPI/Tin Can modules in lessons and topics with the Tin Canny Uploader. 2. **Capture detailed data** — every interaction, score, and answer is recorded automatically. 3. **Store it locally** — a Learning Record Store built into WordPress means no third-party LRS subscription and no data leaving your server. 4. **Convert SCORM to Tin Can** — SCORM 1.2/2004 statements are converted to xAPI automatically, so all content reports together. 5. **Report for admins and Group Leaders** — four back-end reports plus front-end reports your managers can run themselves. 6. **Gate completion and track time** — integrate with the LearnDash Mark Complete button and the Uncanny Simple Course Timer. ### The Tin Canny eLearning content uploader The uploader integrates with both the block and classic editors so you can embed modules directly into LearnDash lessons, topics, and courses. Uploaded modules are managed from the **Manage Content** page — redesigned in v5.1 with a cleaner layout and new upload-date and filesize columns. See [Managing eLearning Content](https://www.uncannyowl.com/knowledge-base/managing-elearning-content/). ### LearnDash and Tin Can reports Tin Canny provides four core report views, each with sortable tables, search, drill-down, and CSV/Excel export: **Report****What it answers**[**Course Report**](https://www.uncannyowl.com/knowledge-base/course-report/)How is each course performing across all learners?[**User Report**](https://www.uncannyowl.com/knowledge-base/user-report/)How is one learner doing — with course start and lesson/topic completion dates?[**Tin Can Report**](https://www.uncannyowl.com/knowledge-base/tin-can-report/)What exactly did learners do inside each module?[**xAPI Quiz Report**](https://www.uncannyowl.com/knowledge-base/xapi-quiz-report/)How did learners answer each question?### A local LRS — nothing external to run Tin Canny stores all Tin Can/xAPI statements in a Learning Record Store native to WordPress. You get full statement capture without the cost or complexity of an external LRS, and your learning data stays on your own server. ### Reports for site administrators and Group Leaders Reports surface completion times, activity trends, and individual quiz responses. Administrators see the whole site; Group Leaders see only their assigned groups. With the **front-end reports**, Group Leaders and client managers can review (and, as of v5.1.1, **sort** by % Complete and Avg Quiz) their teams’ progress without a dashboard login. See [Front End LearnDash Reports](https://www.uncannyowl.com/knowledge-base/front-end-reports/). ### Integrations - **LearnDash Mark Complete button** — require a module to be finished before a lesson/topic can be completed, so completion means engagement. Configure this per lesson/topic in the **Tin Canny** tab on the edit screen (added in v5.1.3.3). - **Uncanny Simple Course Timer** (Toolkit Pro) — add time-spent columns to your reports for seat-time tracking. ### Where to go next - [Getting Started with Tin Canny Reporting](https://www.uncannyowl.com/knowledge-base/getting-started-with-tin-canny-reporting-for-learndash/) — install to first report - [Authoring Tools Supported by Tin Canny](https://www.uncannyowl.com/knowledge-base/authoring-tools-supported/) — supported tools and formats - [From Articulate & Captivate to LearnDash](https://www.uncannyowl.com/knowledge-base/from-articulate-captivate-to-learndash-with-real-reporting/) — bringing authored content into LearnDash - [Prove Training Compliance with Tin Canny](https://www.uncannyowl.com/knowledge-base/prove-training-compliance-with-tin-canny/) — using reports as audit evidence **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Getting Started with Tin Canny Reporting for LearnDash](https://www.uncannyowl.com/knowledge-base/getting-started-with-tin-canny-reporting-for-learndash/) **Published:** July 1, 2026 **Author:** David Chambo **Content:** New to Tin Canny? This guide takes you from a fresh install to your first tracked eLearning module — with real completion and quiz data flowing into your reports — in about 20 minutes. No coding, and no external Learning Record Store to configure. **Want the bigger picture first?** The [Tin Canny Reporting for LearnDash – Overview](https://www.uncannyowl.com/knowledge-base/tin-canny-learndash-reporting-overview/) article explains everything the plugin does. This guide walks the fastest path to seeing it work. ### What Tin Canny does LearnDash tells you whether a learner finished a lesson. It can’t tell you what happened *inside* an Articulate, Captivate, or iSpring module — how they scored, which questions they missed, or how long they spent. Tin Canny closes that gap: - **Upload eLearning modules** (SCORM or xAPI/Tin Can) straight into your LearnDash lessons and topics — no separate hosting. - **Capture every interaction** in a Learning Record Store (LRS) that’s built into your WordPress site. - **Report on real engagement** through four admin reports plus front-end reports your Group Leaders can run themselves. - **Gate completion** so a lesson and/or topic can’t be marked complete until the learner actually finishes the module. This guide covers the essentials so you see value immediately. Links throughout point to deeper articles when you’re ready. ### Key terms (read this first) A few terms come up constantly in Tin Canny. Here’s what they mean: **Term****Plain-English meaning****Module**A self-contained eLearning package (a SCORM or xAPI zip) built in a tool like Storyline, Rise, Captivate, or iSpring.**SCORM / xAPI (Tin Can)**The two publishing standards modules use to report progress and scores. Tin Canny supports both.**LRS (Learning Record Store)**Where learning data is stored. Tin Canny includes one *inside* WordPress, so you don’t need an external service.**Statement**A single recorded action — “Jane answered Question 3 correctly,” “Sam completed the module.”**Report**A view of the captured data: by course, by user, by raw statement, or by quiz question.### What you’ll need - A working WordPress site with **LearnDash** and at least one published course with a lesson or topic. - The **Tin Canny Reporting** plugin file and your license key (both are in your purchase email and your [Uncanny Owl account](https://www.uncannyowl.com/account/)). - At least one **eLearning module** exported as a SCORM or xAPI zip. See [Authoring Tools Supported by Tin Canny](https://www.uncannyowl.com/knowledge-base/authoring-tools-supported/) for export tips. - A server that meets the [Technical Requirements](https://www.uncannyowl.com/knowledge-base/tin-canny-reporting-technical-requirements/). ### Step 1 — Install and activate 1. In your WordPress dashboard, go to **Plugins > Add New > Upload Plugin**. 2. Upload the Tin Canny Reporting ZIP file and click **Install Now**, then **Activate**. 3. Open **Tin Canny Reporting > Settings** and paste your license key. Activation enables automatic updates. For the full walkthrough, see [Install the Tin Canny Reporting Plugin](https://www.uncannyowl.com/knowledge-base/tincanny-installation-setup/). ### Step 2 — Run Site Check Before you upload anything, confirm your server can capture data. 1. Go to **Tin Canny Reporting > Settings** and find the **Site Check** panel. 2. Confirm the **xAPI endpoint is reachable** and that the plugin has **direct access to its PHP files**. Both should show green. 3. If a check fails, click **Re-check** after adjusting your setup. The most common causes are Plain permalinks or a maintenance/redirect plugin intercepting requests. ![Tin Canny Reporting dashboard with Site check tab showing HTTP/HTTPS, Permalink, and Endpoint Availability checks (all Passed).](https://www.uncannyowl.com/wp-content/uploads/2026/07/site-check.png "site check - Uncanny Owl") This 30-second step prevents the single most common support issue — modules that upload fine but never record data. Details: [Site Check](https://www.uncannyowl.com/knowledge-base/site-check/). ### Step 3 — Upload your first module 1. Edit the LearnDash **lesson or topic** where the module should live. 2. In the editor, add the **Tin Canny** block (Gutenberg) or click the **Tin Canny Uploader** button (Classic Editor). 3. Choose **Upload new content**, select your SCORM/xAPI zip, and wait for it to register. 4. Insert the module into the page and **Update** the lesson. ![Lesson A header with Tin Can Content placeholder and Upload and Select from Library buttons.](https://www.uncannyowl.com/wp-content/uploads/2026/07/tin-canny-uploader.png "tin canny uploader - Uncanny Owl") Every module you upload is also listed under **Tin Canny Reporting > Manage Content**,where you can search, preview, replace, or delete it. See [Tin Canny Uploader](https://www.uncannyowl.com/knowledge-base/storyline-captivate-uploader/) and [Managing eLearning Content](https://www.uncannyowl.com/knowledge-base/managing-elearning-content/). ### Step 4 — Require the module for completion (optional but recommended) To stop learners from skipping the module: 1. While editing the lesson or topic, open the **Tin Canny** tab in the LearnDash tab bar at the top of the screen (next to *Lesson page*, *Settings*, and *Uncanny Toolkit*). 2. Set **Restrict Mark Complete** to *Disabled until complete* so the page can only be completed once the embedded module reports completion. (Optionally set a **Completion Condition** such as `result > 80` to require a passing score.) 3. **Save.** Now the **Mark Complete** button stays locked until the learner finishes the module — so your completion data reflects real engagement, not just clicks. **Where are these settings?** As of v5.1.3.3, all per-content Tin Canny module settings live in the **Tin Canny** tab on lesson and topic edit screens. See [Setting up Tin Canny Reporting](https://www.uncannyowl.com/knowledge-base/protecting-sharing-content-tin-canny/) for the full list. ### Step 5 — See your data in the reports Take (or have a test learner take) the module, then: 1. Go to **Tin Canny Reporting > Reports**. 2. Open each report to see what it captures: - **Course Report** — completion and activity across every course, with trend charts. - **User Report** — drill into one learner: courses, lessons, quizzes, start and completion dates. - **Tin Can Report** — the raw statement stream from your modules. - **xAPI Quiz Report** — individual question responses, scores, and answer choices. 3. Sort any column, search by name or email, and **export to CSV/Excel** for deeper analysis. ![Dashboard: Tin Canny reporting for LearnDash showing user and course counts, recent activity chart, and course list with export buttons](https://www.uncannyowl.com/wp-content/uploads/2026/07/course-report-1030x610.png "course report - Uncanny Owl") That’s it — you have a tracked module and live reporting. From here, learners’ scores, answers, and time-in-module flow into Tin Canny automatically. ### Where to go next Pick the path that matches your goal: - **Proving training happened?** See [Prove Training Compliance with Tin Canny](http://use-case-training-compliance.md). - **Want managers to run their own reports?** See [Front End LearnDash Reports](https://www.uncannyowl.com/knowledge-base/front-end-reports/) and [Give Managers Self-Serve Reporting](http://use-case-self-serve-manager-reporting.md). - **Embedding reports on pages?** See the [Tin Canny Shortcodes & Blocks Quick Reference](http://tin-canny-shortcodes-blocks-reference.md). - **Fine-tuning behaviour?** See [Setting up Tin Canny Reporting](https://www.uncannyowl.com/knowledge-base/protecting-sharing-content-tin-canny/) and [Actions/Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers-2/). ### Related Articles - [Tin Canny Reporting for LearnDash – Overview](https://www.uncannyowl.com/knowledge-base/tin-canny-learndash-reporting-overview/) — everything the plugin does - [Install the Tin Canny Reporting Plugin](https://www.uncannyowl.com/knowledge-base/tincanny-installation-setup/) — full installation reference - [Setting up Tin Canny Reporting](https://www.uncannyowl.com/knowledge-base/protecting-sharing-content-tin-canny/) — every setting explained - [Authoring Tools Supported by Tin Canny](https://www.uncannyowl.com/knowledge-base/authoring-tools-supported/) — exporting modules that track correctly **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Prove Training Compliance with Tin Canny](https://www.uncannyowl.com/knowledge-base/prove-training-compliance-with-tin-canny/) **Published:** July 4, 2026 **Author:** David Chambo **Content:** If your organization has to *show* that training happened — to an auditor, a regulator, a client, or your own leadership — “they clicked complete” isn’t enough. Tin Canny turns LearnDash into a defensible record of who completed what, when, how well they scored, and how long they spent. ### The problem with completion-only tracking Standard LMS reporting answers one question: *did the learner finish?* Compliance teams need more: - **Did they actually engage**, or click through? - **What did they score**, and did they pass a required threshold? - **When** did they complete it — before or after the deadline? - **Can we produce the evidence** months later, on demand? Tin Canny captures all of this automatically from your SCORM and xAPI modules and keeps it in a Learning Record Store built into your own WordPress site — so the data is yours, not a third party’s. ### How Tin Canny builds your compliance record #### 1. Gate completion on real engagement Embed your training as a Tin Canny module and require it for lesson completion. In the lesson or topic’s **Tin Canny** tab (in the LearnDash tab bar; added in v5.1.3.3), set **Restrict Mark Complete** to *Disabled until complete*. The **Mark Complete** button then stays locked until the module reports done — so a “complete” status genuinely means the learner reached the end. No more skipped content. #### 2. Capture scores and pass/fail For modules and quizzes with scoring, the **xAPI Quiz Report** and **Tin Can Report** record each learner’s results — including individual question responses. If your policy requires an 80% pass, you can show exactly who cleared it. #### 3. Timestamp everything The **User Report** records **course start dates** and **lesson/topic completion dates** (added in v5.0), so you can demonstrate that training was completed within a required window — and in what order. #### 4. Measure time spent Pair Tin Canny with the **Simple Course Timer** (Uncanny Toolkit Pro) and a **Time column** appears in your Lesson & Topic and Course reports. For “minimum seat-time” requirements common in regulated industries, this is the evidence you need. ![User report dashboard for Isaac in Tin Canny Reporting for LearnDash with profile and lessons list on left and export buttons on right (Excel/CSV)](https://www.uncannyowl.com/wp-content/uploads/2026/07/user-report-1030x551.png "user report - Uncanny Owl")#### 5. Export the evidence Every Tin Canny report exports to **CSV/Excel**. When an auditor asks for proof, you produce a dated, per-learner record in minutes — not a frantic week of screenshots. ### A typical compliance workflow 1. Build your policy/training as a SCORM or xAPI module and upload it to a LearnDash lesson. 2. Require the module for completion, and set a passing score on any quiz. 3. Let learners complete it; Tin Canny records scores, dates, and time automatically. 4. At audit time, open the **User Report** (or run a front-end report for a manager), filter to the relevant group, and **export to CSV**. ### Why this matters - **Defensible records.** Scores, dates, and time spent — not just a checkbox. - **Your data, your server.** The LRS lives in WordPress; nothing depends on an external service that could change terms or disappear. - **Self-serve for managers.** Front-end reports let department leads pull their own team’s compliance status without a WordPress login. ### Related Articles - [Getting Started with Tin Canny Reporting](https://www.uncannyowl.com/knowledge-base/getting-started-with-tin-canny-reporting-for-learndash/) — set up your first tracked module - [User Report](https://www.uncannyowl.com/knowledge-base/user-report/) — per-learner completion dates and scores - [xAPI Quiz Report](https://www.uncannyowl.com/knowledge-base/xapi-quiz-report/) — question-level scoring evidence - [Lesson and Topic Completion Reports](https://www.uncannyowl.com/knowledge-base/lesson-and-topic-completion-reports/) — time-in-content with Simple Course Timer **Article Categories:** Tin Canny Reporting for LearnDash --- ### [From Articulate & Captivate to LearnDash — With Real Reporting](https://www.uncannyowl.com/knowledge-base/from-articulate-captivate-to-learndash-with-real-reporting/) **Published:** July 4, 2026 **Author:** David Chambo **Content:** You’ve invested in professional eLearning built in Articulate Storyline, Rise, Adobe Captivate, or iSpring. The hard part shouldn’t be getting it *into* your site and *reporting* on it. Tin Canny makes LearnDash a first-class home for authored content: upload the package, embed it in a lesson, and get detailed reporting — no external LMS, no separate LRS subscription. ### The usual headache Authoring tools export SCORM or xAPI packages. Out of the box, LearnDash can host a course — but it can’t ingest those packages or read the rich data they produce. Teams end up either: - paying for a separate SCORM-capable LMS, or - standing up and maintaining an external Learning Record Store, or - losing the data entirely and tracking only “lesson complete.” Tin Canny removes that trade-off. ### What Tin Canny gives you #### Upload packages straight into lessons Use the **Tin Canny Uploader** (or the Tin Canny block) right in the lesson editor to upload a SCORM or xAPI zip and embed it. Content is hosted on your own site. See [Tin Canny Uploader](https://www.uncannyowl.com/knowledge-base/storyline-captivate-uploader/). #### Broad authoring-tool support Tin Canny works with almost all standards-compliant SCORM and xAPI/Tin Can modules. Primary testing covers **Articulate Storyline, Articulate Rise, Adobe Captivate, iSpring, and H5P**, across **SCORM 1.2, SCORM 2004, and xAPI**. See [Authoring Tools Supported by Tin Canny](https://www.uncannyowl.com/knowledge-base/authoring-tools-supported/) for specifics and publishing tips. #### A built-in LRS — nothing external to run Every statement your modules send is stored in a Learning Record Store **inside WordPress**. No third-party LRS account, no data leaving your server, no extra monthly bill. #### Unified reporting, even for SCORM SCORM modules don’t speak xAPI natively — so Tin Canny **automatically converts SCORM 1.2 and 2004 statements into Tin Can/xAPI** behind the scenes. The result: your SCORM and xAPI content show up together in the same Course, User, Tin Can, and Quiz reports. #### Completion that reflects the content Tie the LearnDash **Mark Complete** button to module completion, so finishing the lesson means finishing the module — your reports stay honest. (Set this in the lesson/topic’s **Tin Canny** tab, added in v5.1.3.3.) ### A typical migration 1. Publish your course from Storyline/Captivate/iSpring as **SCORM** or **xAPI**. 2. In the LearnDash lesson, open the **Tin Canny Uploader** and upload the package. 3. Embed it and require it for completion. 4. Watch scores, question responses, and time-in-content flow into your reports automatically. Updating later? Use **Replace content** on the Manage Content page to swap in a new version while keeping the module ID and historical data. ### Why this matters - **No second platform.** Your authored content, hosting, and reporting all live in one WordPress + LearnDash site. - **No external LRS bill.** The Learning Record Store is included. - **SCORM and xAPI, unified.** One set of reports, regardless of how each module was published. ### Related Articles - [Authoring Tools Supported by Tin Canny](https://www.uncannyowl.com/knowledge-base/authoring-tools-supported/) — supported tools and publish formats - [Tin Canny Uploader](https://www.uncannyowl.com/knowledge-base/storyline-captivate-uploader/) — uploading and embedding modules - [Managing eLearning Content](https://www.uncannyowl.com/knowledge-base/managing-elearning-content/) — replacing content without losing data - [Getting Started with Tin Canny Reporting](https://www.uncannyowl.com/knowledge-base/getting-started-with-tin-canny-reporting-for-learndash/) — install to first report **Article Categories:** Tin Canny Reporting for LearnDash --- ### [See How Learners Actually Engage with Your Content](https://www.uncannyowl.com/knowledge-base/see-how-learners-actually-engage-with-your-content/) **Published:** July 4, 2026 **Author:** David Chambo **Content:** A pass/fail score tells you the outcome. It doesn’t tell you *why* a third of your learners struggled with Module 3, which quiz question everyone gets wrong, or whether people are rushing through your most important lesson. Tin Canny’s xAPI and Tin Can tracking shows you what’s happening *inside* your content — so you can make it better. ### Beyond “did they pass?” When you publish an Articulate, Captivate, or iSpring module as SCORM or xAPI, it emits a stream of detailed statements as learners interact with it. Tin Canny captures every one in your site’s built-in Learning Record Store and turns it into reports you can actually read. That means you can answer questions a completion report never could: - **Which questions are too hard (or too easy)?** The xAPI Quiz Report shows responses question by question, so you can spot the item 70% of learners miss — and fix the content or the question. - **Where do learners drop off?** Statement timestamps reveal where engagement stalls. - **Are people rushing?** With the Simple Course Timer integration, time-in-content tells you whether learners are absorbing material or speed-running it. - **Which content performs best?** Compare completion and scores across modules to see what’s working. ### The reports that reveal it #### xAPI Quiz Report — question-level insight See every learner’s answer to every question from your modules, including richer question types. As of recent releases, the report renders clear labels even for **Storyline matching and Likert-scale questions**, so survey-style and drag-and-match interactions show up properly instead of as blanks. ![Dashboard header for Tin Canny Reporting with LearnDash branding and navigation tabs.](https://www.uncannyowl.com/wp-content/uploads/2026/07/xAPI-Quiz-Report-1-question-results-1030x646.png "xAPI Quiz Report - 1 question results - Uncanny Owl") #### Tin Can Report — the raw activity stream Every interaction, in order, with timestamps. Useful for understanding the *path* a learner took through interactive content, not just the result. Tin Canny automatically de-duplicates noisy “passed” statements so the stream stays readable. #### Course & User Reports — the zoomed-out view The **Course Report** charts recent activity and surfaces your most- and least-completed courses, so you can see at a glance which content is landing. The **User Report** lets you drill into any individual learner’s full journey. ### Turn insight into better courses A simple, repeatable loop: 1. **Publish** your module with xAPI (or SCORM) and embed it in a lesson. 2. **Let a cohort run through it.** 3. **Open the xAPI Quiz Report** and look for questions with low success rates or unexpected answer patterns. 4. **Revise** the slide, the explanation, or the question — then re-upload using **Replace content** so your historical data and module ID are preserved. 5. **Compare** the next cohort’s results. ### Why this matters - **Improve outcomes, not just measure them.** You learn *where* learners struggle, not only *that* they did. - **No external analytics stack.** The LRS is inside WordPress; the reports are built in. - **Works with the tools you already use.** Storyline, Rise, Captivate, iSpring, and H5P all feed the same reports. ### Related Articles - [xAPI Quiz Report](https://www.uncannyowl.com/knowledge-base/xapi-quiz-report/) — question-by-question response data - [Tin Can Report](https://www.uncannyowl.com/knowledge-base/tin-can-report/) — the raw statement stream - [LearnDash Quiz Question Analysis Report](https://www.uncannyowl.com/knowledge-base/learndash-quiz-question-analysis-report/) — spotting problem questions in LearnDash quizzes - [Managing eLearning Content](https://www.uncannyowl.com/knowledge-base/managing-elearning-content/) — replacing content without losing data **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Give Managers Their Own Reports — No Admin Access Needed](https://www.uncannyowl.com/knowledge-base/give-managers-their-own-reports-no-admin-access-needed/) **Published:** July 4, 2026 **Author:** David Chambo **Content:** When you sell or deliver training to organizations, every client manager wants the same thing: *“How is my team doing?”* Answering that one-by-one — exporting spreadsheets, taking screenshots, fielding emails — doesn’t scale. Tin Canny’s front-end reports let managers and Group Leaders pull their own up-to-the-minute reports, without ever logging into WordPress. ### The bottleneck this removes In a typical setup, only administrators can see reporting in the WordPress dashboard. So the admin becomes a reporting help desk: every “can you send me my team’s progress?” lands on one person. Tin Canny fixes this by putting reports on the **front end**, scoped automatically to what each Group Leader is allowed to see. ### How it works #### 1. Put reports on a page Add a single shortcode (or block) to any page and you have a live reporting hub: - \[tincanny\] — the full reporting interface (Course, User, and optionally Tin Can/Quiz reports) - \[uo\_group\_quiz\_report\] — consolidated quiz scores by group and course - \[uotc\_lesson\_report\] / \[uotc\_topic\_report\] — lesson and topic completion See the [Tin Canny Shortcodes & Blocks Quick Reference](http://tin-canny-shortcodes-blocks-reference.md) for the full list. #### 2. Scope is automatic A Group Leader who opens the page sees **only their own groups’ learners** — never the whole site. If they lead multiple groups, a **group selector dropdown** lets them switch between teams. Administrators see everything. You don’t configure permissions per page; Tin Canny reads each viewer’s role and group membership. ![Tin Canny Report dashboard with Course Report tab active; group dropdown expanded showing All Users, IT and AI Group, and Sales & Marketing Group; chart area displaying a timeline from Jun 2021 to Jun 2026 and a summary of 313 Courses.](https://www.uncannyowl.com/wp-content/uploads/2026/07/front-end-course-report-show-groups-1030x490.png "front end course report show groups - Uncanny Owl")#### 3. Managers self-serve From that page a manager can: - Check each learner’s status — **Not started, In progress, Completed** — by course - Sort by **% Complete** or **Avg Quiz** score (front-end columns are sortable as of v5.1.1) - Review quiz scores, including SCORM/xAPI results - **Export to CSV** for their own records No dashboard, no training, no support ticket. ### Pairs perfectly with Uncanny Groups Front-end reporting is most powerful when each client organization is a **LearnDash group** with its own Group Leader. [Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) gives leaders a front-end management page to enroll and manage their own people; Tin Canny adds the reporting layer on top. Together they let an organization run its entire training program — enrollment *and* reporting — without touching your admin. ### Why this matters - **Frees up your admins.** Reporting requests stop landing in one inbox. - **A better client experience.** Customers get instant, always-current answers. - **A sellable feature.** “Your managers get their own live dashboards” is a strong differentiator for B2B training providers. ### Related Articles - [Front End LearnDash Reports](https://www.uncannyowl.com/knowledge-base/front-end-reports/) — placing reports on a page - [Front End Quiz Reports](https://www.uncannyowl.com/knowledge-base/front-end-quiz-reports/) — the quiz report shortcodes - [Tin Canny Shortcodes & Blocks Quick Reference](http://tin-canny-shortcodes-blocks-reference.md) — every report shortcode and block - [Uncanny Groups for LearnDash – START HERE!](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) — front-end group management **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Tin Can Report](https://www.uncannyowl.com/knowledge-base/tin-can-report/) **Published:** September 7, 2017 **Author:** yuehchin **Content:** ### Overview The Tin Can Report is the raw activity stream from your eLearning modules. Every interaction a learner has with SCORM or xAPI content — built in Storyline, Captivate, iSpring, H5P, and more — is recorded here as an individual statement. The Tin Can Report captures learning interactions from modules uploaded with the Tin Canny Uploader and published as **xAPI** or **SCORM 1.2 / 2004**. Statements are stored in a Learning Record Store native to WordPress — no external LRS required. Each record includes the user, module, activity, result, and a timestamp. Use this report when you need the underlying detail: the full sequence of what a learner did inside a module. ### Report Filters The Tin Can Report opens with a filter panel — set your criteria and click **Search** (or **Reset** to clear). Filters are grouped: - **User & Group** - **Groups** — scope the report to a specific group. Group Leaders are automatically limited to their assigned groups. - **User** — narrow to a single learner. - **Content** - **Course** — filter to one course. - **Module** — filter to one module. - **Activity** - **Action** — filter by the Tin Can verb/action (e.g. a specific statement type), or leave on **All actions**. - **View** — choose a preset range (**Last 30 Days**) or select **From** and enter a custom **Start Date** / **End Date**. ![Tin Can Report dashboard with filters for Groups, Content, and Activity and a data table of results below](https://www.uncannyowl.com/wp-content/uploads/2017/09/tin-can-report-1030x595.png "tin can report - Uncanny Owl") ### Results After you search, the **Tin Can Data** table lists each matching statement. Default columns: **Column****Shows****Group**The learner’s group (or *n/a*)**User**The learner**Course** / **Module**Where the statement came from**Target**What was acted on (e.g. the question or object)**Action**The Tin Can verb (e.g. *Answered*, *Passed*)**Result**The reported result, if any**Success**Whether the interaction was successful**Date Time**When it occurredSet **Show \[n\] entries** for page size, and use **Screen Options** (top right) to choose which columns appear. ### Scoring By default the report uses the raw score reported by a module. For finer control, two developer filters are available: - **uo\_tincanny\_data\_consider\_scaled\_score** — **added in v5.0.** When enabled, reporting considers the module’s *scaled* score (0–1) rather than the raw value. Useful when modules report scores on different scales. - **tincanny\_result\_override** — **added in v5.1.0.3.** Overrides the stored result value of a statement before it’s reported. See [Actions/Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers-2/) for usage details. ### Performance The Tin Can Report was **refactored in v5.0** for faster loading, which is especially noticeable on sites with hundreds of thousands of statements. ### Export to CSV Export the filtered results to CSV for deeper analysis — valuable when working with very large datasets. ### Related Articles - [xAPI Quiz Report](https://www.uncannyowl.com/knowledge-base/xapi-quiz-report/) — question-level quiz responses - [Actions/Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers-2/) — the scoring and result-override filters - [See How Learners Actually Engage with Your Content](https://www.uncannyowl.com/knowledge-base/see-how-learners-actually-engage-with-your-content/) — reading the activity stream to improve content **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Site Check](https://www.uncannyowl.com/knowledge-base/site-check/) **Published:** May 31, 2019 **Author:** Ryan Moore **Content:** ### Overview Site Check is Tin Canny’s built-in diagnostic. It runs three checks to confirm your server is configured so modules load and data is captured correctly — catching the most common setup problems before they cost you a support ticket. ### When to run it Run Site Check whenever you: - First install Tin Canny (do this before your first upload). - Notice **modules not loading**, the **Mark Complete button not unlocking**, or **xAPI/SCORM data not being tracked**. - Change hosting, permalinks, a security/maintenance plugin, or your site URL. Open it from **Tin Canny Reporting > Site check** in the WordPress admin. Each check shows a **Passed** status when it’s healthy. After changing anything, click **Re-check** to run the tests again. ![Status page for Tin Canny Reporting showing Passed for HTTP/HTTPS, Permalink Settings, and Endpoint Availability with a Re-check button available at the bottom of each row.](https://www.uncannyowl.com/wp-content/uploads/2019/05/Site-Check-new-layout-1030x477.png "Site Check new layout - Uncanny Owl") ### The three checks #### 1. HTTP/HTTPS Check Confirms that your **WordPress Address** and **Site Address** (in **Settings > General**) match. If they don’t match, you may have problems loading content or receiving xAPI statements. If visitors reach your site over https://, make sure **both** values on the General Settings page also use https://. **If it fails:** Go to **Settings > General** and align the WordPress Address (URL) and Site Address (URL) — including matching http:// vs https:// — then click **Re-check**. #### 2. Permalink Settings Confirms your permalink structure is compatible. **Tin Canny will not work with permalinks set to *Plain*.** We recommend **Post name**, which is also better for SEO. **If it fails:** Go to **Settings > Permalinks**, choose **Post name** (or any structure other than Plain), save, then **Re-check**. #### 3. Endpoint Availability Verifies that the **xAPI endpoint is accessible**. If it isn’t, SCORM/Tin Can module data can’t be received and tracked — modules may still upload and display, but no reporting data is recorded. **If it fails:** the usual causes are a sitewide redirect from a maintenance-mode, “coming soon,” or aggressive security plugin intercepting the endpoint, or server/firewall rules blocking the request. Temporarily disable the suspected plugin or rule and **Re-check**. (A Plain permalink setting can also cause this — fixing check #2 often clears it too.) ### Still failing? If any check still fails after the fixes above, [contact Uncanny Owl support](https://www.uncannyowl.com/support/) with a screenshot of the Site Check screen so the team can see exactly which check is failing. ### Related Articles - [Getting Started with Tin Canny Reporting](http://getting-started-with-tin-canny-reporting.md) — Site Check is a recommended first step - [Install the Tin Canny Reporting Plugin](https://www.uncannyowl.com/knowledge-base/tincanny-installation-setup/) — installation and licensing - [Setting up Tin Canny Reporting](https://www.uncannyowl.com/knowledge-base/protecting-sharing-content-tin-canny/) — data capture and protection settings **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Setting up Tin Canny Reporting for LearnDash](https://www.uncannyowl.com/knowledge-base/protecting-sharing-content-tin-canny/) **Published:** September 15, 2017 **Author:** Anthony Lucic **Content:** ### Overview The **Tin Canny Reporting > Settings** page is where you decide how learner data is captured and shown, how the Mark Complete button behaves, how modules appear on the page, and how data is cleared when you need a fresh start. This article walks through every setting in the order it appears on the page. ### Reports - **Disable wp-admin dashboard widget** — *Yes / No.* Tin Canny adds a small reporting summary to your WordPress admin home screen. If you’d rather keep that dashboard uncluttered, set this to **Yes** to hide the widget. - **Enable sorting by % complete** — *Yes / No.* Lets you sort report tables by each learner’s completion percentage. Sorting that column pulls a large amount of data at once, which can slow the reports down — or time out — on sites with a lot of users, so it’s best left off unless your user base is small and you want the convenience. - **Enable Tin Can Report on front end** — *Yes / No.* Adds the **Tin Can Report** as a tab inside the front-end reporting interface created by the \[tincanny\] shortcode, so admins and Group Leaders can reach it from a page instead of the dashboard. - **Enable xAPI Quiz Report on front end** — *Yes / No.* Does the same for the **xAPI Quiz Report**, adding it as a tab in the \[tincanny\] front-end interface. - **User identifier(s)** — *Display Name / First Name / Last Name / Username / Email Address.* Choose which identifying columns appear in the user list of the Course Report and User Report. Pick whatever combination makes it easiest to recognize your learners at a glance. ### Course/User Report Settings - **Default group for Reports** — *All Users, or any of your groups.* Pre-selects a group so the Course and User reports open already filtered to it. On a large site this is a real time-saver, since the report isn’t loading every learner each time. You can still switch to a different group (or back to All Users) from within the reports whenever you like. - **Default page length** — *10 / 25 / 50 / 100 / 200.* Sets how many rows load per page in the reports. Smaller numbers load faster; larger numbers mean less paging back and forth. Choose what fits your data and your patience. ### Tin Can/SCORM - **Capture Tin Can and SCORM data** — *Yes / No.* Controls whether Tin Canny records the Tin Can/SCORM statements your uploaded modules send. If you’re using modules from a supported authoring tool (Storyline, Rise, Captivate, iSpring) and want their results in your reports, turn this on. Set it to **No** to stop capturing — and note that when data capture is off, the **Tin Can Report** and **xAPI Quiz Report** tabs disappear from the reporting interface. - **Protect SCORM/Tin Can modules** — *Yes / No.* Turns on basic protection that limits viewing of your uploaded modules (Storyline, Rise, Captivate, iSpring) to signed-in users, so anonymous visitors can’t open the module files directly from outside your site. Two things worth knowing: the protection does **not** cover modules you place on standalone pages or posts (anyone can view those), and while you can set protection globally here and fine-tune it per lesson/topic, **if it’s switched off globally you can’t turn it back on for an individual lesson or topic**. If modules are having trouble loading, try disabling this. It also relies on hosts that support mod\_rewrite. ![](https://www.uncannyowl.com/wp-content/uploads/2017/10/lesson-topic-level-settings.png "lesson-topic-level-settings - Uncanny Owl")- **SCORM Driver Compatibility** — *Async (default) / Sync.* Determines how newly uploaded modules communicate with your site. **Async** is the default and performs best in most environments; switch to **Sync** only if SCORM/xAPI results aren’t being tracked the way you expect. Because the mode is set at upload time, changing this setting affects future uploads — to apply it to an existing module, upload that module again. ### Mark Complete button - **Behavior** — Sets what the LearnDash **Mark Complete** button does on lessons and topics that contain an embedded Tin Canny module. Choose a site-wide default here; you can override it on any individual lesson or topic. The options are: - **Always Enabled** — the button works normally, whether or not the learner has finished the module. - **Disabled until complete** — the button stays greyed out until the learner completes the embedded module. - **Hidden until complete** — the button is hidden and only appears once the module is finished. - **Hidden and autocomplete** — there’s no button at all; the lesson or topic marks itself complete as soon as the learner finishes the module. (Be sure to give learners another way to move on, since there’s no button to click.) - **Hidden and autoadvance** — the same as autocomplete, but it also sends the learner straight on to the next lesson or topic the moment they finish. - **Enable compatibility mode** — *Yes / No.* A more dependable (if slightly slower) method of recording xAPI statements and unlocking the Mark Complete behaviors. Switch it on if completion isn’t unlocking reliably — for instance, when a module sends its final statement at the same moment it closes. - **Custom label** — Replace the default Mark Complete button text with wording of your own whenever a Tin Canny module is embedded in the lesson or topic — for example, “Finish module” or “I’m done.” - **Autocomplete Lessons and Topics even if Tin Canny content on page (Uncanny Toolkit Pro)** — *Yes / No.* Works hand-in-hand with the **Autocomplete Lessons & Topics** feature in Uncanny LearnDash Toolkit Pro. Normally, when a lesson or topic holds a Tin Canny module, completion is decided by the **Mark Complete button** behavior above. With this turned on, the lesson or topic is instead marked complete automatically on page load, even though a module is present. Without Toolkit Pro (and its Autocomplete Lessons and Topics module) active, completion simply continues to follow the Mark Complete behavior. ### Lightbox - **Transition** — *Fade / Zoom / None.* The visual effect used when a module opens in a lightbox. Choose **Fade** or **Zoom** for a little motion, or **None** for an instant open. - **Default lightbox size** — Sets the default dimensions of modules shown in a lightbox. Enter a **Width** (px / % / vw) and **Height** (px / % / vh) and pick the units that suit you — fixed pixels, or percentage/viewport units that scale with the screen. These defaults can be overridden on an individual lesson or topic. ### Reset data **These actions are permanent and can’t be undone — export anything you need first.** - **Reset Tin Can data** — the **Reset data** button permanently deletes all captured Tin Can data. Useful when you’re testing or starting over, but there’s no way back. - **Reset xAPI Quiz data** — the **Reset Quiz Data** button permanently deletes all xAPI Quiz data. - **Reset bookmark data** — the **Reset bookmark data** button clears the saved resume positions for uploaded modules, so every learner starts their modules from the beginning again. - **Purge statements** — pick a verb (**Answered**, **Attempted**, or **Passed**) and click **Purge statements** to delete only the SCORM/xAPI statements that use that verb. This is a more surgical cleanup than wiping everything at once. - **Purge Answered statements** — a one-click shortcut (the **Purge Answered statements** button) that removes every stored xAPI statement with the “Answered” verb. ### Delete Tin Canny Data - **Delete all Tin Canny data on uninstall** — By default, your data is kept even if you remove the plugin. Enable this option only if you want a completely clean removal: with **Delete all data on uninstall** turned on, uninstalling Tin Canny permanently erases **all** of its data — SCORM/xAPI statements, quiz data, uploaded modules, module bookmarks, plugin settings, and everything related. There is no undo, so switch it on deliberately. **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Managing Elearning Content](https://www.uncannyowl.com/knowledge-base/managing-elearning-content/) **Published:** December 7, 2018 **Author:** Ken **Content:** ### Overview The **Manage Content** page is your library for every module you’ve uploaded with Tin Canny. From one screen you can upload new content, find existing modules, preview them, replace them with updated versions, and delete what you no longer need — all while keeping your reporting data intact. ### The Manage Content page Go to **Tin Canny Reporting > Manage Content**. The page was **redesigned in v5.1** with a cleaner, modernized layout that makes a large content library easier to scan. Each uploaded module is listed in a table with these columns *(verified in source)*: - **Module ID** — the module’s unique ID (preserved when you replace content). - **Content** — the module name/title. - **Type** — the module format (SCORM, xAPI, etc.). - **Uploaded** — when it was added. *(New in v5.1.)* - **Size** — how large the package is. *(New in v5.1.)* You can **search by title** and **sort by any column** (all columns are sortable) to find a module quickly, even in a big library. ![](https://www.uncannyowl.com/wp-content/uploads/2025/10/Manage-Content-page.png "Manage Content page - Uncanny Owl") ### Uploading new content Click **Upload new content**, then **Click to Upload** and choose your module. Modules must be uploaded as a **.zip** file published from one of the [supported authoring tools](https://www.uncannyowl.com/knowledge-base/authoring-tools-supported/) — it’s the only accepted file type. Once uploaded, a module can be embedded in any lesson or topic with the Tin Canny block or uploader. See [Tin Canny Uploader](https://www.uncannyowl.com/knowledge-base/storyline-captivate-uploader/). #### Upload entire zip file (faster uploads) By default, Tin Canny unpacks your .zip and uploads the module’s files individually. For a large module this can mean hundreds of separate transfers, which is slow. The upload screen offers a faster alternative: - Tick **Upload entire zip file** before uploading. The whole package is sent as a **single file** and unpacked on the server — far quicker than uploading each file one at a time. **When to use it:** As the in-product note says, *“Choose this option for faster uploads; it may not work in all environments or with large file sizes.”* If a single-file upload fails — usually because the .zip is larger than your server’s maximum upload size — leave the box unticked and upload normally. The screen shows your server’s **maximum upload file size** as a guide. ![Upload File dialog showing a 'Click to Upload' button, 'No file selected,' and a checked 'Upload entire zip file' option with notes about faster uploads and a 64 MB limit.](https://www.uncannyowl.com/wp-content/uploads/2018/12/upload-module-zip-enabled-500x370.png "upload module zip enabled - Uncanny Owl") ### Previewing content Use the **preview** option to view a module directly from the Manage Content page. Note that previewing a module generates xAPI tracking, just as a learner would.. ### Replacing content When you publish an updated version of a course, you don’t have to delete the old module and re-embed a new one (which would break links and lose history). Instead, use **Replace content**: 1. Find the module in the list and choose **Replace**. 2. Upload the new package. 3. Choose how to handle existing data: - **Delete bookmark/resume data only** — This option deletes stored bookmark data (ie where learners restart the module), but xAPI statement history is kept. This data must be deleted whenever content is replaced as internal bookmark IDs may have changed, resulting in the existing bookmark data preventing the module from loading properly. - **Delete bookmarks *and* xAPI statements** — This option deletes both stored bookmark data and stored xAPI statements (the data shown in the Tin Can and xAPI Quiz reports). A full reset for this module. ![](https://www.uncannyowl.com/wp-content/uploads/2025/10/manage-content-replace.png "manage content - replace - Uncanny Owl") Because **Replace** preserves the module’s ID, every place you’ve embedded it keeps working, and (depending on your choice above) your historical completion records are retained. This is the recommended way to update content. ![](https://www.uncannyowl.com/wp-content/uploads/2019/05/replace-learndash-tin-can-content-confirmation.png "replace-learndash-tin-can-content-confirmation - Uncanny Owl") ### Deleting content Remove a module entirely with **Delete**. Use this only when you no longer need the module or its data. For routine updates, using the **Replace** option is recommended. ### Related Articles - [Tin Canny Uploader](https://www.uncannyowl.com/knowledge-base/storyline-captivate-uploader/) — uploading and embedding modules in lessons - [Authoring Tools Supported by Tin Canny](https://www.uncannyowl.com/knowledge-base/authoring-tools-supported/) — supported formats and publishing tips - [Setting up Tin Canny Reporting](https://www.uncannyowl.com/knowledge-base/protecting-sharing-content-tin-canny/) — data capture and protection settings **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Lesson and Topic Completion Reports](https://www.uncannyowl.com/knowledge-base/lesson-and-topic-completion-reports/) **Published:** April 19, 2023 **Author:** Ryan Moore **Content:** ### Overview These front-end reports show, for a specific lesson or topic, exactly which learners have completed it. They’re built for administrators and Group Leaders who need granular completion data without digging through the full back-end reports. Lesson and Topic Completion Reports display completion status per learner for a chosen lesson or topic. Access is limited to **administrators and Group Leaders** — learners don’t see them. ![User export panel with Group/Course/Lesson filters, CSV/Excel export buttons, and a search field above a sample user table showing First Name, Last Name, Email, and Status (e.g., Vella Effertz).](https://www.uncannyowl.com/wp-content/uploads/2023/04/LearnDash-Lesson-Completion-Report-1030x396.png "LearnDash Lesson Completion Report - Uncanny Owl") ### Adding the reports to a page Place either a block or shortcode on a page (a full-width layout works best): Block Name / **Shortcode****Shows**Tin Canny Lesson Report / `[uotc_lesson_report]`Completion of a chosen **lesson**Tin Canny Topic Report / `[uotc_topic_report]`Completion of a chosen **topic**### Using the report 1. (Optional) Select a **group** to scope the report. 2. Select a **course**. 3. Select the **lesson or topic**. The table populates with the enrolled learners and their completion status. Use **Customize columns** to choose which fields appear. ### Time spent When the **Simple Course Timer** module ([Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/uncanny-toolkit-pro/)) is enabled, a **Time column** is added showing how long each learner spent in the lesson or topic. *(Added in v4.4.1.)* This is invaluable for “minimum time-in-content” requirements and for spotting learners who rushed through. ### Exporting Reports export to **CSV and Excel** for filtering and record-keeping. ### Related Articles - [Front End LearnDash Reports](https://www.uncannyowl.com/knowledge-base/front-end-reports/) — the combined front-end report interface - [Tin Canny Shortcodes & Blocks Quick Reference](http://tin-canny-shortcodes-blocks-reference.md) — every report shortcode and block - [Prove Training Compliance with Tin Canny](https://www.uncannyowl.com/knowledge-base/prove-training-compliance-with-tin-canny/) — using time-in-content as audit evidence **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Front End Quiz Reports](https://www.uncannyowl.com/knowledge-base/front-end-quiz-reports/) **Published:** September 8, 2017 **Author:** Ryan Moore **Content:** ### Overview Tin Canny includes three **front-end** quiz reports that consolidate LearnDash quiz scores and SCORM/xAPI (Tin Canny) scores, so administrators, Group Leaders, and learners can see results without logging into the WordPress dashboard. Each report can be placed on any page with a **block** or its matching **shortcode**. These are **front-end** reports for placing on a page. For the back-end admin report of question-by-question xAPI responses, see [xAPI Quiz Report](https://www.uncannyowl.com/knowledge-base/xapi-quiz-report/). ### Before you start - The easiest way to add a report is with a **block** — when editing a page, click **+**, search **Tin Canny**, and choose the report. Each block has a matching shortcode if you’d rather paste one in (use a **Shortcode block** in the editor). - Quiz reports render wide tables, so use a **full-width page template** with no sidebar for the best layout. - Reports inherit your theme’s styles; on some themes you may want light CSS adjustments for spacing or table width. ### Group Leader Quiz Report Add the **Tin Canny Group Quiz Report** block, or use the **`[uo_group_quiz_report]`** shortcode. Shows consolidated quiz data and Tin Canny scores (H5P, iSpring, Storyline, etc.) **by group and by course**. It reports the highest score from multiple attempts, and — when statistics are enabled — can link through to detailed results. - **Who can view:** Administrators and Group Leaders (Group Leaders see only their own groups). - **Attribute:** user\_report\_url=”%URL%” — turns each learner’s name into a link to their individual user report. Replace %URL% with the page that holds the **User Quiz Report** (\[uo\_individual\_quiz\_report\]), enabling drill-down from the group report to a single learner. **Developers:** the userReportUrl value can also be set globally with the uo\_tincanny\_quiz\_report\_user\_report\_url filter. See [Actions/Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers-2/). ![Tin Canny Group Quiz Report](https://www.uncannyowl.com/wp-content/uploads/2018/07/tincanny-group-quiz-report-1030x384.png "tincanny-group-quiz-report - Uncanny Owl") ### User Quiz Report Shows the **viewing learner’s own** LearnDash quiz scores plus SCORM/xAPI scores across all of their courses. Because it’s scoped to the current user, this is the report you place on a learner-facing “My Results” page. Add the **Tin Canny Individual Quiz Report** block, or use the **`[uo_individual_quiz_report]`** shortcode. - **Who can view:** Students, Group Leaders, and Administrators (each sees their own scores). - **Attribute:** exclude\_non\_course\_quizzes=”yes” — *added in v5.0.* Hides quizzes that aren’t mapped to a course, so the report shows only course-based quizzes. Default is no. ![Tin Canny User Quiz Report](https://www.uncannyowl.com/wp-content/uploads/2018/07/tincanny-user-quiz-report-1030x408.png "tincanny-user-quiz-report - Uncanny Owl")#### Linking Group Quiz Report with the User Quiz Report What’s especially powerful with the 2 new reports is that they can be linked, so users listed in the Group Leader report are hyperlinked to the user report. Administrators and Group Leaders can then drill down into a user to see their results across everything. Use the “user\_report\_url” attribute with the uo\_group\_quiz\_report shortcode to link them: ``` [uo_group_quiz_report user_report_url="%URL%"] ``` Replace `%URL%` in the example above with the URL of the user report on your website (the page that contains the `[uo_individual_quiz_report]` shortcode). You can use a static or relative URL, and as long as it’s populated correctly, the Group Report will now link to individual score reports. ### Detailed Quiz Report Use the `[uotc_ld_quiz_report] `shortcode. *(This report is shortcode-only — there is no block for it.)* The most comprehensive view: it shows **all attempts for all users**, including learners who have access but **haven’t attempted** a quiz, and it lists **all records regardless of course mapping** (no course-selection filter). Columns are customizable. - **Who can view:** Administrators and Group Leaders. By default an administrator sees all users (not only group-linked users); visibility is customizable via filter. - **How it differs from the other two:** all attempts rather than highest-score-only, includes records for users that have not attempted the quiz yet (this can be disabled using the following filter: `add_filter( ‘uotc_quiz_report_hide_unattempted_users’, ‘__return_true’ );`), ignores course mapping, and offers customizable columns. ![LearnDash Detailed Quiz Report](https://www.uncannyowl.com/wp-content/uploads/2024/02/LearnDash-Detailed-Quiz-Report-1030x452.png "LearnDash Detailed Quiz Report - Uncanny Owl")This report can also be used by additional custom roles. Here’s a code example: ``` ``` And for even more control over outputting users that have attempted vs. not attempted a quiz, here’s an example of isolating results based on group ID or quiz ID: ``` ``` ### Related Articles - [xAPI Quiz Report](https://www.uncannyowl.com/knowledge-base/xapi-quiz-report/) — the back-end, question-by-question xAPI report - [Front End LearnDash Reports](https://www.uncannyowl.com/knowledge-base/front-end-reports/) — the combined \[tincanny\] reporting interface - [Tin Canny Blocks & Shortcodes Quick Reference](http://tin-canny-shortcodes-blocks-reference.md) — every report block and shortcode - [Give Managers Their Own Reports](http://use-case-self-serve-manager-reporting.md) — the self-serve reporting use case **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Front End LearnDash Reports](https://www.uncannyowl.com/knowledge-base/front-end-reports/) **Published:** September 8, 2017 **Author:** Ryan Moore **Content:** ### Overview Front-end reports put Tin Canny’s reporting on a WordPress page, so administrators and Group Leaders can review course and learner data without logging into the WordPress admin dashboard. It’s the foundation for letting client managers run their own reports. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Course-Report-461x500.png "Course Report - Uncanny Owl") ### What they are The **Tin Canny Course/User Report** block or `[tincanny]` shortcode renders the full reporting interface on the front end — **Course Report, User Report**, and (if enabled) **Tin Can and xAPI Quiz reports** — in one tabbed view. Add it to any page: ``` [tincanny] ``` **Tip:** Reports are wide tables. Use a **full-width page template with no sidebar** so the columns aren’t squeezed. **Note: The Tin Can and xAPI Quiz reports are not enabled by default**. To turn these reports on, go to Tin Canny Reporting > Settings in your admin panel and enable the appropriate options: ![Front-end report settings: Tin Can Report enabled (Yes) with explanation text below the option.](https://www.uncannyowl.com/wp-content/uploads/2017/09/enable-front-end-reports.png "enable front end reports - Uncanny Owl") ### Who can view them Tin Canny checks each viewer’s role and group membership: - **Administrators** see all data. - **Group Leaders** see only their assigned groups. Leaders of multiple groups get a **group-selector dropdown** to switch between teams. - Learners do not see these admin reports (the learner-facing quiz report is separate — see [Front End Quiz Reports](https://www.uncannyowl.com/knowledge-base/front-end-quiz-reports/)). ### Sorting and defaults - **Sortable columns:** as of **v5.1.1**, the front-end User Report’s **% Complete** and **Avg Quiz** columns are sortable, so managers can rank learners by progress or performance with a click. - **Defaults carry over:** the **default group** and **default page length** set under **Tin Canny Reporting > Settings** also apply to the front-end reports, so a leader’s page opens already filtered and paginated. ### Enabling Tin Can / Quiz reports The **Tin Can** and **xAPI Quiz** reports only appear in the front-end interface if the option **Enable Tin Can Report on front end** and **Enable xAPI Quiz Report on front end** are enabled under **Tin Canny Reporting > Settings** under the **Reports** heading. ### Styling Front-end reports intentionally inherit your theme’s styles so they blend in. On some themes you may want light CSS adjustments for table width or spacing. ### Related Articles - [Front End Quiz Reports](https://www.uncannyowl.com/knowledge-base/front-end-quiz-reports/) — learner- and group-facing quiz reports - [Tin Canny Shortcodes & Blocks Quick Reference](http://tin-canny-shortcodes-blocks-reference.md) — every report shortcode and block - [Give Managers Their Own Reports](http://use-case-self-serve-manager-reporting.md) — the self-serve reporting use case - [Setting up Tin Canny Reporting](https://www.uncannyowl.com/knowledge-base/protecting-sharing-content-tin-canny/) — enabling data capture and setting defaults **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Course Report](https://www.uncannyowl.com/knowledge-base/course-report/) **Published:** September 5, 2017 **Author:** yuehchin **Content:** ### Overview The Course Report is the bird’s-eye view of training on your site: how many learners and courses you have, what’s being completed, and how each course is performing — with the ability to drill into any course for the detail. This report is for LearnDash data and progress completion across lessons and topics in LearnDash courses. Data for SCORM/xAPI modules is included in the [Tin Can report](https://www.uncannyowl.com/knowledge-base/tin-can-report/). Above the course table you’ll see: - A **Reports** panel with the total number of **Users** and **Courses** in scope. - A **Recent Activities** chart plotting **Course Completions** and **Tin Can Statements** over time, with a date-range slider to zoom the timeframe. A condensed version of this overview also appears on your WordPress Dashboard for an at-a-glance pulse. ![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Course-Report-top-bar-1030x209.png "Course Report top bar - Uncanny Owl") #### Group Filter At the top of the report is a **Group** filter. Choose a group from the dropdown and click **Filter** to scope the entire report — the activity chart, the totals, and the course table — to just that group’s learners. - **Administrators** can filter by any group, or choose **All Users** to see everyone. - **Group Leaders** are automatically limited to their assigned groups, and use the same dropdown to switch between the groups they lead. You can set a **default group** under **Tin Canny Reporting > Settings** (v5.0) so the report opens already filtered to it. See [Report defaults](https://docs.google.com/document/d/1ENYYiR4aY7VpJVhhpy1coEUge4HQenMLLn081DTrIo4/edit#report-defaults). ### Course Table Below the overview, the Course Table lists every course in scope. Columns include: **Column****Shows****ID** / **Course**Course ID and title**Enrolled**Number of enrolled learners**Not Started** / **In Progress** / **Completed**Learner counts by status**Avg Quiz Score**Average quiz score for the course**% Complete**Overall completion percentage**Details**A **See details** link to the drill-down report**Avg Time To Complete** / **Avg Time Spent**Time columns shown when the [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) module (Uncanny Toolkit Pro) is enabledYou can **search** for a course by name and **sort** by any column heading. Note that these progress metrics track **LearnDash lessons and topics** — not the internal steps of an uploaded module. #### Exporting Use the **Excel Export** and **CSV Export** buttons above the table to download the current (filtered) course data for analysis or record-keeping. ### Report defaults Under **Tin Canny Reporting > Settings** you can set a **default group** and **default page length** so the report opens already filtered and sized to your needs (added in v5.0). This is a time-saver when you regularly report on the same group or work with many courses. ### Drill-Down Course Report Click a course’s **See details** link to open its detail report: overall performance for that course plus a list of enrolled users and their individual progress. ### Related Articles - [User Report](https://www.uncannyowl.com/knowledge-base/user-report/) — the learner-centric companion view - [Front End LearnDash Reports](https://www.uncannyowl.com/knowledge-base/front-end-reports/) — display this report on the front end - [Lesson and Topic Completion Reports](https://www.uncannyowl.com/knowledge-base/lesson-and-topic-completion-reports/) — completion at the lesson/topic level **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Actions/Filters for Developers](https://www.uncannyowl.com/knowledge-base/actions-filters-for-developers-2/) **Published:** November 12, 2020 **Author:** Ryan Moore **Content:** Tin Canny includes WordPress filters for developers building custom functionality on top of the plugin. This article lists the available hooks, grouped by what they affect. ### Permissions & capabilities Control who can access reporting features and data. **Filter****Default****Description**`uo_tincanny_reporting_capability``tincanny_reporting`Capability required to view the Tin Canny reporting admin menu/pages. Defaults to the plugin’s own custom `tincanny_reporting` capability — **not** `manage_options`.`tincanny_view_all_reports_permission`(boolean)Whether the current user may view **all** reports rather than only their own groups. Receives a **boolean** (default is the result of an “is current user an admin” check), so return `true/false` — not a capability string.`tincanny_can_get_data``manage_options`Minimum capability for a logged-in user to retrieve report data via REST.`uo_tincan_ld_admin_capability_check``manage_options`**Added in v5.1.1.** The capability checked when granting access to reporting features. Use this to open reporting to custom roles.``` add_filter( 'uo_tincan_ld_admin_capability_check', function ( $capability ) { return 'edit_courses'; // allow any role with this cap to view reporting } ); ``` ### Data capture & processing Control which statements are recorded and how. **Filter****Signature****Description**`tincanny_module_allow_db_capture``($allow = true, $db_data)`Controls whether a module’s statements are written to the database. **Enhanced in v5.1.3** to also support *skipping* specific xAPI events. *(Verified: `TinCanRequest.php`.)*`tincanny_process_content``($process = true, $array)`Controls whether captured content is processed. **Enhanced in v5.1.3** to support skipping xAPI events. *(Verified: `Server.php`.)*`uo_tincanny_actor_name``($user_name, $User)`**Added in v5.1.3.3.** Overrides the learner name (actor) passed to a module, e.g. to use a display name or anonymized identifier. The second argument is the **WP\_User object**. *(Verified in v5.1.3.3 source: `Shortcode.php`, `TinCan_Content_List_Table.php`.)*``` add_filter( 'uo_tincanny_actor_name', function ( $user_name, $user ) { return 'Learner #' . $user->ID; // anonymize the actor name sent to modules }, 10, 2 ); ``` ### Scoring & results Adjust how scores and results are interpreted in reports. **Filter****Signature****Description**`uo_tincanny_data_consider_scaled_score``($consider = false)`**Added in v5.0.** Return true to make reporting use the module’s *scaled* score rather than the raw score. *(Verified: `Database/Admin.php`.)*`tincanny_result_override`(`$override = null, $TC_Result)`**Added in v5.1.0.3.** Return a non-null value to override the stored result of a Tin Can statement before it’s reported. *(Verified: `TinCanRequest.php`.)*### Reports & front-end output Customize report links and display. **Filter****Signature****Description**`uo_tincanny_quiz_report_user_report_url``($user_report_url)`**Added in v5.0.** Overrides the `userReportUrl` used by the **`[uo_group_quiz_report]`** shortcode so learner names link to the correct individual user report page. *(Verified: `quiz-module-reports.php`.)*### Module display (lightbox) Tin Canny modules can open in a GLightbox lightbox. Its JavaScript configuration is filterable. - **`uo_tincanny_glightbox_config`** — **Added in v5.1.0.1.** Filters the lightbox config array. The array includes a **`closeOnOutsideClick`** key (string ‘`0`‘ = disabled by default, ‘`1`‘ = enabled) that controls whether clicking outside the lightbox closes it. Set it to ‘`1`‘, or to ‘`0`‘ to prevent learners from accidentally closing a module mid-activity. *(Verified: `uncanny-articulate-and-captivate/classes/Shortcode.php`.)* add\_filter( ‘uo\_tincanny\_glightbox\_config’, function ( $config ) { ``` add_filter( 'uo_tincanny_glightbox_config', function ( $config ) { $config['closeOnOutsideClick'] = '0'; // don't close on outside click return $config; } ); ``` The vc\_snc shortcode that embeds a module also accepts a `closeOnOutsideClick` attribute directly. ## Related Articles - [Setting up Tin Canny Reporting](https://www.uncannyowl.com/knowledge-base/protecting-sharing-content-tin-canny/) — the no-code settings these filters extend - [xAPI Quiz Report](https://www.uncannyowl.com/knowledge-base/xapi-quiz-report/) — where the quiz-report URL filter applies - [Tin Canny Shortcodes & Blocks Quick Reference](http://tin-canny-shortcodes-blocks-reference.md) — report shortcodes and attributes **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Single Page Courses](https://www.uncannyowl.com/knowledge-base/single-page-courses/) **Published:** January 4, 2021 **Author:** Ryan Moore **Content:** ### Overview Single Page Courses let you build a complete LearnDash course on a single page — no lessons or topics required. It’s ideal for microlearning and short, self-contained courses where LearnDash’s usual nested structure gets in the way. Out of the box, LearnDash needs at least one lesson per course so it can calculate progress and completion. That forces short courses into a nested lesson/topic structure that often doesn’t match your instructional design — a real obstacle for microlearning. This module (introduced in Uncanny Toolkit Pro version 3.6) removes that requirement. A course can consist entirely of a single page, while LearnDash still tracks completion correctly behind the scenes. ### Configure It When the module is active, it adds new settings to the course editing screen. Turning on **Single Page Course** and saving creates a hidden lesson under the course. That lesson is invisible to learners — it never shows on the front end, and students won’t know it exists. It’s simply the mechanism LearnDash uses to record progress. ![Settings panel showing 'Single Page Course' option selected (checkbox checked) and 'Autocomplete course when viewed' unchecked.](https://www.uncannyowl.com/wp-content/uploads/2021/01/single-page-course.png "single page course - Uncanny Owl") The main decision is how the course gets marked complete: - **Mark Complete button (default)** — The course page shows a **Mark Complete** button. When a learner clicks it, the hidden lesson is marked complete, the page refreshes, and the course completes. - **Autocomplete** — The course can complete automatically. Note that this is set at the course level and is independent of Toolkit’s other autocompletion options. **Important:** If autocomplete is enabled *and* a certificate is associated with the course, the learner will have to reload the page to see the certificate. ### Usage Single Page Courses keep the standard LearnDash and Toolkit features you’d expect: - Enrollment management works exactly as usual. - Course certificates are issued normally. **Note:** It is important to make sure that you do hide any content that should only be available to students in a student shortcode (see [LearnDash shortcode documentation](https://www.learndash.com/support/docs/core/shortcodes-blocks/?fbclid=IwAR2B1nFi_yPkUIJtMKvXcVk6ZuQfD5-llqndVLiBYyqEZV2mhayMMJAcjzs#learndash_student_student) for more details), or you could use our [Not Enrolled Redirect](https://www.uncannyowl.com/knowledge-base/redirect-user-if-not-enrolled/) module to keep all visitors off of the course page entirely. **Note:** Because there are no real lessons or topics, lesson-level LearnDash features aren’t available at the course level — including video progression controls. If you need those, use a standard course structure instead. ### Related Articles - [Course Dashboard](https://www.uncannyowl.com/knowledge-base/learndash-course-dashboard/) - [Autocomplete Lessons & Topics](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics/) - [Enhanced Course Grid](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) **Published:** October 8, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to track and report on the time learners spend in courses. **Content:** ### Overview Track exactly how long learners spend inside your LearnDash courses — on course, lesson, topic, and quiz pages — and put that time to work: show it on screen, add it to your reports, require a minimum time before a quiz unlocks, or automatically log learners out and redirect them when they go idle. The Simple Course Timer records the time each learner spends in a course and its lessons, topics, and quizzes. You can display that time to learners in real time, surface total and completion times in your reports, and use time as a gate — for example, requiring learners to spend a minimum amount of time in the material before they can attempt a quiz, or logging out learners who go idle. This is a core tool for **seat-time compliance** (continuing education, certifications) and for **reducing cheating** by stopping learners from racing through content. **Important — tracking starts when you enable it.** The timer only records time from the moment the module is activated, and only while it stays active. Historical time is not available, so enable the module before you need the data. ### Configure It Enable the **Simple Course Timer** module under **Uncanny Toolkit**, then configure the options below based on what you need the timer to do. #### Idle Timeout When enabled, the timer stops counting if a learner is inactive for too long, so idle time doesn’t inflate the recorded total. After the idle period a popup asks the learner to confirm they’re still active — confirming resumes the timer; navigating away stops it. You can customize: - **Default idle time** (overridable per lesson, topic, or quiz). Defaults to 900 seconds (15 minutes) if no value is set. - The **timeout message** shown to the learner. - The **button labels** for confirming activity and for exiting the course. - The **redirect location** for learners who choose to exit. #### Minimum Course Time Before Quiz Enable **Enable Quizzes after X time** to block quiz attempts until a learner has accumulated a minimum amount of time in the course. A field appears on quiz pages where you set the required minutes; learners see a message showing the required time and their current progress until they qualify. ![](https://www.uncannyowl.com/wp-content/uploads/2016/09/minimum-course-time.png "minimum-course-time - Uncanny Owl")#### Logout & Redirect on Idle Timeout Instead of showing the inactivity popup when a learner goes idle, you can enable **Enable Logout** to **log the learner out and redirect them** when the idle timeout is reached. The learner is sent to the page set in the **Inactive Redirect** setting; if no Inactive Redirect page is specified, they’re redirected to the site homepage. ![Settings modal for Simple Course Timer showing Idle Time 50 seconds, Idle Message 'Idle message sample', and Logout enabled.](https://www.uncannyowl.com/wp-content/uploads/2016/10/simple-course-timer-settings.png "simple course timer settings - Uncanny Owl") ### Shortcodes / Blocks Place any of these on a page to display tracked time. A matching block is available for each. **Shortcode****What it displays**`[uo_time course-id=""]`Total time spent in the course`[uo_time_course_completed course-id=""]`Time at the point of completion (populated only after the course is completed)`[uo_time_lesson lesson-id=""]`Time in a lesson, plus its associated topics and quizzes`[uo_time_topic topic-id=""]`Time in a topic and its associated quiz`[uo_time_quiz quiz-id=""]`Time in a quiz`[uo_time_total user-id=""]`Total time across all courses since the module was activated`[uo_time_live]`A real-time, live-counting display of active course time### Reporting When the Simple Course Timer module is enabled, both **total time** in course and **completion time** can be exported in LearnDash reports or displayed onscreen. Time starts being tracked as soon as the module is enabled. The time columns are also added to the LearnDash course report automatically. The module also integrates with [Tin Canny LearnDash Reporting](https://www.uncannyowl.com/knowledge-base/tin-canny-reporting-for-learndash-overview/), adding the same columns there. ### Limitations to Know - **Mobile devices:** time isn’t tracked when a learner is taken away from WordPress (e.g. opening a PDF or a link in a new window) on iOS/Android, and tracking pauses while WordPress is in a background tab — an operating-system constraint, not a plugin setting. - **Caching:** some caching plugins can cause high resource usage with the timer active. If you see performance issues, test with caching disabled. ### For Developers - **`uo_course_timer_time_display`** *(v4.4.1)* — Filter the way tracked time is displayed. - **`uo_course_timer_time_display_completion`** *(v4.4.1)* — Filter the way completion time is displayed. ### Related Articles - [Enhanced LearnDash CSV Reports](https://www.uncannyowl.com/knowledge-base/enhanced-learndash-csv-reports/) — Add more learner data to your exports - [Cohort & Membership Programs](https://www.uncannyowl.com/knowledge-base/cohort-membership-programs/) — Combine the timer with group-based drip content - [Tin Canny Reporting for LearnDash – Overview](https://www.uncannyowl.com/knowledge-base/tin-canny-reporting-for-learndash-overview/) — Deeper reporting that surfaces course time **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Sample Lesson Label (Legacy)](https://www.uncannyowl.com/knowledge-base/sample-lesson-label/) **Published:** September 29, 2016 **Author:** yuehchin **Excerpt:** Learn how to display a visual "Sample" label on sample lessons on your course pages. **Content:** ### Overview Make LearnDash sample lessons obvious by adding a clear, customizable label to them. By default, sample lessons are only distinguishable because their title appears as a link — a cue many learners miss. LearnDash’s sample lesson feature lets you offer a free preview of course material without unlocking the full course. The problem is that sample lessons aren’t visually distinct — the only signal is that the lesson title is clickable, which is easy to overlook. This module adds a prominent label to each sample lesson so learners can immediately see what’s free to preview, which can encourage more clicks into your course content. **Note:** This module is for the legacy LearnDash (LD25) theme only. The label is applied via CSS that targets the legacy theme’s .is\_sample h4>a markup. The “Sample Lesson” label is native to LearnDash 3.0 theme. ### Usage Once the module is enabled, a label automatically appears on every sample lesson in your course materials — no per-lesson setup required. ![Lesson Access Settings panel with a Sample Lesson toggle; toggle appears off, enabling access for all visitors regardless of enrollment.](https://www.uncannyowl.com/wp-content/uploads/2016/09/enable-sample-lesson.png "enable sample lesson - Uncanny Owl") ### Configure It Customize the label in the module’s **Settings** window so it fits your course design: - **Label text** — Set the wording, for example “Sample” or “Free Preview.” Defaults to “Sample.” - **Label background color** — Set the background color to match your branding. - **Label text color** — Set the label’s text color. - **Label border color** — Set the color of the label’s border. - **Label text size** — Set the font size for the label (defaults to 14px). ![Settings dialog for a sample lesson label: edit text, choose three colors, set 22px font size, with Help, Close, and Save buttons.](https://www.uncannyowl.com/wp-content/uploads/2016/09/sample-lesson-editor.png "sample lesson editor - Uncanny Owl") **Important:** Some themes can interfere with the label. On the University theme, for example, the label may render as a checkmark instead of the text. This is a CSS conflict and can be resolved with custom CSS. Because these issues are site-specific, open a support ticket for help with your particular theme rather than relying on the Knowledge Base. ### Related Articles - [Restrict Page Access](https://www.uncannyowl.com/knowledge-base/restrict-page-access/) - [Single Page Courses](https://www.uncannyowl.com/knowledge-base/single-page-courses/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Restrict Page Access](https://www.uncannyowl.com/knowledge-base/restrict-page-access/) **Published:** January 13, 2020 **Author:** Ken **Content:** ## Overview Control who can view any public-facing page, post, course, lesson, topic, or quiz based on login status, user role, course enrollment, or group membership. Users who don’t qualify are either shown a message or redirected elsewhere. This module adds an access-control metabox to the **Edit** screen of every publicly registered post type. You set the requirements on the individual item, so you can lock down a single landing page, a course, or any other content without touching the rest of your site. Common use cases include gating bonus content behind enrollment, limiting a page to a specific role, or keeping a work-in-progress page hidden from logged-out visitors. ### Configure It Open the **Edit Post** screen for the page you want to protect and use the restrict-access metabox in the sidebar. Choose the criteria that fit your scenario — you can combine any of them: - **Require login** — Check this to prevent logged-out users from accessing the page. The checkbox is labeled “Users must be logged in to view this \[post type\].” Use it as a baseline when content should never be public. - **Required role** — Pick one or more roles when only specific user types should see the page. A user passes if they have **any** of the selected roles. - **Required course** — Pick one or more courses when only enrolled users should see the page. A user passes if they’re enrolled in **any** of the selected courses. - **Required course completion** — Pick one or more courses when only users who have *completed* a course should see the page. A user passes if they’ve completed **any** of the selected courses. - **Required group** — Pick one or more groups when only members should see the page. A user passes if they’re a member of **any** of the selected groups. Group leaders of a selected group also pass. ![Modal dialog titled 'Restrict Page Access' stating the page is restricted and instructing users to contact support if they should have access.](https://www.uncannyowl.com/wp-content/uploads/2020/01/restrict-page-access.png "restrict page access - Uncanny Owl") #### How the access rules combine The logic differs depending on whether selections are within one field or spread across several: - **Within a single field — match ANY.** If you select Sales 101 and Customer Service 101 under Required courses, a user enrolled in *either* course gets access. - **Across multiple fields — match at least one in EACH.** If you set the Customer role *and* the Sales 101 course, a user must satisfy *both* conditions: they need the Customer role **and** enrollment in Sales 101. ### What denied users see Decide what happens when a user doesn’t qualify: - **Redirect** — Check the redirect option to send denied users to another location. Choose: - **Page** — Select from your publicly available posts. - **Custom URL** — Enter any redirect address. - **Message** — If you don’t redirect, denied users stay on the page and see a custom message. Configure the message text in the module settings. **Note:** The message is set globally in the module settings, so the same message is shown for every restricted page that uses the message option rather than a redirect. ### Related Articles - [Sample Lesson Label](https://www.uncannyowl.com/knowledge-base/sample-lesson-label/) - [Reset Progress Button](https://www.uncannyowl.com/knowledge-base/learndash-reset/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Uncanny LearnDash Toolkit Pro - Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-pro-quick-reference/) **Published:** July 20, 2016 **Author:** Ken **Excerpt:** View a quick reference guide to all modules in the Uncanny LearnDash Toolkit Pro. **Content:** A single-page map of every Toolkit Pro module, what it does, and the shortcodes it provides. Use it to find the right module fast, then open that module’s full article for setup details. \[table id=2 /\] **Tip:** Shortcode attributes vary by module. Open each module’s full article for the complete list of attributes and examples. ### Related Articles - [Install the Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-pro-for-learndash/) - [Enhanced LearnDash CSV Reports](https://www.uncannyowl.com/knowledge-base/enhanced-learndash-csv-reports/) - [Import LearnDash Users](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Reset Progress Button](https://www.uncannyowl.com/knowledge-base/learndash-reset/) **Published:** October 1, 2018 **Author:** Ryan Moore **Excerpt:** Learn how to enable learners to reset their progress in a course with the click of a button. **Content:** ### Overview Let learners reset their own progress in a course with a single button — useful for retaking a course, clearing a failed attempt, or starting over. You can add the button anywhere with a shortcode or block, or trigger a reset programmatically with a developer function. The Reset Progress Button clears a user’s progress in a specified LearnDash course. You can place it on any post type — including the course itself — using either a shortcode or the **Reset Button** block. The button is context-aware: it only shows to users who have recorded progress in the course. Learners who haven’t started the course won’t see it. If your courses have shared quizzes, clicking the Reset Button will reset the quiz attempts in all courses where the user has completed the quiz. For example, a quiz is assigned to “Course 1” and “Course 2”. A course user completes both courses and passed the quiz in each course. The user then clicks the Reset Button for “Course 2”, resulting in all progress resetting for “Course 2”. When the user views “Course 1”, the course will still have a status of completed, however the shared quiz progress will show as reset. For shared essay quizzes that have been graded and points awarded, only the points will reset, the graded essay remains submitted. If a shared quiz awards the user a certificate, clicking the reset button will also clear awarded certificates in all courses that share the same quiz. To ensure users receive awarded certificates after passing a quiz, you can use the Toolkit Pro module [Email Quiz Certificates](https://www.uncannyowl.com/knowledge-base/send-quiz-certificates-by-email/). ### Configure It You can customize the button in the Toolkit module settings: - **Button text** — Set the label that appears on the button. - **Append course name** — Optionally add the course name to the button text. We recommend enabling this when you display multiple reset buttons on a single page, so learners can tell them apart. ![Modal dialog titled 'Reset Progress Button' containing a text field with 'Reset Course Progress', a checked 'Show Name of Course' option, and Help, Close, Save module buttons.](https://www.uncannyowl.com/wp-content/uploads/2018/10/reset-course-progress-settings.png "reset course progress settings - Uncanny Owl") ### Usage Add the button with the shortcode or the **Reset Button** block. ``` [uo_reset_course_progress course_id="x"] ``` Replace x with the course ID. You can find the ID in the admin URL when editing the course — it’s the `post=x` value. Decisions to make when placing the button: - **On the course page** — The `course_id` attribute is optional; the button targets the current course automatically. - **On any other page** — Set `course_id` so the button knows which course to reset. - **Show only after completion** — Wrap the shortcode in LearnDash’s `course_complete` shortcode so the button appears only to learners who have finished the course. ### Resetting Tin Canny data If you also use Tin Canny LearnDash Reporting, you can clear its tracking data at the same time: ``` [uo_reset_course_progress reset_tincanny="yes"] ``` Setting `reset_tincanny="yes"` deletes the user’s Tin Canny tracking data for that course. **Note:** In the current version, both the reporting (results) and resume (bookmark) tracking records for the course are cleared. Earlier versions did not delete resume/bookmark data due to technical constraints. ### Shortcode Reference **Attribute****Values****Description**`course_id`Course ID (e.g. `100`)The course to reset. Optional when the button is placed on the course page itself.`reset_tincanny``yes` / `no` (default `no`)Also deletes the user’s Tin Canny tracking records for the course.`redirect`URLOptional. Sends the learner to this URL after the reset is processed.### Developer Function For custom implementations, reset a user’s progress directly: ``` $user_id = 10; $course_id = 100; \uncanny_pro_toolkit\LearnDashReset::reset_course_progress( $user_id, $course_id ); ``` The method signature is `reset_course_progress( $user_id, $course_id, $reset_tincanny_data = 'no', $redirect_url = null )`. Pass `'yes'` as the third argument to also clear Tin Canny tracking data. ### Related Articles - [Duplicate Pages & Posts](https://www.uncannyowl.com/knowledge-base/duplicate-pages-posts/) - [Restrict Page Access](https://www.uncannyowl.com/knowledge-base/restrict-page-access/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Lesson/Topic/Quiz Table Colors (Legacy)](https://www.uncannyowl.com/knowledge-base/learndash-table-colors/) **Published:** September 10, 2016 **Author:** yuehchin **Excerpt:** Learn how to change lesson, topic and quiz table accent colors in LearnDash. **Content:** ### Overview Customize the heading colors of your LearnDash tables so they match your site’s branding — including the Course Dashboard, course, lesson, and quiz tables. This module lets you set the **heading text** and **background colors** of LearnDash tables without writing CSS. The colors you choose apply to: - The Course Dashboard table - Course tables - Lesson tables - Quiz tables ### Configure It Set your colors in the module’s settings using either method: - **Color picker** — click and choose visually. - **Hex values** — type a hex color code (for example, #1a73e8) directly for an exact match to your brand palette. ![Modal titled 'Lesson/Topic/Quiz Table Colors (Legacy)' with color pickers for the background and text colors of LearnDash table headings, plus Help, Close, and Save module actions.](https://www.uncannyowl.com/wp-content/uploads/2016/09/lesson-topic-quiz-table-colours.png "lesson topic quiz table colours - Uncanny Owl") ### Usage 1. Activate the module. 2. Open its settings and pick the heading text and background colors using the color picker or hex values. 3. Save. The new colors apply across the supported LearnDash tables. **Heads up — theme compatibility.** This module is **not compatible with BuddyBoss or other themes that override LearnDash templates and styles**. If your theme replaces the default LearnDash table markup, these color settings won’t take effect. **Heads up — LearnDash tables only.** Only LearnDash tables are affected. Tables generated by other plugins or content remain unchanged. ### Related Articles - [Uncanny Toolkit Pro Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-pro-quick-reference/) - [Install the Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-pro-for-learndash/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Learner Transcript](https://www.uncannyowl.com/knowledge-base/learner-transcript/) **Published:** September 18, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to provide a printable, downloadable transcript to your learners. **Content:** ### Overview Give every learner a single, printable page that shows all of their courses, completion status, quiz scores, and certificates — branded with your logo and colors. It’s the easiest way for learners (and the organizations training them) to see a consolidated record of progress in one place. The Learner Transcript module generates an on-demand transcript for the logged-in learner. Enable the module, drop the shortcode or block on a page, and each learner sees their own record — every course they’re enrolled in or have completed, with status, scores, and certificate links in a clean table you can brand and print. Common uses include continuing-education record-keeping, employee training documentation, and giving learners a professional summary they can download or share with an employer. ### Configure It Enable the **Learner Transcript** module under **Uncanny Toolkit**, then adjust its settings to control what appears on the transcript and how it’s branded. #### Branding - **Accent UI color** — An accent color applied throughout the transcript, so it can match your brand or logo. - **Logo URL (header)** — An image displayed at the top of the transcript. - **Heading** — Text shown beneath the logo. - **Organization** — The name of the organization issuing the transcript. - **Logo URL (footer)** and **Disclaimer** — An optional image and text block at the bottom of the transcript. #### What to include - **Display completed courses only** — Show only courses the learner has finished. Leave off to show in-progress and not-started courses too. - **Display courses the user is no longer enrolled in** — Include any course the learner has recorded progress in, even after un-enrollment. Useful for a complete historical record. - **Disable \[column\]** — Hide any individual column (Steps, Avg. Score, Final Score, Certificate, etc.) you don’t want to show. - **Enable Custom CEUs rows** — If the [Uncanny Continuing Education Credits](https://www.uncannyowl.com/knowledge-base/adding-credits-to-student-transcript/) plugin is active and a learner has been awarded custom credits, add rows for those records. (Scores and steps show “n/a” for custom-credit rows, since they don’t apply.) #### Ordering - **Table course sorting** — Choose the order courses appear in. As of recent versions the options include **Course completion date (ascending)** and **(descending)** in addition to course publish-date and title sorting, so you can lead with a learner’s most recent completions. ### Sharing a Transcript (Public Link) By default, a transcript is private — only the signed-in learner can view their own. Enabling the **Allow public transcript access** setting makes a transcript **publicly accessible through a shareable link**, so a learner can hand a verifier (an employer, a licensing body, an admissions office) a single URL instead of a screenshot or PDF. When public access is enabled: - A **Share** button appears next to the Print button on the transcript page. - Clicking **Share** copies the transcript’s shareable link to the clipboard (the button confirms with “Copied”). - Anyone with the link can view that transcript without logging in. ![Transcript page titled 'Learner Transcript V3.0' showing student, organization, and a course progress table for completion statuss](https://www.uncannyowl.com/wp-content/uploads/2016/09/transctipt-buttons-1030x444.png "transctipt buttons - Uncanny Owl") **Privacy note:** A public transcript link is viewable by anyone who has the URL. Only enable public access if you’re comfortable with the transcript being shared outside your site, and let learners know their transcript can be made public. ### Transcript Content The transcript renders as a table with a customizable header and footer. Available columns: **Column****What it shows****Course**A course the learner is enrolled in or has previously completed (closed, open, and free course types are all included).**Status**Not Started, In Progress, or Completed (with completion date).**Steps**The number of steps in the course (lessons + topics).**Avg. Score**Average score across all quizzes in the course. Only the highest attempt counts; failed quizzes are excluded.**Final Score**The score on the quiz associated with the course, or — if none — the quiz on the last lesson.**CEUs** **(requires Uncanny CEUs plugin)**Displays earned CEUs for the learner (requires Uncanny CEUs plugin)**Certificate**If a certificate was earned, an icon links to it.### Shortcode / Block Add the transcript to any page with the `[uo_transcript]` shortcode or the **Learner Transcript** block. **Attribute****Description****Values****Default**`logo-url`Image included at the top of the transcriptany image URLempty`date-format`Format used for dates in the transcriptany valid PHP date format`F j, Y``category`Show only courses in a WordPress categoryany category slug, or all`all``ld_category`Show only courses in a LearnDash categoryany LearnDash category slug, or all`all`**Tip:** Transcripts can be long, so give them their own dedicated page. ### Printing a Transcript Use the **Print** button above the logo area rather than your browser’s print command — it formats the transcript correctly. Output can vary slightly between browsers. ### Continuing Education Credits This module integrates with the [Uncanny Continuing Education Credits](https://www.uncannyowl.com/knowledge-base/adding-credits-to-student-transcript/) plugin to display earned or available credits/hours beside each course. ### Group Leader Access Group Leaders can view their learners’ transcripts through the Group Course Report in [Uncanny Groups](https://www.uncannyowl.com/knowledge-base/using-the-group-reports/). Transcripts are otherwise only visible to the signed-in learner; to view a specific learner’s transcript as an admin, use the User Switching plugin to switch to that user. ### For Developers - **`uo_pro_transcript_cell_$key`** *(added in v4.3.2)* — A WordPress filter for each transcript cell, where `$key` is the column key. Use it to modify a cell’s output — for example, to make the course title a link. ### Overriding the Transcript Template As of Toolkit Pro v3.1 you can override transcript templates in an upgrade-safe way. Copy: `wp-content/plugins/uncanny-toolkit-pro/src/templates/transcript.php` to: `wp-content/themes/yourtheme/uncanny-toolkit/transcript.php` The copied file overrides the default. **Warning:** Never edit template files inside the plugin itself — they’re overwritten on every update and your changes will be lost. ### Related Articles - [Adding Credits to Student Transcript](https://www.uncannyowl.com/knowledge-base/adding-credits-to-student-transcript/) — Show CEU credits on the transcript - [Selling Online Courses: Certificates, Transcripts & Expiry](https://www.uncannyowl.com/knowledge-base/selling-online-courses-certificates-transcripts-expiry/) — Full course-seller workflow - [Email Course Certificates](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/) — Deliver certificates automatically on completion **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Lazy Loading Course Navigation](https://www.uncannyowl.com/knowledge-base/lazy-loading-course-navigation/) **Published:** May 24, 2019 **Author:** Ryan Moore **Content:** ## Overview Speed up pages on content-heavy LearnDash sites by loading the course navigation after the rest of the page instead of blocking on it. This is for sites with a large number of LearnDash courses, lessons, topics, and quizzes, where the standard Course Navigation widget slows page loads. This module replaces LearnDash’s default Course Navigation widget with an alternative that loads after the rest of the page’s content finishes. On sites with many LearnDash posts, deferring the navigation this way can significantly improve perceived page load speed. The replacement navigation inherits the styles from LearnDash’s standard Course Navigation widget, so it looks the same as what your learners already see — it just loads differently. ### Setup 1. Enable the module in the Toolkit settings. 2. Add the shortcode below where you want the navigation to appear — typically a sidebar widget area on your course, lesson, topic, and quiz pages. The navigation only renders on single LearnDash content pages that belong to a course; on any other page the shortcode outputs nothing. ``` [uo-course-navigation] ``` #### Decide whether to show a heading - **Widget Heading** — You can add an optional heading to the navigation in the module settings (the setting is labeled “Widget Heading”). In most cases we recommend leaving it blank, since the navigation is usually self-explanatory in context. ### Shortcode Reference **Shortcode****Purpose**`[uo-course-navigation]`Outputs the lazy-loading course navigation, styled to match LearnDash’s standard Course Navigation widget.**Important:** This module is intended primarily for sites with a lot of LearnDash courses, lessons, topics, and quizzes. Smaller installations may see little or no performance benefit and are usually better off keeping the standard LearnDash Course Navigation widget. ### Related Articles - [Single Page Courses](https://www.uncannyowl.com/knowledge-base/single-page-courses/) - [Enhanced Course Grid](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Install the Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-pro-for-learndash/) **Published:** August 19, 2025 **Author:** Ken **Content:** ### Overview Get Uncanny Toolkit Pro installed, licensed, and ready so you can start turning on the Pro modules that extend your LearnDash site. This guide walks through the full setup from download to activation ### Installation 1. **Confirm the free Toolkit is active.** In your WordPress dashboard, go to **Plugins** and verify that **Uncanny Toolkit for LearnDash** is installed and activated. 2. **Download Toolkit Pro.** Get the plugin .zip from either your purchase confirmation email or the **Downloads** section of your [My Account](https://www.uncannyowl.com/my-account/) page. 3. **Upload the plugin.** In WordPress, go to **Plugins > Add New > Upload Plugin**, choose the .zip file you downloaded, and click **Install Now**. 4. **Activate.** Once the upload finishes, click **Activate**. ### License & Updates After activation, WordPress sends you to the Toolkit Pro **Settings** page. Enter your **license key** and activate the plugin from there. Activating your license does two things: it unlocks the Pro modules and it enables automatic updates, so you’ll be prompted to update Pro from your Plugins screen just like any other plugin. Keep the license active to keep receiving updates and support. **New admin UI (v4.4):** Toolkit Pro v4.4 introduced a redesigned, standardized Uncanny Owl admin interface that’s shared across our plugins. If your screen looks different from older screenshots, this is expected. **New “Uncanny Toolkit” tab on LearnDash edit screens (v4.4.1):** WordPress 7.0 tucks classic metaboxes into a collapsed pane in the block editor. To keep Toolkit Pro’s per-item settings easy to find, v4.4.1 adds a dedicated **Uncanny Toolkit** tab to the LearnDash settings header when you edit a **Course, Lesson, Topic, or Group** (for the active modules that add settings to those screens). If a module’s options look like they’ve disappeared after upgrading to WordPress 7.0, open the **Uncanny Toolkit** tab. Quiz edit screens are not affected. ### Initial Configuration With Pro licensed, you turn features on one module at a time: 1. Open the Uncanny Toolkit admin page. 2. Find the Pro module you want (modules are listed alongside the free ones). 3. Activate the module, then open its settings to configure it. Only the modules you activate run on your site, so you can enable just what you need. ### Next Steps - New to the suite? Start with [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/). - Want a fast map of every module and shortcode? See the [Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-pro-quick-reference/). ### Related Articles - [Uncanny Toolkit Pro Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-pro-quick-reference/) - [Install the free Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-for-learndash/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) - [Toolkit Pro vs. the Free Toolkit](https://www.uncannyowl.com/knowledge-base/toolkit-pro-vs-the-free-toolkit-what-you-get/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Improved Group Leader Interface (deprecated)](https://www.uncannyowl.com/knowledge-base/group-leader-access/) **Published:** August 3, 2016 **Author:** Ken **Excerpt:** Learn how to enable a streamlined group leader interface in /wp-admin. **Content:** ### Overview The Improved Group Leader Interface simplifies the LearnDash Group Leader experience and automatically enrolls group leaders in the groups and courses they manage. **Important**: This module is considered deprecated and generally not recommended for LearnDash 4.x use. It is still available to users as a Legacy module. This module cleans up the standard LearnDash Group Leader dashboard by removing clutter and emphasizing the elements that matter. It also handles enrollment automatically: - Makes group leaders members of the groups they manage. - Enrolls those leaders in the courses assigned to their groups. The result is a tidier interface where group leaders can see and access the courses they’re responsible for. ![](https://www.uncannyowl.com/wp-content/uploads/2016/12/igli-enabled.png "igli-enabled - Uncanny Owl") ### Configure It #### Set the “View Courses” link destination Because the module grants leaders course access, it adds a **View Courses** link to the interface. You must tell that link where to go — set the destination URL in the module’s settings. #### Decide where Group Leaders land after login You can redirect users with the Group Leader WordPress role to a specific page when they log in. If you use the Uncanny LearnDash Groups plugin, this is typically the **Group Management** page. Leave it unset if you don’t want a login redirect. #### Set redirect priority When more than one feature on your site wants to control where a user is sent after login, **Redirect Priority** decides which one wins. A higher value gives this module’s redirect more importance. Raise it if another plugin or setting is overriding the redirect you configured here. ### Usage 1. Activate the module. 2. Set the **View Courses** link URL. 3. (Optional) Choose a login redirect page for Group Leaders and adjust the redirect priority if needed. 4. Save. Group Leaders now see the streamlined interface and are auto-enrolled in their groups’ courses. ### Related Articles - [Uncanny Toolkit Pro Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-pro-quick-reference/) - [Employee Training & Onboarding at Scale](https://www.uncannyowl.com/knowledge-base/employee-training-onboarding-learndash/) *(new article — suggested URL, confirm)* - [Install the Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-pro-for-learndash/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Import Users](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) **Published:** August 7, 2016 **Author:** yuehchin **Excerpt:** Learn how to import users from .csv directly into LearnDash courses and groups. **Content:** ### Overview Create or update hundreds of LearnDash users from a single spreadsheet — enrolling them in courses, assigning them to groups, setting custom profile fields, and emailing them their login details, all in one import. The Import Users module turns a CSV file into LearnDash users. Use it to onboard a new cohort of employees or students, migrate records from another platform, or bulk-update existing users. A single import can create accounts, enroll users in courses and groups, set custom user meta, and send each person a welcome email with their account details. ![Import Users dashboard with UNCANNYOWL, Import Users tab active and sections for courses, groups, and roles.](https://www.uncannyowl.com/wp-content/uploads/2016/08/import-users-01-500x310.png "import users 01 - Uncanny Owl") ### The Four-Step Process #### Step 1: Options Set the defaults for the import: the role new users receive, which courses to enroll them in, and which groups to add them to. (Values in your CSV override these defaults per row.) #### Step 2: Email Settings Enable welcome emails and customize the template using tokens such as `%Password%` and `%Reset Password Link%`, so new users receive their credentials and a way to set their own password. #### Step 3: Prepare Your CSV Your file needs one column of user data per field. The only **required** column is user\_email. **Supported columns:** **Column****Purpose**`user_email`**Required.** The user’s email address.`user_login`Username (generated from email if omitted).`user_pass`Password (generated if omitted).`first_name`, `last_name`, `display_name`Profile name fields.`wp_role`WordPress role, by role slug.`learndash_courses`Course IDs to enroll the user in, separated by semicolons.`learndash_groups`Group IDs to add the user to, separated by semicolons.`group_leader`Assigns the user as a group leader.*(any other heading)*Saved as custom user meta.**Delimiter support** *(v4.4):* the importer now accepts **comma, semicolon, tab, or pipe (|) delimited** files and **detects the delimiter automatically**. You no longer need to convert a semicolon- or tab-separated export into a comma-separated file first — upload it as-is. #### Step 4: Import Users Upload your CSV and review the validation results. The importer previews what will happen so you can catch problems before committing, then confirm to run the import. ### Limitations to Know - **Up to 1,000 users per import.** Split larger lists into multiple files. - **Additive only for enrollments** — the importer can add course/group enrollments but can’t remove existing ones. - **Can’t change usernames or email addresses** of existing users. - **Can’t mark courses complete** through import. - **Password hashes don’t transfer between sites** — imported users on a new site will need to set a password (use the `%Reset Password Link%` token in the welcome email). ### Access Import Users is restricted to **site administrators** for security reasons. Developers can extend access to Group Leaders via a custom filter. ### Related Articles - [Enhanced LearnDash CSV Reports](https://www.uncannyowl.com/knowledge-base/enhanced-learndash-csv-reports/) — Export richer user data back out of LearnDash - [Employee Training & Onboarding at Scale](https://www.uncannyowl.com/knowledge-base/employee-training-onboarding-at-scale/) — Full org-onboarding workflow built around Import Users - [Group Registration](https://www.uncannyowl.com/knowledge-base/group-sign-up/) — Let users self-register instead of importing them **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Group Registration](https://www.uncannyowl.com/knowledge-base/group-sign-up/) **Published:** August 30, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to allow users to self-register directly into groups. **Content:** ### Overview Give each LearnDash Group its own self-service sign-up page. Share the link with an organization, and their people can create accounts and land directly in the right group — no manual enrollment, no admin in the middle. The Group Registration module lets learners register themselves directly into a LearnDash Group — and switch groups — from the front end. Every group gets a **unique registration URL** (visible only to administrators). Anyone who visits that URL and registers is automatically added to the associated group. To join an additional group, a user simply visits that group’s registration URL. This is ideal for organizational sign-ups: distribute one link to a client, school, or department and let their members self-enroll into the correct group. ### Configure It Enable the **Group Registration** module under **Uncanny Toolkit**, then set the options that control how registration behaves. - **Allow users to join multiple LearnDash Groups?** — Choose **No** to have new registrations *switch* the user to the new group, or **Yes** to *add* the new group while keeping existing memberships. - **Hide native LearnDash content (LearnDash 3.2+)** — Hides LearnDash’s default group information table on the registration page. - **Existing Group Member Link Text / URL** — Customize the link shown to already-registered members (for example, pointing them to a dashboard or to course content). - **Organization Labels** — Customize the labels used for the group contact details shown on registration pages. ### Supported Registration Forms You can place a custom registration form on a group page. If you leave the form area empty, the built-in default registration form is used automatically. Supported form plugins: - **Gravity Forms** (with the User Registration add-on) — our recommended option for the most flexible registration experience. - **Forminator** *(supported as of Toolkit Pro v4.4.1)* — Forminator registration forms are now recognized on group sign-up pages. - **Theme My Login** ### Finding the Group Registration URL **Toolkit Pro v3.8.3 or higher:** Go to **LearnDash LMS > Groups** and click the **Signup URL** link beneath each group to reveal its registration URL. ![padding: 40px 0 40px 0](https://www.uncannyowl.com/wp-content/uploads/2016/08/Uncanny-Owl-Screenshot-06-27-at-13.32.18@2x.png "Uncanny Owl Screenshot 06-27 at 13.32.18@2x - Uncanny Owl") ![Admin-restricted page: only for organizations with a valid group ID, showing the sign-up URL https://toolstaging.uncannycloud.com/sign-up/certificate-course-group/?gid=3222&unJEDIQPEtH_E](https://www.uncannyowl.com/wp-content/uploads/2016/08/Screenshot-2026-07-01-at-8.31.26-AM.png "Screenshot 2026-07-01 at 8.31.26 AM - Uncanny Owl") **Earlier versions:** Click the permalink at the top of the group post (administrators only) to reveal the actual registration URL — the displayed permalink itself is not the registration URL. ![](https://www.uncannyowl.com/wp-content/uploads/2016/07/reg_url.png "reg_url - Uncanny Owl") **Tip:** If a sign-up URL returns a 404, go to **Settings > Permalinks** and click Save to flush the permalink rules. ### Shortcodes / Blocks **Shortcode****Block****What it does**`[uo_group_status]`Group StatusDisplays organization details for each group a logged-in user belongs to`[uo_group_organization]`Group OrganizationDisplays organization details on the registration page for logged-out visitors`[uo_group_login]`Group LoginShows a login form on the registration page; logging in adds the user to the associated group### Organization Details You can add optional organization metadata (contact information, etc.) to a group via its metabox. These details display in the registration page sidebar using the shortcodes above. ### Integration with Uncanny Groups The [Uncanny LearnDash Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) plugin includes a system to track and limit how many users can be added to a LearnDash Group. When the [Uncanny Groups](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) plugin is active, the **seat limits** defined there govern self-registration. If a user registers from a Group Registration page to a group with a defined seat limit, the registration will complete normally if the group has available seats, and one seat will be deducted for each user that registers. If no seats remain for the group, the user will be blocked from registering and will see a message that the group is full. The only way to allow registration when this happens is for an administrator (or a Group Leader, if the group was created via purchase) to add additional seats to the group. ### For Developers - **Custom group signup form fields** — Toolkit Pro v4.3.2 added WordPress action hooks for injecting custom fields into the group signup form, and v4.3.1 added an action/filter for custom validation. Use these to collect and validate extra information during group registration. ### Overriding the Registration Template As of Toolkit Pro v3.1, templates can be overridden in an upgrade-safe way. Copy: `wp-content/plugins/uncanny-toolkit-pro/src/templates/single-group.php` to: `wp-content/themes/yourtheme/uncanny-toolkit/single-group.php` **Warning:** Don’t edit template files inside the plugin itself — they’re overwritten on every update. ### Related Articles - [Group Login Redirect](https://www.uncannyowl.com/knowledge-base/learndash-group-login-redirect/) — Send group members to a group-specific page on login - [Group Logo/List](https://www.uncannyowl.com/knowledge-base/ld-group-logo-list/) — Brand the group experience with a logo - [Employee Training & Onboarding at Scale](https://www.uncannyowl.com/knowledge-base/employee-training-onboarding-at-scale/)— Full organizational onboarding workflow **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Group Logo/List](https://www.uncannyowl.com/knowledge-base/ld-group-logo-list/) **Published:** September 8, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to display the name and/or branding image of your users' groups. Useful for group-specific branding. **Content:** ## Overview Show your clients’ branding to their learners — display a LearnDash Group’s logo, the group name, and its group leaders anywhere on your site, without running multisite. This is for sites that sell to organizations and want each org’s members to see familiar branding. Many LearnDash sites sell to organizations rather than individual users. In those cases, showing client branding to end users helps the experience feel tailored to each organization. This module lets you surface a group’s logo, name, and leaders on your pages — no multisite setup required. **Important:** All branding options work best on sites where each user belongs to a **single** LearnDash Group. If a user is in multiple groups, the logo and list shortcodes will show *all* of that user’s groups and logos, which can produce unpredictable results. ## Configure It To assign a logo to a group, edit the LearnDash Group and use the featured-image metabox — exactly the way you’d set a featured image on a course. With this module active, that metabox is relabeled **Branding Logo** (with a **Set Logo** link), so look for “Branding Logo” rather than “Featured Image”. The other shortcodes pull group names and leaders automatically; no extra setup is needed. ## Usage Add any of the shortcodes (or their matching blocks) to a page to display group branding to the current user. ### Group Logo Shortcode: `[uo_group_logo]` • Block: **Group Logo** Displays the group’s logo image. On a group registration page it shows that group’s logo; on other pages it shows the current user’s group logo. **Attribute****Options****Default****Notes**`size``full`, `large`, `medium`, `thumbnail``full`Selects the WordPress image size. Example: `[uo_group_logo size="medium"]`**Note:** When a user belongs to multiple groups that each have a logo, all logos are displayed. #### Group List Shortcode: `[uo_group_list]` • Block: **Group List** Outputs a list of the current user’s groups. **Attribute****Default****Notes**`separator`comma and space (, )Sets the text placed between group names. Example: `[uo_group_list separator=" "]`#### Group Leaders Shortcode: `[uo_group_leaders]` Outputs the names and email addresses of the group’s leaders. When the user belongs to multiple groups, the list includes a heading for each group name. ### Related Articles - [Group Login Redirect](https://www.uncannyowl.com/knowledge-base/learndash-group-login-redirect/) - [Group Forums with bbPress](https://www.uncannyowl.com/knowledge-base/learndash-group-forums-with-bbpress/) - [LearnDash Group Course Access Expiration](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Group Login Redirect](https://www.uncannyowl.com/knowledge-base/learndash-group-login-redirect/) **Published:** January 10, 2019 **Author:** Ken **Content:** ### Overview Send each LearnDash Group’s members to a page of your choosing the moment they log in — a client portal, a group landing page, or a custom dashboard. This is for sites that want a tailored entry point per group. By default, every user lands on the same page after logging in. Group Login Redirect lets you set a different destination for each group, so members arrive exactly where they should — for example, sending a client organization’s staff straight to their branded portal. ### Configure It When the module is enabled, new fields appear on the **LearnDash Group** edit page. **Where to find these fields (Toolkit Pro v4.4.1+):** On the group edit screen, these settings are reached through a dedicated **Uncanny Toolkit** tab in the LearnDash settings header. v4.4.1 added this tab so the fields stay easy to find under WordPress 7.0’s block editor, which otherwise collapses classic metaboxes out of view. The settings themselves are unchanged — only where you click to reach them. - **Redirect members on login** — enter the URL you want this group’s members sent to when they log in. This is the only required setting. - **Redirect priority** — leave this blank in most cases. Set a number only in these situations: - **A user is in multiple groups with redirects.** The redirect with the highest priority number wins. - **The redirect isn’t working.** Another plugin may be overriding it with a higher-priority redirect. Enter a number larger than 99 — try 99999 if you want this redirect to take precedence over everything else. ![](https://www.uncannyowl.com/wp-content/uploads/2019/01/group-login-redirect.png "group-login-redirect - Uncanny Owl") ### Shortcodes Reuse the group’s redirect URL elsewhere on your site — in menus, buttons, or image links. **Shortcode****What it outputs**`[uo_group_login_redirect_url]`The URL exactly as typed into the **Redirect members on login** field. Use it where you need the raw URL.`[uo_group_login_redirect_link text="Portal"]`A ready-made HTML link using the text attribute as the label and the redirect URL as the target — e.g. `Portal.`### Related Articles - [Group Logo / List](https://www.uncannyowl.com/knowledge-base/ld-group-logo-list/) - [Group Forums with bbPress](https://www.uncannyowl.com/knowledge-base/learndash-group-forums-with-bbpress/) - [LearnDash Group Course Access Expiration](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Group Forums with bbPress](https://www.uncannyowl.com/knowledge-base/learndash-group-forums-with-bbpress/) **Published:** January 13, 2020 **Author:** Ken **Excerpt:** Learn how to assign bbPress Forums to LearnDash Groups. **Content:** ### Overview Give each LearnDash Group its own private bbPress discussion forum, so members can talk with their own cohort rather than everyone in a course. This is for sites that organize learners into groups and want group-only conversations. LearnDash offers an official bbPress integration plugin that ties forums to **courses**, giving enrolled students access to course-specific forums. Group Forums with bbPress extends that idea to **groups** — letting you associate a bbPress forum with one or more LearnDash Groups so only those group members can take part. Common use cases: - A separate discussion space for each client organization or cohort. - Group-only forums layered on top of course forums, so a student sees both their course forum and their group forum. ### Configure It When the module is active, a new metabox appears on the **Edit Forum** page. Configure group access there: 1. In the **Associated Group(s)** box, select which group(s) should have access to the forum. 2. In the **Post Limit Access** dropdown, decide who can post: - Choose **ALL** when a user must belong to *every* selected group to participate. - Choose **ANY** when belonging to *any one* of the selected groups is enough. 3. Decide whether the forum should be **readable by everyone**: - Check **Forum View** to let all site users read the forum, while keeping topic and reply posting limited to selected group members. - Leave it unchecked to hide the forum entirely from non-members. ![LearnDash Group Forum Restrictions](https://www.uncannyowl.com/wp-content/uploads/2020/01/LearnDash_Group_Forum_Restrictions-500x358.png "LearnDash_Group_Forum_Restrictions - Uncanny Owl") ### Usage #### Group Forums widget When the module is active, it adds a **Group Forums** widget that displays links to all group-specific forums the current user can access — a convenient jumping-off point for members. #### Combining group and course restrictions You can use this module alongside LearnDash’s bbPress integration plugin so a forum is restricted by *both* course enrollment and group membership. Keep these rules in mind: - To access a forum restricted both ways, a user must satisfy **both** the course enrollment **and** the group membership requirements. - The **Forum View** checkbox is evaluated per restriction. If it’s checked for one restriction but not the other, a user who meets only the unchecked restriction can still *view* the forum. **Important — Forum View example:** Suppose **Forum View** is checked for the course restriction but not the group restriction. A user who meets only the group restriction can view the forum, while a user who meets only the course restriction will see the access-denied message. ### Related Articles - [Group Login Redirect](https://www.uncannyowl.com/knowledge-base/learndash-group-login-redirect/) - [Group Logo / List](https://www.uncannyowl.com/knowledge-base/ld-group-logo-list/) - [LearnDash Group Course Access Expiration](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Group Expiration](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) **Published:** August 28, 2016 **Author:** yuehchin **Excerpt:** Learn how to set an expiry date on a LearnDash group and set up expiry reminder notification emails. **Content:** ### Overview Expire course access for an entire LearnDash Group on a date you choose, and warn members by email before it happens. This is built for organizations that sell bulk course licenses for a fixed term. When you sell a course license to an organization for a defined period — say, a one-year contract — this module lets you set a single expiration date for the whole group. On that date, course access is removed for every member, and you can notify members in advance so the cutoff isn’t a surprise. **Common use cases:** - Annual or term-based bulk licenses sold to employers or schools. - Time-limited cohort programs where access should end after the program closes. ### Configure It #### Module-level settings After enabling the module, set the defaults that apply across all groups: - **Send expiry email notifications** — turn the advance-warning email on or off. - **Days before expiration to send the email** — how far ahead members are warned. If you leave this unset, the default is **7 days**. - **Trash groups after expiration** — whether expired groups are automatically moved to trash, and how many days after expiry that happens. This is purely housekeeping to keep your group list tidy. **Note:** If a group’s expiry date falls *within* the “days before expiry” window at the moment you first set it, no expiration notification is triggered for that group. Set expiry dates comfortably in the future. #### Per-group settings Edit a LearnDash Group to set its expiration date. With the module enabled, an **Expiration Date** metabox appears — click the date field to pick a date from the calendar. **Where to find these settings (Toolkit Pro v4.4.1+):** On the group edit screen, the **Expiration Date** field — and the **Expiration Email** box below it (when email notifications are enabled) — are reached through a dedicated **Uncanny Toolkit** tab in the LearnDash settings header. v4.4.1 added this tab so the settings stay easy to find under WordPress 7.0’s block editor, which otherwise collapses classic metaboxes out of view. The settings themselves are unchanged — only where you click to reach them. To see expiration status at a glance, go to **LearnDash LMS > LearnDash Groups**. A new **Expiration Date** column shows the upcoming expiry date, whether the notification email has been sent, or the timestamp of a past expiration. ![Table listing training groups with titles, authors, and expiration dates; first group expires Jan 1, 2026, second has an email sent on Jul 1, 2026](https://www.uncannyowl.com/wp-content/uploads/2016/08/Group-Expiration-1030x343.png "Group Expiration - Uncanny Owl") ### Customizing the notification email Below the expiration date field, the **Expiration Email** metabox lets you customize the email subject and body. You can insert these variables into the body (they are case-insensitive): - `%Display Name%` - `%LearnDash Group Name%` - `%Expiration Date%` Use the **Test Email** button to send a sample to your own email address (the logged-in user clicking the button) before going live. ### Shortcodes Display expiration information to members anywhere on your site. **Shortcode****What it outputs**`[uo_group_expiration_date]`The expiration date for the current user’s group. Works automatically when the user is in exactly one group that has an expiry date.`[uo_group_expiration_date group_id="1234"]`The expiration date for a specific group. Use this when a user belongs to multiple groups with expiry dates, or to target a particular group.`[uo_group_expiration_in]`A countdown of the time remaining until expiration. Accepts the same group\_id parameter.`[uo_group_expiration_in pre-text=""]`The countdown with custom lead-in text before the time remaining.**Note:** The expiration date continues to display even after the expiration date has passed. ### Usage notes - **Use future dates.** Expiration only takes effect for dates in the future. Courses are removed at midnight on the expiration date. - **Reactivating an expired group requires a manual step.** Setting a new future date reactivates the group, but courses are **not** restored automatically — you’ll need to re-add them to the group manually. - **Emails depend on site traffic.** Notification emails are triggered by a WordPress cron job that runs on site visits. On infrequently visited sites, emails may be delayed. - **Auto-trash timing.** The “Trash groups after expiration” delay defaults to **365 days** after expiry (not a small number — set it to suit your retention needs). Once a group is in the trash, WordPress permanently deletes it on its own default schedule (30 days, unless your site changes `EMPTY_TRASH_DAYS`); this module only moves the group to trash, it does not permanently delete it. ### Related Articles - [Drip Lessons by Group](https://www.uncannyowl.com/knowledge-base/drip-lessons-by-ldgroup/) - [Group Login Redirect](https://www.uncannyowl.com/knowledge-base/learndash-group-login-redirect/) - [Cohort & Membership Programs](https://www.uncannyowl.com/knowledge-base/cohort-membership-programs/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Enhanced LearnDash CSV Reports](https://www.uncannyowl.com/knowledge-base/enhanced-learndash-csv-reports/) **Published:** June 5, 2020 **Author:** Ken **Content:** ### Overview Pull more meaningful data into your LearnDash reports. This module extends the native CSV export at **LearnDash LMS > Reports** so your exports can include user profile fields, custom meta values, assignment details, and CEU credits — not just the default columns. Out of the box, LearnDash CSV exports cover the basics. Enhanced LearnDash CSV Reports lets you decide which additional columns to add, so the spreadsheet you hand to an administrator, client, or compliance team already contains the fields they need. You configure everything in the module’s settings, then export as usual from **LearnDash LMS > Reports**. ![Modal titled 'Enhanced LearnDash CSV Reports' showing a checklist of report columns; Username, Group(s), and Course Start Date are checked. Includes options like First Name, Last Name, Nickname, Display Name, Language, Website, Biographical info, and custom keys; bottom buttons: Help, Close, Save module.](https://www.uncannyowl.com/wp-content/uploads/2020/06/Enhanced-LD-CSV-Report-329x500.png "Enhanced LD CSV Report - Uncanny Owl") ### Configure It #### Choose which standard user fields to include Check the WordPress user fields you want added as columns: - Username - First Name - Last Name - Nickname - Display Name - Role(s) — comma-separated, human-readable role names - Group(s) — comma-separated, human-readable group names - Course Start Date - Language - Website - Biographical info We recommend including at least **First Name**, **Last Name**, and **Group(s)** for most reporting, since those are what stakeholders typically look for first. **Note:** Additional columns for time spent in a course and time spent to complete a course can be added when you enable the [Simple Course Timer module](https://www.uncannyowl.com/knowledge-base/simple-course-timer/)**.** #### Add custom user meta (up to 10 keys) If you store extra data on user profiles — an employee ID, department, region, etc. — add it to the export by entering the **user meta key** and checking its box. You can include up to 10 user meta keys. Save the module after adding them. #### Add course meta (up to 3 keys) Three **course meta key** fields are available for data attached to courses, such as expected completion time, credit values, or launch dates. Enter the meta key for each value you want as a column. #### Include assignment details By default, the export includes details for up to **three assignments per course**, showing the submission ID and status (for example, “Not approved”). To raise that limit, add the filter below to your site (for example, via a code snippet plugin). This example raises it to 10: ``` function update_uo_assignments_columns(){ return 10; } add_filter('uo_assignments_columns', 'update_uo_assignments_columns'); ``` #### Include CEU credits If the **Uncanny Continuing Education Credits** plugin is active, an option appears to include CEU data. Enable it to add a credits column to the export — useful for accreditation and compliance reporting. ### Usage 1. Open the **Enhanced LearnDash CSV Reports** module settings and choose your columns and meta keys. 2. Save the module. 3. Go to **LearnDash LMS > Reports** and run the CSV export as you normally would. Your selected columns are now included in the file. **Heads up — ACF fields aren’t supported.** This module cannot export Advanced Custom Fields (ACF) values. To pull ACF data into a report, you’d need a different approach. **Heads up — group meta isn’t exportable.** You can export the *names* of the groups a user belongs to, but not the meta data stored on those groups. ### Related Articles - [Uncanny Toolkit Pro Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-pro-quick-reference/) - [Import LearnDash Users](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) - [Learner Transcript](https://www.uncannyowl.com/knowledge-base/learner-transcript/) - [Install the Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-pro-for-learndash/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Enhanced Lesson/Topic Grid](https://www.uncannyowl.com/knowledge-base/enhanced-lessontopic-grid/) **Published:** July 29, 2016 **Author:** Ken **Excerpt:** Learn how to display lessons and/or topics in a grid instead of a table. Supports featured images. **Content:** ### Overview The Enhanced Lesson/Topic Grid displays a course’s lessons — or a lesson’s topics — in a clean, image-led grid. It’s the lesson/topic counterpart to the [Enhanced Course Grid](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/), giving you a more visual alternative to LearnDash’s default lesson lists. Add the grid to any page and it adapts to its context: - On a **course page**, it automatically shows that course’s lessons. - On a **lesson page**, it automatically shows that lesson’s topics. By default it renders a 2-column grid with equal-sized featured images. Dripped lessons that aren’t yet available display their availability date, so learners know when content unlocks. ![Lesson 1: First Aid Basics page with Topic 1 and Topic 2 cards, each showing Not Completed status.](https://www.uncannyowl.com/wp-content/uploads/2016/07/enhanced-lesson-topic-grid-500x457.png "enhanced lesson topic grid - Uncanny Owl") **Important:** When you place the grid on a course or lesson page, the associated quiz table is hidden — you’ll need to link to quizzes manually. The exception is when the grid is enabled globally for all lessons/topics; in that case the quiz table stays visible. ### Configure It Use the **Enhanced Lesson/Topic Grid** block or the `[uo_lessons_topics_grid]` shortcode, then decide: - **Where the grid lives** — On a course or lesson page, no IDs are needed; it detects context automatically. On any other page, point it at content explicitly: use **`course_id`** to list a course’s lessons, or **`lesson_id`** to list a lesson’s topics. These two are mutually exclusive. - **Which items to show** — Narrow the grid with **`category`** (a WordPress category slug) or **`tag`** (a tag slug). These two can’t be combined. - **Layout** — Set **`cols`** (1–5; default 2) and toggle **`show_image`** for featured images. - **Hover styling** — Set **`border_hover`** to change the grid item border color on hover. You can also enable the grid **globally** from the module’s settings box, so it appears automatically on all course and lesson pages without adding a shortcode to each one. **Note:** Topic grids are supported on LearnDash pages only. The `lesson_id` topic grid won’t work outside of LearnDash content. If featured images don’t appear, check the module settings. ### Shortcode reference `[uo_lessons_topics_grid]` **Attribute****What it does****Values****Default**`course_id`List a course’s lessons; required off the course page. Can’t combine with `lesson_id`Any course IDThe current course’s ID (if on a course page)`lesson_id`List a lesson’s topics; LearnDash pages only. Can’t combine with `course_id`Any lesson IDThe current lesson’s ID (if on a lesson page)`category`Show only items in a WordPress category. Can’t combine with `tag`A category slug`all``tag`Show only items with a given tag. Can’t combine with `category`A tag slug`all``cols`Columns per row`1`–`5``2``show_image`Show featured images (min. recommended 624 × 468 px; WP crops to 1.33:1)`yes`, `no``yes``border_hover`Border color of grid items on hoverA color value(not specified)### Customization **CSS:** Copy `/wp-content/plugins/uncanny-toolkit-pro/src/assets/legacy/frontend/css/lesson-topic-grid-view.css` to `/wp-content/themes/your-theme/uncanny-toolkit-pro/css/lesson-topic-grid-view.css` and edit the copy. **Template override (v3.1+):** Copy `wp-content/plugins/uncanny-toolkit-pro/src/templates/lesson-topic-grid.php` to `wp-content/themes/yourtheme/uncanny-toolkit/lesson-topic-grid.php`. **Important:** Don’t edit CSS or template files inside the Uncanny Toolkit Pro plugin directly — they’re overwritten during upgrades and your customizations will be lost. Always work from the theme override. ### Related Articles - [Enhanced Course Grid](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/) - [Course Dashboard](https://www.uncannyowl.com/knowledge-base/learndash-course-dashboard/) - [Single Page Courses](https://www.uncannyowl.com/knowledge-base/single-page-courses/) - [Autocomplete Lessons & Topics](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Enhanced Course Grid](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/) **Published:** July 27, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to display a highly customizable grid of courses. **Content:** ### Overview The Enhanced Course Grid displays your courses in a clean, customizable grid — with featured images, optional descriptions, progress bars, prices, and Start/Resume buttons. It’s built primarily for signed-in learners who want to see what they’re enrolled in and what’s available next. By default the grid renders four columns with expandable rows and orders courses in a sensible learner-first sequence: enrolled courses (sorted by completion percentage) first, then non-enrolled courses, then anything tagged “coming soon.” **What the grid can show:** - Featured images displayed at equal sizes - Optional short descriptions beneath course names (HTML is supported in the Short Description field) - Progress bars for enrolled learners - A **Start** or **Resume** button per course - A price or price banner in the upper-left corner - “Coming Soon” status, driven by a standard WordPress tag (not a LearnDash tag) Common uses include a member dashboard of enrolled courses sorted by progress, a public catalog of available courses, and category-filtered grids for specific topics or programs. ![](https://www.uncannyowl.com/wp-content/uploads/2016/07/course_grid-1030x366.png "course_grid - Uncanny Owl") **Important:** If you use HTML in the Short Description field, disable the LearnDash Course Grid plugin — it strips HTML out of that field. **Where to set the Short Description (Toolkit Pro v4.4.1+):** The course **Short Description** field is on the course edit screen, under a dedicated **Uncanny Toolkit** tab in the LearnDash settings header. v4.4.1 added this tab so the field stays easy to find under WordPress 7.0’s block editor, which otherwise collapses classic metaboxes out of view. ### Configure It Add the grid with the **Enhanced Course Grid** block or the `[uo_courses]` shortcode, then shape it around these decisions: - **Which courses to include** — Use **`enrolled_only="yes"`** for a personal dashboard, or **`not_enrolled="yes"`** for an “available courses” catalog. Filter by topic with **`category`** (WordPress) or **`ld_category`** (LearnDash course category); both accept comma-separated slugs. When you pass multiple categories, **taxonomy\_relation** decides whether a course must match AND (all) or OR (any, the default). - **Whether to give learners a filter dropdown** — Turn on **`categoryselector`** (WordPress) or **`course_categoryselector`** (LearnDash). Empty categories are hidden automatically. - **Layout** — Set **`cols`** (1–5; default 4). Use **limit** to control how many courses appear before the **View More** button (all shows everything and removes the button). Hide that button with **`hide_view_more`**, or point it at a full catalog page with **`more="URL"`**. - **What to show on each card** — Toggle **`show_image`**, **`price`**, **`hide_description`**, **`hide_progress`**, **`hide_credits`**, **`hide_title`**, and **`link_to_course`**. We recommend **`hide_progress="yes"`** on sites with many courses for better performance. - **Action buttons** — Set **`start_course_button="show"`** to show a **Start** button for enrolled learners at 0% progress, and **`resume_course_button="show"`** to show a **Resume** button for learners with progress (this requires the Resume module enabled). - **Sort order** — The default uses **`default_sorting`** by status (`course-progress`,`enrolled`,`not-enrolled`,`coming-soon`,`completed`). To sort alphabetically or by date instead, set **`orderby`** (`title`, `date`, `menu_order`) plus **`order`** (`asc/desc`) and add **`ignore_default_sorting="yes"`** so your order takes precedence. - **Colors and labels** — Restyle with **`border_hover`**, **`view_more_color`**, **`view_more_hover`**, **`view_more_text_color`**, and relabel buttons with **`view_more_text`** / **`view_less_text`**. **Important:** `default_sorting` doubles as a filter. Any status you leave *out* of your custom `default_sorting` list is excluded from the grid entirely. For example, omitting `not-enrolled` hides non-enrolled courses. #### Example A learner dashboard showing only enrolled courses, no prices, sorted by progress then completion: `[uo_courses enrolled_only="yes" price="no" default_sorting="course-progress,enrolled,completed"]` ### Shortcode reference \[uo\_courses\] **Attribute****What it does****Values****Default**`category`Show courses in one or more WordPress categories`all` or slug(s), comma-separated`all``ld_category`Show courses in one or more LearnDash course categories`all` or slug(s), comma-separated`all``categoryselector`Show a WordPress-category filter dropdown (empty categories hidden)`show`, `hide``hide``course_categoryselector`Show a LearnDash-category filter dropdown (empty categories hidden)`show`, `hide``hide``taxonomy_relation`Match ALL or ANY of the supplied categories`AND`, `OR``OR``enrolled_only`Show only enrolled courses`yes`, `no``no``not_enrolled`Show only non-enrolled courses`yes`, `no``no``cols`Columns per row`1`–`5``4``limit`Courses shown before the View More button (all removes it)`all` or an integer`4``hide_view_more`Hide the View More button`yes`, `no``no``hide_description`Hide the course description`yes`, `no``no``hide_progress`Hide the progress bar (improves performance)`yes`, `no``no``hide_credits`Hide the assigned credit value`yes`, `no``no``hide_title`Hide the course title`yes`, `no``no``more`Send View More to a URL instead of expanding the listA URL(none)`show_image`Show the featured image (min. recommended 624 × 468 px)`yes`, `no``yes``price`Show the price / price banner in the upper left`yes`, `no``yes``link_to_course`Link grid items to their course pages`yes`, `no``yes``default_sorting`Sort by status; omitted statuses are excluded`course-progress`,`enrolled`,`not-enrolled`,`coming-soon`,`completed` (any order)`course-progress`,`enrolled`,`not-enrolled`,`coming-soon`,`completed``orderby`Course ordering method`title`, `date`, `menu_order`title`order`Sort direction (based on orderby)`asc`, `desc``asc``ignore_default_sorting`Let orderby take precedence over default\_sorting`yes`, `no``no``start_course_button`Show a Start button for enrolled learners at 0%`show`, `hide``hide``resume_course_button`Show a Resume button for learners with progress (needs Resume module)`show`, `hide``hide`border\_hoverBorder color on grid-item hoverA color value(none)view\_more\_colorView More button fill colorA color value(none)view\_more\_hoverView More button fill color on hoverA color value(none)view\_more\_text\_colorView More button text colorA color value(none)view\_more\_textView More button labelCustom text(none)view\_less\_textView Less button labelCustom text(none)### Customization **CSS:** Copy `/wp-content/plugins/uncanny-toolkit-pro/src/assets/legacy/frontend/css/course-grid-view.css` to `/wp-content/themes/your-theme/uncanny-toolkit-pro/css/course-grid-view.css` and edit the copy. **Template override (v3.1+):** Copy `wp-content/plugins/uncanny-toolkit-pro/src/templates/course-grid.php` to `wp-content/themes/yourtheme/uncanny-toolkit/course-grid.php`. **Developer filters** for ribbon text: - apply\_filters( ‘uo\_course\_grid\_ribbon\_text’, $output, $course->ID ) - apply\_filters( ‘uo\_course\_grid\_ribbon\_price’, $course\_price, $course->ID ) **Important:** Don’t edit CSS or template files inside the plugin directly — they’re overwritten on upgrade. Always work from the theme override. **Note — other caveats:** - **WooCommerce:** The grid can’t integrate with WooCommerce unless you make significant changes to the WooCommerce store-page template. - **Featured images:** WordPress crops images to a 1.33:1 ratio; upload at least 624 × 468 px. - **Closed courses:** A course with no price listed displays as “Free,” which may be inaccurate. - **Resume button:** Only appears for learners with progress recorded after plugin version 2.5 was installed. ### Related Articles - [Enhanced Lesson/Topic Grid](https://www.uncannyowl.com/knowledge-base/enhanced-lessontopic-grid/) - [Course Dashboard](https://www.uncannyowl.com/knowledge-base/learndash-course-dashboard/) - [Single Page Courses](https://www.uncannyowl.com/knowledge-base/single-page-courses/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Email Quiz Certificates](https://www.uncannyowl.com/knowledge-base/send-quiz-certificates-by-email/) **Published:** December 23, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to send quiz certificates to learners and, optionally, admins and/or group leaders by email. **Content:** ### Overview Email a learner’s quiz certificate automatically the moment they pass, with the PDF attached to their completion email. Learners get instant proof of their result without logging back in, and you can copy administrators or group leaders too. LearnDash generates a certificate when a learner passes a quiz, but they normally have to view or download it manually. The Email Quiz Certificates module delivers it automatically: on successful quiz completion, the module emails the learner the certificate as a PDF attachment. Copies can also go to the site administrator, group leaders, or additional addresses. This module handles certificates attached to **quizzes** specifically. **Note:** For course-level certificates, use the [Email Course Certificates](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/) module instead. ### Configure It Settings are decisions about delivery, storage, and email content. **Delivery and recipients** - **Send Certificate to Site Admin / Group Leader(s):** Check these to copy administrators and/or group leaders on the certificate email — useful when results need to live beyond the learner’s inbox. - **CC Certificate To:** Add one or more email addresses to receive a copy via CC, such as a shared records mailbox. - **From Name / From Email:** Set how the sender appears. If you leave these blank, the module falls back to your LearnDash quiz email settings. **Storage** - **Do not store certificates on server:** By default, generated certificates are saved on the server (under `/uploads/user-certificates/`). Check this if you’d rather not retain copies. **Rendering** - **Use Cron to send certificate:** Leave this off in most cases. Enable it only if shortcode data isn’t rendering correctly in the emailed certificate; sending via cron can resolve those issues. **Email content** - **Admin / Group Leader Email Subject & Body:** Customize the message sent to administrative recipients. Available tokens are listed directly below the body field. ![Email Quiz Certificates settings dialog with options to enable Cron sending and recipient targets (Site Admin, Group Leader) and fields for From Name, From Email, CC, Subject, and Body.](https://www.uncannyowl.com/wp-content/uploads/2016/12/Email-Quiz-Certificate-337x500.png "Email Quiz Certificate - Uncanny Owl") ### Developer Filters **Filter****Parameters / Default****Purpose**`uo_quiz_certificate_save_path`Default: `/uploads/user-certificates/`Change where generated certificates are stored.`uo_quiz_completion_certificate_filename``file_name, user_id, quiz_id, certificate_post, current_time_stamp`Customize the certificate filename.`uo_generate_quiz_certificate``true / false `(default: `true`)Control whether a certificate is generated.`uo_quiz_certificate_http_url`—Update the HTTP URL when the save path changes.### Related Articles - [Email Course Certificates](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/) - [Email Group Certificates](https://www.uncannyowl.com/knowledge-base/send-group-certificates-email/) - [Download Certificates in Bulk](https://www.uncannyowl.com/knowledge-base/download-certificates-in-bulk/) - [Certificate Preview](https://www.uncannyowl.com/knowledge-base/certificate-preview/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Email Group Certificates](https://www.uncannyowl.com/knowledge-base/send-group-certificates-email/) **Published:** December 22, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to send course certificates to learners and, optionally, admins and/or group leaders by email. **Content:** ### Overview Send a group certificate straight to a learner’s inbox the moment they complete every course in a LearnDash group. The PDF is attached to the completion email, and you can copy administrators, group leaders, or other addresses on the same message. LearnDash can generate a certificate when a learner finishes all courses in a group, but they normally have to view or download it manually. The Email Group Certificates module delivers it automatically: when a learner completes every course in a group that has a certificate assigned, the module emails them the certificate as a PDF attachment. Copies can also go to the site administrator, group leaders, or additional recipients. Use it when you want group completions confirmed in learners’ inboxes automatically, when administrators need a copy on file, or when group leaders should be notified as their members finish. **Important:** This is a global module — it cannot be turned on or off per group. Once enabled, it emails the certificate PDF for **any** group that has a certificate assigned. ### Configure It Settings are decisions about delivery, storage, and email content. **Delivery and recipients** - **Send Certificate to Site Admin / Group Leader(s):** Check these to copy administrators and/or group leaders on the certificate email. Group leaders are an obvious choice here, since they’re tracking their group’s progress. - **CC Certificate To:** Add one or more email addresses to receive a copy via CC — useful for a shared records mailbox. - **From Name / From Email:** Set how the sender appears so the email matches your brand or a monitored address. **Storage** - **Do not store certificates on server:** By default, generated certificates are saved on the server. Check this if you’d rather not keep copies — for example, to limit disk use. Leave it unchecked if you want certificates retained on the server. **Rendering** - **Use Cron to send certificate:** Leave this off in most cases. Enable it only if shortcodes aren’t rendering correctly in the emailed certificate; sending via cron can resolve those output issues. **Email content** - **Email Subject & Email Body:** Customize the message learners receive. Available tokens are listed directly below the body field — use them to personalize with learner and group details. ![Modal titled 'Email Group Certificates' with form to send certificates: options checked for sending to Site Admin and Group Leader(s); includes fields for From Name, From Email, CC Certificate To, User Email Subject, Admin/Group Leader Email Subject, and Email Body with rich-text editor; visible Save module and Help/Close buttons.](https://www.uncannyowl.com/wp-content/uploads/2016/12/Email-Group-Certificate-335x500.png "Email Group Certificate - Uncanny Owl") ### Related Articles - [Email Course Certificates](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/) - [Email Quiz Certificates](https://www.uncannyowl.com/knowledge-base/send-quiz-certificates-by-email/) - [Download Certificates in Bulk](https://www.uncannyowl.com/knowledge-base/download-certificates-in-bulk/) - [Certificate Preview](https://www.uncannyowl.com/knowledge-base/certificate-preview/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Email Course Certificates](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/) **Published:** December 22, 2016 **Author:** Ken **Excerpt:** Learn how to send course certificates to learners and, optionally, admins and/or group leaders by email. **Content:** ### Overview Deliver a learner’s certificate the moment they finish a course, with the PDF attached right to the completion email. No more asking learners to log back in and download it themselves — and you can copy admins or group leaders on the same message. LearnDash generates a course certificate, but learners normally have to view or download it manually. The Email Course Certificates module closes that gap: whenever a learner completes a course that has a certificate assigned, the module emails them the certificate as a PDF attachment. You can also route copies to the site administrator, group leaders, or additional addresses. This is a good fit when you want certificates in learners’ inboxes automatically, need a copy on file for administrators, or want group leaders notified as their members complete courses. **Important:** This is a global module — it cannot be turned on or off per course. Once enabled, it emails the certificate PDF for **any** course that has a certificate assigned. ### Configure It Settings are decisions about delivery, storage, and email content. **Delivery and recipients** - **Send Certificate to Site Admin / Group Leader(s):** Check these to copy administrators and/or group leaders on the certificate email. Use this when records need to live somewhere beyond the learner’s inbox. - **CC Certificate To:** Add one or more email addresses to receive a copy via CC — handy for a shared records or compliance mailbox. - **From Name / From Email:** Set how the sender appears. Configure these to match your brand or a monitored support address. **Storage** - **Do not store certificates on server:** By default, generated certificates are saved on the server. Check this if you’d rather not retain copies — for example, to limit disk use or for data-handling reasons. Leave it unchecked if you want certificates available on the server afterward. **Rendering** - **Use Cron to send certificate:** Leave this off in most cases. Enable it only if shortcodes aren’t rendering correctly in the emailed certificate; sending via cron can resolve those rendering issues. **Email content** - **Email Subject & Email Body:** Customize the message learners receive. Available tokens are listed directly below the body field — use them to personalize with learner and course details. ![Email Course Certificates settings modal with checkboxes to send certificates (cron), from/name email fields, CC, subject, and message body; includes Save module button.](https://www.uncannyowl.com/wp-content/uploads/2016/12/Email-Course-Certificate-344x500.png "Email Course Certificate - Uncanny Owl") ### Developer Filters **Filter****Parameters****Purpose**`uo_course_certificate_save_path`Custom absolute pathChange where generated certificates are stored on the server.`uo_course_completion_certificate_filename``$file_name, $user, $course_id, $certificate_post, $timestamp`Customize the generated certificate’s filename.## Related Articles - [Email Group Certificates](https://www.uncannyowl.com/knowledge-base/send-group-certificates-email/) - [Email Quiz Certificates](https://www.uncannyowl.com/knowledge-base/send-quiz-certificates-by-email/) - [Download Certificates in Bulk](https://www.uncannyowl.com/knowledge-base/download-certificates-in-bulk/) - [Certificate Preview](https://www.uncannyowl.com/knowledge-base/certificate-preview/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Duplicate Pages & Posts](https://www.uncannyowl.com/knowledge-base/duplicate-pages-posts/) **Published:** July 26, 2016 **Author:** yuehchin **Excerpt:** Learn how to easily duplicate courses, lessons, topics, quizzes, pages and posts. **Content:** ### Overview Clone any page, post, or LearnDash item in a single click instead of rebuilding it from scratch. This is ideal for course creators who want to reuse an existing course, lesson, or quiz as the starting point for a new one. Duplicate Pages & Posts copies an item and everything attached to it. The duplicate inherits the original’s associated meta, settings, categories, tags, and custom taxonomies, so you start with an exact working copy rather than a blank slate. **The module can clone:** - Standard WordPress pages and posts - Any registered custom post type - LearnDash courses, lessons, topics, quizzes, certificates, and groups - LearnDash quiz questions (LearnDash 2.6+) Common use cases include spinning up a new course from a proven template, creating a variant of an existing quiz, or copying a marketing page before making edits. ### Configure It In the module settings you’ll see a list of every registered post type on your site. Decide which of these you want to be able to duplicate: - **Enable duplication per post type** — Turn duplication on for the post types you actually clone. You can enable it for any post type, but post types that store custom data or link to other posts may not copy cleanly. **Important:** Some custom post types contain data or relationships that don’t duplicate correctly. We strongly recommend testing any duplicated custom post type before relying on it in a live environment. **Note:** Duplicating requires the edit\_published\_posts capability (and edit access to the specific item). By default this includes Administrators, Editors, and Authors, but not Contributors or Subscribers. ### Usage You can duplicate an item two ways: - From the admin list of courses, lessons, topics, quizzes, or certificates - From the **Edit** view of any of those post types **Note:** Cloning a lesson or topic duplicates that single item only — it does not create new copies of its child topics or quizzes. (Duplicating a course is the exception: the duplicate reuses the original’s lesson/topic/quiz steps — see *Cloning courses* below.) ![Screenshot of a WordPress 'Courses' admin page showing a course row with action links (View, Clone this Course, Builder) highlighted by a red arrow to indicate cloning option.](https://www.uncannyowl.com/wp-content/uploads/2016/07/clone-this-course-link.png "clone this course link - Uncanny Owl") ### Cloning courses There are 2 possible cloning outcomes, depending on whether or not **Shared Course Steps** is enabled. . The cloned course is created as a **draft** so you can review it before publishing. **Shared Course Steps Enabled** Cloning a course with Shared Course Steps enabled will not create unique copies of any lessons, topics or quizzes. They remain shared. Any edits made to the shared lessons, topics or quizzes will apply to any other course that shares the content. **Note:** After enabling Shared Course Steps, when cloning a course that was created with Shared Course Steps disabled, the course structure must be modified and resaved before cloning to ensure that the steps are cloned. **Shared Course Steps Disabled When cloning a course with Shared Course Steps disabled, the cloned course will be empty, with no lessons, topics or quizzes. ### Cloning LearnDash quizzes Quiz cloning is where this module stands out — it copies quiz questions, which most other duplication plugins handle poorly. Behavior depends on your LearnDash **Shared Quiz Questions** setting (LearnDash 2.6+): - **Shared Quiz Questions disabled** — The duplicated quiz gets an independent copy of the questions. Editing them in one quiz does not affect the other. - **Shared Quiz Questions enabled** — The duplicated quiz is assigned the same questions as the original. Editing a question in one quiz changes it in both. **Note:** Because of how quiz question associations work, cloning an individual quiz question makes the clone appear in the same quiz as the original question. ### Related Articles - [Reset Progress Button](https://www.uncannyowl.com/knowledge-base/learndash-reset/) - [Single Page Courses](https://www.uncannyowl.com/knowledge-base/single-page-courses/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Drip Topics by LearnDash Group](https://www.uncannyowl.com/knowledge-base/drip-topics-by-ldgroup/) **Published:** July 25, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to drip topics on different dates to different groups. **Content:** ### Overview Release individual LearnDash topics to each group on its own schedule, so different cohorts can progress through the same course at their own pace. This is for sites that run the same course for multiple groups on different timelines. LearnDash’s native drip dates apply the same schedule to everyone in a course. Drip Topics by Group lets you set topic drip dates **per LearnDash Group**, on specific calendar dates, so each group unlocks topics on dates that suit it. This works the same way as Drip Lessons by Group, but at the topic level — useful when you need finer control than dripping whole lessons. ### Configure It Group drip dates are managed on the topic itself, under **Edit Topic > Settings** in the WordPress admin. When the module is active, a **Topic Group Drip Settings** metabox lists every group that has access to the topic. **Where to find it (Toolkit Pro v4.4.1+):** On the topic edit screen, the **Topic Group Drip Settings** are reached through a dedicated **Uncanny Toolkit** tab in the LearnDash settings header, just below the topic title. This tab was added in v4.4.1 so the settings stay easy to find under WordPress 7.0’s block editor, which otherwise collapses classic metaboxes out of view. The settings themselves are unchanged — only where you click to reach them. - **To schedule a topic for a group** — enter a drip date for the group and click **Save date**. The topic becomes available to that group’s members on the date you set. - **To choose the right course first (shared topics)** — if the topic appears in more than one course, pick the course from the **Switch Course** dropdown before the associated groups appear and before setting any dates. - **To schedule for students who are not in a group** — use LearnDash’s standard **Topic Access Settings** metabox instead. The group drip settings only apply to group members. **Important:** A drip date for a topic/group combination persists across all courses. If a group can access two courses that contain the same topic, you can only set **one** drip date for that topic. **Note:** If a group has access to the topic but does not appear in the list, double-check that the correct course is selected in the **Switch Course** dropdown. ![LearnDash drip topic by group](https://www.uncannyowl.com/wp-content/uploads/2016/07/LearnDash-drip-topic-by-group-1030x436.png "LearnDash drip topic by group - Uncanny Owl") ### Usage For end users, topics stay locked until the drip date set for their group arrives, at which point the topic unlocks automatically. #### Removing a drip date To remove a drip date for a group, click **Remove date** next to that group’s date. **Important:** Drip Topics by Group does not currently support the LearnDash Notifications plugin. The notification trigger for this module is not registered (it is commented out in the code), so it cannot be selected in LearnDash Notifications. If you need “topic available” emails, that functionality is not available for this module. (Drip Lessons by Group does register its trigger and supports notifications.) ### Related Articles - [Drip Lessons by Group](https://www.uncannyowl.com/knowledge-base/drip-lessons-by-ldgroup/) - [LearnDash Group Course Access Expiration](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) - [Cohort & Membership Programs](https://www.uncannyowl.com/knowledge-base/cohort-membership-programs/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Drip Lessons by LearnDash Group](https://www.uncannyowl.com/knowledge-base/drip-lessons-by-ldgroup/) **Published:** July 25, 2016 **Author:** yuehchin **Excerpt:** Learn how to drip lessons on different dates to different groups. **Content:** ### Overview Release lessons to each LearnDash Group on its own schedule, so different cohorts can move through the same course at their own pace. This is for sites that run the same course for multiple groups that started on different dates. Out of the box, LearnDash can release a lesson a set number of days after enrollment or on a fixed calendar date — but that schedule applies to every student in the course. Drip Lessons by Group lets you set lesson drip dates **per LearnDash Group**, on specific calendar dates. **Common use cases:** - An employer enrolls successive intakes of staff in the same onboarding course and wants each intake’s lessons to unlock on dates that match when they started. - A training provider runs the same course for several client organizations, each on its own timeline. ### Configure It Group drip dates are managed on the lesson itself, under **Edit Lesson > Settings** in the WordPress admin. When the module is active, a **Lesson Group Drip Settings** metabox lists every group that has access to the lesson. **Where to find it (Toolkit Pro v4.4.1+):** On the lesson edit screen, the **Lesson Group Drip Settings** are reached through a dedicated **Uncanny Toolkit** tab in the LearnDash settings header, just below the lesson title. This tab was added in v4.4.1 so the settings stay easy to find under WordPress 7.0’s block editor, which otherwise collapses classic metaboxes out of view. The settings themselves are unchanged — only where you click to reach them. - **To schedule a lesson for a group** — enter a drip date for the group and click **Save date**. The lesson becomes available to that group’s members on the date you set. - **To choose the right course first (shared lessons)** — if the lesson belongs to more than one course, pick the course from the **Switch Course** dropdown before the associated groups appear and before setting any dates. - **To schedule for students who are not in a group** — use LearnDash’s standard **Lesson Access Settings** metabox instead. The group drip settings only apply to group members. **Important:** A drip date for a lesson/group combination persists across all courses. If a group can access two courses that contain the same lesson, you can only set **one** drip date for that lesson — you cannot drip the same lesson on different dates in two different courses for the same group. **Note:** If a group has access to the lesson but does not appear in the list, double-check that the correct course is selected in the **Switch Course** dropdown. ![Lesson Group Drip Settings page with two groups, date fields, and Save/Remove date actions.](https://www.uncannyowl.com/wp-content/uploads/2016/07/lesson-drip-1030x230.png "lesson drip - Uncanny Owl")### Usage For end users, lessons stay locked until the drip date set for their group arrives, at which point the lesson unlocks automatically. #### Removing a drip date To remove a drip date for a group, click **Remove date** next to that group’s date. #### Email notifications (LearnDash Notifications plugin) You can email students when a lesson becomes available based on their group’s drip date, using the LearnDash Notifications plugin. Create a notification with the trigger **A scheduled lesson is available to user with Uncanny Drip by Group**. **Note:** If you use both LearnDash’s native “Lesson Release Schedule” and lesson group drip and find that notification emails aren’t going out as expected, add the following filter to your child theme’s `functions.php` to prioritize group drip notifications: `add_filter( 'uo_drip_ignore_learndash_release_date', '__return_true' );` ![LearnDash Group Drip Lesson Notifications](https://www.uncannyowl.com/wp-content/uploads/2021/02/LearnDash_Group_Drip_Lesson_Notification.png "LearnDash_Group_Drip_Lesson_Notification - Uncanny Owl")### Related Articles - [Drip Topics by Group](https://www.uncannyowl.com/knowledge-base/drip-topics-by-ldgroup/) - [LearnDash Group Course Access Expiration](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) - [Cohort & Membership Programs](https://www.uncannyowl.com/knowledge-base/cohort-membership-programs/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Download Certificates in Bulk](https://www.uncannyowl.com/knowledge-base/download-certificates-in-bulk/) **Published:** April 11, 2023 **Author:** Ryan Moore **Content:** ### Overview Generate and download a whole batch of LearnDash certificates at once instead of saving them one learner at a time. Administrators and Group Leaders pick a group, course, or quiz, and the module bundles every matching certificate into a single downloadable zip file. Collecting certificates individually doesn’t scale once you have dozens or hundreds of learners. The Download Certificates in Bulk module solves this by letting admins and Group Leaders select a certificate type and target, then generating all the PDFs together as one zip file. Common use cases include sending a Group Leader every certificate for their cohort, archiving course completions for compliance, or pulling quiz certificates for an entire class. Because generation can be heavy, the module runs the job in the background (processing in batches via cron) and emails a download link when the zip is ready. **Requirement:** The server must have PHP’s **ZipArchive** class available to build the zip. If it isn’t, the module shows a notice on its settings screen asking you to contact your host to enable the zip module. **Access:** The bulk download form is available to users with the **Administrator** or **Group Leader** role by default (capability `manage_options`). Both the capability and the allowed roles are filterable (`uo_bulk_downlad_cert_capability, uo_bulk_downlad_cert_allowed_roles`). ### Setup Add the shortcode below to any page where authorized users should generate certificates: `[uo_download_certificates]` The form appears wherever the shortcode is placed and is intended for administrators and Group Leaders. **Shortcode****Attributes****Description**`[uo_download_certificates]``allow-clear` (default `no`)Renders the bulk certificate generation form. Set `allow-clear="yes"` to show a “Clear previous runs” checkbox on the form.### Usage From a page containing the shortcode: 1. **Choose the certificate type** — LearnDash Group, Course, or Quiz. 2. **Select the target.** Depending on the type, pick the relevant group, course, and/or quiz. 3. **Click Generate certificates.** The zip file is built in the background. 4. **Watch for the email.** When the zip is ready, the user who started the job receives an email with a download link. ![Generate LearnDash Course Certificates](https://www.uncannyowl.com/wp-content/uploads/2023/04/Generate-Bulk-LearnDash-Certificates-500x354.png "Generate Bulk LearnDash Certificates - Uncanny Owl") ### Module settings The module settings screen controls notifications and storage. The available options are: - **Minimum free space required (in GB):** The module checks available disk space before generating; default is **2 GB**. If less than this is free, generation is blocked. - **From Name / From Email:** Set how the notification email’s sender appears. - **Email Subject / Email Body:** Customize the email that delivers the download link. Available variables (`%User First Name%, %Link%, %Certificates for%, %Time requested%`) are listed below the body field. - **Delete certificate zip files from the server:** A button that removes all generated certificate zip files from the server immediately, to reclaim disk space. - **Clear previous runs:** A button that clears records of previous generation runs. **Note on storage:** Generated zip files are stored under `/wp-content/uploads/bulk-certificates`. The download link in each notification email is a transient that **expires 24 hours after creation** (filterable via `uo_file_expiry_time`, default `86400` seconds), so retrieve the file promptly. **Important:** Generating certificates is a background process and large batches can take a while. The job is processed in batches of 100 via cron. ### Related Articles - [Certificate Preview](https://www.uncannyowl.com/knowledge-base/certificate-preview/) - [Email Course Certificates](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/) - [Email Group Certificates](https://www.uncannyowl.com/knowledge-base/send-group-certificates-email/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Days Until Course Expiry](https://www.uncannyowl.com/knowledge-base/days-until-course-expiry/) **Published:** July 24, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to use a handy shortcode/Gutenberg block to display the number of days remaining until a user's course access expires. **Content:** ### Overview This module shows learners *how many days remain* until their course access expires. LearnDash can already display a fixed expiry date; use this when a countdown (“expires in 12 days”) is more motivating or clearer for your learners. LearnDash natively offers a shortcode that prints the date a learner’s course access ends. This module takes a different angle: instead of a date, it outputs the number of days left. That countdown framing is useful for renewal prompts, urgency messaging, and any place you’d rather say “your access expires in X days” than show a calendar date. By default the output reads: **Course Access Expires in X days**. ### Setup There are two scenarios, and they decide whether you need to pass a course ID: - **On a course page (or its sidebar)** — Just add the **Days Until Course Expiry** block or the `[uo_expiration_in]` shortcode. It automatically detects the current course and shows the logged-in learner’s remaining days. - **On any other page** — The module can’t infer the course, so pass it explicitly with the course-id attribute, e.g. `[uo_expiration_in course-id="123"]`. To change the lead-in wording, use the **pre-text** attribute, e.g. `[uo_expiration_in pre-text="Your access will expire in:"]`. ### Shortcode reference `[uo_expiration_in]` **Attribute****What it does****Example**course-idSpecifies the course post ID — required when the shortcode isn’t on a course pagecourse-id=”123″pre-textCustomizes the text shown before the day countpre-text=”Your access will expire in:”### Usage - On the final day of access, the count displays 0. - After access has expired, nothing is displayed. Keep this in mind on closed course pages, where there may be no visible output for expired learners. **Note:** This is a Pro module — it must be installed and activated under Uncanny Toolkit Pro before the block or shortcode will render anything. ### Related Articles - [Course Dashboard](https://www.uncannyowl.com/knowledge-base/learndash-course-dashboard/) - [Group Expiration](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) - [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) - [Selling Online Courses: Certificates, Transcripts & Expiry](https://www.uncannyowl.com/knowledge-base/selling-online-courses-certificates-transcripts-expiry/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Course Dashboard](https://www.uncannyowl.com/knowledge-base/learndash-course-dashboard/) **Published:** August 18, 2016 **Author:** yuehchin **Excerpt:** Learn how to display a list of courses that shows completion information and supports drilldown to the lesson and topic level. **Content:** ### Overview The Course Dashboard gives your learners one page where they can browse all of their courses, drill into lessons and topics, jump straight to any quiz, review past quiz results, and grab their certificates — without clicking into each course first. It’s ideal as the centerpiece of a “My Courses” or member dashboard page. Drop the dashboard onto any page and it renders a collapsible list of courses. Each course expands to reveal its lessons, and each lesson expands to reveal its topics. Along the way it surfaces everything a learner needs to keep moving: - Links to every quiz at the course, lesson, or topic level - A list of results from all quiz attempts - Links to course-level and quiz-level certificates - A **Resume** button for each course - The number of Continuing Education Credits (CEUs) earned or assigned per course (when the [Uncanny Continuing Education Credits](https://www.uncannyowl.com/knowledge-base/setup-continuing-education-credits-plugin/) plugin is active) The big payoff is direct access: a learner can open any lesson or topic from this single page instead of navigating into a course and drilling down manually. ![New LearnDash Dashboard Design](https://www.uncannyowl.com/wp-content/uploads/2019/05/Modern_LearnDash_Dashboard_Theme.png "Modern_LearnDash_Dashboard_Theme - Uncanny Owl") #### Choosing a theme The dashboard ships with two themes. Pick based on your LearnDash version and any styling plugins you run: - **3.0 theme (recommended)** — A responsive design built for LearnDash 3.0 with several color customization options. **Choose this** if you’re on LearnDash 3.0, or if you run themes/plugins that override default LearnDash styles (for example, the Boss theme by BuddyBoss including Social Learner, or LearnDash Visual Customizer by SnapOrbital). It avoids CSS conflicts. - **Legacy theme** — The original dashboard design, kept for backward compatibility. Choose this only if you specifically need to match an existing legacy layout. **Note:** The theme switcher was added in version 3.2. If you’re on LearnDash 2.x with style-overriding themes or plugins, use the 3.0 theme to avoid CSS conflicts. ### Setup Add the dashboard to any page using either the **Course Dashboard** block or the \[uo\_dashboard sample=’sample’\] shortcode. That alone renders the full collapsible list of courses, lessons, topics, quizzes, and earned certificates. From there, the attributes let you shape the page around a few key decisions: - **Whose courses to show** — Leave **user\_id** unset to show the logged-in user’s courses, or pass a specific user’s ID to render someone else’s list. - **Which courses appear** — Use **show** to control scope. Pick enrolled (default) for a personal “my courses” page; all to show every course in the system to both logged-in and logged-out visitors; open to behave like enrolled for members while showing only open courses to logged-out visitors; or free to limit to free courses. Use **not\_enrolled=”yes”** instead when you want a “courses you haven’t started yet” list. - **How courses are sorted** — Set **orderby** (title, date, or menu\_order; defaults to post ID) together with **order** (asc or desc). - **Whether to filter by category** — You can pre-filter with **ld\_category** (LearnDash course category) or **category** (WordPress category), or give learners a dropdown with **course\_categoryselector** or **categoryselector**. - **Whether to expand on load** — Set **expand\_by\_default=”yes”** if you want every course opened to its lessons and topics when the page loads. **Important:** You can’t combine the two category systems. Use either the LearnDash category attributes/selector *or* the WordPress category attributes/selector — not both at once. Empty categories are automatically hidden from the dropdowns. ### Shortcode reference \[uo\_dashboard sample=’sample’\] — example: \[uo\_dashboard sample=’sample’ orderby=”title” order=”asc”\] **Attribute****What it does****Values****Default**user\_idWhose course list to show; pass a user ID to override the logged-in userA registered user’s IDCurrent logged-in usershowWhich courses display. enrolled: the user’s enrolled courses (nothing for logged-out visitors). all: every course, for everyone. open: like enrolled for members, only open courses for logged-out visitors. free: free courses only.enrolled, all, free, openenrolledorderbySort field for coursestitle, date, menu\_orderPost IDorderSort direction (based on orderby)asc, descascld\_categoryLimit to a LearnDash course category (can’t combine with the dropdown)all or a LearnDash category slugallexpand\_by\_defaultExpand all lessons and topics on loadyes, nonocourse\_categoryselectorShow a dropdown to filter by LearnDash course category (empty categories hidden)show, hidehidecategoryselectorShow a dropdown to filter by WordPress category (empty categories hidden)show, hidehidecategoryLimit to a WordPress category (can’t combine with the dropdown)all or a WordPress category slugallnot\_enrolledShow only courses the user is *not* enrolled inyes, nono### Overriding the template You can customize the dashboard markup in an upgrade-safe way. Copy: `wp-content/plugins/uncanny-toolkit-pro/src/templates/frontend-dashboard/dashboard-template.php` to: `wp-content/themes/yourtheme/uncanny-toolkit/frontend-dashboard/dashboard-template.php` and edit the copy in your theme. **Important:** Never edit template files inside the Uncanny Toolkit Pro plugin directly — they’re overwritten on every upgrade and your changes will be lost. Always work from the theme override. ### Related Articles - [Enhanced Course Grid](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/) - [Days Until Course Expiry](https://www.uncannyowl.com/knowledge-base/days-until-course-expiry/) - [Single Page Courses](https://www.uncannyowl.com/knowledge-base/single-page-courses/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Certificate Preview](https://www.uncannyowl.com/knowledge-base/certificate-preview/) **Published:** May 24, 2019 **Author:** Ken **Content:** ### Overview Check how a LearnDash PDF certificate will actually look before any learner earns it. The Certificate Preview module adds a preview button right on the certificate editor, so you can confirm layout, fonts, and shortcode placement without having to complete a course or quiz yourself. Designing a LearnDash certificate normally means saving your work, completing a course or quiz as a test learner, and then opening the generated PDF — a slow loop every time you tweak a margin or move a shortcode. Certificate Preview removes that round trip. When the module is enabled, the **Edit Certificate** screen gains a metabox with a **Certificate Preview** button. Click it and a rendered PDF preview opens, using static sample values in place of the dynamic LearnDash shortcodes. This is ideal while you’re iterating on certificate design and want fast visual feedback. ### Usage 1. Open the certificate under **LearnDash LMS > Certificates** and edit it. 2. Make your design changes. 3. **Save the certificate.** Previews reflect only saved content. 4. Click **Certificate Preview** in the metabox to open the rendered PDF. ![Certificate Preview modal showing the save-or-update instruction, a blue 'Certificate Preview' button, and a LearnDash shortcodes note.](https://www.uncannyowl.com/wp-content/uploads/2019/05/certificate-preview-button.png "certificate preview button - Uncanny Owl") ### How shortcodes are handled The preview is a representation of the final certificate, not a live render of real learner data, so some shortcode behavior differs: - **LearnDash shortcodes** such as quizinfo and courseinfo are replaced with static placeholder values so you can see roughly where and how they’ll appear. - **Non-LearnDash shortcodes** may not render at all and are not supported in the preview. **Important:** Save your changes before previewing — unsaved edits will not appear. If the preview returns a critical error, capture the message from your WordPress admin notification email or your server error logs and open a support ticket with that detail. ### Related Articles - [Download Certificates in Bulk](https://www.uncannyowl.com/knowledge-base/download-certificates-in-bulk/) - [Email Course Certificates](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Autocomplete Lessons & Topics on WPForms Submission](https://www.uncannyowl.com/knowledge-base/wpforms-auto-completes-lessons-topics/) **Published:** March 30, 2022 **Author:** Ryan Moore **Content:** ### Overview Mark a LearnDash lesson or topic complete the moment a learner submits a WPForms form on that page. Use it when a step should require an action — a sign-off, a survey, or feedback — before the learner moves on. With this module enabled and autocompletion turned on for a specific form, the WPForms submit button replaces the standard **Mark Complete** button. When the learner submits the form, the lesson or topic is marked complete automatically. **Common use cases:** - Acknowledgement or consent forms a learner must submit before continuing. - Surveys or feedback collected at a specific point in a course. - Any step where completion should be tied to a deliberate form submission. **Important:** For this module to work, lessons must be associated with a course, and topics must be associated with both a lesson and a course. ### Configure It #### Turn on autocompletion for the form In the WPForms builder, go to **Settings → General** and check **Enable LearnDash Lesson/Topic Autocompletion**. This makes the form’s submission the completion trigger for that specific form. ![Autocomplete lesson or topic on WPForms submission](https://www.uncannyowl.com/wp-content/uploads/2022/03/Autocomplete_LD_lesson_or_topic_on_WPForms_submission-1030x511.png "Autocomplete_LD_lesson_or_topic_on_WPForms_submission - Uncanny Owl") #### Decide whether learners can resubmit a previously completed form If the same form appears across multiple pages, lessons, or topics, use the **Hide the Mark Complete button if the user has a previous entry** setting: - Keep it **enabled** when a single submission should count everywhere — the learner won’t be prompted again once they’ve submitted. - **Disable** it when learners should submit the form fresh in each course context, even if an earlier entry exists. ![Modal window for WPForms module settings: 'Hide the Mark Complete button if the user has a previous entry' with Help, Close, Save module buttons.](https://www.uncannyowl.com/wp-content/uploads/2022/03/autocomplete-wp-forms-setting.png "autocomplete wp forms setting - Uncanny Owl") #### Decide how learners advance after submitting To advance learners to the next topic or lesson automatically after submission: - Make sure the form is not submitting via AJAX. The module detects an ajax attribute in the shortcode and, if present, leaves LearnDash’s standard navigation in place instead of auto-advancing. - Remove any redirect settings in the form’s confirmation settings. **Note:** If the form is on the last topic of a lesson, learners return to that lesson after submitting rather than advancing to the next lesson. ### Usage The learner fills in and submits the WPForms form as usual. On submission, the lesson or topic is marked complete. **Important:** This module works alongside the standard **Autocomplete Lessons & Topics** module, which marks content complete on page load. That can conflict with form-based steps that require input first. On pages where a form submission should drive completion, disable page-load autocompletion for that lesson or topic. ### Related Articles - [Autocomplete Lessons & Topics](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics/) - [Autocomplete Lessons & Topics on Gravity Form Submission](https://www.uncannyowl.com/knowledge-base/gravity-forms-auto-completes-lessons-topics/) - [Autocomplete Lessons & Topics on Fluent Forms Submission](https://www.uncannyowl.com/knowledge-base/ffforms-auto-completes-lessons-topics/) - [Autocomplete Lessons & Topics on Formidable Forms Submission](https://www.uncannyowl.com/knowledge-base/formidable-auto-completes-lessons-topics/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Autocomplete Lessons & Topics on Quiz Results Page](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics-quiz-results-page/) **Published:** July 23, 2016 **Author:** Ken **Excerpt:** Learn how to automatically mark a lesson or topic complete when a user reaches the results page of an associated quiz (with a passing mark). **Content:** ### Overview Automatically mark a LearnDash lesson or topic complete the instant a learner reaches the results page of an associated quiz with a passing mark — no extra click required. This solves a common LearnDash gap where learners pass a quiz but never click **Click Here to Continue**, leaving their lesson or topic stuck as incomplete. By default, passing a LearnDash quiz doesn’t complete the lesson or topic on its own — the learner has to click through from the results page. Many never do, so their progress stalls. With this module enabled, reaching the quiz results page with a passing score marks the associated lesson or topic complete automatically. **Common use cases:** - Courses where quizzes gate progression and learners frequently get stuck on the results screen. - Reducing support requests about lessons that “won’t complete” after a passed quiz. When a lesson or topic has more than one quiz attached, it only marks complete once **all** of those quizzes have been passed. **Note:** “Newer versions” of LearnDash have this function built-in. ### Configure It This module has no settings of its own — simply enabling it applies the behavior to all lessons and topics across the site. - Enable it when you want passing quiz results to reliably complete the associated lesson or topic everywhere. - There is no per-lesson or per-topic configuration. **Important:** A few constraints to keep in mind: - **Passing mark required.** Completion only triggers when the learner achieves a passing score. - **Global only.** The setting applies site-wide; you cannot enable it for some lessons or topics and not others. - **Not retroactive.** It does not apply to work completed before the module was activated. ### Usage The learner takes the associated quiz and passes. As soon as they land on the results page, the lesson or topic is marked complete automatically — they don’t need to click **Click Here to Continue** to record completion. **Note:** For completion logic at the *course* level, or rules driven by quiz results that go beyond what this module covers, [Uncanny Automator](https://automatorplugin.com/) offers more flexible options. ### Related Articles - [Autocomplete Lessons & Topics](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics/) - [Autocomplete Lessons & Topics when Quiz is Graded](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics-when-quiz-is-graded/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/↗) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Autocomplete Lessons & Topics when Quiz is Graded](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics-when-quiz-is-graded/) **Published:** January 11, 2019 **Author:** Ken **Content:** ### Overview Automatically mark a LearnDash lesson or topic complete when an instructor manually grades its quiz with a passing mark. This removes the awkward step where a learner has already passed but still has to return to the lesson to mark it done themselves by clicking the “Mark Complete” button. Some LearnDash quizzes — essays and open-ended questions, for example — require an instructor to grade them by hand. Normally, even after the instructor grades the quiz, the learner must go back to the lesson or topic to complete it. This module closes that gap: once the essay response is marked graded, the associated lesson or topic is marked complete automatically. **Common use cases:** - Courses with essay or open-response quizzes that require manual grading. - Reducing back-and-forth where learners pass a graded assessment but their lesson stays incomplete. This module targets manually graded assessments specifically, working alongside LearnDash’s native quiz grading workflow rather than automatically scored quizzes. ### Configure It Enable the module to have manual passing grades complete the associated lesson or topic automatically. There are no additional per-item settings. **Important:** If the lesson or topic contains additional quizzes that have not yet been passed, it will **not** be marked complete. Completion only triggers once every quiz requirement for that lesson or topic is satisfied. ### Usage An instructor grades the quiz in LearnDash. As long as no other quizzes on that lesson or topic remain incomplete, the lesson or topic is marked complete automatically — the learner doesn’t need to return and complete it manually. ### Related Articles - [Autocomplete Lessons & Topics](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics/) - [Autocomplete Lessons & Topics on Quiz Results Page](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics-quiz-results-page/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Published:** June 30, 2026 **Author:** David Chambo **Content:** Uncanny Toolkit Pro adds 30+ modules to LearnDash, so the fastest way to get value is to start from *what you want to accomplish* rather than scrolling the full module list. This guide explains how Toolkit Pro is organized and points you to the right article for your goal. ### What Is Uncanny Toolkit Pro? Uncanny Toolkit Pro is the premium companion to the free [Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-for-learndash/). It’s a single plugin containing a library of independent **modules** — each one a self-contained feature you turn on only if you need it. You enable the modules you want, configure them, and leave the rest off. Modules cover four broad areas: - **Reporting & records** — learner transcripts, enhanced CSV reports, course time tracking. - **Certificates** — email certificates on course/quiz/group completion, bulk certificate downloads, certificate previews. - **User & group management** — bulk CSV user import, self-service group registration, per-group content drip, group expiration, group branding. - **Course experience & completion** — automatic lesson/topic completion, course dashboards, course grids, single-page courses, reset-progress buttons, and more. ### How Toolkit Pro Works The basic flow is the same for every module: 1. **Install Toolkit Pro** alongside the free Toolkit (Pro requires the free plugin to be active). See [Install the Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-pro-for-learndash/). 2. **Enable the module** from the Uncanny Toolkit modules screen. Modules are off by default — turning one on is a single toggle. 3. **Configure its settings**, then add any associated **shortcode or block** to a page if the module outputs something for learners (transcripts, grids, dashboards, timers, etc.). Because each module is independent, you can adopt Toolkit Pro one feature at a time — there’s no big-bang setup. ### Choose Your Goal Use the guide below to jump straight to the modules that solve your problem. #### I want to enroll a lot of users at once If you’re onboarding a batch of employees, students, or members, you can create and enroll users in bulk from a spreadsheet — no manual account creation. **Start here:** - [Import Users](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) — Create or update users from a CSV, enroll them in courses and groups, and send welcome emails. - For the full org-onboarding workflow, see [Employee Training & Onboarding at Scale](https://www.uncannyowl.com/knowledge-base/employee-training-onboarding-at-scale/). #### I want learners to register themselves into a group Give each LearnDash Group its own registration page so staff or members can create accounts and join the right group automatically. **Start here:** - [Group Registration](https://www.uncannyowl.com/knowledge-base/group-sign-up/) — Unique self-registration URLs per group, with support for Gravity Forms, Forminator, and Theme My Login. #### I want to issue certificates and transcripts Toolkit Pro can email certificates automatically on completion and give learners a printable, shareable record of everything they’ve done. **Start here:** - [Email Course Certificates](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/) — Attach the completion certificate to the course-complete email. - [Email Quiz Certificates](https://www.uncannyowl.com/knowledge-base/send-quiz-certificates-by-email/) and [Email Group Certificates](https://www.uncannyowl.com/knowledge-base/send-group-certificates-email/) - [Learner Transcript](https://www.uncannyowl.com/knowledge-base/learner-transcript/) — A branded, printable transcript with an optional public shareable link. - [Download Certificates in Bulk](https://www.uncannyowl.com/knowledge-base/download-certificates-in-bulk/) — Generate a ZIP of certificates for a whole group or course. #### I want to drip content to different groups on different schedules Run the same course for multiple cohorts, each unlocking content on its own calendar tied to when the group started. **Start here:** - [Drip Lessons by LearnDash Group](https://www.uncannyowl.com/knowledge-base/drip-lessons-by-ldgroup/) and [Drip Topics by LearnDash Group](https://www.uncannyowl.com/knowledge-base/drip-topics-by-ldgroup/) #### I want better reporting on learner progress Get more out of LearnDash’s exports and add columns that the native reports don’t include. **Start here:** - [Enhanced LearnDash CSV Reports](https://www.uncannyowl.com/knowledge-base/enhanced-learndash-csv-reports/) — Add username, names, roles, groups, and custom user meta to native CSV exports. - [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) — Track time spent in courses, lessons, topics, and quizzes, and add it to reports. #### I want to automatically mark lessons or topics complete Remove the friction of learners forgetting to click “Mark Complete,” or tie completion to a form submission or quiz result. **Start here:** - [Autocomplete Lessons & Topics](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics/) — Global or per-step automatic completion. - Form-triggered autocomplete for [Gravity Forms](https://www.uncannyowl.com/knowledge-base/gravity-forms-auto-completes-lessons-topics/), [WPForms](https://www.uncannyowl.com/knowledge-base/wpforms-auto-completes-lessons-topics/), [Formidable Forms](https://www.uncannyowl.com/knowledge-base/formidable-auto-completes-lessons-topics/), and [Fluent Forms](https://www.uncannyowl.com/knowledge-base/ffforms-auto-completes-lessons-topics/). #### I want to improve how courses are displayed Build better front-end course and lesson navigation than the LearnDash defaults. **Start here:** - [Enhanced Course Grid](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/) and [Enhanced Lesson/Topic Grid](https://www.uncannyowl.com/knowledge-base/enhanced-lessontopic-grid/) - [Course Dashboard](https://www.uncannyowl.com/knowledge-base/learndash-course-dashboard/) — A single page showing a learner’s enrolled courses, progress, certificates, and resume buttons. ### First-Time Setup Checklist 1. **Install and activate** the free Uncanny Toolkit, then Uncanny Toolkit Pro, and enter your license key. See [Install the Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-pro-for-learndash/). 2. **Open the modules screen** under **Uncanny Toolkit** in your admin menu and review the full list of available modules. 3. **Enable only the modules you need** for your immediate goal (use the “Choose Your Goal” section above to decide). 4. **Configure each module’s settings**, and add its shortcode or block to a page if it outputs content for learners. 5. **Test as a learner** — enroll a test user and confirm the experience looks and behaves the way you expect before rolling out. ### Tips for Getting the Most From Toolkit Pro - **Enable modules deliberately.** Every active module adds a little overhead. Turn on what you use; leave the rest off. - **Many modules pair up.** Group Registration + Drip by Group + Group Expiration is a complete cohort system; Import Users + Enhanced CSV Reports + Email Certificates is a complete corporate-onboarding system. The Use Cases (see “Related Articles” below) show these combinations end to end. - **Check the Quick Reference** for a one-page list of every module and its shortcode: [Uncanny Toolkit Pro – Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-pro-quick-reference/). ### Related Articles - [Install the Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-pro-for-learndash/) — Installation, license, and updates - [Uncanny Toolkit Pro – Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-pro-quick-reference/) — Every module and shortcode at a glance - [Toolkit Pro vs. the Free Toolkit](https://www.uncannyowl.com/?post_type=ht_kb&p=383401)— What the Pro upgrade adds **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Toolkit Pro vs. the Free Toolkit: What You Get](https://www.uncannyowl.com/knowledge-base/toolkit-pro-vs-the-free-toolkit-what-you-get/) **Published:** June 30, 2026 **Author:** David Chambo **Content:** The free [Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-for-learndash/) fixes a dozen everyday LearnDash annoyances. **Uncanny Toolkit Pro** adds 30+ modules that turn LearnDash into a platform you can run a real training business or program on. This article explains the difference so you can decide whether to upgrade. ### The Short Version - **The free Toolkit** is about *convenience* — login links, redirects, hiding the admin bar, breadcrumb links, menu visibility, and other small fixes that make a LearnDash site nicer to use. - **Toolkit Pro** is about *capability* — bulk user management, certificates, transcripts, group-based content delivery, advanced reporting, and time tracking. These are the features organizations need once their LMS becomes business-critical. Pro requires the free Toolkit to be installed and active — it extends the free plugin rather than replacing it. ### What the Free Toolkit Includes The free plugin focuses on usability fixes, including: - Front-end login, and log in/out links and redirects - Hiding the WordPress admin bar from learners - Breadcrumb links and menu item visibility - Certificate widget, “not enrolled” redirects, and more It’s an excellent starting point and costs nothing. Many small sites never need more. ### What Toolkit Pro Adds Pro is where the platform-level features live. Highlights: **Capability****What it does****Module****Bulk user import**Create/enroll hundreds of users from a CSV (auto-detects comma/semicolon/tab/pipe delimiters)Import Users**Self-service group sign-up**Unique registration URL per group; Forminator, Gravity Forms, Theme My LoginGroup Registration**Email certificates**PDF certificates delivered automatically on course/quiz/group completionEmail Certificates**Bulk certificate download**Generate a ZIP of certificates for a whole group or courseDownload Certificates in Bulk**Learner transcripts**Branded, printable records with an optional public shareable linkLearner Transcript**Group-based content drip**Per-cohort schedules tied to each group’s start dateDrip Lessons/Topics by Group**Group expiration**Revoke a whole organization’s access on a set dateGroup Expiration**Course time tracking**Record time-on-content; enforce minimum time or auto-logout on expirySimple Course Timer**Enhanced reporting**Extra columns (names, roles, groups, custom meta) on native LearnDash CSV exportsEnhanced CSV Reports**Advanced autocompletion**Mark lessons/topics complete on page load, form submission, or quiz resultAutocomplete modules**Better course display**Responsive course/lesson grids and a learner course dashboardEnhanced Grids, Course Dashboard**Group branding**Per-group logos and login redirects for white-labeled experiencesGroup Logo/List, Group Login Redirect…plus duplicate pages/posts, restrict page access, single-page courses, reset-progress buttons, sample-lesson labels, bbPress group forums, and an extensive developer hook library. ### How to Tell Which One You Need **Stay on the free Toolkit if:** you run a small site, enroll users manually or through a single checkout, and don’t need certificates by email, transcripts, or advanced reporting. **Upgrade to Toolkit Pro if any of these sound like you:** - You enroll users in batches or onboard organizations. → *Import Users, Group Registration* - You sell courses and want certificates delivered automatically. → *Email Certificates* - You run cohorts or memberships that need scheduled content. → *Drip by Group* - You report learner progress to clients or managers. → *Enhanced CSV Reports* - You need seat-time tracking or anti-cheating measures. → *Simple Course Timer* - You provide professional/continuing education and learners need transcripts. → *Learner Transcript* If you recognized your situation above, the Use Cases (see “Related Articles” below) show exactly how these modules fit together. ### Getting Started with Pro Pro installs alongside the free plugin. See [Install the Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-pro-for-learndash/), then use [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) to find the right modules for your goal. ### Related Articles - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) - [Employee Training & Onboarding at Scale](https://www.uncannyowl.com/knowledge-base/employee-training-onboarding-at-scale/) - [Selling Online Courses: Certificates, Transcripts & Expiry](https://www.uncannyowl.com/knowledge-base/selling-online-courses-certificates-transcripts-expiry/) - [Cohort & Membership Programs](https://www.uncannyowl.com/knowledge-base/cohort-membership-programs/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Cohort & Membership Programs](https://www.uncannyowl.com/knowledge-base/cohort-membership-programs/) **Published:** June 30, 2026 **Author:** David Chambo **Content:** Cohort-based courses and membership programs live or die on pacing. You want every group of learners to move through the material together, unlocking content on a schedule tied to *their* start date — not a fixed calendar that’s wrong for everyone who didn’t join on day one. This guide shows how Uncanny Toolkit Pro runs scheduled, group-based learning at any scale. ### The Scenario You run the same course for repeating cohorts — a 6-week bootcamp that starts monthly, a membership that drips a new module each week, a facilitated program with rolling intakes. Standard LearnDash drip is calendar-based, which means a learner who joins in week 3 sees content that’s already unlocked. You need each cohort on its own timeline. Here’s how. ### Run Each Cohort on Its Own Schedule This is the centerpiece. [Drip Lessons by LearnDash Group](https://www.uncannyowl.com/knowledge-base/drip-lessons-by-ldgroup/) and [Drip Topics by LearnDash Group](https://www.uncannyowl.com/knowledge-base/drip-topics-by-ldgroup/) let you set per-group drip dates, so the *same* course unlocks content on a different calendar for each group. A cohort that starts in January and one that starts in March both follow the identical week-by-week sequence — each measured from their own start. Drip Lessons by Group also integrates with the LearnDash Notifications plugin, so learners get a “new content is available” email when a lesson unlocks. (Drip Topics by Group does not currently support LearnDash Notifications.) ### Enroll Each Cohort Cleanly Each cohort is a LearnDash Group. To fill it: - Let learners join themselves with [Group Registration](https://www.uncannyowl.com/knowledge-base/group-sign-up/) — give each intake its own sign-up URL (Forminator, Gravity Forms, or Theme My Login supported). - Or bulk-add a known roster with [Import Users](https://www.uncannyowl.com/knowledge-base/import-learndash-users/). ### Make It Feel Like a Program, Not Just a Course The little touches make a cohort feel like a cohort: - [Group Login Redirect](https://www.uncannyowl.com/knowledge-base/learndash-group-login-redirect/) drops each cohort onto its own home page or community hub on login. - [Group Logo/List](https://www.uncannyowl.com/knowledge-base/ld-group-logo-list/) brands the experience per group — useful when you run white-labeled programs for different clients. - [Group Forums with bbPress](https://www.uncannyowl.com/knowledge-base/learndash-group-forums-with-bbpress/) gives each cohort a private discussion space only its members can post in. ### Keep Learners Moving (and Honest) For paced or accredited programs: - [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) tracks real engagement time and can require a minimum time in the material before a quiz unlocks. - [Learner Transcript](https://www.uncannyowl.com/knowledge-base/learner-transcript/) gives each member a running record of progress and completions across the whole program. ### Wind Down Access at the End When a cohort or membership term ends, [Group Expiration](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) revokes that group’s access on a set date with optional warning emails — so last month’s cohort doesn’t keep occupying seats or accessing content. ### The Whole System at a Glance **Need****Module**Per-cohort content scheduleDrip Lessons / Topics by GroupFill the cohortGroup Registration, Import UsersCohort home page on loginGroup Login RedirectPer-cohort brandingGroup Logo/ListPrivate discussionGroup Forums with bbPressPace & verify engagementSimple Course Timer, Learner TranscriptEnd access on scheduleGroup Expiration### Related Articles - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) - [Employee Training & Onboarding at Scale](https://www.uncannyowl.com/knowledge-base/employee-training-onboarding-at-scale/) — A related group-based workflow - [Uncanny Groups for LearnDash](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) — Sell cohort/membership access and manage seats **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Adding Credits to Student Transcript](https://www.uncannyowl.com/knowledge-base/adding-credits-to-student-transcript/) **Published:** March 19, 2019 **Author:** Ken **Content:** Show learners how many continuing education credits they have earned (and how many are still available) right on their transcript. When you run Uncanny Continuing Education Credits alongside the Learner Transcript module, a credits column appears automatically on each enrolled course. The **Learner Transcript** module in Uncanny Toolkit Pro gives learners a single page that lists every course they’re enrolled in, along with progress and completion details. When the **Uncanny Continuing Education Credits (CEUs)** plugin is also active, it extends that transcript with an extra column showing the credits earned or available for each course. This is most useful for organizations that award CEUs, professional development hours, or any unit-based credit and want learners to see their running totals without leaving the transcript. Because credit labels in the CEUs plugin are configurable, the column heading reflects whatever you call your units — for example, “Hours” instead of “Credits.” ![](https://www.uncannyowl.com/wp-content/uploads/2019/03/Transcript-Credits-500x417.png "Transcript-Credits - Uncanny Owl") ### Setup Both pieces need to be in place before the column appears. There’s nothing to configure on the transcript itself — the integration is automatic. - **Enable the Learner Transcript module.** Activate and configure it in Uncanny Toolkit Pro so learners have a transcript page to begin with. - **Install and activate Uncanny Continuing Education Credits.** This is a separate plugin. Once it’s active and your credit values are set up, the column is injected into the transcript automatically. **Note:** The credits column only appears when both the Learner Transcript module and the Uncanny CEUs plugin are active. The column heading matches the credit label configured in the CEUs plugin settings. ### Related Articles - [Learner Transcript](https://www.uncannyowl.com/knowledge-base/learner-transcript/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) - [Selling Online Courses: Certificates, Transcripts & Expiry](https://www.uncannyowl.com/knowledge-base/selling-online-courses-certificates-transcripts-expiry/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Selling Online Courses: Certificates, Transcripts & Expiry](https://www.uncannyowl.com/knowledge-base/selling-online-courses-certificates-transcripts-expiry/) **Published:** June 30, 2026 **Author:** David Chambo **Content:** When you sell courses, the experience around the content is what makes you look professional — the certificate that lands in the learner’s inbox the moment they finish, the transcript they can show an employer, the polished course catalog, the access that expires cleanly when a subscription ends. This guide shows how Uncanny Toolkit Pro delivers that experience without custom development. ### The Scenario You sell online courses — as a solo creator, an academy, or a professional-education provider. LearnDash handles the content and the checkout, but out of the box the finishing touches are missing: certificates aren’t automatically delivered, there’s no consolidated record for learners, access doesn’t expire on its own, and the course catalog looks plain. Toolkit Pro fills each of those gaps. ### Deliver Certificates Automatically Nothing says “legitimate course” like a certificate that arrives the instant a learner finishes — no “where’s my certificate?” support tickets. - [Email Course Certificates](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/) attaches the completion certificate as a PDF to the course-complete email. - [Email Quiz Certificates](https://www.uncannyowl.com/knowledge-base/send-quiz-certificates-by-email/) does the same for individual quizzes. - Before you launch, [Certificate Preview](https://www.uncannyowl.com/knowledge-base/certificate-preview/) lets you see exactly how the PDF will render right from the certificate editor, so there are no surprises. - Running a cohort or a corporate batch? [Download Certificates in Bulk](https://www.uncannyowl.com/knowledge-base/download-certificates-in-bulk/) generates a ZIP of certificates for a whole course or group at once. ### Give Learners a Record They Can Show Off A professional learner record turns “I took a course” into something verifiable. [Learner Transcript](https://www.uncannyowl.com/knowledge-base/learner-transcript/) gives each learner a branded, printable page listing every course, status, quiz score, and earned certificate. As of v4.4 you can enable a **public shareable link** with copy-to-clipboard, so a learner can send a verifier a single URL — ideal for professional or continuing-education contexts. Add the [Continuing Education Credits](https://www.uncannyowl.com/knowledge-base/adding-credits-to-student-transcript/) integration and the transcript also shows earned credits or hours per course. ### Make the Catalog Look the Part The default LearnDash course list is functional but plain. The [Enhanced Course Grid](https://www.uncannyowl.com/knowledge-base/enhanced-course-grid/) (\[uo\_courses\]) displays your catalog as a responsive grid that orders courses by the learner’s enrollment status and can be filtered and sorted however you like — a far more polished storefront. Inside a course, the [Enhanced Lesson/Topic Grid](https://www.uncannyowl.com/knowledge-base/enhanced-lessontopic-grid/) and [Course Dashboard](https://www.uncannyowl.com/knowledge-base/learndash-course-dashboard/) give learners a clear, modern way to navigate and resume. ### Control How Long Access Lasts If you sell time-limited access or subscriptions, learners should know where they stand — and access should end cleanly. [Days Until Course Expiry](https://www.uncannyowl.com/knowledge-base/days-until-course-expiry/) shows learners how many days of access they have left (“Course Access Expires in X days”), with custom wording you control. For group- or organization-level access, [Group Expiration](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) revokes access automatically on a set date with optional warning emails. ### The Whole System at a Glance **Goal****Module**Auto-deliver certificatesEmail Course / Quiz CertificatesPreview certificates before launchCertificate PreviewIssue certificates in bulkDownload Certificates in BulkGive learners a shareable recordLearner TranscriptPolished course catalog & navigationEnhanced Course Grid, Lesson/Topic Grid, Course DashboardShow & enforce access expiryDays Until Course Expiry, Group Expiration### Related Articles - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) - [Employee Training & Onboarding at Scale](https://www.uncannyowl.com/knowledge-base/employee-training-onboarding-at-scale/) — The B2B counterpart to this workflow - [Toolkit Pro vs. the Free Toolkit](https://www.uncannyowl.com/?post_type=ht_kb&p=383401) — What the upgrade adds for course sellers **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Autocomplete Lessons & Topics](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics/) **Published:** July 21, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to hide the Mark Complete button and automatically mark lessons and topics as complete when a user visits the lesson/topic page. **Content:** ### Overview Automatically mark LearnDash lessons and topics as complete the moment a learner opens them, so they progress through a course without hunting for the **Mark Complete** button. This is ideal for content-light steps, introductions, or any course where you want a frictionless flow. When this module is active, opening a lesson or topic marks it complete on page load, and the standard **Mark Complete** button no longer appears. You control this behavior globally for the whole site, then override it on individual lessons or topics where you’d rather keep a manual completion step. **Common use cases:** - Welcome, overview, or “read this first” pages where there’s nothing for the learner to actively complete. - Video- or text-only courses where you want learners to move through automatically. - Mixed courses where most steps should autocomplete, but a few graded or timed steps should not. Autocompletion is intentionally skipped when a learner still has something to do on the page. It does **not** occur when: - The lesson or topic includes an incomplete assignment. - The lesson or topic contains one or more incomplete quizzes. - The lesson includes incomplete topics. - The lesson or topic has a timer enabled. - The lesson is being dripped (or Group Dripped) and is not yet available. - The lesson or topic contains a Fluent Form and the **Autocomplete Lessons & Topics on Fluent Form Submission** module is enabled. - The lesson or topic contains a Formidable Form and the **Autocomplete Lessons & Topics on Formidable Form Submission** module is enabled. - The lesson or topic contains a Gravity Form and the **Autocomplete Lessons & Topics on Gravity Form Submission** module is enabled. - The lesson or topic contains a WPForms Form and the **Autocomplete Lessons & Topics on WPForms Form Submission** module is enabled. **Important:** For this module to work, lessons must be associated with a course, and topics must be associated with both a lesson and a course. Autocompletion is also disabled for any lesson or topic that contains modules uploaded with the Tin Canny plugin. ### Configure It #### Decide your site-wide default When you enable the module, **Enable auto-completion for all lessons and topics** is turned on by default. This applies to every lesson and topic that isn’t already complete. - Leave it **on** if most of your content should autocomplete and you’ll make exceptions case by case. - Turn it **off** if you only want autocompletion on a handful of specific lessons or topics, then enable those individually. #### Override on individual lessons and topics On the Edit screen for a lesson or topic, use the **Auto Complete** drop-down to override the global default: - **Disabled** — No autocompletion on page load. The **Mark Complete** button stays visible. Choose this for steps that require deliberate action. - **Enabled** — The lesson or topic autocompletes on page load, regardless of the global setting. - **Use Global Setting (default)** — Inherits whatever you set globally. **Note:** Topics do not inherit a lesson’s autocompletion setting. A setting applied to a topic does not roll up to its parent lesson, so configure topics individually where needed. ![Auto Complete settings panel with a dropdown showing 'Use Global Settings' and options 'Disabled' and 'Enabled'.](https://www.uncannyowl.com/wp-content/uploads/2016/07/autocomplete-dropdown.png "autocomplete dropdown - Uncanny Owl") ### Usage For the learner, an autocompleting lesson or topic simply marks itself done on open — there’s no button to click. #### The Done button So learners are never stranded without a way forward, a **Done** button automatically appears on the last incomplete lesson or topic. It acts as a final **Mark Complete** button and triggers course completion. Its behavior depends on your course progression mode. **Note:** When a learner completes the last topic in a lesson that has autocompletion enabled, they are returned to that lesson — not moved straight to the next lesson. ### Related Articles - [Autocomplete Lessons & Topics on Quiz Results Page](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics-quiz-results-page/) - [Autocomplete Lessons & Topics when Quiz is Graded](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics-when-quiz-is-graded/) - [Autocomplete Lessons & Topics on Gravity Form Submission](https://www.uncannyowl.com/knowledge-base/gravity-forms-auto-completes-lessons-topics/) - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Employee Training & Onboarding at Scale](https://www.uncannyowl.com/knowledge-base/employee-training-onboarding-at-scale/) **Published:** June 30, 2026 **Author:** David Chambo **Content:** If you train employees, partners, or franchisees on LearnDash, the hard part usually isn’t the course — it’s everything around it: getting hundreds of people enrolled, keeping each client or department separate, proving completion, and pulling reports for managers. This guide shows how a handful of Uncanny Toolkit Pro modules combine into one repeatable onboarding system. ### The Scenario You deliver training to organizations — new-hire onboarding, compliance, certifications. Each organization is a cohort of dozens or hundreds of learners. You need to enroll them quickly, keep their data separate, deliver content on a schedule, prove who finished, and report back to their managers. Doing this by hand doesn’t scale. Here’s how to automate each step. ### Step 1 — Get Everyone Enrolled You have two ways to onboard a group of learners, depending on whether you have their details up front. **You have a roster (spreadsheet of names and emails):** Use [Import Users](https://www.uncannyowl.com/knowledge-base/import-learndash-users/) to create every account, enroll them in the right courses, assign them to the right LearnDash Group, and email each person their login — all from one CSV. As of v4.4 the importer auto-detects comma, semicolon, tab, or pipe delimiters, so an export straight from an HR system usually imports without reformatting. **You want learners to sign themselves up:** Use [Group Registration](https://www.uncannyowl.com/knowledge-base/group-sign-up/) to give each organization a unique sign-up URL. Send the link to the client; their people self-register and land in the correct group automatically. Forminator, Gravity Forms, and Theme My Login are all supported for the registration form. ### Step 2 — Keep Each Client Separate with Groups LearnDash Groups are the backbone of multi-client training. Each organization becomes a group, which keeps their learners, progress, and reporting cleanly separated. Toolkit Pro adds organization branding to the experience with [Group Logo/List](https://www.uncannyowl.com/knowledge-base/ld-group-logo-list/), so each client sees their own logo, and [Group Login Redirect](https://www.uncannyowl.com/knowledge-base/learndash-group-login-redirect/) to send each group’s members to the right landing page on login. ### Step 3 — Deliver Content on a Schedule For structured onboarding or compliance programs, you often want content to unlock over time rather than all at once. [Drip Lessons by LearnDash Group](https://www.uncannyowl.com/knowledge-base/drip-lessons-by-ldgroup/) and [Drip Topics by LearnDash Group](https://www.uncannyowl.com/knowledge-base/drip-topics-by-ldgroup/) let each cohort unlock the same course on its own calendar, tied to when that group started — so a January cohort and a March cohort follow the same schedule offset from their own start dates. ### Step 4 — Enforce and Verify Completion For compliance training where “they clicked through it” isn’t good enough: - [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) records real time-on-content and can require a minimum time before a quiz unlocks — useful for seat-time requirements. - [Email Course Certificates](https://www.uncannyowl.com/knowledge-base/send-course-certificates-email/) and [Email Group Certificates](https://www.uncannyowl.com/knowledge-base/send-group-certificates-email/) deliver proof of completion automatically, and can CC the admin or group leader. - [Learner Transcript](https://www.uncannyowl.com/knowledge-base/learner-transcript/) gives each employee a branded record of everything they’ve completed, now with an optional shareable public link for HR or auditors. ### Step 5 — Report Back to Managers [Enhanced LearnDash CSV Reports](https://www.uncannyowl.com/knowledge-base/enhanced-learndash-csv-reports/) adds the columns native LearnDash exports leave out — username, full names, roles, group membership, course start date, and custom user meta — so the report you hand a client manager is actually usable. ### Step 6 — Expire Access When the Program Ends For time-boxed contracts or annual compliance cycles, [Group Expiration](https://www.uncannyowl.com/knowledge-base/learndash-group-expiration/) revokes a whole organization’s access on a set date, with optional pre-expiry warning emails — so you don’t have to remember to clean up access manually. ### The Whole System at a Glance **Need****Module**Bulk-enroll a rosterImport UsersLet learners self-enroll into the right groupGroup RegistrationBrand each client’s experienceGroup Logo/List, Group Login RedirectRelease content on a cohort scheduleDrip Lessons/Topics by GroupEnforce seat timeSimple Course TimerDeliver proof of completionEmail Certificates, Learner TranscriptReport to managersEnhanced CSV ReportsEnd access on scheduleGroup Expiration### Related Articles - [Getting Started with Uncanny Toolkit Pro](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-toolkit-pro/) - [Cohort & Membership Programs](https://www.uncannyowl.com/knowledge-base/cohort-membership-programs-learndash/) *(new article — suggested URL, confirm)* — A related scheduled-delivery workflow - [Uncanny Groups for LearnDash](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-overview/) — Add seat management and group commerce **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Autocomplete Lessons & Topics on Gravity Forms Submission](https://www.uncannyowl.com/knowledge-base/gravity-forms-auto-completes-lessons-topics/) **Published:** July 22, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to automatically mark a lesson or topic complete when a user submits a Gravity Form. **Content:** ### Overview Mark a LearnDash lesson or topic complete the moment a learner submits a Gravity Form on that page. This is perfect for steps that require an action first — signing an agreement, answering a survey, or submitting feedback — before the learner can move on. With this module enabled and autocompletion turned on for a specific form, the form’s submit button replaces the standard **Mark Complete** button. When the learner submits the form, the lesson or topic is marked complete automatically. Common use cases: - Acknowledgement or consent forms a learner must complete before continuing. - Surveys, quizzes, or feedback collected at a specific point in a course. - Any step where completion should be tied to a deliberate form submission. **Important:** For this module to work, lessons must be associated with a course, and topics must be associated with both a lesson and a course. ### Configure It #### Turn on autocompletion for the form Enable autocompletion in the Gravity Form’s settings (the **Mark Lesson/Topic Complete** option — “Enable to Mark Lesson/Topic Autocomplete”) so its submit button takes over as the completion trigger for that lesson or topic. ![Legacy Settings panel showing LearnDash Mark Lesson/Topic Complete with autocomplete enabled; Save Settings button below.](https://www.uncannyowl.com/wp-content/uploads/2016/07/gravity-form-setting.png "gravity form setting - Uncanny Owl") #### Decide whether learners can resubmit a previously completed form If the same form appears across multiple pages, lessons, or topics, use the **Hide the Mark Complete button if the user has a previous entry** setting: - Keep it **enabled** when a single submission should count everywhere — the learner won’t be asked again once they’ve submitted. - **Disable** it when learners should submit the form fresh in each course context — useful for surveys or feedback that need to be collected per lesson, even if an earlier entry exists. ![Modal titled 'Autocomplete Lessons & Topics on Gravity Form Submission' with a gear icon, a checked 'Hide the Mark Complete button...' option, and Help, Close, Save module buttons.](https://www.uncannyowl.com/wp-content/uploads/2016/07/Enable-Gravity-Form-module.png "Enable Gravity Form module - Uncanny Owl") #### Decide how learners advance after submitting To advance learners to the next topic or lesson automatically after submission: - Disable AJAX form submission (use ajax=false in the form shortcode). - Remove any redirect settings from the form’s confirmation options. **Attribute****Where it goes****Purpose**ajax=falseGravity Form shortcodeDisables AJAX submission so the page reload can trigger auto-advance**Note:** If the form is on the final topic of a lesson, learners return to that lesson after submitting rather than advancing to the next lesson. ### Usage The learner fills in and submits the Gravity Form as usual. On submission, the lesson or topic is marked complete — there’s no separate **Mark Complete** step. **Important:** This module works alongside the standard **Autocomplete Lessons & Topics** module, which marks content complete on page load. That can conflict with form-based steps that require input first. On pages where a form submission should drive completion, disable page-load autocompletion for that lesson or topic. ### Related Articles - [Autocomplete Lessons & Topics](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics/) - [Autocomplete Lessons & Topics on Fluent Forms Submission](https://www.uncannyowl.com/knowledge-base/ffforms-auto-completes-lessons-topics/) - [Autocomplete Lessons & Topics on WPForms Submission](https://www.uncannyowl.com/knowledge-base/wpforms-auto-completes-lessons-topics/) - [Autocomplete Lessons & Topics on Formidable Forms Submission](https://www.uncannyowl.com/knowledge-base/formidable-auto-completes-lessons-topics/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Autocomplete Lessons & Topics on Formidable Forms Submission](https://www.uncannyowl.com/knowledge-base/formidable-auto-completes-lessons-topics/) **Published:** March 30, 2022 **Author:** Ryan Moore **Content:** ### Overview Mark a LearnDash lesson or topic complete the moment a learner submits a Formidable Forms form on that page. Use it when a step should require an action — a sign-off, a survey, or feedback — before the learner moves on. With this module enabled and autocompletion turned on for a specific form, the Formidable Forms submit button replaces the standard **Mark Complete** button. When the learner submits the form, the lesson or topic is marked complete automatically. Common use cases: - Acknowledgement or consent forms a learner must submit before continuing. - Surveys or feedback collected at a specific point in a course. - Any step where completion should be tied to a deliberate form submission. **Important:** For this module to work, lessons must be associated with a course, and topics must be associated with both a lesson and a course. ### Configure It #### Turn on autocompletion for the form Open the form’s settings and enable **Enable LearnDash Lesson/Topic Autocompletion**. This makes the form’s submission the completion trigger for that lesson or topic. ![Formidable Form settings for autocompletion](https://www.uncannyowl.com/wp-content/uploads/2022/03/fomidable-forms-settings-500x385.png "fomidable forms settings - Uncanny Owl")#### Decide whether learners can resubmit a previously completed form If the same form appears across multiple pages, lessons, or topics, use the **Hide the Mark Complete button if the user has a previous entry** setting: - Keep it **enabled** when a single submission should count everywhere — the learner won’t be prompted again once they’ve submitted. - **Disable** it when learners should submit the form fresh in each course context, even if an earlier entry exists. ![Autocomplete LearnDash lessons topics with Formidable Forms](https://www.uncannyowl.com/wp-content/uploads/2022/03/formidable-forms-autocomplete-learndash-lessons-topics-500x205.png "formidable forms autocomplete learndash lessons topics - Uncanny Owl") #### Decide how learners advance after submitting To advance learners to the next topic or lesson automatically after submission: - Do not enable AJAX form submission. - Disable any redirect settings in the form’s confirmation area. **Note:** If the form is on the final topic of a lesson, learners return to that lesson after submitting rather than advancing to the next lesson. ### Usage The learner fills in and submits the Formidable Forms form as usual. On submission, the lesson or topic is marked complete. **Important:** This module works alongside the standard **Autocomplete Lessons & Topics** module, which marks content complete on page load. That can conflict with form-based steps that require input first. On pages where a form submission should drive completion, disable page-load autocompletion for that lesson or topic. ### Related Articles - [Autocomplete Lessons & Topics](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics/) - [Autocomplete Lessons & Topics on Gravity Form Submission](https://www.uncannyowl.com/knowledge-base/gravity-forms-auto-completes-lessons-topics/) - [Autocomplete Lessons & Topics on Fluent Forms Submission](https://www.uncannyowl.com/knowledge-base/ffforms-auto-completes-lessons-topics/) - [Autocomplete Lessons & Topics on WPForms Submission](https://www.uncannyowl.com/knowledge-base/wpforms-auto-completes-lessons-topics/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Autocomplete Lessons & Topics on Fluent Forms submission](https://www.uncannyowl.com/knowledge-base/ffforms-auto-completes-lessons-topics/) **Published:** March 30, 2022 **Author:** Ryan Moore **Content:** ### Overview Mark a LearnDash lesson or topic complete the moment a learner submits a Fluent Forms form on that page. Use it when a step should require an action — a sign-off, a survey, or feedback — before the learner moves on. With this module enabled and autocompletion turned on for a specific form, the Fluent Forms submit button replaces the standard **Mark Complete** button. When the learner submits the form, the lesson or topic is marked complete automatically. Common use cases: - Acknowledgement or consent forms a learner must submit before continuing. - Surveys or feedback collected at a specific point in a course. - Any step where completion should be tied to a deliberate form submission. **Important:** For this module to work, lessons must be associated with a course, and topics must be associated with both a lesson and a course. ### Configure It #### Turn on autocompletion In the module’s settings, enable **Hide the “Mark Complete” button automatically when the Fluent Forms are added to the lessons and topics**. This turns autocompletion on for Fluent Forms added to lessons and topics, so the form’s submit button takes over as the completion trigger. #### Decide whether learners can resubmit a previously completed form If the same form appears across multiple pages, lessons, or topics, use the **Hide the “Mark Complete” button if the user has a previous entry** setting: - Keep it **enabled** (recommended in most cases) when a single submission should count everywhere — the learner won’t be prompted again once they’ve submitted. - **Disable** it when learners should submit the form fresh in each course context, even if an earlier entry exists. Showing or hiding the **Mark Complete** button is optional; in most cases this checkbox should be checked. **Important:** Fluent Forms cannot support non-AJAX submissions, so this module cannot advance the learner automatically on form submission. Learners must navigate to the next step manually after submitting — there is no auto-advance workaround. ### Usage The learner fills in and submits the Fluent Forms form as usual. On submission, the lesson or topic is marked complete, then the learner moves to the next step manually. **Note:** This module works alongside the standard **Autocomplete Lessons & Topics** module, which marks content complete on page load. That can conflict with form-based steps that require input first. On pages where a form submission should drive completion, disable page-load autocompletion for that lesson or topic. ### Related Articles - [Autocomplete Lessons & Topics](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics/) - [Autocomplete Lessons & Topics on Gravity Form Submission](https://www.uncannyowl.com/knowledge-base/gravity-forms-auto-completes-lessons-topics/) - [Autocomplete Lessons & Topics on WPForms Submission](https://www.uncannyowl.com/knowledge-base/wpforms-auto-completes-lessons-topics/) - [Autocomplete Lessons & Topics on Formidable Forms Submission](https://www.uncannyowl.com/knowledge-base/formidable-auto-completes-lessons-topics/) **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [User Switching](https://www.uncannyowl.com/knowledge-base/user-switching-module/) **Published:** August 14, 2017 **Author:** Anthony Lucic **Excerpt:** Learn how to preview your site as another user without having to know that user's password. **Content:** ### Overview Troubleshoot learner issues by stepping directly into a user’s account to see your site exactly as they do, then switch back to your own account instantly. It is the fastest way to confirm what a student is (or isn’t) seeing without ever asking for their password. ### What the Module Does The **User Switching** module lets administrators log in as another user, view the site from that person’s perspective, and return to their own account with a single click. It is built on John Blackbourn’s well-established [User Switching](https://wordpress.org/plugins/user-switching/) plugin. This is invaluable for LearnDash support and troubleshooting. When a learner reports that a lesson won’t unlock, a quiz won’t submit, or content appears to be missing, you can switch into their account and see precisely what they see, instead of guessing from screenshots or descriptions. **Note:** Any action you take while switched is recorded as if that user performed it. Completing a lesson, submitting a quiz, or posting a comment will be attributed to them. We recommend creating a dedicated test account for trying out site behavior, and reserving live learner accounts for cases where you specifically need to inspect that user’s real progress and data. ### Enabling the Module 1. Go to **Uncanny Toolkit** in your WordPress admin menu. 2. Locate the **User Switching** module and toggle it on. Once enabled, the module automatically gives administrators the ability to switch between user accounts. No further configuration is required. ### Who Can Switch Users Switching is available to administrators and any user who has the capability to edit users. Because this capability grants full access to other accounts, it should remain limited to trusted, high-level roles. ### How to Switch to Another User 1. Go to **Users > All Users**. 2. Find the user you want to view the site as. 3. Hover over their username and click the **Switch To** link beneath it. You are now logged in as that user and will see the site exactly as they do. ![](https://www.uncannyowl.com/wp-content/uploads/2017/11/User-Switching.png "User-Switching - Uncanny Owl")### How to Switch Back While you are switched into another account, a link to return to your own account appears in the **admin bar** at the top of the screen, and/or at the **bottom of the page**. Click it to instantly switch back to your original administrator account. ### Security Considerations **Note:** User Switching never reveals passwords. It uses WordPress’s own secure cookie authentication to move between accounts, so you can view a user’s experience without ever knowing or changing their credentials. If you also use the **Hide Admin Bar** module, be aware that hiding the admin bar can hide the switch-back link along with it. We recommend confirming the switch-back link remains accessible at the bottom of the page so you are never stranded in another user’s account. Some themes can also affect where the switch-back link appears, so it is worth verifying its placement before relying on the module in production. ### Related Articles - [Introduction to the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) - [Disable Emails](https://www.uncannyowl.com/knowledge-base/disable-emails/) - [Groups in User Profiles](https://www.uncannyowl.com/knowledge-base/learndash-groups-user-profiles/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Use Case: Safely Test Your LearnDash Site](https://www.uncannyowl.com/knowledge-base/use-case-safely-test-your-learndash-site/) **Published:** June 30, 2026 **Author:** David Chambo **Content:** ### Overview Testing changes on a real course site is risky. Run a test enrollment and you might fire off a wave of real emails to real learners. Try to reproduce a “my course won’t load” report and you’re guessing at what the learner actually sees. Two free Toolkit modules make testing safe and accurate: **Disable Emails** stops your staging site from contacting anyone, and **User Switching** lets you experience the site exactly as a specific learner. Together they let you test confidently — without surprises. ### The Modules You’ll Use **Module****What it does**[Disable Emails](https://www.uncannyowl.com/knowledge-base/disable-emails/)Blocks all outgoing email from the site[User Switching](https://www.uncannyowl.com/knowledge-base/user-switching-module/)Lets admins log in as another user, then switch back### Scenario 1: A Safe Staging Environment When you clone your live site to a staging server, it still knows how to send email — and a single test action can trigger enrollment notifications, password resets, or course-completion emails to your actual customers. 1. On your **staging** site, enable [Disable Emails](https://www.uncannyowl.com/knowledge-base/disable-emails/) under **Uncanny Toolkit > Modules**. 2. That’s it — no configuration needed. While the module is active, WordPress sends no email at all. 3. Watch for the admin-bar reminder confirming email is blocked. ![](https://www.uncannyowl.com/wp-content/uploads/2020/01/disable-wordpress-emails.png "disable-wordpress-emails - Uncanny Owl") **Important:** This blocks **all** site email while active. Only enable it on staging or test sites — never leave it on in production, or your learners will stop receiving notifications. **We recommend** pairing Disable Emails with an email-logging plugin (such as Email Log). The logger captures what *would* have been sent, so you can verify your emails are correct without anything actually leaving the server. ### Scenario 2: Reproduce a Learner’s Problem Exactly When a learner reports that something is broken, the fastest way to diagnose it is to see the site through their eyes. 1. Enable [User Switching](https://www.uncannyowl.com/knowledge-base/user-switching-module/). 2. Go to **Users > All Users** and find the learner. 3. Click **Switch To** on their row. 4. You’re now browsing as that user — you’ll see their courses, progress, and any access restrictions exactly as they do. 5. When you’re done, use the **switch-back** link in the admin bar to return to your own account instantly. **Note:** User Switching is a powerful administrative capability. Only trusted roles should have access to it, since it grants the ability to act as another account. ### Putting It Together: A Testing Routine 1. Clone production to staging. 2. Enable **Disable Emails** on staging immediately. 3. Make and test your changes — new courses, settings, plugin updates. 4. Use **User Switching** to verify the experience from a learner’s perspective. 5. When everything checks out, apply the changes to production (with Disable Emails **off** there). ### Related Articles - [Disable Emails](https://www.uncannyowl.com/knowledge-base/disable-emails/) - [User Switching](https://www.uncannyowl.com/knowledge-base/user-switching-module/) - [Groups in User Profiles](https://www.uncannyowl.com/knowledge-base/learndash-groups-user-profiles/) — Check a user’s group memberships while troubleshooting - [Getting Started with the Uncanny Toolkit](https://www.uncannyowl.com/knowledge-base/getting-started-with-the-uncanny-toolkit/) --- ### [Use Case: Build a Custom-Branded Login Experience](https://www.uncannyowl.com/knowledge-base/use-case-build-a-custom-branded-login-experience/) **Published:** June 30, 2026 **Author:** David Chambo **Content:** ### Overview Out of the box, WordPress sends your learners to a generic wp-login.php screen that has nothing to do with your brand. For a course or membership site, that’s a jarring break in the experience — and a missed opportunity to reinforce trust at the exact moment someone signs in. The Uncanny Toolkit lets you replace that default screen entirely with a login experience that lives on your own pages, matches your design, and routes learners exactly where you want them. This guide combines four free modules into one cohesive flow. ### The Modules You’ll Use **Module****Role in the flow**[Front End Login](https://www.uncannyowl.com/knowledge-base/front-end-login/)The branded login, forgot-password, and reset-password forms[Log In/Log Out Links](https://www.uncannyowl.com/knowledge-base/log-in-log-out-links/)Login, logout, and register links in your menu[Log In/Log Out Redirects](https://www.uncannyowl.com/knowledge-base/learndash-login-redirect/)Sends users to the right page after signing in or out[Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/)Shows the right menu items to logged-in vs logged-out visitorsEnable all four under **Uncanny Toolkit > Modules**. ### The Workflow #### Step 1: Create Your Branded Login Page 1. Create a new page called **Log In**. 2. Add the **Front End Login** block (or the ## Login Log in below to access your account. Username or Email Address Password Remember Me [Forgot Password?](https://www.uncannyowl.com/login/?action=lostpassword) shortcode) to the page. 3. Go to **Uncanny Toolkit > Settings > Front End Login** and set this page as your **Login Page**. Anyone who tries to reach the default WordPress login screen is now redirected here. 4. Under **Select Template**, choose **Modern** and use the built-in colour pickers (Primary, Text, Background, and Border Color) to match your brand — no custom CSS required. ![Front End Login customization modal with template and color pickers, login page options, verification settings, and Save module.](https://www.uncannyowl.com/wp-content/uploads/2016/04/front-end-login-settings-331x500.png "front end login settings - Uncanny Owl") **Tip:** Add reCAPTCHA v2 keys in the Front End Login settings to cut down on spam logins, and — if your audience expects it — turn on two-factor authentication via the free WP 2FA plugin. #### Step 2: Route Users After They Log In Use the [Log In/Log Out Redirects](https://www.uncannyowl.com/knowledge-base/learndash-login-redirect/) module to send learners to a meaningful destination — typically a **My Courses** dashboard — instead of the WordPress profile screen. 1. Go to **Uncanny Toolkit > Settings > Log In/Log Out Redirects**. 2. Set the **login redirect** to your course dashboard page. 3. Set the **logout redirect** to your home page or a “see you soon” page. #### Step 3: Add Login and Logout Links to Your Menu With [Log In/Log Out Links](https://www.uncannyowl.com/knowledge-base/log-in-log-out-links/) enabled: 1. Go to **Appearance > Menus**. 2. In the **Uncanny Menu Links** section, add a **Log In** link (or a modal login link) and a **Log Out** link. For a smoother experience, use the modal login option so visitors can sign in from any page without leaving it. (The modal requires AJAX to be enabled in the Front End Login settings.) #### Step 4: Show the Right Menu to the Right Visitor A logged-out visitor shouldn’t see “Log Out,” and a logged-in learner shouldn’t see “Log In” or “Register.” Use [Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/) to clean this up: 1. Go to **Appearance > Menus** and expand a menu item. 2. Set each item to show only to **logged-in** or **logged-out** visitors as appropriate. ![Widget settings: Log In link with URL #uo_log_in_link and label'Log In', display mode: Logged Out Users](https://www.uncannyowl.com/wp-content/uploads/2026/06/log-in-log-out-menu-links.png "log in log out menu links - Uncanny Owl") ### The Result Visitors now experience a login flow that feels native to your site from start to finish: they click **Log In** in your menu, sign in on a branded page, and land on their course dashboard — never seeing a default WordPress screen. Logged-in and logged-out visitors each see a menu tailored to them. ### Recommended Enhancements - **Distraction-free learning** — Pair this with [Hide Admin Bar](https://www.uncannyowl.com/knowledge-base/hide-admin-bar/) so students don’t see the WordPress toolbar. See [Use Case: A Distraction-Free Student Dashboard](https://www.uncannyowl.com/knowledge-base/use-case-a-distraction-free-student-dashboard/). - **Gated content** — Use [Show or Hide Content](https://www.uncannyowl.com/knowledge-base/show-hide-content/) to reveal members-only content on otherwise public pages. - **Sales routing** — Use [Not Enrolled Redirect](https://www.uncannyowl.com/knowledge-base/redirect-user-if-not-enrolled/) to send non-enrolled visitors to your sales page. ### Related Articles - [Front End Login](https://www.uncannyowl.com/knowledge-base/front-end-login/) - [Log In/Log Out Links](https://www.uncannyowl.com/knowledge-base/log-in-log-out-links/) - [Log In/Log Out Redirects](https://www.uncannyowl.com/knowledge-base/learndash-login-redirect/) - [Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/) - [Getting Started with the Uncanny Toolkit](https://www.uncannyowl.com/knowledge-base/getting-started-with-the-uncanny-toolkit/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Use Case: A Distraction-Free Student Dashboard](https://www.uncannyowl.com/knowledge-base/use-case-a-distraction-free-student-dashboard/) **Published:** June 30, 2026 **Author:** David Chambo **Content:** ### Overview Course completion rises when learners aren’t fighting the interface. A cluttered admin bar, a confusing sense of “where am I?”, and the friction of finding where you left off all chip away at momentum. This guide combines several free Toolkit modules into a focused, learner-first experience — the kind of polish that makes a LearnDash site feel like a purpose-built learning platform rather than a WordPress blog with courses bolted on. ### The Modules You’ll Use **Module****What it contributes**[Hide Admin Bar](https://www.uncannyowl.com/knowledge-base/hide-admin-bar/)Removes the WordPress toolbar for students[Breadcrumb Links](https://www.uncannyowl.com/knowledge-base/learndash-breadcrumb-links/)Shows learners exactly where they are in a course[Resume Button](https://www.uncannyowl.com/knowledge-base/learndash-resume/)One click back to where they left off[Quiz Completion Advances to Next Step](https://www.uncannyowl.com/knowledge-base/quiz-completion-advances-to-next-step/)Auto-advances learners after a quiz[Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/)Shows students only the menu items relevant to themEnable each under **Uncanny Toolkit > Modules**. ### The Workflow #### Step 1: Remove the Admin Bar for Students The WordPress admin bar is useful for you, but it confuses learners and breaks the immersion. 1. Enable [Hide Admin Bar](https://www.uncannyowl.com/knowledge-base/hide-admin-bar/). 2. Go to **Uncanny Toolkit > Settings > Hide Admin Bar**. 3. Check the roles whose admin bar should be hidden — typically **Subscriber**, **Customer**, and any student role. Leave it visible for administrators and instructors. ![Hide Admin Bar dialog with role checkboxes; Subscriber and Customer selected; options list includes Editor, Author, Contributor, etc.; bottom buttons: Help, Close, Save module.](https://www.uncannyowl.com/wp-content/uploads/2016/04/Hide-Admin-Bar-settings-436x500.png "Hide Admin Bar settings - Uncanny Owl") #### Step 2: Give Learners a Sense of Place Add breadcrumbs so learners always know where they are in the course hierarchy. 1. Enable [Breadcrumb Links](https://www.uncannyowl.com/knowledge-base/learndash-breadcrumb-links/). 2. Add the \[uo\_breadcrumbs\] shortcode to your course, lesson, and topic templates (or use the template function if your theme supports it). 3. Optionally customize the separator and the dashboard label in the module settings. #### Step 3: Make It Easy to Resume Nothing kills momentum like hunting for the next lesson. 1. Enable the [Resume Button](https://www.uncannyowl.com/knowledge-base/learndash-resume/). 2. Add the resume shortcode to your course dashboard. ![Resume button with lesson text](https://www.uncannyowl.com/wp-content/uploads/2019/02/resume-button_with-lesson-name-500x295.png "resume-button_with-lesson-name - Uncanny Owl")#### Step 4: Keep Learners Moving After Quizzes 1. Enable [Quiz Completion Advances to Next Step](https://www.uncannyowl.com/knowledge-base/quiz-completion-advances-to-next-step/). 2. Once active, completing a quiz automatically moves the learner to the next step — no extra clicks, no dead-end “quiz complete” screen. #### Step 5: Simplify the Menu Use [Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/) so logged-in learners see a clean, course-focused menu (My Courses, Resume, Log Out) without marketing or sign-up links meant for visitors. ### The Result A learner logs in and sees a clean page with no WordPress chrome, breadcrumbs telling them exactly where they are, a **Resume** button to jump back in, and quizzes that flow straight into the next lesson. The experience feels intentional — and learners who don’t get lost are learners who finish. ### Recommended Enhancements - Pair with a [branded login experience](https://www.uncannyowl.com/knowledge-base/front-end-login/) so the polish starts at sign-in. - Add [Show Certificates](https://www.uncannyowl.com/knowledge-base/show-learndash-certificates/) and the [Certificate Widget](https://www.uncannyowl.com/knowledge-base/learndash-certificate-widget/) so learners can celebrate and download their achievements. ### Related Articles - [Hide Admin Bar](https://www.uncannyowl.com/knowledge-base/hide-admin-bar/) - [Breadcrumb Links](https://www.uncannyowl.com/knowledge-base/learndash-breadcrumb-links/) - [Resume Button](https://www.uncannyowl.com/knowledge-base/learndash-resume/) - [Quiz Completion Advances to Next Step](https://www.uncannyowl.com/knowledge-base/quiz-completion-advances-to-next-step/) - [Getting Started with the Uncanny Toolkit](https://www.uncannyowl.com/knowledge-base/getting-started-with-the-uncanny-toolkit/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Topics Autocomplete Lessons (Legacy)](https://www.uncannyowl.com/knowledge-base/topics-autocomplete-lessons/) **Published:** July 20, 2016 **Author:** yuehchin **Excerpt:** Learn how to automatically mark lessons complete when a user completes the lesson's topics. **Content:** ### Overview Topics Autocomplete Lessons automatically marks a lesson as complete once all of the topics inside it are finished, then sends the learner on to the next lesson. This is a legacy module, retained for backward compatibility on older LearnDash setups. ### What This Module Does When this module is enabled, if all topics in a lesson are marked as completed, the lesson is marked as completed automatically and the user is directed to the next lesson. This removes a common point of friction: without it, learners often have to navigate back to a lesson page they have already worked through and click a completion button before they can continue. With the module on, that step happens for them as soon as the last topic is done. A note on behavior: enabling this module does not hide the lesson’s **Mark Complete** button. It only adds the automatic completion behavior. Whether learners still see that button depends on your course’s progression settings (open vs. linear). ### How to Enable It 1. In your WordPress admin, go to the **Uncanny Toolkit** settings page. 2. Locate the **Topics Autocomplete Lessons** module. 3. Turn the module on. That’s all that’s required. There are no additional configuration options for this module. ### Legacy Status and Modern Alternatives This module predates the course navigation changes introduced in LearnDash 4.11. With those changes, this module is considered redundant with native LearnDash functionality and is no longer recommended for sites running LearnDash 4.11 or higher. The module remains supported and continues to function as before for sites that still rely on it. As part of Toolkit v3.8.0, we completed internal deprecated-function cleanup so the module stays compatible with current WordPress and PHP versions. No settings or behavior changed in that release. If you are setting up a new course or running LearnDash 4.11+, we recommend using LearnDash’s built-in course navigation and progression options for autocompletion rather than enabling this module. For related automatic advancement on quizzes, see the Toolkit’s **Quiz Completion Advances to Next Step** module. ### Related Articles - [Introduction to the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) - [Install the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/) - [Quiz Completion Advances to Next Step](https://www.uncannyowl.com/knowledge-base/quiz-completion-advances-to-next-step/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Uncanny Toolkit for LearnDash - Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-quick-reference/) **Published:** April 20, 2016 **Author:** Ken **Excerpt:** See a summary of the most commonly used functions in the Uncanny LearnDash Toolkit. **Content:** This reference lists the shortcodes, blocks, and widgets included with the free Uncanny Toolkit for LearnDash, grouped by module. Each shortcode requires its module to be enabled on the Uncanny LearnDash Toolkit settings page. Follow the linked article in each section for full setup details. \[table id=1 /\] **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Uncanny Toolkit: Free vs. Pro](https://www.uncannyowl.com/knowledge-base/uncanny-toolkit-free-vs-pro/) **Published:** June 30, 2026 **Author:** David Chambo **Content:** ### Overview The free Uncanny Toolkit gives every LearnDash site the essentials — branded login, course navigation, certificate displays, and admin tools. [Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-pro-toolkit/) builds on that foundation with the advanced modules that growing course businesses need: automation, group management, reporting, and a richer learner experience. This article helps you decide which is right for you, and what an upgrade unlocks. ### What the Free Toolkit Covers The free version is genuinely useful on its own. It includes modules for: - **Login & access** — Front End Login, Log In/Log Out Links, Log In/Log Out Redirects, Not Enrolled Redirect - **Navigation & experience** — Breadcrumb Links, Resume Button, Quiz Completion Advances to Next Step, Menu Item Visibility, Show or Hide Content, Hide Admin Bar - **Certificates** — Show Certificates, Certificate Widget - **Administration** — Groups in User Profiles, User Switching, Disable Emails For many sites, that’s everything you need. See the [Introduction to the Uncanny Toolkit](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) for the full module directory. ### What Toolkit Pro Adds Toolkit Pro installs alongside the free version and adds modules in several high-value areas: **Area****Examples of Pro modules****Automation**Autocomplete lessons & topics on form submission or quiz results, Reset Progress button**Group sales & management**Group Registration, Group Login Redirect, Group Expiration, Group Logo/List, Drip content by group**Reporting & certificates**Enhanced LearnDash CSV Reports, Email Course/Group/Quiz Certificates, Download Certificates in Bulk, Certificate Preview**Learner experience**Course Dashboard, Enhanced Course Grid, Single Page Courses, Lazy Loading Course Navigation, Simple Course Timer, Sample Lesson Label, Learner Transcript**Site management**Import Users, Duplicate Pages & Posts, Restrict Page Access, Days Until Course ExpirySee the full list in the [Uncanny Toolkit Pro – Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-pro-quick-reference/). ### When to Upgrade Consider Toolkit Pro when you need to: - **Sell or manage groups.** If you offer team or organizational licenses, Pro’s group registration, expiration, and management modules are purpose-built for it. - **Automate course progress.** Mark lessons or topics complete automatically when a form is submitted or a quiz is passed. - **Report at scale.** Export detailed, filterable CSV reports across courses, users, and quizzes. - **Deliver certificates by email.** Automatically send certificates on course, group, or quiz completion, or download them in bulk. - **Polish the catalog and player.** Course grids, a course dashboard, single-page courses, and timers elevate the learner experience. ### How They Work Together Pro doesn’t replace the free Toolkit — it extends it. Both plugins share the same **Uncanny Toolkit > Modules** and **Settings** screens, so there’s no separate interface to learn. Enable free and Pro modules side by side and configure them in one place. To add Pro: 1. Purchase [Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-pro-toolkit/). 2. Upload the plugin ZIP under **Plugins > Add New > Upload Plugin** and activate it. 3. Enter your license key, then enable Pro modules under **Uncanny Toolkit > Modules**. ### Related Articles - [Introduction to the Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) — Free module directory - [Getting Started with the Uncanny Toolkit](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/) — Pick the right modules for your goal - [Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/downloads/uncanny-pro-toolkit/) — Product page and full feature list **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Show or Hide Content](https://www.uncannyowl.com/knowledge-base/show-hide-content/) **Published:** May 11, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to use shortcodes to show content based on whether or not the user is logged in. **Content:** ### Overview Show the right content to the right visitors. The **Show or Hide Content** module lets you display or hide any block of content based on whether a visitor is logged in or logged out, so members and anonymous visitors each see exactly what’s meant for them. The **Show or Hide Content** module adds a simple shortcode to your site that conditionally reveals or conceals whatever content you wrap inside it. It’s especially useful for **Open** LearnDash course types, where anyone can view the page but you want logged-in members to see extra material, or you want to encourage logged-out visitors to sign up. **Common uses include:** - Showing bonus content or member-only resources to logged-in users. - Presenting a call to action (sign up, log in, enroll) to logged-out visitors. - Giving anonymous visitors a taste of a course while keeping the full content reserved for members. This is a free module included in the **Uncanny Toolkit for LearnDash**. ### Enabling the Module 1. In your WordPress admin, go to **Uncanny Toolkit**. 2. Locate the **Show Or Hide Content** module. 3. Click **Activate** to turn it on. The module has no additional settings — once it’s active, the shortcode is ready to use anywhere shortcodes are supported. \[Screenshot: Uncanny Toolkit modules screen, the “Show Or Hide Content” module card with its Activate toggle in the on state\] ### How It Works Wrap any content in the shortcode and set the for attribute to control who sees it. Visitors who don’t match the condition simply won’t see the wrapped content — it’s removed from the page entirely rather than hidden with CSS. #### Shortcode Reference **Shortcode****Attribute****Accepted Values****Description**forloggedinShows the wrapped content only to logged-in users.forloggedoutShows the wrapped content only to logged-out (anonymous) visitors. (with a hyphen) works as an alias for if you prefer that spelling. ### Usage Examples Show content only to logged-in users: ``` This bonus material is only visible to logged-in members. ``` Show content only to logged-out visitors: ``` Create a free account to unlock the full course! ``` You can use both shortcodes on the same page to tailor the experience for each audience: ``` Log in to track your progress. ``` The content inside is fully processed, so you can nest other shortcodes inside it. For example, you can place a login form or another LearnDash shortcode within a block. ## Tips and Recommendations - We recommend pairing with a clear call to action — a sign-up link or login prompt — to convert anonymous visitors into members. - The shortcode checks login status only. To show or hide content based on LearnDash enrollment, LearnDash’s own \[visitor\] and \[student\] shortcodes work on course pages and filter by enrollment status. - Because non-matching content is removed from the page, it won’t appear in the page source — making it a clean way to keep member-only material private. ### Related Articles - [Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/) - [Not Enrolled Redirect](https://www.uncannyowl.com/knowledge-base/redirect-user-if-not-enrolled/) - [Front End Login](https://www.uncannyowl.com/knowledge-base/front-end-login/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Show Certificates](https://www.uncannyowl.com/knowledge-base/show-learndash-certificates/) **Published:** May 10, 2016 **Author:** yuehchin **Excerpt:** Learn how to use a shortcode to display the user's earned LearnDash certificates. **Content:** ### Overview Give your learners one easy place to find and download every certificate they’ve earned. The **Show Certificates** module adds a shortcode that lists a logged-in user’s LearnDash course and quiz certificates anywhere on your site, so achievements are always just a click away. ### What This Module Does Once enabled, the **Show Certificates** module provides the `[uo_learndash_certificates]` shortcode (the hyphenated alias `[uo-learndash-certificates]` also works). Drop it onto any page, post, or block area and signed-in learners will see a tidy list of the certificates they’ve earned, each linked for viewing and download. The list automatically reflects what each learner has unlocked: - **Course certificates** are listed alphabetically by course title. - **Quiz certificates** are shown newest-first (the reverse of the order the attempts were recorded). - **Group certificates** are also included. - If a learner earns the same certificate more than once, each instance is shown, matching LearnDash’s native behavior. Because the shortcode only ever displays certificates for the currently logged-in user, you can safely place it on a shared “My Certificates” or account page. ![Dashboard: Certificates Awarded with four links—Safety Training, Group Management Exam Certificate, Environment Best Practices Certificate, Operations Leadership Certification.](https://www.uncannyowl.com/wp-content/uploads/2016/05/show-certificates-3.png "show certificates 3 - Uncanny Owl") ### How It Relates to the Certificate Widget **Show Certificates** and the **Certificate Widget** are two independent ways to display a learner’s earned certificates — they do **not** depend on each other, and each builds its own certificate list directly from LearnDash. - **Show Certificates** provides the `[uo_learndash_certificates]` shortcode for placing a certificate list directly in page or post content. - The [**Certificate Widget**](https://www.uncannyowl.com/knowledge-base/learndash-certificate-widget/) displays a similar list inside a sidebar or other widget area. Enable whichever fits where you want the list to appear — or both. Enabling one is not a prerequisite for the other. ### How to Enable the Module 1. In your WordPress admin, go to **Uncanny Toolkit**. 2. Find the **Show Certificates** module and click **Activate**. 3. The \[uo\_learndash\_certificates\] shortcode is now ready to use anywhere on your site. ### Using the Shortcode Add the shortcode to any page or post to display the current learner’s certificates: `[uo_learndash_certificates]` #### Shortcode Attributes You can refine the output with the following attributes: - title — Sets a custom heading above the certificate list. Example: `[uo_learndash_certificates title="My Certificates"]` - class — Adds a custom CSS class to the list container for styling. Example: `[uo_learndash_certificates class="my-custom-class"]` - course\_certificates — Show or hide course certificates. Accepts show (default) or hide. - quiz\_certificates — Show or hide quiz certificates. Accepts show (default) or hide. - group\_certificates — Show or hide group certificates. Accepts show (default) or hide. - no-cert-message — Custom message shown when the learner has no certificates (default: *Complete courses to earn certificates*). To hide a whole category, set its attribute to hide. The shortcode only outputs nothing if **all three** certificate types (course\_certificates, quiz\_certificates, and group\_certificates) are set to hide and the learner has no certificates to show. ### Tips and Troubleshooting - The shortcode only renders certificates for the logged-in user, so be sure to test it while signed in as a learner who has earned at least one certificate. - Certificates must be properly configured and earned in LearnDash before they will appear. If the list is empty, confirm the learner has completed the relevant course or quiz. - Some page builders process shortcodes differently. If the list doesn’t render as expected, we recommend testing the shortcode in the standard WordPress editor first to confirm it’s working. ### Related Articles - [LearnDash Certificate Widget](https://www.uncannyowl.com/knowledge-base/learndash-certificate-widget/) - [Introduction to the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) - [Install the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Resume Button](https://www.uncannyowl.com/knowledge-base/learndash-resume/) **Published:** May 4, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to create buttons that enable users to resume their learning in LearnDash. **Content:** ### Overview The **Resume Button** module gives learners a one-click way to jump straight back to the last course, lesson, topic, or quiz they were working on. Removing the friction of hunting for where they left off keeps learners moving and helps drive course completion. Once you enable the module, you can drop a Resume button (or link) anywhere on your site outside of LearnDash content, such as a dashboard, welcome page, or members area. When a signed-in learner clicks it, they are returned to the last LearnDash post they visited. The button only appears for learners who have visited LearnDash content before. If a learner has no activity yet, the button stays hidden, so there is nothing to click until they have actually started a course. ![Resume button with lesson text](https://www.uncannyowl.com/wp-content/uploads/2019/02/resume-button_with-lesson-name-500x295.png "resume-button_with-lesson-name - Uncanny Owl") ### Enabling the Module 1. In your WordPress admin, go to **Uncanny Toolkit**. 2. Find the **Resume Button** module. 3. Click **Activate** to turn it on. ### Adding the Resume Button Place the shortcode on any page or post that is **not** LearnDash content. We recommend a course dashboard or a members-only page so the button is only seen by learners who are signed in. ### Resume the Last Visited Post Use this shortcode to send the learner back to the most recent LearnDash course, lesson, topic, or quiz they visited: `[uo_learndash_resume]` #### Resume a Specific Course To link directly to a learner’s last position within a particular course, use the course-specific shortcode and pass the course ID: `[uo_course_resume course_id="x"]` Replace x with the ID of the course you want the button to target. **Attribute****Description**course\_id**Required.** The ID of the course the button links to.#### Render a Link Instead of a Button If you prefer a text link rather than a button, use the link shortcode: `[uo_learndash_resume_link]` To output only the raw URL of the learner’s last visited page (for example, to build your own custom link or pass it elsewhere), add the `url_only` attribute: `[uo_learndash_resume_link url_only="yes"]` **Attribute****Description**url\_onlySet to yes to output only the URL of the last visited page instead of a hyperlink.### Styling the Button The Resume button automatically adopts the styles set for form submit buttons on your site, so it should match your theme out of the box. To customize it further, target the following selector in your CSS: `a.learndash-resume-button input[type="submit"]` ### Important Notes - Learners must be **signed in** for the button to work, since it depends on their personal activity history. We recommend placing it on a members-only or password-protected page. - The button hides itself when the learner is **already on the exact page it would link to** (its resume target), to avoid a link that points to the current page. We still recommend placing it on a non-LearnDash page such as a dashboard or landing page. - The button stays hidden for learners who have not yet visited any LearnDash content. ### Related Articles - [Introduction to the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) - [Breadcrumb Links](https://www.uncannyowl.com/knowledge-base/learndash-breadcrumb-links/) - [Quiz Completion Advances to Next Step](https://www.uncannyowl.com/knowledge-base/quiz-completion-advances-to-next-step/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Quiz Completion Advances to Next Step](https://www.uncannyowl.com/knowledge-base/quiz-completion-advances-to-next-step/) **Published:** November 4, 2020 **Author:** Ryan Moore **Content:** ### Overview Keep learners moving through your course without breaking their stride. When this module is active, finishing a quiz sends learners straight to the next step instead of leaving them on the quiz results screen to find their own way forward. ### What This Module Does When a learner finishes a quiz, LearnDash shows a quiz results screen with a continue action. The **Quiz Completion Advances to Next Step** module changes *where that continue action goes* — instead of returning the learner to the quiz’s parent, it sends them to the next step in the course, based on LearnDash’s course structure. For example, a quiz attached to the last topic in a lesson advances the learner to the next lesson. The module only affects quizzes that are associated with a **lesson or topic**. Course-level and global quizzes are left to LearnDash’s own handling. There are no settings to configure. ![Quiz results page showing 1 of 1 correct, with a blue 'Click Here to Continue' button highlighted by an arrow.](https://www.uncannyowl.com/wp-content/uploads/2020/11/learndash-click-here-to-continue.png "learndash-click-here-to-continue - Uncanny Owl") ### Before You Enable It For the smoothest experience, your lessons should mark themselves complete when their quizzes are finished. Otherwise a learner can be advanced past a lesson that LearnDash still considers incomplete and may hit the message: *“Please go back and complete the previous lesson.”* ### How to Enable It 1. In your WordPress dashboard, go to **Uncanny Toolkit**. 2. Find **Quiz Completion Advances to Next Step** in the list of available modules. 3. Click **Activate**. There are no additional settings to configure. Once active, qualifying lesson/topic quizzes route learners to the next course step. ### How It Works in Practice - The module applies only to quizzes associated with a **lesson or topic** — course-level and global quizzes are unaffected. - Whether and when LearnDash shows the continue action (for example, after a passing grade) is governed by your LearnDash quiz settings, not by this module. The module simply redirects that action to the next step. - The destination step is determined entirely by LearnDash’s course structure, so the learner always lands on the next logical step in their progression. ### Troubleshooting If learners are not advanced as expected, confirm the following: - The quiz is attached to a lesson or topic (not a course-level or global quiz). - Lessons mark complete correctly — consider a lesson/topic auto-completion module (see *Before You Enable It* above). - Your LearnDash installation is up to date. ### Related Articles - [Introduction to the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) - [Resume Button](https://www.uncannyowl.com/knowledge-base/learndash-resume/) - [Breadcrumb Links](https://www.uncannyowl.com/knowledge-base/learndash-breadcrumb-links/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Not Enrolled Redirect](https://www.uncannyowl.com/knowledge-base/redirect-user-if-not-enrolled/) **Published:** January 31, 2018 **Author:** Ken **Excerpt:** Learn how to redirect users who attempt to access a course page but are not enrolled in the course. **Content:** ### Overview Send visitors who aren’t enrolled in a course to a sales page, landing page, or sign-up form instead of leaving them on a blank or restricted course screen. The Not Enrolled Redirect module turns “you can’t access this” into a chance to convert. ### What It Does When a user tries to view a course they aren’t enrolled in, this module redirects them to a URL you choose. It applies to: - Logged-out visitors - Logged-in users who are not enrolled in that course Administrators are excluded, so you can always preview the course yourself. Users enrolled through a LearnDash **group** are also treated as enrolled and are not redirected. You set a separate redirect URL for each course, which lets you point every course at its own sales or landing page. The redirect applies to the course page itself, not to individual lessons or topics within the course. **Important:** The redirect only fires for visitors LearnDash considers *not enrolled*. Because **Open** courses grant access to everyone, LearnDash never reports those visitors as “not enrolled,” so the redirect won’t fire on them.) ### Before You Start This module is part of the free **Uncanny Toolkit for LearnDash** and works with LearnDash 3.x. 1. Go to **WordPress Admin > Uncanny Toolkit**. 2. Enable the **Not Enrolled Redirect** module. The per-course redirect field only appears after the module is active. ### How to Set Up a Redirect 1. Open the course you want to protect and go to **Edit Course**. 2. Open the **Settings** tab (the **Display and Content Options** settings). 3. Confirm the course **Access Mode** is set to **Closed**. 4. Locate the **Not enrolled Redirect URL** field and enter the full URL where non-enrolled users should be sent (for example, your sales page). 5. Update the course to save your changes. \[Screenshot: LearnDash Edit Course screen, Settings tab, with the “Not enrolled Redirect URL” field filled in and Access Mode set to Closed\] The redirect URL field supports shortcodes, so you can build dynamic destinations if needed. ### Redirecting to Another Domain By default, WordPress only allows redirects to URLs on your own site. If you want to send users to an external domain, you need to add that domain to WordPress’s list of allowed redirect hosts using the `allowed_redirect_hosts` filter. Add the following to your child theme’s `functions.php` file, replacing `example.com` with the domain you’re redirecting to: ``` add_filter( 'allowed_redirect_hosts', 'uo_allowed_domains_list' ); function uo_allowed_domains_list( $hosts ) { $hosts[] = 'example.com'; return $hosts; } ``` We recommend adding code snippets through a child theme or a dedicated code-snippets plugin so your changes survive theme updates. ### Related Articles - [Log In/Log Out Redirects](https://www.uncannyowl.com/knowledge-base/learndash-login-redirect/) - [Front End Login](https://www.uncannyowl.com/knowledge-base/front-end-login/) - [Show or Hide Content](https://www.uncannyowl.com/knowledge-base/show-hide-content/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/) **Published:** May 7, 2016 **Author:** yuehchin **Excerpt:** Learn how to create different menus for logged in and logged out users. **Content:** ### Menu Item Visibility Show different menu items to logged-in and logged-out visitors, so each audience sees only the links that matter to them. The Menu Item Visibility module adds a simple per-item control to your WordPress menus, with no code required. ### What This Module Does When enabled, Menu Item Visibility adds a visibility setting to every item in your WordPress menus. You can choose whether each item appears for everyone, only for signed-in users, or only for signed-out users. This is ideal for streamlining navigation. For example, you can hide a **Log In** link from members who are already signed in, or show a **My Courses** link only to logged-in students. ### Enabling the Module 1. In your WordPress dashboard, go to **Uncanny Toolkit**. 2. Find **Menu Item Visibility** in the list of modules. 3. Turn the module on. No further configuration is needed at the module level. Once it’s active, the new visibility controls appear automatically inside your menu editor. ### Setting Visibility on a Menu Item Visibility is set individually for each menu item under **Appearance > Menus**. 1. Go to **Appearance > Menus**. 2. Select the menu you want to edit. 3. Click a menu item to expand its settings. 4. Under the **Display Mode** control, choose who should see the item: - **Everyone** (default) - **Logged In Users** - **Logged Out Users** 5. Repeat for any other items you want to control. 6. Click **Save Menu**. ![Group Management settings panel with navigation label 'Group Management' and visibility options (Logged In Users, Logged Out Users, Everyone); includes Remove or Cancel actions.](https://www.uncannyowl.com/wp-content/uploads/2016/05/menu-item-visibility.png "menu item visibility - Uncanny Owl") That’s it. The visibility rule applies immediately on the front end of your site, and any item without a rule continues to display for everyone. ### What This Module Doesn’t Do Menu Item Visibility controls visibility based on login status only. It does not offer role-based granularity, so you can’t restrict a menu item to a specific user role (such as showing a link only to a particular group or membership level). If you need per-role menu control, we recommend the free **[Nav Menu Roles](https://wordpress.org/plugins/nav-menu-roles/)** plugin instead. #### Important: Conflict with Nav Menu Roles Menu Item Visibility and the **[Nav Menu Roles](https://wordpress.org/plugins/nav-menu-roles/)** plugin cannot run at the same time. If you use Nav Menu Roles, disable the **Menu Item Visibility** module in the Uncanny Toolkit to avoid a conflict between the two. Choose one approach based on your needs: - Use **Menu Item Visibility** for simple logged-in vs. logged-out control. - Use **[Nav Menu Roles](https://wordpress.org/plugins/nav-menu-roles/)** if you need to target specific user roles. ### Related Articles - [Log In/Log Out Links](https://www.uncannyowl.com/knowledge-base/log-in-log-out-links/) - [Front End Login](https://www.uncannyowl.com/knowledge-base/front-end-login/) - [Hide Admin Bar](https://www.uncannyowl.com/knowledge-base/hide-admin-bar/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Log In/Log Out Redirects](https://www.uncannyowl.com/knowledge-base/learndash-login-redirect/) **Published:** May 6, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to redirect users to specific pages when they log in and log out of your site. **Content:** ### Overview Send your learners exactly where you want them to go after they log in or log out. This Uncanny Toolkit for LearnDash module lets you set custom destination URLs for non-administrator users, so members land on a course dashboard, a profile page, or any URL you choose instead of the default WordPress screen. ### What This Module Does The **Log In/Log Out Redirects** module sends non-administrator users to URLs you specify: - **After login** — for example, your course list, a “My Courses” page, or a personalized dashboard. - **After logout** — for example, your homepage, a sales page, or a custom goodbye page. Administrators are intentionally excluded from these redirects so they continue to reach /wp-admin/ as usual. This keeps your management workflow intact while giving members a tailored experience. ### How to Set It Up 1. In your WordPress admin, go to **Uncanny Toolkit**. 2. Locate the **Log In/Log Out Redirects** module and click **Activate** (then **Settings** if it doesn’t open automatically). 3. Enter the full destination URL in the **Login Redirect** field (for example, `https://yoursite.com/my-courses/`). 4. Enter the full destination URL in the **Logout Redirect** field (for example, `https://yoursite.com/)`. 5. Click **Save** to apply your changes. We recommend using complete URLs (including `https://`) rather than relative paths to avoid protocol mismatches. ![Modal to configure login/logout redirects with fields for Login Redirect, Logout Redirect, and Priority set to 95, plus Save button](https://www.uncannyowl.com/wp-content/uploads/2016/05/Log-InLog-Out-Redirects.png "Log In:Log Out Redirects - Uncanny Owl") **Important:** If you have **any** other plugin on your site that can redirect users on login or logout, it will, in all likelihood, override this Toolkit redirect. See the Troubleshooting section below before activating this module. ### Adjusting Redirect Priority The module includes an adjustable redirect priority value in its settings. If another plugin or theme is intercepting the redirect before Toolkit can act, increasing this value can help Toolkit take priority. This is a common fix for conflicts with page builders such as Elementor Pro. ### Troubleshooting #### Conflicts With Other Redirect Plugins Plugins that manage login behavior, such as **LoginWP** (formerly Peter’s Login Redirect), **Theme My Login**, and **UserPro**, will all take priority over this module. If your redirect isn’t working, a competing plugin is the most likely cause. - Temporarily deactivate other login/redirect plugins to confirm the conflict. - If you can’t remove the conflicting plugin, configure the redirect within that plugin instead, or try increasing the redirect priority value (see above). **Note:** If a conflict can’t be resolved through Toolkit, a dedicated redirect plugin such as **LoginWP** can be configured to override other plugins and handle the redirect for you. #### Redirects Not Firing or Caching Interference Server-side caching can serve a cached page before the redirect runs, especially on your homepage. - Ask your host to add cache exclusions for the pages involved in the redirect. - Pay particular attention to homepage caching layers such as **Varnish**. **Important:** Always clear your cache after changing redirect settings, and test in a private/incognito window to rule out browser-cached results. #### Redirect Loops or Repeated Login Prompts If users are bounced back to the login screen repeatedly, you’re likely dealing with an HTTPS/HTTP mismatch. - Confirm your SSL certificate is installed and that your **WordPress Address** and **Site Address** (under **Settings > General**) both use https://. - Make sure the redirect URLs you entered use the same protocol (https://) as the rest of your site. - Avoid pointing a login redirect at a page that itself redirects logged-out users back to login, which can create a loop. ### Related Articles - [Front End Login](https://www.uncannyowl.com/knowledge-base/front-end-login/) - [Log In/Log Out Links](https://www.uncannyowl.com/knowledge-base/log-in-log-out-links/) - [Not Enrolled Redirect](https://www.uncannyowl.com/knowledge-base/redirect-user-if-not-enrolled/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Log In/Log Out Links](https://www.uncannyowl.com/knowledge-base/log-in-log-out-links/) **Published:** May 5, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to create links that log users into or out of your site in menus or anywhere else. **Content:** ### Overview Add log in, log out, and registration links anywhere on your site using simple shortcodes, or drop them straight into your navigation menus. The **Log In/Log Out Links** module gives you a fast, code-free way to point users to the right action based on whether they’re signed in. ### What This Module Does Once the module is enabled, you get four shortcodes that display context-aware links: a log in link for signed-out users, a log out link for signed-in users, a combined link that switches automatically, and a link to your registration page. You can place these shortcodes in pages, posts, and widgets, or add them to any WordPress menu through a dedicated **Uncanny Menu Links** section. ### Shortcode Reference Wrap your link text inside the shortcode tags. The text between the opening and closing tags becomes the clickable link. **Shortcode** **What it does** ``` [``` uo_login_link ```] ``` Displays a **log in** link to signed-out users. ``` [``` uo_logout ```] ``` Displays a **log out** link to signed-in users. ``` [``` uo_loginout ```] ``` Automatically shows a **log in** link to signed-out users and a **log out** link to signed-in users. ``` [``` uo_register ```] ``` Displays a link to your site’s **registration page**. For example, to show a log in prompt you’d use: ``` [``` uo_login_link ```] Log In [``` /uo_login_link ```] ``` The \[`uo_loginout`\] shortcode is the most convenient option for navigation menus and headers, since a single link handles both states for you. ### Adding Links to a Menu You can add log in, log out, and registration links directly to any WordPress menu without writing a shortcode. While logged in as an administrator: 1. Go to **Appearance > Menus**. 2. Locate the **Uncanny Menu Links** section on the left side of the screen. 3. Check the menu entries you want to add. 4. Click **Add to Menu**. 5. Drag the new items into the desired position, then click **Save Menu**. ![WordPress menu editor: Uncanny Menu Links with Log In selected; other items Log Out, Log In / Log Out, Register unchecked; Add to Menu button visible. On the right, Log In item configured with URL '#uo_log_in_link', label 'Log In', no parent, order 1 of 1.](https://www.uncannyowl.com/wp-content/uploads/2016/05/login-logout-menu-expanded.png "login logout menu expanded - Uncanny Owl") #### #### About Registration Links The Toolkit does not include its own registration page or replace WordPress’s built-in registration functions. The [Register](https://www.uncannyowl.com/wp-login.php?action=register) link simply points to whatever registration setup already exists on your site. If you want a branded, fully featured registration experience, we recommend pairing the Toolkit with a dedicated form plugin such as Gravity Forms with the User Registration add-on. ### Optional: Front End Login Modal If you’d like the log in link to open a pop-up modal instead of loading a separate page, the **Front end login modal** menu item is available. To use it, make sure: - The **Front End Login** module is enabled. - **AJAX** is enabled in the Front End Login settings. - A **Login Page** is set in the Front End Login settings. The modal works with any login template — there is no requirement to use a specific template. ### Related Articles - [Front End Login](https://www.uncannyowl.com/knowledge-base/front-end-login/) - [Log In/Log Out Redirects](https://www.uncannyowl.com/knowledge-base/learndash-login-redirect/) - [Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Introduction to the Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) **Published:** April 18, 2016 **Author:** Ryan Moore **Excerpt:** An introduction to the Uncanny LearnDash Toolkit plugin. **Content:** ### Overview The Uncanny Toolkit is a free, modular plugin that fills the gaps in LearnDash — adding the login pages, navigation, and front-end features that course creators reach for most. Turn on only the modules you need, and skip the custom code. ### What the Toolkit Does LearnDash is a powerful LMS, but building a polished learner experience around it usually means stitching together shortcodes, snippets, and workarounds. The Uncanny Toolkit packages those common needs as ready-to-use **modules** you enable from a single settings screen — no developer required. Each module is self-contained and independent. Activate a branded front-end login, add course breadcrumbs, hide the admin bar from students, show learners their certificates — or all of the above. Because the Toolkit adds almost no styling of its own, modules inherit your theme’s design and stay out of your way. The Toolkit is the free foundation; [Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-pro-toolkit/) adds advanced modules such as course timers, group registration, CSV reporting, and more. ### The Modules Enable any of these under **Uncanny Toolkit > Modules**. We recommend turning on only the modules you actively use. #### Login & Access - [Front End Login](https://www.uncannyowl.com/knowledge-base/front-end-login/) — Branded login, forgot-password, and reset-password forms anywhere on your site, with optional modal login, reCAPTCHA, and two-factor authentication. - [Log In/Log Out Links](https://www.uncannyowl.com/knowledge-base/log-in-log-out-links/) — Add login, logout, and register links to menus and pages with shortcodes. - [Log In/Log Out Redirects](https://www.uncannyowl.com/knowledge-base/learndash-login-redirect/) — Send users to the right page after they log in or out. - [Not Enrolled Redirect](https://www.uncannyowl.com/knowledge-base/redirect-user-if-not-enrolled/) — Redirect visitors who aren’t enrolled in a course to a sales or landing page. #### Navigation & Learner Experience - [Breadcrumb Links](https://www.uncannyowl.com/knowledge-base/learndash-breadcrumb-links/) — Add course → lesson → topic breadcrumbs so learners always know where they are. - [Resume Button](https://www.uncannyowl.com/knowledge-base/learndash-resume/) — Drop learners back exactly where they left off. - [Quiz Completion Advances to Next Step](https://www.uncannyowl.com/knowledge-base/quiz-completion-advances-to-next-step/) — Automatically move learners forward after they complete a quiz. - [Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/) — Show different menu items to logged-in and logged-out visitors. - [Show or Hide Content](https://www.uncannyowl.com/knowledge-base/show-hide-content/) — Conditionally display content based on login status with shortcodes. - [Hide Admin Bar](https://www.uncannyowl.com/knowledge-base/hide-admin-bar/) — Remove the WordPress admin bar for students for a cleaner front end. #### Certificates - [Show Certificates](https://www.uncannyowl.com/knowledge-base/show-learndash-certificates/) — Make earned course and quiz certificates available to learners. - [Certificate Widget](https://www.uncannyowl.com/knowledge-base/learndash-certificate-widget/) — Display a learner’s certificates in any widget area or via shortcode. #### Administration & Tools - [Groups in User Profiles](https://www.uncannyowl.com/knowledge-base/learndash-groups-user-profiles/) — See a user’s LearnDash group memberships right on their profile. - [User Switching](https://www.uncannyowl.com/knowledge-base/user-switching-module/) — Log in as another user to troubleshoot, then switch back instantly. - [Disable Emails](https://www.uncannyowl.com/knowledge-base/disable-emails/) — Block all outgoing email — ideal for staging and testing. - [Topics Autocomplete Lessons (Legacy)](https://www.uncannyowl.com/knowledge-base/topics-autocomplete-lessons/) — A legacy auto-completion module retained for backward compatibility. ### A Refreshed Admin Experience As of v3.8.0, the Uncanny Toolkit uses the standardized Uncanny Owl admin interface — a cleaner, consistent settings design shared across Uncanny Owl plugins. Your modules and settings work exactly as before; the screens are simply easier to navigate. ![Admin dashboard for Uncanny Toolkit showing multiple module cards with descriptions and green toggle switches.](https://www.uncannyowl.com/wp-content/uploads/2016/04/toolkit-free-modules-1030x582.png "toolkit free modules - Uncanny Owl") ### Getting Started 1. [Install the Uncanny Toolkit](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/) and activate it. 2. Open **Uncanny Toolkit > Modules** and enable the modules you need. 3. Configure each module under **Uncanny Toolkit > Settings**. New to the plugin? Start with the workflow-based [Getting Started with the Uncanny Toolkit](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/) guide to find the right modules for your goals. ### Related Articles - [Install the Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/) — Installation and first-time setup - [Uncanny Toolkit – Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-quick-reference/) — Every shortcode in one place - [Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/downloads/uncanny-pro-toolkit/) — Advanced modules for growing course sites **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Install the Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/) **Published:** April 19, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to install the Uncanny LearnDash Toolkit on your site. **Content:** ### Overview The Uncanny Toolkit is a free plugin available from the WordPress.org plugin directory. Installation takes a couple of minutes, and you choose which modules to enable afterward. ### Requirements - **WordPress 5.8** or higher, with the **LearnDash LMS** plugin installed and active - **PHP 7.4** or higher - **LearnDash 4.2** or higher ### Installation 1. Log in to your WordPress admin dashboard. 2. Go to **Plugins > Add New**. 3. Search for **Uncanny Toolkit for LearnDash**. 4. Click **Install Now**, then **Activate**. ![Plugin card for Uncanny Toolkit for LearnDash with owl mascot, brief description, and Install Now button](https://www.uncannyowl.com/wp-content/uploads/2016/04/uncanny-toolkit-for-learndash-install.png "uncanny toolkit for learndash install - Uncanny Owl") After activation, a new **Uncanny Toolkit** menu appears in your WordPress admin. ### Enable Your Modules The Toolkit ships with every module turned **off** so you can enable only what you need. 1. Go to **Uncanny Toolkit > Modules**. 2. Find the module you want and toggle it on. 3. Click **Save** if prompted. 4. Configure the module under **Uncanny Toolkit > Settings**. ![Admin dashboard for Uncanny Toolkit showing multiple module cards with descriptions and green toggle switches.](https://www.uncannyowl.com/wp-content/uploads/2016/04/toolkit-free-modules-1030x582.png "toolkit free modules - Uncanny Owl") **We recommend** enabling only the modules you actively use. Each active module adds a small amount of processing, so leaving unused modules off keeps your site lean. ### A Note on Styling The Toolkit intentionally includes very little CSS of its own. This keeps modules from clashing with your theme — front-end elements like login forms and breadcrumbs inherit your theme’s design. If you want to fine-tune the appearance, you can add your own CSS or, for login forms, use the [Front End Login Modern theme](https://www.uncannyowl.com/knowledge-base/front-end-login/) colour selectors. ### A Refreshed Admin Interface As of v3.8.0, the Toolkit uses the standardized Uncanny Owl admin design that’s shared across Uncanny Owl plugins. Everything works as before — the settings screens are simply cleaner and more consistent. ### Installing Toolkit Pro Alongside the Free Version [Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-pro-toolkit/) runs alongside the free Toolkit and adds advanced modules. You can keep both active at the same time — Pro modules appear in the same **Modules** and **Settings** screens. Install Pro by uploading its ZIP under **Plugins > Add New > Upload Plugin** and entering your license key. ### Next Steps 1. Review the [Introduction to the Uncanny Toolkit](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) to see what each module does. 2. Enable and configure the modules that match your goals. 3. Keep the [Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-quick-reference/) handy for shortcodes. ### Related Articles - [Introduction to the Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) — Module overview and directory - [Front End Login](https://www.uncannyowl.com/knowledge-base/front-end-login/) — A popular first module to set up - [Uncanny Toolkit – Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-quick-reference/) — All shortcodes in one place **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Hide Admin Bar](https://www.uncannyowl.com/knowledge-base/hide-admin-bar/) **Published:** April 22, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to hide the black WordPress admin bar at the top of the screen from users with specific roles. **Content:** ### Overview The **Hide Admin Bar** module removes the WordPress admin bar from the front end for the user roles you choose, giving students a clean, professional, distraction-free experience that keeps them focused on your courses instead of the dashboard. By default, WordPress displays a black admin bar across the top of the screen for logged-in users. For students, this bar adds clutter and can tempt them to wander into the dashboard. The **Hide Admin Bar** module lets you switch off that bar on the front end for any roles you select, while leaving it intact for the administrators and managers who actually need it. The module is role-based: you simply check off the roles that should not see the admin bar, and those users will browse your site without it. ### Configuring the Module 1. In your WordPress dashboard, go to **Uncanny Toolkit** and open the **Modules** screen. 2. Locate the **Hide Admin Bar** module and click to enable it. 3. Open the module’s **Settings**. 4. You’ll see a list of user roles, each with its own checkbox. Check off every role that should **not** see the front-end admin bar. 5. Save your settings. Once saved, members of the selected roles will no longer see the WordPress admin bar when viewing the front end of your site. ![Hide Admin Bar dialog with role checkboxes; Subscriber and Customer selected; options list includes Editor, Author, Contributor, etc.; bottom buttons: Help, Close, Save module.](https://www.uncannyowl.com/wp-content/uploads/2016/04/Hide-Admin-Bar-settings.png "Hide Admin Bar settings - Uncanny Owl") ### How Roles Behave A few details determine which roles appear in the list and how they’re handled: - **Administrators are always protected.** Any role with the **manage\_options** capability is excluded from this module and will not appear in the list of roles. This typically includes **Administrators** and any other roles that have been granted that capability through a role-editing plugin. These users always keep the admin bar. - **Only eligible roles are shown.** The role list contains the roles you can safely hide the bar for, such as **Subscriber**, **Customer**, and any custom student roles that lack the **manage\_options** capability. We recommend hiding the admin bar for your student-facing roles. On a typical LearnDash site, that means checking off the **Subscriber** and **Customer** roles so learners get a polished front-end experience while your team retains full dashboard access. ### Related Articles - [Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/) - [Front End Login](https://www.uncannyowl.com/knowledge-base/front-end-login/) - [Introduction to the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Groups in User Profiles](https://www.uncannyowl.com/knowledge-base/learndash-groups-user-profiles/) **Published:** April 30, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to display the groups a user is a member of on the Edit User screen in the WordPress admin panel. **Content:** See at a glance which LearnDash Groups a user belongs to, right on their WordPress profile screen, without clicking through every group to check. ### Overview On sites with more than a handful of LearnDash Groups, answering a simple question like “which groups is this user in?” can mean opening each group one by one. The **Groups in User Profiles** module from the Uncanny Toolkit for LearnDash solves this by listing every group a user belongs to directly on their WordPress admin profile (edit-user) screen. This is a read-only convenience for administrators. It surfaces group membership where you’re already working, making it faster to trace a user’s access and troubleshoot enrollment or permissions questions. This module is part of the free Uncanny Toolkit for LearnDash. If you haven’t installed the Toolkit yet, see [Install the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/). ### How to Enable It 1. In your WordPress admin, go to **Uncanny Toolkit**. 2. Locate the **Groups in User Profiles** module. 3. Click **Activate** to turn the module on. There are no additional settings to configure. Once activated, the group list appears automatically on user profile screens. ### What It Shows Once the module is active, the user’s profile screen displays a list of all LearnDash Groups that user currently belongs to. This gives administrators a quick way to trace group membership and access across sites that manage many groups. The list is **display-only**. You cannot add or remove a user from a group from this view. To change a user’s group memberships, you’ll still need to open the associated LearnDash Group and manage its users there. ![Admin dashboard: left navigation with a blue 'Users' header; main area 'LearnDash Groups' listing seven group links.](https://www.uncannyowl.com/wp-content/uploads/2016/04/Groups-in-User-Profiles.png "Groups in User Profiles - Uncanny Owl") ### Where to Find It The group list appears on the WordPress backend, not the front end. To view it: 1. Go to **Users > All Users**. 2. Click the user you want to inspect (or use the **Edit** link). 3. Scroll down the profile screen to find the section listing the user’s LearnDash Group memberships. ### Displaying Groups on the Front End (Pro) The Groups in User Profiles module is built for administrators working in the WordPress dashboard. If you want to show a user their own group memberships on the front end of your site, the Uncanny Toolkit Pro plugin includes a **Group List shortcode** for that purpose. The Group List shortcode is part of Toolkit Pro, so you’ll need Pro installed with that module activated to use it. For more on what Toolkit and Toolkit Pro offer, see the [Introduction to the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/). ### Related Articles - [Introduction to the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) - [Install the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/) - [Hide Admin Bar](https://www.uncannyowl.com/knowledge-base/hide-admin-bar/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Getting Started with the Uncanny Toolkit](https://www.uncannyowl.com/knowledge-base/getting-started-with-the-uncanny-toolkit/) **Published:** June 29, 2026 **Author:** David Chambo **Content:** ### What Is the Uncanny Toolkit? The Uncanny Toolkit for LearnDash is a free, modular plugin that adds the features course creators reach for most — a branded login experience, course navigation, certificate displays, admin shortcuts, and more. Instead of installing a separate plugin or pasting code snippets for each need, you enable self-contained **modules** from one settings screen and configure only what you use. Common goals the Toolkit solves include replacing the default WordPress login page, helping learners navigate and resume courses, showing students their certificates, and giving administrators tools to manage and troubleshoot their site. ### How the Toolkit Works The basic flow is the same for every module: 1. **Install and activate** the Toolkit from the WordPress plugin directory. 2. **Enable a module** under **Uncanny Toolkit > Modules** — every module ships turned off, so you opt in to exactly what you need. 3. **Configure it** under **Uncanny Toolkit > Settings**, then add any blocks or shortcodes to your pages. Because each module is independent, you can start with one and add more over time. We recommend enabling only the modules you actively use. ### Choose Your Workflow Use the guide below to jump straight to the modules that match what you’re trying to do. #### I want a branded login experience Replace the generic `wp-login.php` page with login, forgot-password, and reset-password forms that live on your own pages and match your theme. **Start here:** - [Front End Login](https://www.uncannyowl.com/knowledge-base/front-end-login/) — Branded login forms, modal login, reCAPTCHA, and two-factor authentication - [Log In/Log Out Links](https://www.uncannyowl.com/knowledge-base/log-in-log-out-links/) — Add login/logout/register links to menus - [Log In/Log Out Redirects](https://www.uncannyowl.com/knowledge-base/learndash-login-redirect/) — Send users to the right page after sign-in - [Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/) — Show different menu items to logged-in vs logged-out visitors #### I want to improve course navigation and completion Help learners orient themselves, pick up where they left off, and move through content smoothly. **Start here:** - [Breadcrumb Links](https://www.uncannyowl.com/knowledge-base/learndash-breadcrumb-links/) — Course → lesson → topic breadcrumbs - [Resume Button](https://www.uncannyowl.com/knowledge-base/learndash-resume/) — Return learners to their last spot - [Quiz Completion Advances to Next Step](https://www.uncannyowl.com/knowledge-base/quiz-completion-advances-to-next-step/) — Auto-advance after a quiz - [Hide Admin Bar](https://www.uncannyowl.com/knowledge-base/hide-admin-bar/) — A cleaner, distraction-free front end for students #### I want to show learners their certificates Make earned certificates easy to find and download. **Start here:** - [Show Certificates](https://www.uncannyowl.com/knowledge-base/show-learndash-certificates/) — Make certificates available to learners (enable this first) - [Certificate Widget](https://www.uncannyowl.com/knowledge-base/learndash-certificate-widget/) — Display certificates in a widget area or with a shortcode #### I want to control who sees what Gate content and menu items based on whether a visitor is logged in or enrolled. **Start here:** - [Show or Hide Content](https://www.uncannyowl.com/knowledge-base/show-hide-content/) — Conditionally display content with shortcodes - [Not Enrolled Redirect](https://www.uncannyowl.com/knowledge-base/redirect-user-if-not-enrolled/) — Send non-enrolled visitors to a sales page - [Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/) — Show/hide menu items by login status #### I want admin tools for managing and testing my site Troubleshoot learner issues and work safely on a staging site. **Start here:** - [User Switching](https://www.uncannyowl.com/knowledge-base/user-switching-module/) — See the site exactly as a specific learner, then switch back - [Groups in User Profiles](https://www.uncannyowl.com/knowledge-base/learndash-groups-user-profiles/) — View a user’s group memberships from their profile - [Disable Emails](https://www.uncannyowl.com/knowledge-base/disable-emails/) — Block all outgoing email on a staging or test site ### First-Time Setup Checklist 1. **Install and activate** the Toolkit. See [Install the Uncanny Toolkit](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/). 2. **Confirm requirements** — LearnDash active, PHP 7.4+, LearnDash 4.2+, WordPress 5.8+. 3. **Enable your first module** under **Uncanny Toolkit > Modules** based on the workflow above. 4. **Configure it** under **Uncanny Toolkit > Settings** and add any required block or shortcode to a page. 5. **Test it** on the front end in an incognito window (especially login and redirect features, which behave differently for logged-in users). ### Free vs. Pro The free Toolkit covers the essentials. If you need advanced features — course timers, group registration and management, bulk CSV reporting, certificate emailing, and more — see [Uncanny Toolkit Free vs. Toolkit Pro](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-quick-reference/) and [Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-pro-toolkit/). ### Related Articles - [Introduction to the Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) — Full module directory - [Install the Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/) — Installation and setup - [Uncanny Toolkit – Quick Reference](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-toolkit-quick-reference/) — Every shortcode in one place **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Front End Login](https://www.uncannyowl.com/knowledge-base/front-end-login/) **Published:** April 21, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to implement a customized front end login page for your site. **Content:** ### Overview Put a fully branded login experience anywhere on your site — no more sending learners to the default wp-login.php screen. Front End Login lets you place login, forgot-password, and reset-password forms on your own pages so the entire sign-in flow matches your design. The Front End Login module replaces WordPress’ generic login page with forms you control. You choose where the login form lives, how it looks, and where users land after they sign in. It includes built-in forgot-password and reset-password flows, optional AJAX submission, a modal (pop-up) login, Google reCAPTCHA spam protection, and two-factor authentication support. This is the foundation of most custom membership and e-learning sites built on LearnDash: pair it with [Log In/Log Out Links](https://www.uncannyowl.com/knowledge-base/log-in-log-out-links/) and [Log In/Log Out Redirects](https://www.uncannyowl.com/knowledge-base/learndash-login-redirect/) to deliver a seamless, on-brand sign-in journey. ### Setup 1. Enable the **Front End Login** module under **Uncanny Toolkit > Modules**. 2. Create a new page (for example, “Log In”) and add the **Front End Login** Gutenberg block, or place the ## Login Log in below to access your account. Username or Email Address Password Remember Me [Forgot Password?](https://www.uncannyowl.com/login/?action=lostpassword) shortcode on it. 3. Go to **Uncanny Toolkit > Settings** and open the **Front End Login** settings. 4. Set this page as your **Login Page** (see the setting below). Users who try to reach the default WordPress login screen will be redirected here instead. 5. Configure the form’s theme, colours, and behaviour to match your site. ![Front End Login customization modal with template and color pickers, login page options, verification settings, and Save module.](https://www.uncannyowl.com/wp-content/uploads/2016/04/front-end-login-settings.png "front end login settings - Uncanny Owl") ### Settings The module includes extensive customization options. The key settings are: - **Enable AJAX** — Adds AJAX form submission. This must be on to use the modal login shortcode and the modal login menu item. - **Select Template** — Choose the design of the login form (see [Choose a Login Form Theme](https://docs.google.com/document/d/1n52xWg8-m8rPrF_RO9F-cP7qEfamSVvZcq4GNytWX58/edit#choose-a-login-form-theme) below). - **Login Page** — Select the page that hosts your login form. When users attempt to access the WordPress login page, they are redirected here. This page must contain the Front End Login block or the ## Login Log in below to access your account. Username or Email Address Password Remember Me [Forgot Password?](https://www.uncannyowl.com/login/?action=lostpassword) shortcode. - **Manual User Verification** — When enabled, users who register from the front end must be approved by an administrator before they can log in. - **Login Form** — Customize the main login form: - **Show Register Link** — Displays a link below the form using your **Register Link Text** and **Register Link** URL. - **Hide All For Logged In Users** — Hides the form entirely from users who are already logged in. - **Message For Logged In Users** — Content shown to logged-in users (unless **Hide All For Logged In Users** is enabled). - **Modal login** — Set the button label for the modal login shortcode and choose whether to dim the background when the modal opens. - **Google reCAPTCHA Settings** — Enter valid reCAPTCHA v2 **Site Key** and **Secret Key** values to add an anti-spam challenge to the login form. - **Cloudflare Turnstile Settings** — Enter your Turnstile **Site Key** and **Secret Key** to use Cloudflare Turnstile as a privacy-friendly, no-puzzle alternative to reCAPTCHA (see [Spam Protection](https://docs.google.com/document/d/1n52xWg8-m8rPrF_RO9F-cP7qEfamSVvZcq4GNytWX58/edit#spam-protection-recaptcha-or-cloudflare-turnstile) below). - **Forgot Password Form / Forgot Password Email / Reset Password Form** — Customize the appearance, behaviour, and email content of the password-reset flow. - **Require strong password** — When checked, new passwords must be a minimum of 8 characters with at least one uppercase letter, one lowercase letter, and one number. - **Two-Factor Authentication** — Shows whether 2FA is active on your site (see [Two-Factor Authentication](https://docs.google.com/document/d/1n52xWg8-m8rPrF_RO9F-cP7qEfamSVvZcq4GNytWX58/edit#two-factor-authentication) below). ### Choose a Login Form Theme Use the **Select Template** setting to pick the look of your login form: - **Default** — A clean, standard login form. - **Boxed with shadow** — A styled form with a drop shadow. - **Modern** *(new in v3.8.0)* — A refreshed login form design (labeled **Modern** in the **Select Template** dropdown) with built-in **colour pickers**. When Modern is selected, four colour fields appear — **Primary Color** (used for titles, buttons, and links), **Text Color**, **Background Color**, and **Border Color** — letting you match the form to your brand directly from the settings page, with **no custom CSS required**. **Tip:** The **Modern** template offers the most complete set of built-in colour controls and is the recommended starting point for new sites that want on-brand colours without custom CSS. ### Shortcodes The module includes three shortcodes: **Shortcode****What it does** ## Login Log in below to access your account. Username or Email Address Password Remember Me [Forgot Password?](https://www.uncannyowl.com/login/?action=lostpassword) Displays the full Front End Login form using your selected template and settings. Place this on your designated **Login Page**. Remember Me [Forgot Password?](https://www.uncannyowl.com/login/?action=lostpassword)A barebones username/password form for secondary pages, without the full template styling.Displays a link (styleable as a button) that opens a modal login pop-up when clicked.#### Login redirects Both Remember Me [Forgot Password?](https://www.uncannyowl.com/login/?action=lostpassword) and ## Login Log in below to access your account. Username or Email Address Password Remember Me [Forgot Password?](https://www.uncannyowl.com/login/?action=lostpassword) support a redirect attribute, useful when different login pages should send users to different destinations: Remember Me [Forgot Password?](https://www.uncannyowl.com/login/?action=lostpassword)For role-based redirects, use the [Log In/Log Out Redirects module](https://www.uncannyowl.com/knowledge-base/learndash-login-redirect/). You can also append `?redirect_to=` to the login page URL to send users to a specific page after logging in: ``` https://www.yoursite.com/login?redirect_to=/my-courses/ ``` ### Two-Factor Authentication Front End Login integrates with the free [WP 2FA plugin by Melapress](https://melapress.com/wordpress-2fa/) to add two-factor authentication to your front-end login form. When WP 2FA is installed and configured, the module automatically extends the 2FA challenge to your custom login page — including **backup code** entry — so users get the same security on your branded form that they would on the default WordPress login. As of Toolkit v3.8.0, this integration uses the WP 2FA REST API for more reliable code verification and backup-code handling. To enable it: 1. Install and configure the **WP 2FA** plugin and set up your 2FA policy there. 2. The **Two-Factor Authentication** section of the Front End Login settings will indicate that 2FA is active. No additional Toolkit configuration is required. ![Two-factor authentication login form with 6-digit code entry and Verify Code button](https://www.uncannyowl.com/wp-content/uploads/2016/04/2FA-active-1030x640.png "2FA active - Uncanny Owl") **Note:** Configure your 2FA rules in the WP 2FA plugin itself. See the [WP 2FA documentation](https://melapress.com/support/kb/) for policy and enforcement options. ### Spam Protection: reCAPTCHA or Cloudflare Turnstile Front End Login can add a spam-protection challenge to the login form using either **Google reCAPTCHA v2** or **Cloudflare Turnstile**. Both are configured in the Front End Login settings — add the keys for whichever service you prefer. - **Google reCAPTCHA** — In the **Google reCAPTCHA Settings** section, enter your reCAPTCHA v2 **Site Key** and **Secret Key**. - **Cloudflare Turnstile** — In the **Cloudflare Turnstile Settings** section, enter your Turnstile **Site Key** and **Secret Key**. Turnstile becomes active as soon as both keys are filled in. Turnstile is a privacy-focused alternative that usually verifies visitors without a visible puzzle. You can also customize the messages learners see: - **Turnstile Not Checked Message** — Shown when the challenge hasn’t been completed (default: *Verify you are human.*). - **Turnstile Error Message** — Shown when validation fails. - **Turnstile Render Error Message** — Shown if the Turnstile widget can’t load. ![Cloudflare Turnstile settings form: Site Key, Secret Key, and message fields for not checked, error, and render error statuses.](https://www.uncannyowl.com/wp-content/uploads/2016/04/turnstile-settings.png "turnstile settings - Uncanny Owl") **Important:** Use **one** challenge service at a time. Don’t enter keys for both reCAPTCHA and Turnstile, and don’t run a separate reCAPTCHA/Turnstile plugin that also modifies login forms — overlapping challenges will conflict. To get your keys, see Google’s reCAPTCHA admin console or the Cloudflare Turnstile dashboard. ### Adding a Modal Login to a Menu The modal login form can open from any menu link, but it requires the [Log In/Log Out Links module](https://www.uncannyowl.com/knowledge-base/log-in-log-out-links/) to also be enabled. With both modules active: 1. Go to **Appearance > Menus**. 2. Find the **Uncanny Menu Links** section. 3. Add a modal login link to your menu. **Note:** A **Login Page** must be set in the Front End Login settings for the modal login to work from a menu. ### For Developers #### The login\_form action hook *(new in v3.8.0)* Toolkit v3.8.0 added a `login_form` action hook to the login templates, giving developers a reliable place to inject custom markup or fields into the front-end login form. This mirrors the behaviour of WordPress’ core `login_form` hook within the Toolkit’s templates. #### Overriding the login templates Since Toolkit v3.1, you can override the login templates in an upgrade-safe way by copying them into your theme. For example, to override the default login form, copy: `wp-content/plugins/uncanny-learndash-toolkit/src/templates/frontend-login/default-login.php` to: `wp-content/themes/your-theme/uncanny-toolkit/frontend-login/default-login.php` The copied file then overrides the plugin’s version. **Warning:** Never edit template files inside the Uncanny Toolkit plugin folder directly — they are overwritten on every plugin update. ### Troubleshooting **Important:** Make sure your login page is **not** cached. If you see password-reset errors, redirect errors, or users being logged out unexpectedly, a caching plugin or server-side cache is the most common cause. Exclude the login page from all caching. Also avoid running a separate reCAPTCHA or Cloudflare Turnstile plugin that modifies login forms — it will likely conflict with the Toolkit’s built-in reCAPTCHA/Turnstile support. #### If You Lock Yourself Out If you save invalid settings and find you can no longer log in: 1. Connect to your site by FTP. 2. Rename the `/wp-content/plugins/uncanny-learndash-toolkit/` folder temporarily to disable it. 3. Log in as an administrator from the default WordPress login page. 4. Rename the folder back and reactivate the Toolkit while still signed in. 5. Correct the settings on the **Uncanny Toolkit > Settings** page and test the login page again in an incognito window. This can happen if a maintenance-mode or site-wide protection plugin conflicts with Front End Login, or if your redirects create a loop. ### Related Articles - [Getting Started with the Uncanny Toolkit](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) — Plan your login and membership flow - [Log In/Log Out Links](https://www.uncannyowl.com/knowledge-base/log-in-log-out-links/) — Add login, logout, and register links to menus - [Log In/Log Out Redirects](https://www.uncannyowl.com/knowledge-base/learndash-login-redirect/) — Send users to the right page after signing in - [Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/) — Show different menu items to logged-in and logged-out visitors **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Disable Emails](https://www.uncannyowl.com/knowledge-base/disable-emails/) **Published:** January 2, 2020 **Author:** Ken **Excerpt:** Learn how to instantly disable all outgoing emails from your site. **Content:** ### Overview The **Disable Emails** module stops your site from sending any outgoing email, so you can safely test, stage, or migrate without accidentally notifying real users. ### What This Module Does When active, **Disable Emails** intercepts WordPress’s `wp_mail()` function and prevents all outgoing messages from leaving your site. Because nearly every WordPress plugin sends mail through `wp_mail()`, this effectively blocks course notifications, password resets, comment alerts, and any other email your site would normally generate. To keep things obvious, the module adds a reminder to your WordPress admin bar whenever it’s turned on, so you always know email is being blocked. ![](https://www.uncannyowl.com/wp-content/uploads/2020/01/disable-wordpress-emails.png "disable-wordpress-emails - Uncanny Owl")### How to Enable It 1. In your WordPress dashboard, go to **Uncanny Toolkit > Modules**. 2. Locate the **Disable Emails** module. 3. Click **Activate**. There are no additional settings to configure. The module works as a simple on/off switch: once it’s active, all outgoing email is blocked, and the admin-bar reminder appears. ![Panel 'Disable Emails' with a green toggle-on switch; explains emails are blocked while active and a Learn More button appears below.](https://www.uncannyowl.com/wp-content/uploads/2020/01/disabled-emails-enabled.png "disabled emails enabled - Uncanny Owl")**Important:** While this module is active, it blocks ALL outgoing email from your site, not just LearnDash messages. This includes password resets, order receipts, form notifications, and admin alerts. Do not leave it enabled on a live production site, or your users will stop receiving important emails. ### When to Use This This module is built for situations where you want your site to behave normally without actually sending mail: - **Staging environments:** Keep test accounts and copied user data from receiving real notifications. - **Development and debugging:** Trigger and test email-driven workflows without flooding inboxes. - **Site migrations:** Prevent users from receiving notifications while you move or rebuild a site. In each case, you get the safety of a fully blocked outbox while everything else on the site continues to run as usual. ### Pairing With an Email Logging Plugin Because blocked emails are never delivered, you won’t see them anywhere by default. If you need to confirm *which* emails your site would have sent, we recommend pairing this module with an email logging plugin such as [**Email Log**](https://en-ca.wordpress.org/plugins/email-log/) or . The logging plugin records every message your site attempts to send, while **Disable Emails** ensures none of them actually go out, giving you a complete record without any real delivery. ### Limitations This module only blocks email sent through WordPress’s `wp_mail()` function. In practice this covers nearly every WordPress plugin, and there are no known cases of email bypassing the block. However, if a plugin or service sends mail through its own external method instead of `wp_mail()`, that mail may not be caught by this module. ### Related Articles - [Introduction to the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) - [Install the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/) - [User Switching](https://www.uncannyowl.com/knowledge-base/user-switching-module/) **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Certificate Widget](https://www.uncannyowl.com/knowledge-base/learndash-certificate-widget/) **Published:** April 25, 2016 **Author:** yuehchin **Excerpt:** Learn how to add a widget that displays the user's earned LearnDash certificates. **Content:** ### Overview The Certificate Widget gives your learners one convenient place to find every certificate they’ve earned. Drop it into any sidebar, footer, or widget area and signed-in users will see a tidy, linked list of their available certificates. ### What the Widget Does The Certificate Widget displays a list of the LearnDash certificates a logged-in user has earned — including **course**, **quiz**, and **group** certificates. Each item links to the certificate so learners can view or download it on demand. Because the list is personalized per user, it’s a great fit for a “My Account” page, a course dashboard, or a persistent sidebar. ### Prerequisites - **LearnDash** must be active. - The **Certificate Widget** module must be enabled under **Uncanny Toolkit > Modules**. That’s all the widget needs — it builds the certificate list directly from LearnDash. (It does not depend on the separate **Show Certificates** module; that module simply provides an equivalent *shortcode* — see [Using a Shortcode Instead](https://docs.google.com/document/d/1WBSrEb3-yIWjU0aenVosoInZsUbSZgeDNfqC575mVpI/edit#using-a-shortcode-instead) below.) ### Adding the Widget 1. In your WordPress admin, go to **Uncanny Toolkit > Modules** and confirm the **Certificate Widget** module is enabled. 2. Go to **Appearance > Widgets**. 3. Locate the **Certificates – Uncanny Toolkit** widget and add it to your chosen widget area (for example, a sidebar or footer). ### Configuring the Widget Once the widget is placed, you can customize these settings: - **Title** – The heading shown above the list (default: *Your certificates*). - **No certificates message** – The text shown when a learner has no certificates yet (default: *Complete courses to earn certificates*). - **Certificate Order** – The sort direction: **Ascending** or **Descending**. - **Certificate Order By** – Order certificates by **Title** or by **Date Earned**. ![Settings panel 'Certificates - Uncanny Toolkit' showing Title 'Your certificates', No certificates message 'Complete courses to earn certificates', and sort options (Ascending/Descending and Title/Date Earned).](https://www.uncannyowl.com/wp-content/uploads/2016/04/certificate-widget.png "certificate widget - Uncanny Owl") ### Display Course/Quiz Titles or Certificate Titles By default, the widget labels each list item using the course or quiz title. If you’d prefer the list to show the certificate’s own title instead, enable **Display Certificate title instead of Course/Quiz title** from the **Uncanny Toolkit > Modules** page, under the Certificate Widget module’s settings. We recommend using certificate titles when your certificate names are more descriptive or learner-friendly than the underlying course and quiz names. ![Modal: Certificate Widget settings dialog with a checked option to display certificate title instead of course/quiz title; Help, Close, and Save module buttons present.](https://www.uncannyowl.com/wp-content/uploads/2016/04/certificate-widget-settings.png "certificate widget settings - Uncanny Owl") ### Using a Shortcode Instead If you’d rather place a certificate list inside a page, post, or template instead of a widget area, use the` [uo_learndash_certificates] `shortcode. Note that this shortcode is provided by the **Show Certificates** module, so enable **Show Certificates** if you want to use it. It supports attributes for filtering by course, quiz, and group certificates and for a custom heading — see the [Show Certificates](https://www.uncannyowl.com/knowledge-base/show-learndash-certificates/) article for the full attribute list. ### Related Articles - [Show Certificates](https://www.uncannyowl.com/knowledge-base/show-learndash-certificates/) – Provides the `[uo_learndash_certificates]` shortcode for displaying certificates in page content. - [Introduction to the Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) – Overview of what the Toolkit offers and how its modules work. - [Install the Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/) – How to install and activate the Toolkit. **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Breadcrumb Links](https://www.uncannyowl.com/knowledge-base/learndash-breadcrumb-links/) **Published:** April 24, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to display breadcrumb links on your site that understand the LearnDash course > lesson > topic hierarchy. **Content:** ### Overview The **Breadcrumb Links** module adds a navigation trail to your LearnDash courses so learners always know where they are in a course and can jump back to any parent level in a single click. In deep course structures, this small piece of context makes a big difference in keeping learners oriented and reducing support requests. ### What the Breadcrumbs Show By default, the breadcrumb trail follows the full LearnDash hierarchy: **Home » Course Archive Page » Course Name » Lesson Name » Topic Name** Each item is a clickable link to that level, and the trail automatically reflects the learner’s current location (quizzes are supported too). The first item, **Home**, links to your site’s home page; the course archive is shown as a separate crumb after it. The default separator between items is ». ![Course page header: Introduction to Workplace Safety with a light breadcrumb and an In Progress badge on the right.](https://www.uncannyowl.com/wp-content/uploads/2016/04/breadcrumbs-02.png "breadcrumbs 02 - Uncanny Owl") ### Enabling the Module 1. In your WordPress dashboard, go to **Uncanny Toolkit** and open the modules screen. 2. Find the **Breadcrumb Links** module and turn it on. 3. Open the module’s **Settings** to customize the display (see below). ![Breadcrumbs settings dialog for Course Dashboard: title 'My Courses', separator '>', include current page checked.](https://www.uncannyowl.com/wp-content/uploads/2016/04/breadcrumbs-01.png "breadcrumbs 01 - Uncanny Owl") If you haven’t installed the Toolkit yet, see [Install the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/). ### Displaying the Breadcrumbs You have two ways to output the breadcrumb trail, depending on where you want it to appear. #### Shortcode Use the shortcode to place breadcrumbs in any page, post, or widget. It takes no attributes: ``` [uo_breadcrumbs] ``` #### Template Function To integrate breadcrumbs directly into your theme (for example, in a header template or another PHP file), call the template function: ``` `` ``` By default the function echoes the breadcrumb HTML. Pass `false` to return it as a string instead: ``` ``` We recommend the template function when you want breadcrumbs to appear consistently across all course content without editing individual pages. ### Customization Options Open the **Breadcrumb Links** module **Settings** to tailor the trail to your site. The module’s **Settings** panel includes these options: - **Dashboard Page Title** — The label used for the dashboard crumb. - **Dashboard Page** — Select a page to use as the dashboard. When set, this page replaces the course archive in the trail, sending learners to a custom landing page instead of the default LearnDash archive. - **Breadcrumbs Separator** — The character or markup placed between items (default »). You can include HTML here, so you’re free to use a Font Awesome icon or similar element in place of a plain character. - **Include Current Page** — Whether the current page is included as the final crumb in the trail. ### Related Articles - [Introduction to the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/introduction-to-the-uncanny-learndash-toolkit/) — an overview of everything the Toolkit offers. - [Install the Uncanny LearnDash Toolkit](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-learndash-toolkit/) — get the Toolkit set up on your site. - [Resume Button](https://www.uncannyowl.com/knowledge-base/learndash-resume/) — let learners jump straight back to where they left off. - [Menu Item Visibility](https://www.uncannyowl.com/knowledge-base/menu-item-visibility/) — show or hide menu items based on enrollment and login status. **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Tin Canny Reporting for LearnDash - Changelog](https://www.uncannyowl.com/knowledge-base/tin-canny-learndash-reporting-changelog/) **Published:** September 16, 2017 **Author:** Anthony Lucic **Content:** ### 5.1.3.3 \[2026-05-29\] **Update:** - SCORM Modules – Added WordPress filter `uo_tincanny_actor_name` to allow overriding the learner name passed to modules via `cmi.learner_name`, following the existing `uo_tincanny_actor_mbox` filter pattern #1051 **Fixed:** - Course Report – Fixed incorrect % Complete values on load and after resetting the search #1084 - Lesson and Topic Reports – Restricted report results to learners and courses within a group leader’s assigned scope when the group filter is left blank, preventing visibility of learners outside their managed groups #1080 - Manage Content – Replaced cache-busting for module JS/CSS assets to ensure updated SCORM and Captivate packages load correctly after a module is replaced or re-uploaded without requiring a hard refresh #1090 - Module Protection – Resolved an undefined array key notice for `protect-scorm-tin-can-modules` under specific theme and course page configurations #1000 - Tin Canny Modules – Prevented duplicate completion check AJAX requests for the same module and lesson, reducing unnecessary server load during xAPI activity #1066 - WordPress Compatibility – Settings now appear in a dedicated “Tin Canny” tab on the edit page for LearnDash post types #1086 - iSpring Modules – Fixed an issue where xAPI state requests used an incorrect agent identity, causing users to share the same state data and affecting individual progress tracking #1058 --- ### 5.1.3.2 \[2026-05-13\] **Added:** - xAPI Quiz Report – Added empty labels for Storyline matching and Likert questions when und is missing #1047 **Fixed:** - Captivate – Added support for registration when the package contains `tincan.xml` but does not include `captivate.css` #1007 - Rise/SCORM – Resolved a 403 error for guests on inner pages when global “protect modules” is enabled, but the lesson is configured not to be protected #1049 - Fixed resume state corruption caused by `parse_str` converting dots to underscores #1062 - Corrected `suspend_data` corruption when the course name contains `&` #1065 - Fixed an undefined array key warning for `protect-scorm-tin-can-modules` on PHP 8+ #1018 --- ### 5.1.3.1 \[2026-01-30\] **Fixed:** - Rise Module Resume – Resolved an issue that prevented modules from resuming correctly by improving how activity URLs are detected and handled using a prioritized resolver across multiple sources #994 --- ### 5.1.3 \[2026-12-23\] **Added:** - Reporting – Enhanced `tincanny_module_allow_db_capture` and `tincanny_process_content` filters to support skipping specific xAPI events and reduce database bloat #983 **Fixed:** - Excel/CSV Export – Resolved an issue where exporting data for individual courses would get stuck on a loading spinner #978 - Quiz Question Analysis Report – Restored missing search field and CSV export option that were previously available in the report interface #987 - Rise Module Resume – Resolved an issue that prevented modules from resuming correctly by improving how activity URLs are detected and handled using a prioritized resolver across multiple sources #964 - SCORM Modules – Resolved an issue where modules failed to load for specific users when `module_id` was 0 by adding a guard check for invalid IDs #981 - SCORM Uploads – Resolved an issue where certain SCORM packages were misclassified as Articulate Rise, preventing SCORM API injection and causing “Unable to acquire LMS API” errors #976 - xAPI Reports – Resolved an issue where activity names were blank for statements missing a description by adding a fallback to use the activity’s name #974 --- ### 5.1.2 \[2025-12-10\] **Fixed:** - Mark Complete Button – Resolved an issue where the button was not rendered on Single Page Courses due to late hook registration #959 - Tin Canny – Resolved an issue where iSpring FlipBook modules displayed a blank page after upload #961 - Tin Canny Uploader – Resolved a JS crash during ZIP uploads on Windows caused by a missing `invalid_file_type` i18n string when certain MIME types are detected #970 --- ### 5.1.1 \[2025-10-24\] **Updated:** - Added a new filter `uo_tincan_ld_admin_capability_check` to allow site owners to define which roles can access Tin Canny reporting features, replacing the previous administrator-only restriction #923 **Fixed:** - Adjusted loading order to require Composer autoload before `init.php` for proper initialization #954 - Removed unintended space from the option name to ensure consistent option handling #954 - Tin Canny User Report – Text strings now support translations #937 - Frontend User Report – Made the % Complete and Avg Quiz columns sortable #908 - Prevented the `run_activity_name_hash_migration_event` cron job from being repeatedly re-scheduled when Tin Canny Reporting is active #935 - Protection setting not applying correctly when set on a lesson or topic #943 - Resolved autoload conflict with the “Insert or Embed Articulate Content into WordPress” plugin #920 - Standardized progress calculation using LearnDash to resolve data inconsistencies between the single Course table and course summary table #944 - Resolved issues with xAPI state requests not loading correctly and added optional debug logging support for troubleshooting #952 **Internal:** - Hide unnecessary notices on Tin Canny Reports #933 - Updated uploader node dependencies #931 **Performance:** - Optimized reporting queries by splitting large `INNER JOIN` operations into indexed subqueries, reducing scanned rows from millions to thousands and significantly improving execution time #925 --- **Important:** - **Tin Canny Reporting for LearnDash v5.0+ is a major update,** with many improvements across reporting, and updates to the library used to display modules in a lightbox. **We recommend testing this update on a staging site prior to deploying it to your live site.** ### 5.1.0.3 \[2025-07-31\] **Updated:** - Tin Can – Added WP filter `tincanny_result_override` to override results value #894 **Fixed:** - Course Reports – Adjusted when exclude role and user ID filters are applied to ensure they run at the correct point during initialization #916 - Quiz Module Report (frontend) – Fixed uncaught ReferenceError when `sfwd_data` is not defined #896 - Quiz Report – Fixed incorrect user display by syncing group user IDs with actual group members #902 - SCORM driver – Improved 404 handling to ensure redirects work properly without affecting other 404 pages #906 - Tin Canny Reports (frontend) – Fixed User Report redirecting to Course Report due to Group filter #900 - User Report – Resolved issue showing double enrolment counts on some sites #891 **Under the Hood:** - Restored missing `scormdriver-sync.js` to support SCORM sync #917 --- ### 5.1.0.2 \[2025-06-27\] **Fixed:** - Licensing – Plugin license key was being automatically reactivated immediately after deactivation #887 - SCORM modules – Updated legacy file paths to `scormdriver.js` and `scormdriver-sync.js` for older uploaded modules #886 - Storyline modules – Resolved an issue where questions were not captured for reporting under specific conditions #885 - Tin Can Report & xAPI Quiz Report – Some group leaders were prevented from using group filters #879 - Site Check – Removed obsolete PHP file check #882 --- ### 5.1.0.1 \[2025-06-20\] **Updated:** - Tin Canny Module Modal – Added `closeOnOutsideClick` to the JS config, configurable via WordPress filter `uo_tincanny_glightbox_config` #871 **Fixed:** - LearnDash Lessons – Mark Complete and Completion Condition were not migrating to new meta when upgrading from v4 to v5 for some users #876 - LearnDash Lessons – “Always enabled” setting for the Mark Complete button was not functioning as expected #874 --- ### 5.1 \[2025-06-05\] **Added:** - Manage Content – Visual overhaul with a modernized design - Manage Content – Added columns to show uploaded date and filesize of each module #867 **Fixed:** - Caching condition dropdown not showing options #854 - Course Report and User Report tabs were being removed when “Capture Tin Can and SCORM data” setting was set to “No” #858 - Tin Can Reports – User Search was not working due to SQL WHERE clause issue #864 - User Report – Enrolled group courses were not included in report #862 - Settings – Deleting Tin Canny Data or Bookmarks with a selected course caused a PHP error #851 **Under the Hood:** - Ensure `/wp-json/uncanny_reporting/v1/courses_overview/` runs when needed #860 --- ### 5.0.2 \[2025-05-22\] **Fixed:** - Course & User Report – Now displays only relevant data to group leaders #849 --- ### 5.0.1 \[2025-05-14\] **Updated:** - Tin Canny Group Quiz Report – Added caching to improve report load times and a loading animation to enhance UX #846 **Fixed:** - Individual Quiz Report – PHP error when loading the Gutenberg block on the front end #840 - Tin Can Statement – PHP error when actor data is received as an array instead of a string from some modules #837 - Tin Canny Course/User Report – Fixed an issue preventing the Gutenberg block from loading on the front end #838 - Tin Canny Group Quiz Report – Shortcode not rendering on the frontend #844 - Tin Canny Lesson/Topic Reports – Improved Gutenberg block UI and fixed a JavaScript issue #843 - Tin Canny Reports – Fixed broken “See details” links in front end user reports #842 --- ### 5.0 \[2025-05-08\] **Added:** - Quiz Report – Shortcode parameter `exclude_non_course_quizzes` to exclude non-course quizzes. #821 - Quiz Report – WordPress filter `uo_tincanny_quiz_report_user_report_url` to override the ‘userReportUrl’ parameter. #753 - Settings – Option to remove all Tin Canny data on plugin deletion. #794 - Settings – Site Check now confirms the plugin has direct access to PHP files. #141 - Settings – Course and User Report – Option to select a default group and page length when loading reports. #398 - Settings – Reset Data: “Purge statements” setting now supports purging specific statement types. #721 - Tin Can Report – WordPress filter `uo_tincanny_data_consider_scaled_score` to consider scaled scores in reporting. #802 - User Report – “Completion date” for Lessons/Topics. #494 - User Report – “Start date” for Courses. #493 **Updated:** - Course Report – Refactored and improved performance. #398 - User Report – Refactored and improved performance. #398 - Tin Can Report – Refactored and improved performance. #398 - xAPI Quiz Report – Refactored and improved performance. #398 - Tin Can – Statement capture now falls back to user ID when email is unavailable. #810 **Fixed:** - Course Report – 0% completion shown even when users completed the course. #767 - Manage Content – Button/field misalignment when no modules are present. #589 - PHP Warning – Undefined variable in `Slides.php` on some sites. #812 - Module Uploader – Error messages sometimes not shown to users when module registration fails. #808 - PHP Notice – Function `_load_textdomain_just_in_time` called incorrectly. #825 - ScormDriver – Incorrect if condition causing a JavaScript error in some modules. #799 - Tin Canny Module Uploader – Rise SCORM modules now correctly identified. #770 - `tincanny_reporting` custom capability not applied on network-installed multisite. #748 **Under the hood:** - Major internal rework – Core architecture and systems overhauled for improved stability and extensibility. #398 - Updated libraries – All major libraries updated to latest versions including charting, DataTables, lightbox, and module search components. #398 - “Try Automator” menu entry renamed to “Automation”. #517 - Suppressed admin notices to reduce noise on Tin Canny pages. #722 - Frontend module modal pop-up switched to `glightbox`. #674 --- ### 4.4.1 \[2025-01-27\] **Added:** - Added Time column to Lesson & Topic Reports to show how long the user spent in each lesson/topic (requires Simple Course Timer from the Uncanny Toolkit Pro for LearnDash) #701 - Added a setting to select SCORM driver type (Async/Sync) for newly uploaded modules #771 **Fixed:** - AR2017 Issues with results scoring 65387 #729 - Divi Theme – Frontend editing is throwing PHP warnings in preview mode 69621 #783 - PHP Notices and some faulty SQL Queries 67024 #758 - `ultc_current_request_type` header returning NULL in some situations #776 --- ### 4.4.0.4 \[2024-09-26\] **Fix:** - Restrict “Mark Complete” behavior – “Disabled until complete” activation changes detailed in the last release were omitted and are now included #750 --- ### 4.4.0.3 \[2024-09-12\] **Fixed:** - Tin Canny Course Report – Percentage column displaying 0% on some sites #746 - Quiz Report `[uo_individual_quiz_report]` – PHP warnings resolved #742 - Restrict “Mark Complete” behavior – “Disabled until complete” now activates the button in the latest Chrome release #750 - Tin Canny User Report – Course progress incorrectly showing “Not started” in some cases #734 **Internal:** - `[uotc_ld_quiz_report]` – Added WP filters to override the “Not attempted” string #725 --- ### 4.4.0.2 \[2024-07-18\] **Updated:** - Lesson Report `[uotc_lesson_report]` – WP filter `uo_tincanny_uotc_lesson_report_page_length` to configure DataTable page length on page load #697 - SCORM launcher – WP filter `uo_tincanny_reporting_scorm_launch_url` to modify the launch URL #699 **Fixed:** - Tin Canny Reporting – Child groups not available in dropdown for group leader #695 - Quiz Reports – Custom query LD table names #715 - Rise Module – Custom HTTP Header #704 --- ### 4.4.0.1 \[2024-03-18\] **Updated:** - Front End Quiz Reports – Added “Detailed Report” column as a default column #665 - Tin Canny Uploader – Use `wp_max_upload_size` value if it’s greater than 2 GB for larger file uploads #681 **Fixed:** - Front End Quiz Reports – Group leaders see all groups in some instances #667 - Tin Can Report – Tab not hiding in front end when “Enable Tin Can Report on front end” is set to No #672 - Tin Canny Uploader – Improved support of a module in a subfolder when full zip option is selected #655 - Tin Canny Uploader – Max upload file size error message displays Bytes but shows in MB #679 - iSpring 11 module not sending anything but “Experienced” statements #654 **Under the hood:** - Licensing endpoint update #685 - PHP notice when `$_SERVER[HTTP_REFERER]` is not set #657 - Quiz Report – Incorrect namespace format issue of the REST call #661 - Tin Canny Reporting – Added WP Action `tincanny_reporting_before_courses_overview_report` #670 --- ### 4.4 \[2024-02-08\] **New Feature:** - New report – Quiz Report `[uotc_ld_quiz_report]` #487 **Addition:** - Tin Canny Uploader – Show maximum upload size limit by host when full zip option checkbox is selected #649 **Update:** - Tin Canny Uploader – Removed cancel button for full zip uploads #644 **Fixed:** - Tin Canny Uploader – File by File method – Update Error handling of 403 and 503 #643 - Tin Canny Uploader – Replace module functionality with full zip creating new module #645 --- ### 4.3.1 \[2024-01-25\] **Addition:** - Added WP Filter `uo_tincanny_reporting_ispring_11_include_tin_can_support` to optionally disable iSpring 11 support #634 **Updated:** - Tin Canny Blocks – Strings are translatable now #632 - Tin Canny Uploader – Checkbox added to upload full zips instead of file-by-file upload #590 **Fixed:** - Quiz Question Analysis Report – PHP Error in a specific situation #635 - LearnDash – Admin Pages – Action dropdown formatting broken when Tin Canny is active #639 **Under the hood:** - Added `$force` param for `learndash_process_mark_complete` function for a future LearnDash update #630 - Additional validations before deleting module directories #641 --- ### 4.3.0.11 \[2024-01-12\] **Fixed:** - H5P statements are not recording #628 --- ### 4.3.0.10 \[2024-01-11\] **Update:** - Course Report – Ability to allow viewing all data based on WP filter `tincanny\_view\_all\_reports\_permission` #620 **Fixed:** - Ensure Multiple cross-site scripting (XSS) functions are loaded in uploaded SCORM or xAPI module #618 - Front End User Quiz Report is not displaying SCORM/xAPI scores #617 - Course Report – PHP notice when lesson no longer exists #626 --- ### 4.3.0.9 \[2024-01-02\] **Fixed:** - Security update checks on reporting table row data #615 - Folder permissions update for new uploads #608 - Front End Quiz Report displaying HTML code #606 - Uploader Module incorrectly identifying some authoring tools #611 - Tin Canny Manage Content page – Stop deregistering scripts #614 - ucTinCan endpoint 404 in some environments #610 --- ### 4.3.0.8 \[2023-12-14\] **Updated:** - Manage Content Page – WP filter ``uo_tincanny_uploader_manage_content_deregister_scripts`` to handle issues with ``wp_deregister_script`` on some sites #596 - Course report – Database query to fetch user’s meta improved to decrease load time #598 - Code quality updated for improved security #600 **Fixed:** - Course Report – Corrected an issue with In Progress data when a group filter is used #591 - PHP 7.2 – PHP Error fix #594 --- ### 4.3.0.7 \[2023-11-09\] **Updated:** - Individual Quiz Report – WP filter `uo_tincanny_quiz_report_show_multiple_attempts` to show multiple quiz attempts in report #585 - Content Protection – WP filters `uo_tincanny_protection_headers` & `uo_tincanny_file_motified_http_status_code` to modify Content Header attributes #581 **Fixed:** - Blocks – Removed `lodash` dependency for WordPress v6.4+ #587 --- ### 4.3.0.6 \[2023-10-18\] **Fixed:** - Course and User reports – Improved groups query #573 - Course and User reports – Reports showing 0 values in a specific scenario on some sites #573 - Improved PHP 8.2 compatibility #578 --- ### 4.3.0.5 \[2023-10-13\] **Fixed:** - xAPI Quiz Report – Module not sending Question text #566 - Course and User reports – Stuck in an infinite loop when a group leader has several hundred groups #563 - Improved LearnDash active check #561 - iSpring Module not loading after first launch #558 - Module table column update – PHP Error in a specific situation #556 - Course overview – Dividing by Zero PHP Error #568 --- ### 4.3.0.4 \[2023-08-31\] **Fixed:** - Removed unnecessary htaccess changes #554 --- ### 4.3.0.3 \[2023-08-29\] **Fixed:** - Tin Canny Uploader – Custom Image option #550 - Tin Canny Uploader – Increased allowed module title length #548 - AJAX call running on xAPI events when “Capture Tin Can and SCORM data” is disabled #546 - htaccess changes to support encoded spaces #544 - Tin Canny Uploader – Module sub-type detection changes #541 - Default module dimension settings #540 - Dispatch open & close events to document when the lightbox is opened and closed #537 - Tin Canny Uploader – REST API permissions #533 **Updated:** - WordPress Filter: tincan\_xapi\_table\_columns for Tin Can report #538 --- ### 4.3.0.2 \[2023-08-01\] **Fixed:** - Tin Canny Uploader – Replace content functionality creating new module for uploads #529 --- ### 4.3.0.1 \[2023-07-31\] **Fixed:** - Iframe settings not appearing in Gutenberg Tin Canny Content #525 - Articulate Rise 360 modules not showing correct format and do not track statements correctly #523 - Tin Canny uploader incorrectly identifying some Articulate modules #527 --- ### 4.3 \[2023-07-24\] **New Feature:** - Tin Canny Uploader #505 **Updated:** - Tin Canny Content Gutenberg block ignores the global lightbox size setting #448 - Tin Canny Reports – Separate tabs into different pages #516 **Fixed:** - do\_action `tincanny_module_result_processed` not firing due to missing ‘completion’ parameter #508 - WP install in a subfolder breaks the site check #506 --- ### 4.2.0.4 \[2023-06-01\] **Fixed:** - Course report – PHP Error with 15000+ users when All groups option is selected #500 - User Reports – Front End not loading complete data for Group Leaders #496 - Replace quotes in display\_name that is used while setting ‘actor’ parameter #491 --- ### 4.2.0.3 \[2023-05-15\] **Fixed:** - Course report – Incomplete report data issue effecting in a specific situation #488 - PHP warning of Undefined array key #486 --- ### 4.2.0.2 \[2023-05-08\] **Updated:** - Lesson/Topics Reports – LearnDash Custom Labels support added #481 - Course Report – Removed data upgrade instructions #479 **Fixed:** - User Reports – Count columns not reflecting correct data #483 - WP Dashboard – Most Completed Courses Widget – Course progress not showing #478 --- ### 4.2.0.1 \[2023-04-25\] **Added:** - Beaver Builder – Tin Can Media button added #472 **Fixed:** - Course report – Missing some data when “All users” is selected #475 - Course report – PHP error if user roles are not defined #470 --- ### 4.2 \[2023-04-19\] **Added:** - Lesson completion report #458 - Topic completion report #458 **Updated:** - Completion condition – Add support for target & verb #456 - Course and Tin Can reports – Improved loading performance #450 **Fixed:** - xAPI/H5P now uses AJAX instead of `wp-load.php` dependency #468 - Fix `phpinfo()` issue by adding condition and only execute if it exists #459 - User Report – User course filter not working #415 - Group filter for Course/User Reports limited to 500 results #466 --- ### 4.1.5.1 \[2023-03-22\] - Course Report – Data missing when a specific group is selected #454 --- ### 4.1.5 \[2023-03-20\] **Fixed:** - iSpring 11 xAPI modules statements not tracking #441 - Course reports never load because of insufficient site resources #450 - Lightbox – All effects other than fade make the content load off-screen #442 - PHP Error during sanity check in a certain situation #432 - “Add Tin Canny Media” button missing from Divi Visual Builder #424 - User report tab, TinCan page – Page title not showing correctly #420 - User report tab, TinCan page – Course title showing up as ‘Not Found’ and Page title #417 **Updated:** - Tin Canny Reporting – Improved translation strings #412 **Internal:** - Added WordPress filter `uo_tincanny_reporting_get_state_fallback_query` to enable/disable fallback #427 - Applied branding changes for branding changes #391 - Security hardening for Uncanny Automator installer #431 --- ### 4.1.4 \[2022-12-01\] **Updated:** - Tin Canny – Remove `shell_exec` dependancy and use WordPress FileSystem for various file management tasks #399 **Fixed:** - Fix Leading space in translation #402 **Developer**: - New do\_action call to allow early exit #404 - `do_action( 'tincanny_before_process_request' );` --- ### 4.1.3.1 \[2022-11-23\] **Updated**: - Removed `shell_exec` admin notice --- ### 4.1.3 \[2022-11-22\] **Updated**: - Admin Reporting – Sort module name drop-down list in ascending order #374 - Trigger custom JS event (`tincanny-learndash-statistics-contentchanged`) when LearnDash’s statistics content changes #354 - Added X-Robots header #345 **Fixed**: - Fix path issue during module upload if WordPress is installed in a subfolder #372 - Course Report and User Report – PHP error with PHP 8.x+ in a certain situation #369 - Uploading process – Fixed removal of a new line character in the asset title #364 - Tin Canny Reporting – Fixed PHP Error if user data is not available #347 - User Report – First & Last name not appearing on Multisite #395 **Internal**: - Improved PHP 8+ compatibility #385 - Dependency check `shell_exec` function #378 - `register_rest_route` was called incorrectly #367 - Added in-plugin notifications #381 **Developers**: - Reporting – Added filters to add the ability to exclude user roles and user ids from a report #376 - `apply_filters( 'uo_tincanny_reporting_exclude_roles', array() );` - `apply_filters( 'uo_tincanny_reporting_exclude_user_ids', array() );` - Question Analysis Report – Added do\_action to append content #357 - `do_action( 'uo_tincanny_reporting_questions_no_quiz_selected' );` - `do_action( 'uo_tincanny_reporting_questions_no_multiple_choice' );` - `do_action( 'uo_tincanny_reporting_questions_table_beforebegin' );` - `do_action( 'uo_tincanny_reporting_questions_table_thead_afterbegin' );` - `do_action( 'uo_tincanny_reporting_questions_table_thead_beforeend' );` - `do_action( 'uo_tincanny_reporting_questions_table_tbody_afterbegin' );` - `do_action( 'uo_tincanny_reporting_questions_table_tbody_beforeend' );` - `do_action( 'uo_tincanny_reporting_questions_table_afterend' );` - Reporting API – Added new filters #352 - `apply_filters( 'uo_tincanny_reporting_restrict_group_leader_post', $restrict_group_leader_post, $group_id);` - `apply_filters( 'uo_tincanny_reporting_restrict_group_leader_postmeta', $restrict_group_leader_postmeta, $group_id);` - `apply_filters( 'uo_tincanny_reporting_restrict_group_leader_associated_posts', $restrict_group_leader_associated_posts, $group_id);` - `apply_filters( 'uo_tincanny_reporting_course_groups_enrolled', $results, $group_ids );` --- ### 4.1.2.2 \[2022-06-30\] **Fixed:** - CSS snippet hiding other admin notices #343 --- ### 4.1.2.1 \[2022-06-28\] **Fixed:** - Tin Canny Reports – Export buttons now work as expected #340 --- ### 4.1.2 \[2022-06-21\] **Added:** - Quiz Question Analysis – Add date range #334 - Quiz Question Analysis Report – Excel export option #330 - Uncanny Automator 1-click installer #84 **Updated:** - Tin Can & xAPI reports CSV export – Add user ID column #324 - Tin Can Course Report – Group names in the group drop down now appears alphabetically #318 - Ticket submission from inside plugin now includes site URL and license details #205 **Fixed:** - Quiz Question Report – Limit results to a specific quiz when share questions setting is enabled #328 - Course Report – Data visualization #326 - Function `get_magic_quotes_gpc()` deprecated since PHP 7.4 #317 ### 4.1.1 \[2022-05-18\] **Added:** - Quiz Question Analysis Report – `uo_tincanny_reporting_questions_quiz_dropdown_title` filter added #313 **Updated:** - Quiz Question Analysis Report – “LearnDash” word dropped from quiz dropdown #312 - Quiz Question Analysis Report – Additional CSS classes added #304 **Fixed:** - Core – `WP_Filesystem_Direct` fallback added when shell\_exec not available #301 - Quiz Question Analysis Report – PHP error when the site is < PHP 7.3 #296 - Tin Canny Report – hidden page field accidentally breaking frontend reports on some sites #282 --- ### 4.1 \[2022-03-31\] **Added:** - New Report: [Quiz question analysis](https://www.uncannyowl.com/knowledge-base/learndash-quiz-question-analysis-report/) `[uo_question_report]` #269 **Updated:** - Tin Canny shortcode – New `do_action() `hooks for developers #277 - `tincanny_reporting_wrapper_before_begin` - `tincanny_reporting_wrapper_after_begin` - `tincanny_reporting_course_report_after_end` - `tincanny_reporting_course_report_before_end` - `tincanny_reporting_user_report_after_begin` - `tincanny_reporting_user_report_before_end` - `tincanny_reporting_tin_can_after_begin` - `tincanny_reporting_tin_can_before_end` - `tincanny_reporting_xtin_quiz_after_begin` - `tincanny_reporting_xtin_quiz_before_end` - `tincanny_reporting_wrapper_before_end` - `tincanny_reporting_wrapper_after_end` - Tin Canny Reporting – Cache is now disabled by default #292 **Fixed:** - LearnDash forced timer no longer unlocks the Mark Complete button if Tin Canny completion conditions have not been met #288 - Tin Canny Report – Hidden page field breaking front end reports on some sites #282 --- ### 4.0.7.2 \[2022-03-15\] **Added:** - Tin Canny module – Added options for width in vw and height in vh #271 **Fixed:** - Tin Can Report – Group dropdown not appearing on some sites #274 --- ### 4.0.7.1 \[2022-03-03\] **Fixed:** - Course Report – PHP error on some environments --- ### 4.0.7 \[2022-03-03\] **Updated:** - Added `launched_lesson` attribute to shortcode to support jumping to a specific Articulate Rise lesson by URL parameter #247 - Disabled scrolling on the body element when the lightbox is open #246 - Removed irrelevant “Success” column from Tin Can report #117 - Group quiz report now supports negative scores #222 - Improved PHP 8+ support #227 **Fixed:** - Conflict with “Admin Menu Editor Pro” causes Tin Canny to erroneously list all groups on reports #258 - H5P results are now correctly mapped to courses when basic HTTP authentication is enabled #241 - Front End Quiz Report now includes line breaks in essay question responses #240 - xAPI Quiz Report now displays accurate results for multiple attempts on the same question #234 - PHP error if a module sends a non-standard SCORM value #236 - PHP warning – Use of undefined constant in admin-send-ticket.php #143 --- ### 4.0.6 \[2021-12-14\] **Added:** - Support for negative scores in the Individual Quiz Report #217 - Support for some non-standard SCORM modules missing required title element #213 - Improved PHP 8 compatibility #209 **Fixed:** - Some SCORM statements not being recorded when the user’s email was included in statement data #202 - Course ID is now recorded properly in some Lectora content #202 - PHP notice causing an issue with Tin Canny data loading in the User Report #200 --- ### 4.0.5 \[2021-11-11\] **Added:** - Fallback option for enrollment lookup due to Course Access List upgrade removal in LearnDash 3.5 #177 **Updated:** - Improved translation support in Tin Canny xAPI Quiz Report / Tin Can Report #151 - Changed permissions from update\_plugins to manage\_options for deleting an Individual User’s Tin Can Data #125 **Fixed:** - Remote cURL calls causing an error on some servers #159 #170 - MySQL query syntax fix of Tin Canny resume table #198 --- ### 4.0.4 \[2021-10-04\] **Added:** - Support for BuddyBoss H5P blocks #137 - Added primary key support in resume (bookmarks) database table #149 - Internal PHP filters for developers #167 - Updated JS filters for activity graphs #148 **Updated:** - Improved translation support in reports #151 - scormdriver.js file for Articulate Rise content #132 - Changed permissions from update\_plugins to manage\_options for deleting an individual user’s Tin Canny Data #125 - When the selected group is changed from the user report tab, the user is no longer sent back to the course report tab #134 **Fixed:** - PHP warning – block\_categories deprecated #153 --- ### 4.0.3 \[2021-08-20\] **Updated:** - Improved compatibility with SCORM 2004 #94 - Tin Canny Reporting – Improved compatibility when Redis object caching is enabled #93 License updates #83 **Fixed:** - Directory constants causing issues when `UO_ABS_PATH` is not writeable #90 - Incorrect function return parameter types for `get_data` and `get_xapi_data` #88 - Database error when previewing content from the Manage Content page #80 - Some users missing from report when they are not assigned to a LearnDash Group #85 - Tin Canny Reporting – Fixed multiple JS notices due to missing dependencies #102 **For Developers:** - Tin Canny Reporting – `uo_tincanny_reporting_disable_cache` filter to disable Object caching #93 --- ### 4.0.2 \[2021-07-05\] **Fixed:** - Data not displaying in reports when no groups exist - Data not displaying in reports for users not in a group --- ### 4.0.1 \[2021-06-25\] **Fixed:** - Fixed: First and last names not appearing in reports on some sites --- ### 4.0 \[2021-06-24\] **Added:** - Support for any xAPI or SCORM compatible content #37 - Support for results from quizzes not associated with a course on the individual quiz report. #64 - Improved compatibility of Tin Canny content with Bootstrap #55 - Support for “Add Tin Canny Media” button in WP Bakery Page Builder #50 **Updated:** - Improved performance of reports #63 **Fixed:** - When “Capture Tin Can and SCORM data” is set to No, Mark Complete behaviours are now hidden #43 - Experience API Package Error #75 - Various database errors on some sites #74 - Conflict with Gravity Forms on some sites #66 - User reports not showing data on some sites #57 - “View” link for certificates on reports is now translatable #52 - Elementor no longer causes console errors on Tin Canny pages in /wp-admin #46 - Tin Canny Group Quiz Report Gutenberg block now saves User Quiz Report URL parameter value #34 - PHP notices when uploaded file name contains certain characters #31 - LearnDash message “Please go back and complete the previous .” no longer missing text in some situations #27 - Lesson list no longer truncated on user report #23 - PHP warning in Tin Can driver #10 - xAPI Report column labels are now translatable #3 --- ### 3.6.2 \[2021-03-19\] **Added:** - Support for negative Tin Can scores **Fixed:** - When a non-default setting is chosen for User identifier(s), some columns may appear blank - Total users enrolled in a course reported incorrectly in some instances - PHP Warning: Fixed default value for active classes option --- ### 3.6.1 \[2021-02-19\] **Fixed**: - Database prefix issue on some sites --- ### 3.6 \[2021-02-16\] **Added**: - Support for embedding Tin Canny modules with Mark Complete integration in a [Single Page Course](https://www.uncannyowl.com/knowledge-base/single-page-courses/) (requires the [Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/)) - Slower compatibility mode for xAPI statement capture for compatibility with modules that send statements on module closure - Setting to select what user data columns are displayed on the User Course and User Overview reports - Ability to sort on all columns of the User Report - Module ID now displayed in Gutenberg block for Tin Canny content - More descriptive error messages when an error is encountered while uploading Tin Canny modules **Updated**: - Reorganized settings page - Course and lesson IDs are now saved with bookmark data - uo\_group\_quiz\_report shortcode now accepts relative URL for user\_report\_url parameter **Fixed**: - Close lightbox icon difficult to see on some sites - Incorrect permission\_callback was preventing group leaders from viewing some quiz results - See details link in reports would not work when collapsed (narrow window or mobile view) - Required LearnDash version message updated to version 3.1 - Group Leaders not assigned to a group now see an error message instead of a blank screen - Various PHP notices that appear in some situations --- ### 3.5.3 \[2020-12-04\] **Added**: - Ability to specify a verb and a result in a completion condition with “&&” operator. Example: result > 80 && completed **Fixed**: - Hidden and Autoadvance setting not automatically advancing the user on some modules --- ### 3.5.2 \[2020-11-26\] **Fixed**: - Hidden and Autoadvance setting was redirecting to /undefined in the last lesson of a course - Mark Complete integrations “Hidden until complete” and “Disabled until complete” not working for some modules --- ### 3.5.1 \[2020-11-16\] **Fixed**: - Captivate files no longer throw a JavaScript error on load --- ### 3.5 \[2020-11-12\] **Added**: - Support for Tin Canny Gutenberg block embedded inside another block **Updated**: - Improved performance and stability of Mark Complete options with reduced delay before action - Improved consistency of user segmenting by groups on newer versions of LearnDash - Allowed YouTube, Wistia and blob data type in content security policy for improved compatibility with additional content types - Added filters to make it easier for developers to customize access to reports **Fixed**: - Database::create\_table\_snc\_post\_relationship no longer throws an error on WordPress multisite - Quiz reports no longer throws a database error when no courses are selected - Sorting by date is now correct on individual quiz report - Some SCORM-based Storyline modules no longer display the error “Unsupported file type detected” --- ### 3.4.4 \[2020-08-19\] - Updated: Content protection now supported on additional server configurations - Updated: Detailed quiz reports on \[uo\_individual\_quiz\_report\] now work on LearnDash 3.2+ - Updated: Added permission\_callback to all Rest API calls for WordPress v5.5 compatibility - Updated: Lightbox no longer limited to 90vh x 90vw - Updated: Security improvements (CVE-2020-9439) - Fixed: When “Enable sorting by % complete” is set to “No”, the enrolled course count is now accurate on the individual user report - Fixed: Hidden and Autoadvance now consistently marks the associated lesson/topic complete - Fixed: PHP warning: Illegal string offset ‘restrict-mark-complete’ --- ### 3.4.3 \[2020-07-20\] - Added: Support for updated Storyline 1.2, Storyline 360 and Presenter 360 SCORM launch files - Updated: Lightbox JS to version 1.3.1 and added tweaks to support jQuery 3.x - Fixed: Missing translations in reporting-admin-menu.php - Fixed: Typo in “Certificate Link” text --- ### 3.4.2 \[2020-06-30\] - Added: Support for updated Storyline/Presenter xAPI launch files --- ### 3.4.1 \[2020-06-25\] - Added: Search field on Tin Canny uploader - Added: Dropdown to select rows displayed per page on Course and User reports - Updated: register\_rest\_route path no longer contains trailing slash - Updated: “Data not right? Try running the LearnDash data upgrades” message no longer shown to Group Leaders viewing reports in /wp-admin - Updated: Duplicate uo\_enable\_h5P\_admin\_ajax filter removed from classes/init.php - Updated: Changed “TinCanny Settings” to “Tin Canny Settings” - Updated: Content protection metabox now displayed only on public post types - Fixed: JavaScript conflict with Elementor - Fixed: Single course completion graphs now show accurate counts - Fixed: Hidden and Autoadvance setting not working for some modules - Fixed: Column filters now working on xAPI Quiz Report - Fixed: PHP notice: Undefined index on upload when using Tin Canny Gutenberg block - Fixed: PHP warning: Invalid argument supplied foreach() in reporting-api.php for courses with no users - Fixed: SQL error on some H5P statements that do not correctly include user details - Fixed: Database error trying to save resume progress for a lesson when viewed by an anonymous user - Fixed: Added default values for all plugin settings --- ### 3.4 \[2020-04-03\] - Added: Support for Lectora Inspire SCORM 1.2 and xAPI content - Added: Tin Can and xAPI Quiz reports now available on the front end; settings to enable/disable added to Settings page (default is disabled) - Added: Tin Canny protection settings on non-LearnDash post types - Added: Manage Content Page preview URL filter for sites using non-standard WordPress configurations: apply\_filters( ‘tincanny\_module\_url\_preview’, $src, $post ); - Updated: Performance of Hidden and Autoadvance option improved - Updated: Added message to run Learndash data upgrades to improve reporting accuracy - Updated: Added support for Add Tin Canny Media button in Text element of Divi Builder - Fixed: All records now included if “Excel Export” is clicked on initial load of the Course Report - Fixed: Reports not loading when LD settings returning as array instead of string - Fixed: Tin Canny no longer attempts to save resume data for anonymous users - Fixed: Database error when H5P modules don’t pass correct user details in API call - Fixed: PHP Notice: Undefined offset: 0 when LearnDash post settings are uninitialized --- ### 3.3.8 - Added: Setting to enable the Uncanny Toolkit Pro Autocomplete Lessons and Topics module to autocomplete lessons and topics even when a Tin Canny module is present on the page - Updated: When using Hidden and Autocomplete setting, the associated lesson/topic is now marked complete immediately when the completion verb is received - Fixed: Database error – Unknown column ‘stored’ on plugin activation on some server configurations - Fixed: Warnings in browser console on Tin Canny report pages - Fixed: xAPI Quiz and Tin Can reports no longer both return results when a query is performed on either report - Fixed: Detailed Report icon now displayed on Tin Canny reports in /wp-admin when LearnDash legacy theme is selected - Fixed: PHP notice if LearnDash settings have not yet been saved - Fixed: PHP warning – Illegal string offset ‘restrict mark complete’ if there is no postmeta available for the current post - Fixed: PHP notice – Undefined property: stdClass::$enrolled on dashboard widget when there are no users enrolled in a course - Fixed: PHP error – Class stdClass not found on some server configurations --- ### 3.3.7 - Updated: Tin Canny Mark Complete integration setting now overrides the [Autocomplete Lessons and Topics module](https://www.uncannyowl.com/knowledge-base/autocomplete-lessons-topics/) of the [Uncanny Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) on all lesson and topic pages containing a Tin Canny module - Updated: Removed Foreign Key Check from Site Check page as errors reported were typically not related to foreign keys - Updated: All relevant database tables now set to use INNODB engine for improved support for foreign keys - Fixed: JavaScript error preventing some modules uploaded since version 3.3.6 to not load correctly - Fixed: PHP warning: Illegal character causing Mark Complete button to not be displayed on sites running PHP 7.3 if the post-level Mark Complete option was not set --- ### 3.3.6 - Updated: Improved z-index compatibility of statistics container overlay with other document elements - Updated: Removed deprecated JavaScript content protection code from uploaded files - Fixed: PHP warnings and incorrect priority settings when Tin Canny settings metabox options were translated. Options are no longer translatable. - Fixed: The Mark Complete button was no longer appearing below Tin Canny content when Focus Mode was enabled - Fixed: SQL syntax error when a course had zero enrollments - Fixed: Average quiz scores inconsistent between course and user reports. User reports now include all attempts in the average --- ### 3.3.5 - Added: Support for renamed quiz tables - Added: Additional checks to Site Check page for issues caused by mod\_security PHP module or invalid foreign keys - Added: Filters tc\_manage\_content\_cap and tincanny\_can\_get\_data for managing access to reports for users with custom roles/capabilities - Updated: Improved support for converted Course Access Lists (LearnDash Data Upgrades) - Updated: Added additional check for whether the posts table is using the INNODB engine before converting - Updated: Removed references to deprecated uotincan\_log table - Fixed: Duplicating a post that contains a Tin Canny Gutenberg block may result in an uneditable copy of the post - Fixed: PHP fatal error on Help/Submit Ticket tab in wp-admin --- ### 3.3.4 - Added: Support for renamed LearnDash quiz database tables (wp\_learndash\_pro\_quiz\_) - Added: Action ‘tincanny\_additional\_user\_profile’ for inserting additional custom functionality on user profile page - Added: Ability to customize text on Launch button in Classic editor uploader - Added: readme.txt file - Updated: Improved consistency of bookmarking and resume in Captivate files - Updated: Added additional checks for valid user information in reports to avoid JavaScript errors - Updated: Added fall back for missing pro\_quizid activity meta if not stored by LearnDash, resulting in empty detailed quiz reports - Updated: Improved handling of content that attempts to detect Flash player by delaying window binding calls from JavaScript - Updated: Removed deprecated reference to activitystream.ms/schema/1.0/page - Updated: Removed option to launch Tin Canny content in same tab - Updated: Changed “Display Name” to just “Name” on reports - Updated: Added note about using Screen Options tab for customizing columns on xAPI report - Updated: Replaced references to test.com in placeholder file with current site’s URL - Updated: Report now filters out duplicate “passed” statements (identical “passed” statements submitted within 10 seconds of each other) - Updated: All related Tin Canny data now deleted when user deleted - Updated: Clearing a user’s LearnDash data now clears all Tin Canny data for that user - Updated: Quiz name now displayed properly in individual Tin Can report when Tin Canny module embedded in LearnDash quiz page - Updated: Mark Complete button now enclosed in separate div to streamline code to hide/show the button - Fixed: Mark Complete button no longer appears momentarily on page load when “Hidden and \_\_\_\_\_\_\_” option is selected - Fixed: Reports now inheriting LearnDash labels for lesson and topic on all pages - Fixed: PHP warning in init.php on some servers - Fixed: PHP fatal error if Rise submits results without a score - Fixed: Summary user counts on multisite sub-sites showing user totals across site network - Fixed: Plugin sending extraneous data in unrelated AJAX responses in some situations - Fixed: JavaScript error if less than 30 days of LearnDash course completion data is available - Workaround: When a Gutenberg post is cloned with the Duplicate Posts module of the Uncanny LearnDash Toolkit Pro, Tin Canny Gutenberg blocks in the cloned post now function correctly --- ### 3.3.3 - Fixed: JavaScript error causing Mark Complete button integration to fail in some instances when a module is opened in a new window - Fixed: PHP Fatal Error when Rise courses don’t return a score value on quiz questions - Fixed: xAPI Quiz Report – Filters for Correct/Incorrect returned the opposite of what was selected - Fixed: PHP Notice: Undefined Index: nonceProtection --- ### 3.3.2 - Updated: Improved Mark Complete button handling for Storyline content - Fixed: Course enrollment numbers for some courses showing zero --- ### 3.3.1 - Fixed: Unsupported mySQL command causing reports to not load on some servers - Fixed: Endpoint unreachable error in iSpring on multisite - Fixed: PHP Notice: Undefined index: disablePerformanceEnhancments - Fixed: Removed foreign key change for multisite introduced in 3.3 --- ### 3.3 - Added: Support for Articulate Presenter 360 files - Added: Compatibility with LearnDash 3.1 - Updated: Improved report performance - Updated: Removed beta label from Replace Content function - Updated: Removed beta label from xAPI Quiz Report - Updated: Improved Mark Complete button integration compatibility with Firefox - Updated: H5P scripts no longer loaded when doing WP cron - Updated: Removed redundant add\_action that was adding an empty div to wp-admin dashboard - Fixed: Autoadvance not working in last topic of lesson - Fixed: Lesson/topic-level content protection setting now works when the global protection setting is set to “Yes”. Lesson/topic-level content protection setting is now unavailable and hidden when global protection setting is set to “No” - Fixed: xAPI statement conflict when multiple browser tabs are open at the same time - Fixed: Layout of Replace Content modal dialog - Fixed: Detailed quiz reports not working on some sites - Fixed: Topic and Lesson names not displaying correctly in Tin Can tab of User report - Fixed: Reports not displaying names when column names were translated - Fixed: Date sorting in front-end reports when WordPress date format was set to d/m/Y - Fixed: Time on front-end individual quiz report now adjusted correctly for WordPress time zone - Fixed: Foreign key SQL error on WordPress multisite - Fixed: Illegal string offset ‘restrict-mark-complete’ PHP warning - Fixed: Datatables warning: Requested unknown parameter ’email’ if user\_email is empty --- ### 3.2.2 - Added: Three new Mark Complete button options: Hidden until complete, Hidden and autocomplete, Hidden and autoadvance. [Learn more](https://www.uncannyowl.com/knowledge-base/tin-canny-learndash-mark-complete/) - Added: Ability to change the label on the Mark Complete button in lessons that contain a Tin Canny module - Added: Setting to enable sorting by % Complete; disable to improve report performance - Updated: If the site’s database prefix changes, foreign key constraints are now updated - Updated: Quiz table now shows all quiz attempts - Updated: Quiz averages now include failed attempts - Updated: Made it easier to reset the Question field on the xAPI Quiz Report (beta) - Updated: Lesson listings no longer constrained by post limits - Fixed: Issue with Group Quiz Report not displaying properly when a Course or Group name contains a double space - Fixed: Completed courses count was inflated on some views - Fixed: Open courses not included in the single course overview table - Fixed: Passing xAPI quiz scores were being recorded as 100% instead of the actual scores in some situations --- ### 3.2.1 - Added: Additional filters for developers - Added: Reset xAPI Data button to erase all saved quiz data - Updated: Changed question dropdown on xAPI report (beta) to select2 to make it easier to select a question when the dropdown contains many entries - Updated: Module dropdown populates via AJAX when Course is selected, instead of requiring a page refresh - Fixed: Delete button that appears after upload now associated with correct content ID (affects Classic Editor only) - Fixed: Sorting on Completion Date not working on some sites - Fixed: Bug with Tin Can completion dates due to daylight savings time --- ### 3.2 - Added: Compatibility with LearnDash 3.0 - Added (beta): New xAPI Quiz Report – See what responses users selected on quiz questions. Supports Tin Can (xAPI) content only - Added (beta): Replace content – Ability to replace existing content from Manage Content page without having to delete, re-upload, and update existing shortcodes (or Gutenberg blocks) - Added: Numerous report filters for developers - Added: Site Check page to check for common configuration issues - Added: Total Courses / Total Learners stats to front end reports - Updated: Hard-coded plugin settings page URLs to avoid issues with translation - Fixed: Mark Complete button not disabled when using LearnDash 3.0 with LearnDash 3.0 theme enabled - Fixed: Bug with Tin Can completion dates due to daylight savings time --- ### 3.1.1 - Fixed: Issue with Tin Can Report not displaying data on some sites - Fixed: Issue with content protection causing 404 errors on some sites - Fixed: Module links in Tin Can Report now work properly for sites in a subfolder --- ### 3.1 - Updated: Improved H5P xAPI performance - Updated: Improved compatibility with jQuery 3.x (including FoundationPress theme) - Updated: Delete Tin Canny data profile options now only shown to Administrator users - Updated: Clicking Reset on Tin Can Report now keeps the user on the Tin Can Report tab - Updated: Restored assignment links in assignments table - Updated: .csv exports now include course slug / user email where applicable - Updated: Re-implemented sorting on Completion Date column in Course Report - Updated: Added Courses Enrolled, Not Started, In Progress, Completed columns to User Report - Updated: Tin Can endpoint URL in iSpring uploads now saved as relative instead of absolute URL - Updated: Improved module protection function (requires mod\_rewrite support at the host level) - Fixed: Issue that would cause 403 errors in some content when viewed while logged out - Fixed: Previewing modules from the Manage Content page now works on sites installed in a subfolder - Fixed: User search in course report now displays data for all matching users - Fixed: Users showing as enrolled in all group courses for administrators when group filter is not selected - Fixed: Simple Course Timer module (Uncanny LearnDash Toolkit Pro) idle dialog now appears in front of Tin Canny content --- ### 3.0.2 - Updated: Total Users and Total Courses statistics reinstated on main courses report page - Updated: Group filtering improved for admin-level users - Fixed: Summary numbers on user course report when the user is enrolled in more than 10 courses - Fixed: CSV export now includes all records --- ### 3.0.1 - Updated: Plugin can no longer be activated unless LearnDash is already activated - Updated: Improved translation support - Updated: Improved wording of Tin Canny data management options on Edit User page - Fixed: Issue where group leaders could sometimes see users in other groups - Fixed: Data inconsistency when users with progress in Open courses were deleted - Fixed: Manage Content page was blank on some non-English sites - Fixed: Error when course progress is 100% or greater but no course completion date is stored (now displays “In Progress” instead of \[object Object\]) --- ### 3.0 *Important Note*: The columns that display data from the Simple Course Timer module of the Uncanny LearnDash Toolkit Pro were moved from this plugin to the Toolkit Pro plugin. The columns will not appear until Toolkit Pro version 3.0.3 (to be released imminently). If you require the use of these columns immediately, wait until the Toolkit Pro update is available before updating this plugin. 3.0 brings a complete overhaul of reporting! Design and user experience have been streamlined and performance has been significantly improved for very large sites. - Added: Uncanny 3.0 plugin architecture (tabs for Help, License Activation, etc.) - Added: Setting to disable Tin Canny wp-admin dashboard widget - Added: Basic Gutenberg block support for individual and group quiz reports - Added: Filter for $item\[‘url’\] to help with troubleshooting issues on some sites - Added: User’s avatar now displayed on all individual user reports - Added: Breadcrumb navigation within reports - Added: Unique CSS class to dashboard, back end reports and front end reports - Added: Support for Captivate 2019 - Added: Ability to purge Tin Can records and/or bookmark data for individual users - Added: Average quiz score column on course report - Updated: Improved performance on large sites - Updated: Improved consistency of data across courses and groups - Updated: Improved handling of deleted users - Updated: Improved accuracy and reliability of all charts - Updated: Charts now display clear notices if no data is available for the specified view - Updated: Replaced number of courses/users with buttons to jump quickly to specific reports - Updated: Improved responsiveness (mobile support) of all reports - Updated: Export CSV button and search fields are hidden on tables with only one row of data - Updated: Improved drill-down behavior: Course > User > Course report for user instead of Course > User > Course list > Course report for user - Updated: Removed some redundant console messages - Updated: Improved compatibility with newer MySQL versions - Updated: Improved translation support in reports and plugin settings page - Updated: Added support for additional H5P module types - Fixed: Essay question submissions can now be viewed in the Quiz Report - Fixed: Mark Complete button integration when module embedded with a Gutenberg block - Fixed: Manage Content page – Page navigation button size - Fixed: Typo – “Select a content” - Fixed: Error when Tin Can verb is not set Known Issues: - The Course Report uses a custom Uncanny Owl query that shows “In Progress” for users that have completed any activity in a course, such as a quiz. The User Report uses LearnDash functions that only return “In Progress” if the user has completed a lesson or topic. This means that “In Progress” vs. “Not Started” numbers may be inconsistent between the Course Report and User Report in the rare instance that a user has completed a quiz or other course activity but not completed any lessons or topics. --- ### 2.9.9.2 - Added: Check for matching protocols (http/https) in WordPress general settings - Updated: Improved handling of duplicate URL issue in some edge cases - Fixed: Mark Complete button now disabled when module added with Gutenberg block and Mark Complete button integration is enabled - Fixed: Content now displayed to logged-out users on non-LearnDash post types when content protection is disabled - Fixed: Removed log file --- ### 2.9.9.1 - Updated: Inconsistent text on Manage Content page - Fixed: Replaced Lorem Ipsum text in Gutenberg block --- ### 2.9.9 - Added: Gutenberg modules for uploading Tin Canny content and embedding the front end course/user report - Added: “Manage Modules” page to enable module management outside of a WordPress post - Added: Buttons to purge “Answered” and “Experienced” statements from the database - Added: Support for “+” characters in user emails - Added: Support for H5P “Course Presentation” content type - Added: button\_text attribute for setting text on the launch button - Added: width and height parameters now accept vw and vh CSS units - Updated: “Add Tin Canny Media” button in Classic Editor now uses standard button design - Updated: Tin Can (xAPI) data is no longer stored when “Capture Tin Can Data” is set to “No” - Updated: Improved time zone support in front end quiz report - Fixed: Typo in “Comma separated Tin Canny verb(s).” --- ### 2.9.8 - Added: Compatibility with “A Tin Can verb is recorded from a Tin Can module” trigger in Uncanny Automator (https://automatorplugin.com) - Fixed: Missing records in some reports for users added to groups using non-standard methods - Fixed: Date search in Tin Can report - Fixed: Module not selected in Tin Can report drop down --- ### 2.9.7 - Updated: Made export file names easier to read - Updated: Tin Can timestamps are now stored in the site’s time zone - Fixed: Duplicate URL issue in embedded modules on some sites with SSL enabled - Fixed: Data not loading in front-end quiz reports --- ### 2.9.6 - Added: Title identifying user to the front end individual activity report - Updated: Replaced display names with first and last name (if available) in front end reports - Fixed: Restored missing data from new front end activity reports when there were multiple attempts - Fixed: Some files missing on upload of new modules - Fixed: DOCTYPE tag position in Rise files causing layout issues --- ### 2.9.5 - Added: \[user\_quiz\_report\] shortcode to show a user his or her consolidated quiz and xAPI scores in a single report - Added: \[group\_quiz\_report\] shortcode to show Group Leaders and admins LearnDash quiz and xAPI scores of students by group and course - Fixed: SQL issue in reporting on multisite installations - Fixed: Donut charts did not render in some situations - Fixed: Global setting for “Disable Mark Complete button” now correctly labeled on settings page - Fixed: Stopped WordPress from automatically translating Tin Can report headings that caused columns to hide data --- ### 2.9.3 - Fixed: Articulate Rise Mark Complete button integration - Fixed: Completion date now appears in reports on multisite installations --- ### 2.9.2 - Fixed: Incorrect file versions in 2.9.1 release --- ### 2.9.1 - Updated: Improved compatibility with Rise modules published as SCORM 1.2 - Fixed: Issue loading Captivate modules (introduced in version 2.9) --- ### 2.9 - Added: Beta support for modules from ANY authoring tool, provided the content launches with an .html file. Note that files embedded using this method will not have xAPI/SCORM statements recorded, and may display errors stating that they cannot communicate with an LMS/LRS - Updated: Improved tracking of xAPI statements from Articulate Rise modules - Updated: Improved Mark Complete button activation with Storyline 3/360 files when embedded using lightbox - Updated: Tweaked design of header on setting and back-end reporting pages - Fixed: Plugin license could not be deactivated on some sites - Fixed: SQL statement bugs in reporting-api.php - Fixed: Number of entries per page dropdown on Tin Can Report now functions as expected - Known Issue: Rise modules published as SCORM 1.2 may display an error when viewed --- ### 2.8.2 - NOTE: If you are seeing your domain name duplicated in module embed shortcodes, deactivate and reactivate the plugin, then try embedding the module again. - Added: Option to allow Group Leaders to delete members to free up seats even after they’ve started or completed courses - Added: Option to prevent Group Leaders from taking up a seat when added to the Enrolled Users table - Added: \[uo\_groups\] parameter add\_group\_leader\_button to show/hide the Add Group Leader button - Added: Additional string localizations - Added: course-order parameter to sort the course drop-down on \[uo\_groups\_course\_report\] and \[uo\_groups\_quiz\_report\]. Possible values include ‘ID’,’title’,’date’,’menu\_order’ - Updated: Group Leaders can now be removed from the Enrolled Users table --- ### 2.8.1 - Updated: Time Spent columns no longer require course completion to show data - Fixed: Broken SQL query in 2.8 - Fixed: Site URL no longer duplicated in shortcode when embedding content - Fixed: PHP Notice when protection setting not explicitly set --- ### 2.8 - Added: Beta support for Rise xAPI content - Updated: Tin Can report CSV export now considers applied report filters - Fixed: Site URL no longer duplicated in shortcode when embedding content --- ### 2.7 - Added: Filter for header Content-Security-Policy (‘tincanny\_content\_security\_policy’) - Updated: Course Summary button now translatable - Updated: Improved Tin Can/”Mark Complete” compatibility in Microsoft Edge and Internet Explorer - Fixed: Content protection no longer forced on non-LearnDash post types for logged-out users - Fixed: Empty columns in some reports - Fixed: Settings link on Plugins page --- ### 2.6.1 - Updated: Tin Canny reporting capability now added to group\_leader role on plugin activation only - Fixed: Plugin shows update available even after updating --- ### 2.6 - Updated: All strings in front end reports are now translatable - Fixed: Typo on settings page --- ### 2.5 - Updated: Tin Canny reports now appear on the WordPress dashboard for group leaders - Updated: Settings page layout - Updated: Removed Uncanny Owl branding from tincanny shortcode - Fixed: Tin Can tab no longer displays for group leaders when Tin Can data is disabled in settings - Fixed: Group Leaders could not see quiz data in reports - Fixed: Added message to Tin Canny front-end reports for users without access --- ### 2.4 - Updated: Settings have now been consolidated under Tin Canny Reporting > Settings - Updated: Going forward, newly added modules will not have full URLs saved in the wp\_snc\_file table to make it easier to migrate the site to a new URL (Modules uploaded prior to version 2.5 will need to have their URLs updated in the database manaully if the site URL is changed) - Fixed: Issue with H5P module completion not enabling the Mark Complete button - Fixed: Issue with Free courses not displaying correctly in reports - Fixed: Issue with quiz averages displaying extremely large numbers under rare circumstances --- ### 2.3 - Fixed: Mark complete functionality when multiple Tin Can/SCORM modules are on a single lesson/topic page - Fixed: Usage of wp\_postmeta instead of $wpdb->postmeta, resulting in lesson, topic and quiz list not showing up in user course table - Fixed: Uncaught exceptions in when user has no data yet, a course has no users assigned, or a group is not fully set up - Fixed: JavaScript error that appeared in some situations when a quiz was deleted after having been completed by a user in a specific course --- ### 2.2.2 - Updated: Removed admin message “An update is required for your Tin Can modules…” Message is now output to the browser console if present. - Updated: Removed redundant buttons in frontend report that linked to admin panel - Fixed: Group dropdown now filters report data correctly - Fixed: Group dropdown no longer appears for leaders of a single group --- ### 2.2.1 - Updated: Improved reporting compatibility with LearnDash 2.5+ when Shared Course Steps is enabled - Updated: Default font color for table headings in front end reports - Fixed: Duplication of users and lessons in reports in some situations - Fixed: PHP Notice when viewing \[tincanny\] shortcode as a logged-out user --- ### 2.2 - Added: Shortcode to display Tin Canny reports in the front end - Added: Dropdown to display data for a specific group - Updated: scormdriver.js to improve compatibility with Microsoft Edge --- ### 2.1.1.5 - Updated: Reporting compatibility with LearnDash 2.5+ - Updated: Tin Canny reports now use LearnDash custom labels for Courses, Lessons and Topics - Updated: JavaScript debugging code removed - Fixed: Error in some environments in Shortcode.php and RestEndpoint.php --- ### 2.1.4 - Fixed: Convert wp\_posts table to InnoDB mySQL engine to support foreign key mapping - Fixed: “An update is required for your Tin Canny modules. Refresh the page to complete the update.” message is now displayed using standard admin panel messaging functions --- ### 2.1.3 - Updated: Deleting a user’s LearnDash course data also deletes any resume points for that user in Tin Can modules - Fixed: Required update error message temporarily removed to address acute issues on some sites --- ### 2.1.2 - Added: options to unprotect uploaded modules - Fixed: H5P statement tracking ### 2.1.1 - Fixed: Issue with Mark Complete disabled in topics that did not contain Tin Canny content ### 2.1 - Fixed: Illegal String Offset issue on some server configurations ### 2.0 - Added: Hyperlinked user’s name to user’s profile page in user report - Added: Hyperlinked assignment name to assignment page in users’ assignment reports - Added: Support for Adobe Captivate 2017 modules - Added: Protection for Tin Can and SCORM modules based on user session - Updated: Changed the way modules communicate with WordPress to enable the Mark Complete button - Fixed: Illegal String Offset error in some situations - Fixed: User assignment reports now list only the selected user’s assignments - Fixed: Reporting errors if WP Debug is on --- ### 1.3.9.1 - Improved H5P statement tracking --- ### 1.3.9 - Added ability to use Tin Canny modules on any post types - Fixed inconsistency of user progress between Course Summary and Course Detail reports --- ### 1.3.8 - Added Reset Bookmark Data button in Tin Canny Settings to manually clear resume data errors - Fixed 404 errors when resuming Articulate Rise modules - Fixed Tin Can statement tracking of Rise and iSpring modules using Request Payload - KNOWN ISSUE: Changing site URLs can cause Tin Can data to be omitted from reporting and will be addressed in the next release. --- ### 1.3.7 - Added Tin Can statement tracking for Storyline 2 and Storyline 360 modules in Articulate Mobile Player - Updated EDD updater class - Fixed user counts to consider all group enrolment options - Fixed upload issue of iSpring modules published to web - Fixed Mark Complete issue of Captivate modules published to web - Fixed completion rate issues caused by group enrolment - Fixed Mixed Content errors caused by hard coded URLs --- ### 1.3.6 - Added resume capability for Storyline, Captivate, and iSpring - Fixed custom image button in Tin Canny Uploader - Changed settings menu page title to Tin Canny Settings --- ### 1.3.5 - Fixed upload issue introduced in 1.3.4 --- ### 1.3.4 - Added more error checking to Tin Canny Uploader --- ### 1.3.3 - Added support for permalink containing index.php - Added error message when detecting unsupported zip file --- ### 1.3.2 - Fixed errors when deleting Tin Can modules ### 1.3.1 - Fixed Mark Complete control for modules displayed in a new window on mobile --- ### 1.3 - Added Group Leader access to reports - Fixed Mark Complete visibility for modules displayed in a new window --- ### 1.2 - Added preliminary SCORM support - Added iSpring support - Added Articulate Storyline 360 support - Added Articulate Rise support (SCORM only) - Added admin setting to clear all Tin Can data - Added validation for average quiz score number - Changed minimum capability from ‘activate\_plugins’ to ‘manage\_options’ - Removed View Report links on the Course Report page --- ### 1.1.6 - Added: Beta Tin Can/xAPI support for iSpring content - Fixed: Notice of undefined variable”s” - Fixed: Paths to wp-h5p-xapi.js and wp-h5p-xapi.css files causing 404 error --- ### 1.1.5 - Added Captivate/Storyline uploader to all regular post types - Updated Result column to show percentage of total score - Fixed issue of Captivate quiz scores not showing in Tin Can Report - Removed dependency on H5P xAPI plugin --- ### 1.1.4 - Updated amCharts libraries to version 3.20.17 - Fixed Tin Can report jQuery selector for empty charts --- ### 1.1.3 - Added a number of under-the-hood architecture tweaks (Thanks, Mark!) - Fixed sorting by percentage complete - Fixed negative number showing on Y-Axis in Recent Activities chart - Fixed reports not displaying in subdirectory install --- ### 1.1.2 - Fixed Storyline upload issue introduced in 1.1 - Fixed a LearnDash condition that prevented the reports page from loading --- ### 1.1.1 - Added all quiz attempts in user activities table --- ### 1.1 - Added new performance metric “Least Completed Courses” - Added stats on total time spent in course - Added CSV export to all tables - Added option in Settings to control whether LearnDash Mark Complete button should be disabled until the learner completes all Tin Can modules in the lesson/topic - Added message to Course Overview Report when there is no data to display - Added message to User Progress Report when there are no activities to report - Added deletion of Tin Can data when a user’s LearnDash data is deleted - Fixed Javascript error when accessing H5P content in admin area - Fixed Javascript error with H5P Interactive Video - Fixed Javascript error caused by an undefined LearnDash group parameter --- ### 1.0.3 - Fixed 502 Gateway error caused by groups with no assigned courses - Fixed rounding of timer seconds --- ### 1.0.2 - Fixed padding for Storyline & Captivate lightbox - Fixed zip file upload issue --- ### 1.0.1 - Fixed option to hide Tin Can data from reports - Changed table column heading from “Completion Time” to “Time to Complete” - Fixed Storyline/Captivate file upload issue when the ZipArchive module was not available on the web server - Fixed several TypeErrors --- ### 1.0 - Initial release --- **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Uncanny Groups for LearnDash - Changelog](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-changelog/) **Published:** October 12, 2018 **Author:** Ken **Excerpt:** Read the Uncanny Groups changelog. **Content:** ### 6.1.8 \[2026-05-29\] **Fixed:** - Group Management – Resolved an issue where missing license products could prevent seat purchases and make related group actions unavailable #1270 - Group Management – Addressed an issue where reducing total seats could fail due to stale seat assignments for users no longer in the group #1282 - Group Management – Fixed an issue where seat refunds could remove users with a “Not enrolled” status instead of using available unassigned seats first #1279 - Group Management – Corrected group leader seat usage being incorrectly affected by the “Do not automatically add Group Leaders as Group Members” setting #1248 - WordPress Compatibility – Settings now appear in a dedicated “Uncanny Groups” tab on the edit page for LearnDash post types #1285 --- ### 6.1.7 \[2026-03-18\] **Fixed:** - Admin CSV download – Resolved a fatal error when `fpassthru` is disabled on the server #1223 - Group License purchase – Fixed an issue where the group name was not being saved #1227 - Child groups – Fixed an issue where pooled seats were not calculating correctly #1228 - Seats – Freed seat codes when a WordPress user is deleted #1225 --- ### 6.1.6 \[2026-02-27\] **Fixed:** - Group Codes – Resolved an issue where seat and invite counts were incorrect after a WordPress user was deleted by ensuring deleted users no longer affect group code totals #1182 - Group Leaders – Resolved an issue where adding a Group Leader from the group edit page in wp-admin incorrectly consumed seats when “Do not add Group Leaders as members” is enabled, causing all assigned Group Leaders to be assigned seats or keys after saving #1184 - Group Management – Fixed an issue where emails were not sent to users with the selected status #1171 - Group Management – Fixed an issue where group tables were not displaying due to JavaScript being wrapped in paragraph tags #1176 - Seat count – Corrected remaining seat calculation to ensure only current group members are counted toward used seats, preventing orphaned or removed users from affecting availability #1178 --- ### 6.1.5 \[2025-10-24\] **Fixed:** - Group Essay Report – Quiz dropdown not populating and missing support for course-level quizzes #1160 - Group Management & Hierarchy – Group Leaders and Admins can now add users to both parent and child groups without triggering the “This user is already a member of this group” error #1157 - Group Management & Hierarchy – Seat count not updating when an admin adds a user to a group via wp-admin with pooled seats enabled #1150 - Password Reset Token – Resolved PHP `WP_Error` when LoginPress Pro is active #1164 - License Price Calculation – Prevented recursion by skipping self-referenced products #1155 --- ### 6.1.4 \[2025-08-01\] **Fixed:** - Course Report – Resolved column mismatch caused by DataTables state persistence when using `ulgm_group_course_report_columns` filter #1139 - Downgrade Group – Fixed PHP error occurring when downgrading from an Uncanny Group to a basic LD Group #1135 - Error Messages – Fixed issue preventing error messages from loading in a specific situation #1144 - License Subscriptions – Resolved PHP error triggered by calling a method on an invalid Order ID #1137 - License Product – Fixed PHP error (Call to a member function `get_id()`) occurring when a License product no longer exists on the site #1148 --- ### 6.1.3 \[2025-05-13\] **Fixed:** - Deleting a group now correctly removes associated codes #1121 - Essays Report – Corrected point value formatting issue #1117 - Translation loading – Resolved incorrect use of `_load_textdomain_just_in_time` for Uncanny Groups domain #1120 - Group Assignment Report – Fixed Lesson/Topic dropdown not functioning for Group Leaders with only one group #1125 - Group Management – Resolved issue where all courses were appearing in the parent group #1113 - Groups code redemption – Fixed issue where logged-in users or new registrants could not redeem keys for a child group when hierarchy and pooled seats settings were enabled #1111 **Internal:** - Resolved conflict between Uncanny Groups and Tin Canny DataTable libraries when both reports are loaded on the same page #1123 --- ### 6.1.2 \[2025-03-10\] **Updated:** - Group Management – User dropdown – Added WordPress filter `uo_report_menu_items` to allow custom items #1086 - Some data will no longer autoload to enhance site loading performance #1094 **Fixed:** - Edit Group – Resolved a PHP error in inline JS under specific conditions #1104 - Group Management – Parent Pool Seats & Send Enrollment Key – Fixed an issue where users were being added to the parent group when an enrollment key was sent for a child group #1106 - Group Management – Upload Users – Resolved an issue preventing CSV file uploads when the user\_login column was missing #1088 - Redeeming code for a child group – Fixed an issue where users were removed from the assigned child group and moved to the parent group #1083 - Woo License + Elementor – Fixed an issue where individual product prices in the cart disappeared for all products when Uncanny Groups was active #1092 --- ### 6.1.1 \[2024-09-11\] **Updated:** - Group Management – A new setting to “Allow Group Leaders to change email” #1075 **Fixed:** - Course Report – Groups are now listed in hierarchy instead of alphabetical order when the Groups hierarchy setting is enabled #1074 - License Subscription – Cart showing incorrect price when Fixed Price and Min/Max enabled #1059 **Internal:** - REST API endpoints – Tightened REST call security and set the minimum role to `edit_post` of a user that a Group Leader can edit to improve security #1075 - Email Templates autoload optimization #1066 - Added a way to regenerate group management pages #424 --- ### 6.1 \[2024-07-11\] **New Feature:** - Group Management – Upload users – Support to add custom user meta added #1008 **Added:** - Group Course Report – Time column for courses #829 - Group Management – Upload Users – Add support for user\_login column #708 **Updated:** - Group Edit page – “Send enrollment key” email template override #1020 - Group Management – Password message updates #1014 - Group Quiz Report – Ability to programatically show/hide report columns #1016 **Fixed:** - Edit user page – PHP 8.1 warning when adding or removing user in group #1028 - Group Course Report – Additional validation if the Group leader has access to the group #1021 - Group Management – Add users – CSV upload formatting #1005 - Group Management and Licenses – Purchasing additional seats is creating a new group instead #1037 - Group Management and Pooled Seats – Adding a user to any group in hierarchy with pooled seats could create a loop #1032 - Group Management and Pooled seats – Adding a user with “Send enrollment key” option to any group in a hierarchy causes the user to be added to all groups in hierarchy #1031 - Group Quiz Report – PHP warning related to statistic\_ref\_id #1026 - Multisite – #ResetPassword token – Now uses home\_url() to generate the password reset link #1042 - Progress Report – Sort order not working for Group Leaders #1011 - Woo License – Keep the application of WP filter ‘ulgm\_group\_name’ consistent #1034 - Group License – add/update/get\_post\_meta for $order replaced with Woo’s internal methods for HPOS compatibility #1036 - Woo Subscriptions – PHP Error on My account’s Subscriptions page in a specific situation #1040 **Under the hood:** - Added cron event to validate DB upgrade changes #1018 - Declare Woo block incompatibility #1044 - Hide other plugin notices on Groups pages #1041 - Improved compatibility with Woo’s HPOS #821 - Move license box to Settings page #1046 - WP Action `uo_before_manual_group_created` to allow custom code before manual groups gets created #1023 --- ### 6.0.4 \[2024-05-06\] **Fix:** - Group Management – Add Multiple Users – Filter `ulgm_bulk_add_new_user_validation` preventing multiple users from being added to groups #1009 --- ### 6.0.3 \[2024-04-25\] **Update:** - Group Management – Add Multiple Users – New WP Filter `ulgm_bulk_add_new_user_validation` to allow custom validations #1002 **Fix:** - License Subscriptions – Groups losing course access on renewal #999 --- ### 6.0.2 \[2024-04-17\] **Update:** - WP Filter `ulgm_maybe_send_welcome_email` – Added `$group_id` parameter #986 **Fixed:** - Group Course Report `[uo_groups_course_report]` – Custom defined columns default visibility #988 - Groups Essay Report `[uo_groups_essays]` – Selected quiz in quiz dropdown not retaining value on page reload #990 - Group Registration and Group Redemption – Native forms not redeeming codes properly #994 **Under the hood:** - Various PHP Notices #996 --- ### 6.0.1 \[2024-04-04\] **Addition:** - Licensing – Allow plugin to be pre-activated by defining `UNCANNY_GROUPS_LICENSE_KEY` in wp-config.php #976 **Updated:** - Group Management – Added ‘super\_admin’ user role to allowed roles #950 - Checkout – “Group Name” heading on checkout – Added context to the Name string for translation clarity #958 **Fixed:** - Essay Report – The points awarded cannot exceed the points available #962 - Essay Report – Fix undefined var `$quiz_score_difference` when saving the essay data #978 - Group Management & Simple Subscription License – Group Name field not appearing on cart and checkout pages #967 - Groups Management – Student only taking one seat when added to different child groups in hierarchy #965 - PHP error when adding Group Leader role to an existing user in a particular situation #980 - Quiz & Group Essay Report – Display singular labels in drop-down #971 - Woo Subscriptions – PHP ERROR when attempting to assign property “post\_status” on null #953 **Under the hood:** - Buy Courses – Add a filter `ulgm_create_license_redirect_target` to override default checkout redirect behaviour #973 - Licensing – Updated license check endpoints #977 --- ### 6.0.0.1 \[2024-02-27\] **Update:** - Groups Course Report – Added a WP Filter `ulgm_course_parent_enrolled_hierarchy_disable` to optionally enable child group records #935 **Fixed:** - Group Assignment / Essay Reports – 403 error when downloading the assignment/essay #947 - Group License – Group Name(s) fields appearing for some non-Groups related products #937 - Group Management – Additional validation if WooCommerce is active before calling a specific function #933 - Group Quiz Report – Assets Enqueue Issue in some situations #945 - Group User Query & Multisite – User viewing from the main site with non-unique Group IDs is getting users from other sites #930 - User Progress Report – User AJAX search field loses focus when opened #931 - User Progress Report – User Query conflict resolution #942 --- ### 6.0 \[2024-01-31\] **New Feature:** - Group License – Support for multiple licenses in a single transaction #265 **Added:** - Uncanny Groups Settings for Woo #144 #926 - Group License product type – Default Tax status - Group License product type – Default Tax class - Hide “Group Name” field(s) on checkout page - Hide “Group Name” field on product page - Do not make the “Group Name” field editable on cart page - Group Course Report – Transcript URL (`transcript-page-id` attribute) to view user’s transcript from Uncanny Toolkit Pro 4.2+ #837 **Updated:** - Bulk discount – Now discounts the license price instead of adding a negative fee to the order #925 - Group Essays – load\_on\_render attribute for \[uo\_groups\_essays\] shortcode to prevent initial load #905 - Group Management & Reports – Improved Web Content Accessibility Guidelines (WCAG) compatibility #839 - Group Management – Email users – Improved performance of child group lookup #899 - Manage Progress – Updated to searchable drop-down list #704 **Fixed:** - Bulk discount & AffiliateWP – Referral amount now applies to the order total after the discount #258 - Group Management – Email Users – “From Name” is not using the logged-in Group Leader details #921 - Group Management – New/Existing user added message will no longer show “email is sent” if relevant email setting is not enabled #912 **Under the hood:** - “Try Automator” menu renamed to “Automation” #810 - Group Assignment – JS syntax update from `array` to `[]` #910 - Group Management – Added missing `ulgm_is_hierarchy_setting_enabled` WP filter when fetching children users #917 - Groups Essays – WP Filter `ulgm_rest_api_should_get_essays_data` to prevent unwanted data load #907 - Update LIKE clause to = to reduce query timings #901 --- ### 5.4.0.4 \[2023-11-22\] **Update:** - Manage Progress – Added a “read-only” attribute to make the report read-only #792 - Course and Quiz reports – Restored behaviour to show export options by default #3a33 **Fix:** - Course & Quiz Reports – Export buttons – `uo_groups_course_report` & `uo_groups_quiz_report` shortcode params fix #893 --- ### 5.4.0.3 \[2023-11-09\] **Fixed:** - Blocks – Removed `lodash` dependency for WordPress v6.4+ #892 --- ### 5.4.0.2 \[2023-11-07\] **Updated:** - Group Management – Add Multiple Users – WP Filter `ulgm_multiple_add_users_error_separator` to override the error separator for when `mod security` is enabled #886 **Fixed:** - Group Management – Email Users – “Include students in child group” checkbox only appears for the top level group #890 - Group Management – Erroneously showing Group Leader permission issue #888 --- ### 5.4.0.1 \[2023-11-02\] **Updated:** - Group Management – WP Filter `ulgm_show_show_remove_group_leader_button` to hide the option “Remove Group Leader” #880 - Group Management – Update Email users count text #878 **Fixed:** - Bulk Discount – PHP Error in a specific situation on some sites when a payment is made via WooCommerce PayPal Payments #881 - Group Management – Showing Group Leader permission error on some sites when group is switched #876 --- ### 5.4 \[2023-10-31\] **New Features:** - Groups & WooCommerce License – Remove seats when a related order in WooCommerce is refunded #857 #852 - Edit Group & Create a group Wizards – Add “Parent group” option when LearnDash Group Hierarchy is enabled #859 **Updated:** - Groups Edit Page – Added support to Upgrade/Downgrade any LearnDash group #838 - Group Management – Email users – Allow Group Leaders to also email users in child groups #827 - Manage Progress – Allow easy reset of quiz attempts #789 **Fixed:** - Course and Quiz reports – Shortcode attribute for CSV/Excel download buttons not working as expected #868 - Group Management – Check if user ID is numeric #867 - Fix PHP Error in PHP 8.0 and WARNING in < 8.0 when Group Management and TinCanny shortcodes are on the page #855 - Group Management Block – Page not rendering when block is embedded into another block (ex WP Column) #847 - WooCommerce – Groups product type & LearnDash WooCommerce Integration conflict #846 - Group Management – Seat count not correct when group has 1 user #844 - Group Management – Email #Course variable returning all courses when group has none #840 - Group Management – Group created in non-default language and viewed in that language – Added user permissions #819 - My Account / Subscriptions page – Do not show the list of courses if turned off by `ulgm_woocommerce_hide_course_title_in_product` or `ulgm_woocommerce_hide_course_title_in_subscription` filters #874 **Internal:** - Removing old transients are now done via cron to improve performance #832 - Improved PHP 8.2 compatibility #865 --- ### 5.3 \[2023-08-15\] **New Feature:** - Edit group wizard #714 **Updated:** - Group Management – Upload users – “Add and invite users” checked as a default option #824 - Group Management – Add user – Show custom error message if passed via WP filter `ulgm_add_new_user_data` #814 - Manage Progress – RTL language now lists the contents on the correct side #811 **Fixed:** - Group License – Courses are not showing on checkout page #828 - Group Management – Fix for jQuery Modal plugin #54201 #822 - Assignment Report – Assigned course, Assigned Lesson columns are not working as expected #802 - Groups – Products added to cart show duplicate course info on cart page #799 - Group Upgrade script – Migration script code quality updated #796 - Groups – Group Course Report – Do not show users of child groups when parent group/course is selected #795 --- ### 5.2.0.2 \[2023-06-20\] **Updated:** - Group Management – Edit user – WordPress filter to disallow email field editing #778 **Fixed:** - Group Management Reports – Child group user data not appearing in some reports #788 - Translation – String case to render proper translation #786 - WooCommerce License – Edit product – Missing General tab #784 - Group Assignments – Student column not appearing #782 - Group Assignments – Column resizing issue #782 - Group Assignments – Column defaults not working as expected #782 - Gravity Forms – PHP Error in a certain situation #780 --- ### 5.2.0.1 \[2023-05-31\] **Updated:** - Group Management – Use Course Order set by the LearnDash setting #756 - Group Management – Randomly generated passwords now include special chars and are 18 characters long #722 - Load static assets from inside the plugin #776 **Fixed:** - Groups License Product – PHP Warning when creating a product #771 - Group Quiz Report – Not loading quiz data in a specific situation #766 - Group Management – Incorrect group info appears for the Group Leader of a child group #765 - Group Management – Email Users – Not displaying number of email count when site language is not English #764 - Gravity Forms – Key redemption field not working when create a new user feed is added #763 **Developers:** - Groups License Product – WP Action `ulgm_after_license_product_is_created` #775 - Group Management – WP Filter `ulgm_rest_api_allow_display_name_update` to let the group leader update `display_name` field of the user when they update First or last name #773 --- ### 5.2 \[2023-04-27\] **Added**: - Group Management – Email Users – Now shows number of recipients #725 - Group Management – Add Users forms now supports RTL #729 **Fixed**: - Group License & WooCommerce Payments – Licenses purchased via WooCommerce are not getting correct group names #751 - Assignments report – Dates are ordered alphabetically #749 - Group Management – Remove arrow added to dropdown by Astra #746 - WooCommerce – Edit product – Conflict with WooCommerce Store Credit #744 - Group management – Child group getting pre-selected on page load when hierarchies are enabled #741 - Edit groups – Group-specific email drop-downs not expanding #737 - Essay report – Student attribute not working #730 - Security hardening for Uncanny Automator installer #707 **Developers**: - Group Management – WP filter added to force check and hide the student child data checkbox #739 --- ### 5.1 \[2023-03-09\] **New feature:** - Subscription License – Now supports fixed price and min/max quantities #664 - Buy Courses (Build a license) – Now supports minimum and maximum quantity attributes #690 **Updated:** - Group License – Remove index & follow directives when adding `noindex` & `nofollow` to license products #723 - Group Quiz Report – Group, courses, quizzes drop-down lists now use Ajax to populate values #689 **Fixed:** - WooCommerce Group Product type – PHP Error in a certain situation #720 - LearnDash Custom Labels – PHP error in a certain situation when LearnDash v4.5+ is installed #718 - WooCommerce – The “Create account” option during checkout will not be hidden if the cart products do not include groups #715 - Bulk discounts – Fix PHP Warning related on admin page #709 - Progress Report – `ajax_url` variable renamed to prevent conflicts with other plugins #695 - Group Management – Fixed price license – “Add seats” now adds the minimum seats set for the license #685 **Internal:** - WPML config file #702 - Load main backend JS file only where it’s required to prevent issues with other plugins #686 **Developers:** - Group courses – `ulgm_courses_is_purchasable` filter added for `woocommerce_is_purchasable` product type option #691 - Group Management – Filter `ulgm_groups_management_send_emails_group_user_course_statuses` to add/remove “Course status” options in Send email model #683 --- ### 5.0.1 \[2022-11-17\] **Updated:** - Group Management page – If a group has no courses then the Status column shows ‘N/A’ #672 - Group Reports – Columns now use LearnDash custom labels (if populated) for Course, Lesson and Topic #663 - Fixed Price License – Now displays ‘/ Group’ instead of ‘/ Seat’ when users are purchasing a group with a fixed number of seats at a fixed price #660 - Group Management – Inverted direction of button drop-down if an RTL language is active #651 **Fixed:** - Group Essay Report – Essay submission was not including paragraph breaks in modal #679 - Course Report – Discrepancy in course progress percentage #677 - Fix – \[uo\_groups\] shortcode breaks Elementor’s layout in a certain situation #670 - Bulk discount settings – PHP Type Error #653 - Group License – Duplicate group was created when WooCommerce Order status switched from Completed to another status and back to Completed #649 **Internal:** - Add in-plugin notifications #636 **Developers:** - Group Management – Bulk add & Invite users – Added actions to allow custom fields #659 - `do_action( 'ulgm_before_add_bulk_users_columns', $current_group_id );` - `do_action( 'ulgm_after_add_bulk_users_columns', $current_group_id );` - `do_action( 'ulgm_before_add_bulk_users_form_fields', $current_group_id );` - `do_action( 'ulgm_after_add_bulk_users_form_fields', $current_group_id );` - Group Management – Add Group Leader Form – Added new do\_action hooks #655 - `do_action( 'ulgm_after_add_group_leader_form_fields', $current_group_id );` - `do_action( 'ulgm_before_add_group_leader_form_fields', $current_group_id );` --- ### 5.0 \[2022-10-04\] **New Feature:** - Group Management – Shared/pooled seat system for group hierarchies #597 - WooCommerce – Set Minimum/Maximum Group product quantities and fixed prices #531 **Added:** - Enrollment Key redemption form block #602 - Group management & reports – Option to change default sort column #608 **Updated:** - Progress Report – Search box now displays loading animation when searching users #232 - Group Management – Removing a group leader does not add the currently logged in user as a new group leader #610 - Group Management – Group leaders of parent groups can now manage group members and group leaders of child groups #605 - Access mode of new LearnDash groups now set to closed for manual group creation and group license orders #581 - Group License purchase & WPML – Now adds required WPML details #573 - WooCommerce – Course selection box now select2 on edit product screen #527 - WPML – Add seats link is now WPML friendly #633 **Fixed:** - Bulk discount & PayPal checkout – Fixed decimal precision issue when the bulk discount is applied to a license price #586 - Groups Quiz report – `LD_QuizPro::showModalWindow` conflict with SEO plugins #624 - Edit group – PHP Error on some sites – `ngettext` changed to `_n()` #41608 #583 **Under the hood:** - Blocks – Migrate blocks to WordPress library #626 - `ulgm_permissions_callback_message` filter to modify “You do not have permission to manage groups” message #525 - “Add and invite user” form – Actions to add custom fields before or after the form #613 - `ulgm_before_add_invite_form_fields` - `ulgm_after_add_invite_form_fields` - Create a Group – Filter to make Course selection optional #635 - `ulgm_create_group_courses_required` - Group Management – Filter to manipulate user group ids #621 - `ulgm_user_group_ids` - Group Management – Filter to hide total and available seats #618 - `ulgm_show_remaining_total_seats` - Group License subscription – Filter to hide course title in subscription product #619 - `ulgm_woocommerce_hide_course_title_in_subscription` - Group License – Filter to force update license price #603 - `ulgm_force_calculate_license_price` - BuddyBoss Sync – New do\_action added for Automator #599 - Several `do_actions` added #637 - `ulgm_code_group_created` - `ulgm_keys_added_to_group` - `ulgm_seats_added` - `ulgm_user_redeemed_key` - `ulgm_key_status_changed` - `ulgm_seat_key_deleted` - `ulgm_seat_key_replaced` - `ulgm_seats_removed` --- ### 4.4.0.1 \[2022-06-30\] **Updated:** - Group Management – Filter `populate_management_features` #567 **Fixed:** - CSS snippet hiding other admin notices #576 --- ### [4.4](https://www.uncannyowl.com/whats-new-with-uncanny-groups/) \[2022-06-16\] **Added:** - Welcome emails now customizable for each group #543 - Added ‘Swap course product’ option to Subscription products #562 - Email Group Users: “Reply-to” now enables choosing a different group leader if the group has more than one #564 - Email Group Users: Group Leaders can now send email to group users based on status in a specific course #545 - [Uncanny Automator](https://automatorplugin.com/integration/uncanny-groups/) 1-click installer – Easily add automation capabilities to Uncanny Groups #110 **Updated:** - Bulk Add users: Option to make user first and last name mandatory when adding multiple users #554 - WooCommerce – Swap course product: Product title format adjusted to %product\_title% (#%product\_id%) #539 - Improved PHP 8.1+ compatibility #355 **Fixed:** - Buttons no longer use generic class .button for color #519 - JS issues fixed with targets when adding custom fields to tables using PHP filters #511 - Group Quiz Report – Updated filtering logic for quiz dropdown #524 - Group DB – `datetime` changed to `TIMESTAMP` for sites running MySQL < 5.5 #521 - Group Essay Report – Date column not sorting correctly #504 - Group Progress Report – PHP Error when viewing report on some sites #502 - Group Management & Group Reports – Hidden columns now appear in exported CSV/Excel files #490 - PHP Error when Group Leader role does not exist #510 - WPML – Group dropdown on Quiz Report is now consistent with group dropdown on Course Report when WPML is activated #547 - WooCommerce Subscriptions – Uncaught Error: Call to a member function get\_id() on bool #514 **Developers:** - Group Course Report – Filter `ulgm_is_hierarchy_setting_enabled` to override hierarchy check #505 - Group Management – Filter `ulgm_populate_management_features` to override management features #542 - Course Report Table – Filter `ulgm_group_course_report_user_data` added to modify user course data #557 - WooCommerce License – Filter `ulgm_woocommerce_hide_course_title_in_product` to hide course title in cart #535 ### 4.3 \[2022-04-20\] **New Feature:** - Group Management – [Add seats for subscription-based licenses](https://www.uncannyowl.com/knowledge-base/adding-seats-after-subscription-based-group-purchase/) #229 **Added:** - Group Management & Reports – Excel export button #422 - Group Quiz Report – New optional shortcode attribute score-type to view points instead of %age #481 - Group Course Report – Course enrolled date and Group name columns #475 - Group Management – Update seat count when Automator action removes a user from a group #457 - Group License/Course products – Now supports product attributes and linked products #256 - Gravity Forms – Filter added `ulgm_redeem_code_for_current_logged_in_user` to optionally not redeem code when Uncanny Key field is in registration form #460 - Group management – `ulgm_group_management_header` action #491 **Updated:** - Subscription License – “Pending Cancellation” status no longer automatically removes user access #421 - Progress Report – Mark a lesson complete if all topics of a lesson are completed. Mark a course complete if all lessons are completed (including course level quiz, if any) #473 - Assignments Report – Improved translation of the column headings #468 - Custom Group license details are no longer exposed publicly when Yoast SEO is enabled #380 **Fixed:** - Group Management – PHP Error when deleting user on PHP 8.x+ #466 - Group Management – Group courses limit – `nopaging` parameter added #462 - Upgrade groups – Bulk upgrade now works reliably #458 - Group Key – Allow hyphen in key redemption #454 - Group Management – Improved logic to list groups when basic group setting is not on #452 - Improved translatable strings #470 --- ### 4.2.3 \[2022-03-08\] **Added:** - Group Management – Add & Invite User – Filters added to make first and last name fields optional #441 - `ulgm_add_invite_user_first_name_required` - `ulgm_add_invite_user_last_name_required` **Fixed:** - Group Management – Multisite: Users are now listed reliably #443 - Group Management – Sometimes, the string “Not started” can’t be translated #439 - LearnDash/BuddyBoss sync – Fixed login behaviour in some situations #447 --- ### 4.2.2 \[2022-02-28\] **Added:** - Group Registration & Key Redemption Form – Several `do_action()` added for developers #420 **Updated:** - Upload users – Now autogenerates nickname by combining first and last name without any space #346 - Group Management & Reports – Updated search field placeholders to better indicate search options #294 - Progress Report: Group dropdown removed; search now finds all matching users in all groups accessible to the group leader #218 **Fixed:** - Group Management – Invite a user – Fixed permission issue for admins (“You do not have permission to manage this group.”) #431 - Group Management – The Users menu is no longer displayed if it has no items in some situations #347 - Group Management – Multisite: Users from one subsite no longer erroneously show up in another subsite #425 - Group Management – WPML: Translated courses no longer appear in unrelated Groups in some situations #419 - Group Management – Export CSV no longer includes hidden checkbox column #407 - Group Management – Uncanny group info erroneously shows for basic groups #403 - Group Course Report – Permission Issue when Groups hierarchy is enabled #410 - Updated text-domains for some translatable strings #416 --- ### 4.2.1 \[2022-02-09\] **Added:** - New filter: `ulgm_key_suffix` To add suffix when auto-generating keys #394 - New filter: `ulgm_key_prefix` To add prefix when auto-generating keys #393 - New do\_action: `ulgm_user_redeems_group_key` when the user redeems a key #387 - New filters – `ulgm_group_management_enrolled_user_status` and `ulgm_management_enrolled_user_status_id` Optionally change user status #362 - New filter: Group Management – `ulgm_group_management_enrolled_user_data` Enrolled user data #360 - New filters: Reset Password `ulgm_reset_password_url` and `ulgm_reset_password_text` #36083 #358 **Updated:** - Group Management page – ‘Users’ menu is no longer displayed when empty - Progress report – Lessons completed now fire the `learndash_lesson_completed` hook #370 - Course report – Timestamps now excluded from CSV export #364 - Download Keys – Changed file type `text/plain` to `text/csv` #384 - Group Course products that are converted to Group License products now drop previously associated courses #372 - Improved compatibility with Twentytwentytwo theme #368 - Improved code quality #389, #392 **Fixed:** - Terms & Conditions – Links and other markup are no longer removed from description #381 - Course report – Removed duplicate id attribute on course dropdown #378 - Course report – Fixed typo ‘Deails’ #356 - Quiz Report – Slow query preventing results from loading on some sites #375 - Quiz Report – Fixed Sort By Date issue #351 - New group purchase email – Password reset key conflict with WooCommerce #373 - BuddyBoss group now automatically created when a new Uncanny Group created via [Uncanny Automator](https://wordpress.org/plugins/uncanny-automator/) “Everyone” recipe and sync is enabled #363 --- ### 4.2 \[2021-12-15\] **Added:** - Added a way to swap products based on quantity #321 - Improved compatibility with WPML #308 **Updated:** - Group Keys – Enforce alpha-numeric enrollment keys #318 **Fixed:** - Progress report – Completion of courses now works consistently on LD 3.5+ #314 - Group management page – Permission fix for Admin users #319 - Course report – Permission fix for Admin users when loading child groups in a Group hierarchy #337 - Course report – Performance improvements for larger sites #241 **For Developers:** - New action: WooCommerce License purchase – `ulgm_before_license_group_is_inserted` #324 - New action: WooCommerce License purchase – `ulgm_after_license_group_is_inserted` #325 - New filter: WooCommerce License purchase – `ulgm_license_group_linked_course_id` #327 - New filter: WooCommerce License purchase – `ulgm_license_group_courses_linked_in_order` #326 - New filter: Group Progress Report: `ulgm_include_user_direct_enrolled_courses` #332 --- ### 4.1.1 \[2021-11-19\] **Added:** - `ulgm_bulk_discount_table` – shortcode to allow Groups Bulk Pricing table to be displayed on any page #302 **Updated:** - Changes/fixes to ticket submission data #306 - Gravity Forms – Code redemption for existing users now works more reliably #304 **Fixed:** - Fatal error on failed remote get #301 --- ### 4.1 \[2021-11-04\] **Added:** - Optional group hierarchy support to reports in order to include child group data - Group Management page – CSV export button #250 - Essay Report – Ability to pre-populate a search using `?search=query` #246 - New setting: Do not free up a seat when a student with “Completed” status is removed #260 - Added current action argument to `ulgm_gdpr_is_group_leader_allowed` filter #285 **Updated:** - Group Course Reports – Improved performance #241 - Associated WooCommerce orders displayed on Edit Group page limited to 15 #224 **Fixed:** - Date Complete column now sorts properly on different date formats #269 - Back to Group Management buttons now work consistently across different site configurations #263 - Back to Group Management button no longer incorrectly adds -1 as group-id #249 - Password reset URL not visible in send password reset email on some sites #248 - Outgoing emails now formatted correctly when sent via WP Mail SMTP #238 - Emails with HTML entities now render correctly #230 - Unable to checkout using PayPal Payments by WooCommerce Plugin when bulk discounts are enabled #225 - PHP error when WooCommerce briefly unavailable during plugin update process #240 - PHP error if `$product->get_id()` is called without validation #296 **Developers:** - New filter: Progress Report – `ulgm_progress_report_courses` #276 - New filter: Progress Report – `ulgm_progress_report_user_quizzes` #275 - New filter: Progress Report – `ulgm_progress_report_user_courses` #274 - New filter: Group Management – `ulgm_is_reconcile_required` to optionally bail front end reconciliation #271 - New filter: Group Course Report – `ulgm_group_course_report_user_course_data` #252 - New filter: `ulgm_other_similar_orders_limit` limit # of orders on edit group page #226 --- ### 4.0.5 \[2021-09-10\] **Added:** - New #ResetPasswordLink token for emails generates a 1-click password reset link #198 **Fixed:** - Group name field on WooCommerce checkout page no longer shows confusing field description #221 - WooCommerce guest checkout no longer throws an error #186 - Uncanny Codes and Uncanny Groups field conflict with Theme My Login #211 - Uncanny Codes and Uncanny Groups field conflict with WPForms #204 - Seat assignment not calculated properly in certain situations #206 - Seat count disparity when users are added or removed on edit group page #193 - Course Report – Permission issues in some instances #200 - Email body now supports full HTML templates #192 - Fixed PHP warning trim() expects parameter 1 to be string, array given #210 --- ### 4.0.4 \[2021-08-18\] **Added:** - Quiz Report: Now includes users that have not yet attempted the selected quiz #156 - Woocommerce – Group subscription license purchases are now autocompleted #162 **Updated:** - Group management – Add user: Nickname is now set to First Name Last Name instead of username #174 **Fixed:** - No longer using `block_categories` filter as it was deprecated in WordPress 5.8 #170 - Added `ulgm_group_management` role to the list of allowed roles for the create group shortcode #140 - Previously stored transient causing issues for new group purchases on multisites #177 - “Pay with PayPal” payment gateway now works reliably with custom group purchase and group name #167 - Upload users: Semicolon-delimited CSVs now work more reliably #166 - Code redemption autoload options from wp\_options table #164 - Uncanny Groups/Codes Key field conflict on some sites running Uncanny Codes #159 - WooCommerce Subscription reactivation now properly restores user and course access to the group #158 - “Not Started” in the Group Management table is now translatable #155 - Restored Course column to the individual course report #154 - Extraneous character suffixed to true #153 - Assignment Report: Trashing the assignment is now working consistently #150 - Assignment Report: Unapproved assignments not showing up in some situations #149 - CSV upload no longer breaks when a field contains an apostrophe #145 - Responsive mode showing \[object Object\] under Key column on group management page #141 - Irrelevant UI elements are no longer being displayed to basic (non-upgraded) groups #118 **For developers:** - `ulgm_learndash_group_enrolled_users` filter to modify group enrolled users #182 - `ulgm_quiz_report_hide_unattempted_users` filter to hide users that have not completed a quiz on the quiz report #181 - `ulgm_quiz_report_user_data` filter to modify quiz report data #180 --- ### 4.0.3 \[2021-07-12\] **Added:** - `ulgm_groups_management_selected_group_id` filter to set selected group on Group Management page #121 - `ulgm_user_registered` action after user is registered with native form #136 **Fixed:** - Checkboxes now appear more consistently for all groups in user list on Group Management page #132 - Back to Group Management button now appears on all reports when Group Management page is set #123 - PHP error: Class uncanny\_learndash\_groups\\WoocommerceLicenseSubscription not found on some sites #129 - Group Progress Report: JS file version changed to avoid cached file #133 - Reactivating an expired or cancelled subscription license now restores course and user access as expected #125 - Group hierarchy in group selector on Group Management page now renders correctly when users do not have access to a top-level group #121 - Group Name field now displays consistently on checkout when a subscription license is in the cart #135 --- ### 4.0.2 \[2021-07-05\] **Added:** - CSS classes to front end group creation form #105 **Fixed:** - Group Management page now displays more than 5 courses per group #113 - [Basic groups](https://www.uncannyowl.com/knowledge-base/upgrade-existing-learndash-groups/#Group_Types) are no longer enabled by default on the front end #118 - Simple subscription products now retain mapped groups/courses on save #111 - Assignment Report no longer appears in dropdown if Assignment Report page is set to “None” in settings #108 - Transient issue causing a newly added group leader to replace a previously added group leader #107 --- ### 4.0.1 \[2021-06-24\] **Updated:** - Group Progress Report: Admins can now bypass group selection #96 **Fixed:** - Group Progress Report: Group drop down selection missing for group leaders #95 - PHP Error no longer displayed when group’s WooCommerce license product is trashed #94 - PHP Error no longer displayed when plugin is deactivated #101 - Plugin’s .pot file now loads consistently #98 --- ### 4.0 \[2021-06-22\] **Added:** - Formidable: Uncanny Groups Key field type #86 - WP Forms: Uncanny Groups Key field type #87 - Seat counts on group list page for admins #41 - “Download keys” button on group list page for admins #42 - Bulk discounts now apply to WooCommerce subscription licenses #11 - “Invited users” list on edit group page for admins #77 - Show expired license notice when license expires #83 - Option to “downgrade” a group to unlink it from WooCommerce #9 - Group Progress Report: Group selection dropdown if group leader has multiple groups #73 - “System status” page for easy debugging #72 - `ulgm_allow_assets_for_custom_uo_groups` filter to allow non-groups pages to load assets #66 - `ulgm_learndash_group_enrolled_courses` filter on groups enrolled courses #65 - `ulgm_group_name` filter to modify group title when custom group is created from frontend **Updated:** - Gravity Forms: Uncanny Groups Key field name #88 - Reduce password complexity for auto-generated passwords #69 - All Uncanny Groups outgoing emails now support shortcodes #54 - Group management shortcode – Improve compatibility with Divi #46 - Group Progress Report: Group leaders can now update user progress only if the course is assigned to the group #73 - Updated field description for the course selection field on edit product screen #39 - Email settings cleanup #5 - Added filters for quiz report header drop downs #61 - Key generation method that caused issues on some environments - Group leader details are now optional for admins when creating a custom group from Uncanny Groups > Create group - Code quality improvements **Fixed:** - Enrolled users count on group management page #32 - Total / Available seats count on edit group page #32 - Inconsistent seat count where a user has been assigned two seats but the front end count shows one (only visible in database) #32 - Group management phantom seat issue #32 - Seat count when a user is a member but added as a group leader (takes an extra seat which shouldn’t and results in phantom seat) #32 - Seat count when a member is removed but is a group leader that has been assigned 2 seats but removal of the user only restored 1 seat count #32 - Seat count when an “In Progress” user is dropped from group by the group leader when “Allow Group Leaders to remove students at any time” is checked #32 - Group leaders can edit users more reliably #60 - LearnDash notification conflict #58 - Group Management: Add hyphen when first or last name is empty when “Allow group leaders to edit users” is enabled #57 - Added support of WPML lang in URL on Group Management page #26880 #38 - Group Licence products are no longer searchable by the public #26792 #33 - A single User ID is assigned multiple codes #32 - Ajax call for Quiz Reports doesn’t get triggered #30 - Add multiple users – password column class no longer same as email column #27 - PHP notice on WooCommerce product when selecting courses #25 - Group Management report User label string setting doesn’t exist but expected in code leading to i18n issue #22 - Group Management reports shows users as ‘in progress’ when they should be ‘completed’ #20 - Group/Product not resetting when multiple groups are selected #17 - Order prematurely completing when PayPal IPN payment method is used #14 - Data on Course Report is incorrect in some situations #25030 #13 - All users in a group show the same progress percent in some situations #12 - PHP fatal error when when duplicating groups in some situations#10 - Fix num parameter to per\_page #8 - Groups not working as expected for group purchases and abandoned orders #4 - Using $\_POST parameters directly in insert statement on protected form #45 - PHP: Notices and errors --- ### 3.10.1 \[2021-02-25\] **Updated:** - Internal code updates **Fixed:** - Conflict with WooCommerce Admin plugin that prevented uses from purchasing group license products - Removed unnecessary debug logging --- ### 3.10 \[2021-02-17\] **Added:** - New Password field in the Add Users options of the Group Management page allow Group Leaders to set passwords for new users - Optional setting to autocomplete WooCommerce orders with Uncanny Groups products - Groups are linked from the order when viewed on the WooCommerce edit order page - WooCommerce orders are linked from the group when viewed on the LearnDash edit group page **Updated:** - Changed the author of groups created with our wizard to the creator of the group rather than the Group Leader initially assigned to the group - New filters to modify author of custom group license product and LearnDash Group created by Uncanny Groups ``` apply_filters( 'ulgm_custom_license_post_author', $user->ID, get_current_user_id(), 'license-purchase' ); apply_filters( 'ulgm_custom_group_post_author', $user->ID, get_current_user_id(), 'license-purchase' ); ``` - New filter to show group license product thumbnail in cart if the thumbnail exists ``` apply_filters( 'ulgm_license_product_thumbnail_in_cart', false, $product_get_image, $product ); ``` **Fixed:** - Resolved an incompatibility with the Yoast SEO 15.8 release that blocked purchases from the Buy Courses/Groups page - Added the username column to the Group Quiz Report CSV export file - PHP 8.x error on /wp-admin/ pages - Restored support for the category and tag attribute in the Buy Courses shortcode - PHP 8.x error when the plugin confirms the installed version - Restored CSS classes for tables that were removed with the recent change to datatables - Fixed width of seat input fields on edit group page for some screen sizes --- ### 3.9 \[2021-02-02\] **Added:** - BuddyBoss: New LearnDash Groups to sync with Social Groups if setting is enabled - User upload: Support for semicolon-delimited .csv files when bulk uploading users in the front-end Group Management page - LearnDash: Setting to use LearnDash’s “legacy” data to show user progress on the Group Management page - LearnDash: Setting to show/hide group courses/users count for admins on LearnDash Groups page for improved performance - Filter to let users add/remove roles that can access the Group Management page ``` apply_filters( 'ulgm_gm_allowed_roles', array( 'administrator', 'group_leader' ) ) ``` **Updated:** - Improved performance of Group Management page - Improved performance of key generation for large groups - Assignment report now shows “View” link instead of filename to avoid table formatting issues with long LearnDash-formatted filenames - The course list on the Group Management page is now ordered alphabetically - Someone LearnDash functions to use internal functions - Cleaned up old jPlist CSS classes - Improved strings for translation **Fixed:** - Status attribute for the \[uo\_groups\_assignments\] shortcode now displays the assignments with the specified status (all | ungraded | graded) - Quiz report Gutenberg block no longer shows as a “Course report” block when added in the editor - Group keys are now deleted when a group is deleted even if WooCommerce is not active - If a user update fails because the username or email is already in use, an error message is now displayed - Users are no longer added to incorrect groups due to group transients in some situations - PHP Warning: The magic method uncanny\_learndash\_groups\\Boot::\_\_wakeup() must have public visibility --- ### 3.8.1 \[2020-12-10\] **Added:** - \[uo\_groups\_buy\_courses\] shortcode now supports product\_cat and product\_tag attributes to display only Group Courses in specific categories or with specific tags **Fixed:** - Running actions on users selected across multiple pages now works as expected - PHP error: Cannot declare class Walker\_GroupDropdown with WordPress 5.6 - Email filters being applied multiple times - “Automatically include Group Course products in Group License purchases” price of Group Course products now set to $0 in cart --- ### 3.8 \[2020-11-16\] **Added:** - “Username” column on Course and Quiz reports - Ability to customize columns on Course and Quiz reports - More detailed results are now displayed after group leaders bulk upload users via .csv - Shortcode \[uo\_groups\_button\] to output a button to the Group Management page - Shortcode \[uo\_groups\_link\] to output an unstyled link to the Group Management page - Support for display of hierarchical groups in the group selection dropdown on the Group Management page - Attributes enrolled\_users\_page\_length enrolled\_users\_length\_menu, group\_leaders\_page\_length, group\_leaders\_length\_menu for \[uo\_groups\] shortcode for setting default and available rows displayed per page - Support for third-party WooCommerce discount plugins on initial license purchase - Support for email addresses containing apostrophes when bulk uploading users - Additional filter to override Group Management link ``` apply_filters( 'ulgm_group_management_page_link', $permalink, (int) self::$group_management_page_id ); ``` - Additional filters on endpoints used for getting data via REST API ``` apply_filters( 'ulgm_rest_api_get_user_course_data', $data, $_POST ); ``` ``` apply_filters( 'ulgm_rest_api_get_group_courses', $data, $_POST ); ``` ``` apply_filters( 'ulgm_rest_api_get_essays_data', $essays_table, $_POST ); ``` ``` apply_filters( 'ulgm_rest_api_get_quiz_data', $quiz_table, $_POST ); ``` ``` apply_filters( 'ulgm_rest_api_get_assignments_data', $assignments_table, $_POST ); ``` - Ability to search for users via enrollment key in progress report **Updated:** - Improved compatibility of front-end assignment and essay approval with newer versions of LearnDash - After initial creation, the cost of a group license product is now independent of the included group course products, and will not change if the price of the included products changes - Added methods for developers to manually enqueue JS and CSS assets when using shortcodes in a non-standard way - Added custom classes to target specific columns in the Essay report **Fixed:** - Reports button no longer appears when no reports are available - JavaScript conflict on Essay report when only one course is available - Progress data no longer limited to 20 courses - Essay/Assignment approval modals select dropdown height fix for some browsers - String: “User(s) have been removed.” is now translatable --- ### 3.7.4 \[2020-10-09\] - Fixed: Loading indicator stuck when approving assignments due to learndash\_assignment\_bulk\_actions\_approve() function moved in LearnDash v3.2.3.3 - Fixed: Fatal error accessing Assignment report due to learndash\_assignment\_approval\_link() function removed in LearnDash v3.2.3.4 - Fixed: User edit modal now appears when editing users after the first page of results --- ### 3.7.3 \[2020-09-10\] - Added: Filter for redirect on after creating a group on the front end using the shortcode \[uo\_groups\_create\_group\] (uo\_redirect\_after\_group\_created) - Added: status=”all|graded|ungraded” attribute added to Assignment report (\[uo\_groups\_assignments\]) to specify what is displayed on initial load - Updated: Changed minimum seats from 2 to 1 when creating new groups and setting bulk discounts - Updated: Yellow highlight indicating sorted column changed to grey - Updated: JS and CSS source files now included in distribution along with map files - Fixed: Added additional error handling when user is inserted to avoid warnings and errors - Fixed: Detailed quiz reports now working consistently on LearnDash 3.2+ - Fixed: All strings in report tables are now translatable - Fixed: Users no longer able to add empty product to cart if no courses are checked on \[uo\_groups\_buy\_courses\] page - Fixed: Users with status Not Enrolled can now be consistently removed from groups - Fixed: Loading animation on essay report no longer hangs if no lesson/course exists for an essay - Fixed: Adding seats to a group no longer creates a duplicate group in some situations - Fixed: Adding a group leader no longer increments group leader count by 2 - Fixed: PHP warning: count(): no longer appears on Essay report if no essays are in the system --- ### 3.7.2 \[2020-08-10\] - Added: Filters and CSS classes to datatables implementation on \[uo\_groups\] for improved customizability - Updated: Improved consistency of dropdowns on assignment and essay reports, especially when using shared course steps - Updated: Renamed Lesson dropdown on course and quiz reports to Lesson/Topic - Updated: register\_rest\_route’s permission\_callback will return WP\_Error on failed permission - Updated: User and Report dropdowns no longer displayed if no options are available - Updated: Added CSS class to Not Enrolled status in Group Management table - Fixed: key\_options attribute now hides the key column in the Group Management table - Fixed: Removed error\_reporting flag - Fixed: Removed ob\_clean() from \[uo\_groups\] that modified HTML Doctype on Groups Management page --- ### 3.7.1 \[2020-08-07\] - Fixed: Edit User and mailto links missing on Group Management page - Fixed: Assignments/Essays table width on mobile devices - Fixed: Save Changes button not working on settings page - Fixed: Square icon appearing on topics in Progress Report --- ### 3.7 \[2020-08-06\] - Added: Ability to access reporting functions (course, progress, essay, assignment) for “basic” groups in front end - Added: Gutenberg block for Progress Report - Added: Sorting on Date Completed column in Course Report - Updated: Replaced deprecated jPList JavaScript library with DataTables JavaScript library - Updated: Improved sanitization of variables (CVE-2020-9439) - Updated: Improved translation support - Updated: Added permission\_callback to all Rest API calls for WordPress v5.5 compatibility - Updated: Added error handling on new user if site returns WP Error - Updated: Add seats / courses checkout now uses order meta to store information instead of transients for reliability - Updated: Essay Report – Questions that support uploads now display a download link in the “Content” column - Fixed: Add seats or add courses no longer results in an incorrect group seat count or creates a duplicate group when the order is completed or a previous order for add seats or courses was not marked complete - Fixed: Capitalization of WooCommerce product types - Fixed: Styling conflict with LearnDash on Create Group page in /wp-admin - Fixed: Uploading users with “Send Enrollment Key” selected now properly processes existing users --- ### 3.6.3 \[2020-06-30\] - Fixed: User count/Seat count wrapping issue on some themes - Fixed: Detailed Quiz reports now working for Group Leaders on sites running LearnDash v3.1.8 --- ### 3.6.2 \[2020-06-23\] - Fixed: PHP fatal error when manually creating a group via wp-admin --- ### 3.6.1 \[2020-06-19\] - Added: #Courses token for email templates that outputs list of courses assigned to the group - Added: #GroupLeaderInfo token for email templates that outputs list of Group Leaders with email addresses - Fixed: Group name is required no longer appears on checkout when adding seats or courses to an existing group --- ### 3.6 \[2020-06-17\] - Added: Essay Report – Attribute to determine what to show only initial load – status=”all|graded|ungraded” - Added: Option to use Progress Report instead of Course Report when viewing individual user status - Added: Support for username column in front end CSV upload for Group Leaders - Added: Filter for developers to modify sort order of courses on the Buy Courses page (ulgm\_buy\_courses\_qry\_args) - Updated: Replaced learndash\_post\_args\_groups with register\_post\_type\_args for upcoming LearnDash 3.2 compatibility - Updated: Added check for updated quiz statistic AJAX function call for upcoming LearnDash 3.2 compatibility - Updated: Improved user search on Progress Report - Updated: Improved consistency of results displayed in Course Report - Updated: Improved compatibility with MySQL 8 - Updated: Added indexes to Groups database tables for improved performance - Updated: Improved translation support - Updated: Added note to Group Name field on checkout page: “If left blank, the group name will be \[First name\] \[Last name\] – \[Company name\]” - Fixed: PHP Notice: register\_rest\_route was called incorrectly in WordPress 5.4.2 and newer - Fixed: PHP warnings when installed on empty sites - Fixed: Price entered manually on LearnDash Group License product now overrides price automatically generated from included LearnDash Group Course products - Fixed: If “Group Leaders Don’t Use Seats” is checked, a Group Leader that purchases a Group License no longer occupies a seat in the group --- ### 3.5.2 - Updated: Permissions for certain operations changed from upload\_plugins to manage\_options for consistency - Updated: Removed unused function wcs\_get\_users\_subscriptions and cleaned up logging code - Fixed: License cost on checkout based on the store tax settings (product price entered including v/s excluding tax) - Fixed: HTML formatting was being removed from emails on save --- ### 3.5.1 - Added: redirect and role attributes to uo\_groups\_redemption\_form shortcode - Added: Filters for Subject and Message for outgoing emails (ld\_group\_email\_users\_personalize\_subject, ld\_group\_email\_users\_personalize\_message) - Added: Filter for course list on buy courses page (ulgm\_buy\_courses\_qry\_args) - Added: Support for email addresses with apostrophes - Updated: Improved consistency of completion statistics on Course Report - Fixed: Administrators can remove users and send password reset emails from the front end Group Management interface - Fixed: Sorting on course report now works in both directions - Fixed: Changes to Group Purchase Email could not be saved - Fixed: Authenticated XSS vulnerability on Group Management page - Fixed: eCommerce settings missing from Settings page - Fixed: When “Enable association of products and groups” was checked, purchases of any product would associate users with a non-existent group with group ID = 0 - Fixed: License cost on checkout when “Display prices during cart and checkout” is set to “Excluding tax” - Fixed: PHP warnings on add\_shortcode - Fixed: Removed debug code from rest-api-end-points.php --- ### 3.5 - Added: New shortcode \[uo\_groupleader\_restrict\_content\] – Shows information to group leaders only, supports user\_groups attribute for showing content to leaders of specific group(s) only - Added: Edit User dialog for Group Leaders with First Name, Last Name, Email and Username fields. Username field can be disabled in settings - Added: Group Purchase Email: Customizable email that can be sent to users after a WooCommerce group purchase is completed - Added: #EmailEncoded variable for adding email addresses to URLs in email templates - Updated: Seats are now assigned to users added to groups by admins from the Edit User page - Updated: Permissions made more consistent for admins across Group Management and Group Report pages - Updated: Required attribute added to form fields when adding a new user - Updated: Most special characters no longer allowed in first and last name fields - Updated: When adding courses to an existing group, cost for courses already purchased shows as $0.00 - Updated: Removed checkbox on hide/show customize columns toggle on BuddyBoss theme - Updated: Admins can now always manage user progress on the Progress Report even if Allow Group Leaders to Manage Progress is not checked - Updated: Improved translation support - Fixed: Email Users dialog was not sending email when all checkboxes under “Email Users with status:” were checked - Fixed: Reconcile Seat Count button now respects “Group Leaders don’t use seats” setting - Fixed: Group Management page no longer automatically scrolls to user table on load - Fixed: PHP warning: Invalid argument supplied for foreach() in cart for non-group-license subscription products - Fixed: Duplicate field ID on email settings page - Fixed: Language folder renamed to Languages - Fixed: Group Name field on checkout page is no longer editable when adding seats or courses to a group - Fixed: Cost on single product page now shows cost/month/seat instead of cost/month - Fixed: Uncaught Error: Class ‘uncanny\_learndash\_groups\\stdClass’ not found --- ### 3.4.10 - Fixed: In-progress users were showing 0% complete --- ### 3.4.9 - Fixed: General tab missing on non-group license products - Fixed: “Select Course” option appearing in wrong position in dropdown on Quiz report - Fixed: “Group ID was not received. Reload page and try again.” error showing on course report for some Group Leaders - Fixed: Individual progress report not rendering for some users - Fixed: Completion percentage displayed was greater than 100% when steps were removed from courses - Fixed: Total cost/month incorrectly shown as cost/month/seat in cart for subscription license products --- ### 3.4.8 - Added: Ability to send an email to users with “Not Enrolled” status (users that were sent an enrollment code but have not yet registered) - Updated: Reconcile seat count button now handles additional cases - Updated: When a user is sent an enrollment code more than once, they now receive the same code that was initially sent and are not added to the users table again - Updated: Improved theme compatibility of Group Management page CSS - Updated: Tax Status and Tax Class fields now available on group license products - Fixed: When WooCommerce orders were not autocompleted and Group Leaders occupy seats, checkout would display “Error processing checkout” as there were no seats available to add the Group Leader to the group until after the order was completed - Fixed: When adding seats to a group, changing the license product in the cart prior to checkout resulted in the new license seats being applied to the original group - Fixed: Course progress percentage was being displayed differently on different reports - Fixed: Apostrophes were not allowed in first or last name fields when adding users - Fixed: Users may now add multiple subscription products to their cart even if one of the products is a subscription license - Fixed: The Back to Group Management button was not appearing on the Progress Report after selecting a user --- ### 3.4.7 - Added: “Reconcile seat count” button on the Edit Group page that assigns a seat to every member of the group that is not currently assigned a seat and restores missing seats - Updated: Group Member email addresses on Group Management page now mailto links - Updated: Course selection field on Create Group page now uses select2 pillbox for easier searching and selection of courses - Updated: Pressing \[Enter\] now submits Add new user form - Fixed: Users sent an enrollment key were unable to join their group if the group displayed 0 available seats - Fixed: Group Leaders were able to view/manage progress of non-group courses on the Progress Report - Fixed: Group member pagination buttons jumped to the top of the page when clicked - Fixed: File missing (learndash\_template\_script.js) error on quiz report - Fixed: Group Leaders sent welcome email even if email disabled when creating a new group on the Uncanny Groups > Create Group page --- ### 3.4.6 - Updated: EDD updater class - Updated: Improved theme compatibility of checkboxes in Email Users dialog - Updated: When Send Enrollment Key email is disabled on Email Settings page, “Send Enrollment Key” option is removed from Add User dialog - Updated: When Add and invite (new user) and Add and invite (existing user) emails are disabled on Email Settings page, text in Add User dialog is changed from “Add and invite user” to “Add user” - Updated: Manage Progress page now supports topic-level quizzes - Fixed: Checkboxes to disable emails on Email Settings page - Fixed: Error on Buy Courses page when Event Tickets Plus is installed --- ### 3.4.5 - Fixed: Group Name field didn’t appear on checkout page when purchasing a subscription-based group license product - Fixed: Checkout allowed subscription group license to be added to cart along with other non-subscription group licenses - Fixed: Column sorting arrows not showing up on users table on Group Management page - Fixed: Marking courses or lessons complete or incomplete on Progress Report page resulted in stuck progress spinner if lessons contained topics - Fixed: Certificate button not working on quizzes that were marked complete by a Group Leader or Administrator (button removed because data necessary to generate certificate not stored) --- ### 3.4.4 - Updated: Added containing div and ID attribute to \[uo\_groups\_url\] to make it easier to target with CSS - Updated: Added progress indicator for .csv uploads - Fixed: Conflict with Uncanny LearnDash Enrollment Codes – When Uncanny LearnDash Groups was active, registration form for Uncanny Codes could not be submitted - Fixed: Typo in \[uo\_groups\_manage\_progress\] shortcode on Manage Progress page created on initial activation - Fixed: Not Enrolled users assigned a key whose first character was numeric could not be removed using the “Remove User(s)” button on the Group Management page - Fixed: PHP fatal error creating a group when WooCommerce not active - Fixed: “Course” type products missing “General” tab when WooCommerce Subscriptions not active - Fixed: Uploading a .csv file containing many users would time out and fail to add some of the users on some systems - Fixed: Added workaround for issue where Send Enrollment Key shows an error but user is still added to table --- ### 3.4.3 - Updated: User table on group management page will now show first and last names of users invited with “Send enrollment key” option in Add User dialog - Updated: Improved performance of Progress Report when marking items complete/incomplete - Fixed: Group dropdown on Group Management page not displaying all groups --- ### 3.4.2 - Updated: Improved messaging when a user has purchased group access but their order is still in processing status - Updated: Deleting a group permanently from the trash now removes the associated group data from ulgm\_group\_details and ulgm\_group\_codes tables - Updated: Front End Assignment Management – “Select course” now appears at the top of the course dropdown instead of alphabetically - Fixed: General tab sometimes not available on Edit Product page of LearnDash Group Course type products - Fixed: Unable to remove users with status “Not Enrolled” - Fixed: PHP Notice on some sites: Object of class WP\_Post could not be converted to int --- ### 3.4.1 - Added: Button to enable group leaders to send a password reset email to selected users - Added: Filter ulgm\_gdpr\_is\_group\_leader\_allowed that enables custom validation of user before user is added to group - Added: “Customize Columns” toggle to show/hide column checkboxes on front-end assignments and - Added: Approved/Not Approved filter on front-end Group Assignment Report page - Updated: Email templates renamed for clarity - Updated: Numbers are now permitted in name fields when adding new users - Updated: Switched to custom icon font instead of FontAwesome - Updated: Group Leaders that occupy seats now show an assigned key in the users table - Updated: Updated titles of pages created on initial plugin activation to match dropdowns on settings page - Updated: preopopulate\_field\_setting, label\_placement\_setting, error\_message\_setting added to the field settings array for Gravity Form integration - Updated: Download keys filename now updated when Group slug is changed - Fixed: Users menu no longer hidden if seats remaining is 0 - Fixed: “Add and Invite User” now the default selection when opening the Add One modal from the Users menu - Fixed: Formatting of label for Assignment Management Page dropdown on Settings page - Fixed: Increased width of email token containers to prevent text from being slightly cut off - Fixed: Path to help icon image no longer dependent on LearnDash installation folder - Fixed: #Email token returning username - Fixed: Rare PHP fatal error on is\_type function - Fixed: Vertical alignment of group selector dropdown on group management page - Fixed: 500 error when atempting to register into a group with no seats available --- ### 3.4 - Changes to Group Management page: - Added: Attribute to hide Group Courses section (group\_courses\_section=”hide|show”) - Updated: All buttons reorganized into two menus: Users and Reports - Updated: Improved performance - Updated: Page is no longer set to draft status when the plugin is deactivated - Updated: Add Courses button moved and resized to match Add Seats button - Updated: Course Report and Quiz Report buttons now hidden automatically when “None” is selected for the corresponding pages in settings - Changes to front-end Assignment and Essay management: - Added: Ability for users to show/hide columns - Added: Ability for admins to specify default columns - Added: Ability to drag and drop to reorder columns - Added: Ability to drag to resize columns - Added: Table responsiveness (columns are auto-collapsed on narrow screen widths) - Added: First Name and Last Name columns - Added (Essays only): Graded/Ungraded/All filter (Ungraded is the default) - Added: (Essays only): Question and Content columns - Updated (Essays only): Renamed “Submitted by” column to “Student” - Updated (Assignments only): Renamed “Author” column to “Student” - Updated: Filters that cannot be used without first selecting a parent filter are now disabled until the parent filter is selected - Added: Filters for Group Name field label (ulgm\_group\_name\_text) and Group Name field placeholder (ulgm\_group\_name\_placeholder) on WooCommerce checkout page - Added: Ability to make code field optional when using Theme My Login for group/site registration - Updated: Group Licenses can now be purchased along with other product types (excluding other Group License products) - Updated: Reorganized settings page - Updated: Courses now sorted alphabetically on Create Group page - Updated: Improved support for Theme My Login 7.x and the use of customized registration form templates - Updated: Cleared transients when purchasing direct access to a group via WooCommerce to reduce delay in user appearing in group list - Updated: Users added by Group Leaders are now assigned their full email address as username - Fixed: Courses with completed draft lessons no longer show > 100% complete in Progress Report - Fixed: Duplicate checkbox and total calculation issue on Buy Courses page when using Astra/Elementor - Fixed: SQL error when creating new groups - Fixed: Removed references to “toolkit” plugin in code - Fixed: “Group Leaders do not use seats” option now respected when adding group leaders on the front end - Fixed: TinyMCE JavaScript error on Group Management page --- ### 3.3.1 - Updated: Converted dropdown on group management page to select2 - Fixed: Completion logic bugs on Manage Progress page - Fixed: Removed access to certificates when courses and quizzes marked incomplete - Fixed: Permissions check when accessing Manage Assignments page - Fixed: Invalid namespace references that affected a few translations --- ### 3.3 - Added: Ability for Group Leaders to view/print/download learner course and quiz certificates from Manage Progress page (excluding topic-level quiz certificates) - Added: Button to Upgrade Group to work with Uncanny Groups on Edit Group page - Added: Total number of enrolled users now displayed below “Enrolled Users” heading on Group Management page - Updated: Improved performance and reliability when adding large numbers of seats (1000+) to a group - Updated: Added check during manual group creation for existing order\_id when generating a new order\_id - Updated: Added a user role check on the Manage Progress shortcode - Fixed: Leaders are no longer automatically added as members after editing and saving a group in wp-admin - Fixed: Added check on remote call returning error on Help tab - Fixed: Added check if variable is instanceof WC\_Product to eliminate 500 error on some sites - Fixed: Filled checkboxes appearing partially cropped on some sites - Fixed: Line breaks converted to “nn” in default email content --- ### 3.2 - Added: Manage Progress – Gives Group Leaders and Administrators the ability to manage learner progress on your site’s front end (mark topics, lessons, courses and quizzes\* complete or incomplete). \*Does not yet support topic-level quizzes. [Visit the Knowledge Base for more information.](https://www.uncannyowl.com/knowledge-base/manage-learner-progress/) --- ### 3.1.6 - Fixed: Course Report button missing --- ### 3.1.5 - Removed references to unreleased Manage Progress functionality --- ### 3.1.4 - Updated: Dropdowns changed to select2 to better match controls in Tin Canny LearnDash Reporting plugin - Updated: Added note in Upload Users modal dialog: Empty values in the *user\_pass* column will generate a random password for the user. - Fixed: If the user\_pass column in an uploaded .csv file is not set, the new user is now assigned a randomly generated password - Fixed: If the Front End Assignment and Front End Essay Management pages already exist, they are not created again when the plugin is reactivated - Fixed: Missing Add To Cart button on Group product type - Fixed: Various PHP notices --- ### 3.1.3 - Updated: If the number of users in an uploaded .csv exceeds the available seats, an error message is displayed and no users are imported - Fixed: The Course dropdown in the Course Report did not allow selection of a course --- ### 3.1.2 - Fixed: Fatal error if WooCommerce is not installed - Fixed: Issue on some sites where seat count would not increment if Not Started user is removed from front end --- ### 3.1.1 - Added: Ability to automatically assign dynamically created group license products to a category for improved integration with other functions (e.g. category-specific coupons) - Updated: Improved compatibility with email service plugins (Amazon SES, Mandrill, etc.) - Updated: Improved Add Seats and Add Courses purchase workflow – “Credit for existing seats” calculations are now done behind the scenes - Updated: Front End Essay/Assignment Management – After updating an essay or assignment using the modal dialog, the table reloads with all previous filters, searches and sorting - Updated: Bulk discounts table now hidden when bulk discounts are not enabled - Updated: Improved compatibility with local development environments - Updated: Made settings page slugs independent of plugin translation - Fixed: Added pricing field to Group product type - Fixed: Group product type would revert to Simple product type on save - Fixed: Some PHP notices causing hangs when error reporting is set to STRICT --- ### 3.1 - Added: Compatibility with LearnDash 3.0 - Updated: Made DataTables strings easier to translate - Updated: Added context to some translatable strings - Updated: Added conditional for the seat information so the final string changes if the number of total/available/remaining seats is greater than one - Updated: Removed email tokens from translatable strings to prevent users from translating the tokens - Fixed: Removed non-functional % Complete link on individual report page - Fixed: Removed some i18n functions to prevent HTML from being translated - Fixed: Settings page could not be saved when plugin name is translated - Fixed: Invalid characters in .pot file - Fixed: Some general settings were reset when email settings were updated - Fixed: PHP notice on utilities.php line 1008 - Fixed: Incorrect textdomain in theme-my-login-support.php --- ### 3.0.5 - Fixed: Some students showed “Not Started” status despite having recorded progress in group courses - Fixed: Some strings missing from .pot file --- ### 3.0.4 - Added: Automatic template overrides! Override any file in the /src/templates folder by copying it into /uncanny-groups/ in your child theme - Added: Support for Gravity Forms User Verification feature when using a Gravity Forms registration form - Updated: Optimized course progress queries on the Group Management page \[uo\_groups\] to improve page load time - Updated: Front End Essay/Assignment Management – After updating an essay or assignment using the modal dialog, the table reflects the change by reloading with the same dropdown values previously selected - Fixed: Email Users function was using the site information instead of the group leader’s information on some sites --- ### 3.0.3 - Added: Setting to show a custom message to users when adding seats to a group - Added: Ability to include a column for password in uploaded .csv file (leave blank to auto-generate a password) - Updated: Nested relational meta queries for improved compatibility with other plugins - Updated: Moved email settings to separate Email Settings page - Updated: Improved design of modal dialogs on front end Assignment and Essay management pages - Updated: Added default value to avoid fatal error when user logs in using SSO & group leader is assigned as a member of group - Fixed: Uploading multiple existing users in a .csv file - Fixed: Attempting to copy an enrollment key to clipboard copied the wrong key - Fixed: JavaScript error on Internet Explorer 11 --- ### 3.0.2 - Added: Gutenberg blocks for front-end Assignment and Essay management - Added: Sorting on Status, Assigned Course and Assigned Lesson columns of Assignment Management table - Updated: Gravity Form integration now has a custom “Uncanny Code” field type that enables placement of the registration code field anywhere in the form - Updated: Improved Assignment/Essay report UX for leaders of single groups and groups with only one course - Updated: Removed page restriction on shortcodes; all shortcodes now work on pages other than those defined in settings - Updated: Confirmation messages in the modal dialog when editing essays and assignments - Updated: Assignment modal now has a single button to “Update & Approve” or “Update” instead of two buttons - Updated: Users now show status of “In Progress” when any progress has been recorded in a course - Fixed: Unable to edit multiple assignments/essays without a page refresh - Fixed: Points could not be saved on assignments - Fixed: Error when adding an existing user - Fixed: Email group members now sends email in HTML format - Fixed: Error when adding an existing user to a group on some sites --- ### 3.0.1 - Added: Ability to enable/disable Course Report, Quiz Report, Assignments and Essays buttons from plugin settings page by setting associated dropdown to “None” - Updated: Assignment and Essay Management pages now auto-created on plugin activation - Fixed: Licensing page not working correctly on some sites --- ### 3.0 - Added: Ability to associate WooCommerce products with LearnDash groups so group access can be purchased on a one-time or subscription basis - Added: Front-end assignment management interface for group leaders \[uo\_groups\_assignments\] - Added: Front-end quiz essay question management interface for group leaders \[uo\_groups\_essays\] - Added: Ability to email group users by status (Not Started, In Progress, Complete) - Added: Basic Gutenberg block support - Added: Additional hooks for developers - Added: Uncanny 3.0 plugin architecture (tabs for Help, License Activation, etc.) - Updated: Reports now use LearnDash API to retrieve completion status - Updated: Field placeholders added to added to built-in registration form - Updated: Group Leader fields are now optional on front-end group creation page - Updated: Add Existing User option removed from Add User dialog; form now auto-detects whether or not user already exists - Updated: Added call to load\_plugin\_textdomain for improved translation support - Updated: Improved multisite support - Updated: Improved compatibility with some third party email plugins and providers - Updated: Cart is now skipped when adding courses to an existing license - Fixed: Typo in registration confirmation message --- ### 2.7 - Added: Attributes category and course\_category to \[uo\_groups\_create\_group\] shortocde to limit the courses available in the form - Added: Featured image field to Create Group form (in both the back end and front end) - Added: Filters to modify or disable plugin emails: ``` ulgm_maybe_send_group_email //for all user emails ulgm_maybe_send_welcome_email //for welcome email ulgm_maybe_send_redemption_email //for redemption email ulgm_maybe_resend_redemption_email //for resend redemption email Example (disabling emails): add_filter('ulgm_maybe_send_group_email', '__return_false'); add_filter('ulgm_maybe_send_welcome_email', '__return_false'); add_filter('ulgm_maybe_send_redemption_email', '__return_false'); add_filter('ulgm_maybe_resend_redemption_email', '__return_false'); ``` - Updated: Email users function now sends a separate email to each user in the group rather than a single email with all users BCC’d - Updated: CSS on modal dialog close button for better compatibility with some themes - Updated: Bulk Add & Invite no longer overwrites First Name and Last Name data for existing users - Updated: Upload users via .csv now supports columns in any order - Updated: \[uo\_groups\_create\_group\] now works for Administrators, Group Leaders, and any role with the manage\_options capability - Fixed: Remove Group Leader button not showing up in some situations - Fixed: Add user button non-functional in Internet Explorer 11 - Fixed: SQL syntax error being logged on some operations - Fixed: \[uo\_groups\_create\_group\] content no longer renders above page content - Fixed: Bulk Add & Invite users form now sends the correct email to the newly added users (new users get the New User Welcome Email and existing users get the Existing User Welcome email) --- ### 2.6.1 - Added: Notice displayed and plugin automatically deactivated if LearnDash is not active - Updated: After submitting the Bulk Add & Invite Users form, the group that users were added to remains the active group - Updated: Improved error handling in front end .csv user upload - Updated: File name of individual progress report .csv now includes user’s first name and last name (or user ID if those fields are blank) - Fixed: Course Name column populated in .csv export of individual progress report - Fixed: Bug in Email Group Members function that prevented emails from being sent on some server configurations --- ### 2.6 - Added: Bulk Add & Invite Users interface - Added: Front-end Create Group form shortcode: uo\_groups\_create\_group - Added: do\_action at end of process\_manual\_group function for developers - Added: Front-end interface for group leaders to email group members - Added: Support for Theme My Login registration forms - Updated: Dropdowns on Course and Quiz reports now appear inline instead of stacked vertically - Updated: Dropdowns on course and quiz reports now auto-populate if only one option is available, instead of forcing the user to select an option - Updated: Improved support for LearnDash custom labels - Updated: Group Management UI permissions – improved support for Administrators and custom roles - Fixed: Bulk discount calculations when “I will enter prices inclusive of tax” is checked in WooCommerce settings - Fixed: General tab missing on WooCommerce Subscription products - Fixed: auto\_login and redirect attributes of uo\_groups\_registration\_form shortcode now working if enrollment code not entered - Fixed: Save button did not work on Settings page on some sites - Fixed: Visibility of \_\_sleep method (PHP 7 notice) --- ### 2.5 - Added: Individual learner progress report (accessible by clicking on a user’s status on the Group Management page) - Added: CSV export capability on course and individual reports - Added: Optional Terms and Conditions checkbox on the groups registration form - Added: quiz-order parameter to sort the quiz dropdown on \[uo\_groups\_quiz\_report\]. Possible values include ‘ID’,’title’,’date’,’menu\_order’ - Added: quiz-orderby parameter to sort the quiz dropdown on \[uo\_groups\_quiz\_report\]. Possible values include ‘ASC’,’DESC” - Updated: Re-labeled “Progress Report” button as “Course Report” - Updated: Users that have not yet started a course now appear in the Course Report with progress at 0% - Updated: Bulk Discount line no longer appears on Buy/Add Courses page if bulk discount is not enabled - Updated: Removed word “Group” from the top of the Course, Learner and Quiz report shortcodes - Updated: Design of settings pages in back-end - Fixed: #GroupName token now works in Group Leader welcome emails - Fixed: Error creating a variable subscription product while Uncanny LearnDash Groups is active - Fixed: Quiz dropdown is now filtered based on group and course dropdown selections on Safari and iOS --- ### 2.4 - Added: Option to allow Group Leaders to delete members to free up seats even after they’ve started or completed courses - Added: Option to prevent Group Leaders from taking up a seat when added to the Enrolled Users table - Added: \[uo\_groups\] parameter add\_group\_leader\_button to show/hide the Add Group Leader button - Added: Additional string localizations - Added: course-order parameter to sort the course dropdown on \[uo\_groups\_course\_report\] and \[uo\_groups\_quiz\_report\]. Possible values include ‘ID’,’title’,’date’,’menu\_order’ - Updated: Group Leaders can now be removed from the Enrolled Users table - Fixed: Checkboxes displayed missing fonts on some systems - Known Issues: Quiz dropdown on Quiz Report ignores group and course filters on iOS and Safari --- ### 2.3 - Added: Course filter on Quiz report - Updated: Dates and times in Progress and Quiz reports now reflect the time zone selected in WordPress settings - Updated: Group dropdown no longer appears on Progress and Quiz reports if the leader is assigned to only one group - Updated: “Registration Code” field label changed to “Enrollment Key” on registration form - Fixed: First Name and Last Name tokens are now populated in the welcome email when “Send Enrollment Key” is selected in the Add User dialog - Fixed: Group leader user is now created correctly when creating a group at Uncanny Groups > Create Group - Fixed: Error messages are now displayed correctly in the Add Group Leader dialog box - Fixed: Links to essay questions in the quiz report now work correctly --- ### 2.2 - Added: Additional parameter for \[uo\_groups\] shortcode: key\_options that hides key-related options in the Add User and Upload Users dialogs - Updated: CSS styling and layout of \[uo\_groups\_buy\_courses\] shortcode - Updated: CSS styling of \[uo\_groups\_registration\_form\] shortcode - Updated: Plugin will no longer redirect users to the Group Management page on successful checkout - Updated: \[uo\_groups\_url\] shortcode is now visible only to Group Leaders and Administrators - Updated: Styling of Create Group page (in WordPress admin panel) is now consistent with Settings page - Updated: Order of product types in dropdown on Edit Product screen --- ### 2.1 - Added: Support for Gravity Forms registration forms - Added: Improved compatibility with WP Better Emails - Updated: Quiz report now displays First Name, Last Name and Email rather than Username - Updated: Creating a group from Uncanny Groups > Create Group now suppresses the default WordPress new user email and correctly populates the #Password token in the email to the group leader - Updated: Additional strings are now translatable - Fixed: Group dropdown on Progress Report page no longer limited to 10 groups - Fixed: Line breaks are preserved in emails - Fixed: Error messages were not being displayed when fields were populated incorrectly in the Add User dialog - Fixed: Group Management report would get stuck if the group was empty (no users) --- ### 2.0 - NOTE: This is a major update, including UI changes. If possible, we recommend updating on a staging environment prior to updating on your live site. - Added: Support for pre-configured subscription-based licenses with WooCommerce Subscriptions - Added: Many shortcode parameters that enable customization of the Group Management page (https://www.uncannyowl.com/knowledge-base/group-management-page/#Customizing\_the\_Group\_Management\_Page) - Added: User Interface color palette options in Uncanny Groups > Settings - Added: Support for post-amount currency symbols on the Buy Courses page - Updated: User Interface and styling of Group Management page - Updated: Styling of Progress Report, Quiz Report and Settings pages - Updated: Users deleted prior to being removed from a group will now credit the deleted user’s seat to the group - Updated: Welcome emails are now sent as HTML instead of plain text - Updated: Non-functional column sorting removed from group leaders table - Updated: Div class “error” on Buy Courses page changed to “uo\_groups\_error” - Updated: Additional plugin strings are now translatable - Fixed: User’s status now only shows “Completed” when all courses in the group have been completed - Fixed: Password sent in group leader welcome email now works correctly - Fixed: #GroupName token in emails now populates with group name - Fixed: Subtotal on Buy Courses page displayed incorrect amount in some situations - Fixed: Errors preventing users from registering into groups in some situations - Fixed: JSON error at checkout when using Stripe payment gateway - Fixed: Users can no longer add multiple licenses to the cart, causing an error at checkout - Fixed: Groups bulk discount no longer affects standard WooCommerce products - Fixed: Group Leader now receives a welcome email when a new group is created from Uncanny Groups > Create Group --- ### 1.4.1 - Fixed: CSS conflict with Event Tickets Plus - Fixed: Missing CSS on Bulk Discounts page --- ### 1.4 - Added: Support for up to 10 bulk discount levels - Added: A setting to include Group Course products in the order when users build a custom license. This enables integration with other plugins that perform actions on purchase such as Follow Up Emails, WP Fusion, Memberium, etc. - Updated: Checkout CSS styles removed because they caused conflicts with some themes - Fixed: Cleaned up a number of PHP notices --- ### 1.3 - Added: Option to control whether group leaders are automatically added as group members - Updated: Group Leaders can now remove any other Group Leader, but not themselves - Updated: WooCommerce orders no longer autocomplete - Fixed: Cost calculations when group leaders other than the original purchaser add seats or courses to a group - Removed: Global setting to show license products in store – setting is at the product level as of version 1.2 --- ### 1.2 - Added: The ability to for an admin or shop manager to manually set the price of a group license product - Updated: Only admin and shop manager created license products are shown in the WooCommerce store when “Show License Products in Store” is checked - Updated: Quiz report now shows “No Stats Recorded” instead of a spinning progress indicator if no statistics have been captured for the quiz - Updated: Group License and Group Course products are now fully compatible with WooCommerce 3+ - Fixed: Miscellaneous jQuery modal dialog issues on some sites - Fixed: “Sold Individually” product setting now functions correctly with Groups plugin active - Fixed: Pagination buttons no longer cause the page to jump - Fixed: Message displayed when a group leader attempts to remove the original group leader - Fixed: Group management page and group progress report now display all courses assigned to the group - Fixed: Adding a group leader would freeze if the LearnDash Group Registration module of the LearnDash Toolkit Pro is enabled - Fixed: Default email message now contains #Password instead of just Password --- ### 1.1.2 - Added: Link to sample .csv file in Upload Users dialog box - Fixed: incorrect form label and ID attributes - Fixed: Typo in registration message - Fixed: $post variable conflict with plugins, including WooCommerce Dynamic Pricing - Fixed: pagination link in the members table --- ### 1.1.1 - Updated: Plugin now utilizes jQuery library included with WordPress instead of enqueuing its own version, which should resolve numerous miscellaneous theme and plugin conflicts - Updated: Made additional UI strings translatable - Fixed: All translatable strings now use uncanny-learndash-groups textdomain - Fixed: Email tokens are now case insensitive - Fixed: If an existing user is specified as Group Leader on the Create Group page, the user’s role is now correctly changed to Group Leader - Fixed: \[uo\_groups\_url\] shortcode now works correctly --- ### 1.1 - Added: Group course list now link to courses - Added: New email variables for #SiteName and #GroupName - Added: Ability to set From Name, From Email and Reply-to on email settings page - Updated: CSS classes on group course list - Updated: Replaced “Name” column with “First Name” and “Last Name” columns on group progress report - Updated: Users with group\_leader role can now be removed from the group member list as long as they are not leader of the current group and have not started any courses - Fixed: Password sent to users added with “Add and Invite Users” now works consistently --- ### 1.0.2 - Updated: Added uog\_header style to table spans to avoid CSS class naming conflicts - Fixed: Group Progress Reports not loading in some environments --- ### 1.0.1 - Fixed: csv upload dialog displays correct error message when incompatible file format detected - Fixed: On plugin activation, pages are now created with correct shortcodes - Fixed: Progress report no longer allows access if user does not have Group Leader role - Fixed: Per Seat Text in settings is now displayed on group management page ### 1.0 - Initial release **Article Categories:** Uncanny Groups for LearnDash --- ### [Uncanny Toolkit for LearnDash Changelog](https://www.uncannyowl.com/knowledge-base/learndash-toolkit-changelog/) **Published:** February 1, 2018 **Author:** Anthony Lucic **Excerpt:** Detailed descriptions of the changes in each release of the Uncanny Toolkit. **Content:** ## 3.8.0.3 \[2026-05-29\] **Fixed:** - Frontend Login – Fixed WP 2FA code verification and backup code handling during login #479 #### 3.8.0.2 \[2025-12-05\] **Fixed***:* - Frontend Login – Added a check to ensure 2FA hooks are only enabled when module is active, preventing unnecessary hook registration #465 #### 3.8.0.1 \[2025-12-01\] **Fixed***:* - Front End Login – Resolved an issue where the password field was not working properly on iPhones #464 #### 3.8.0 \[2025-11-13\] **Added** - Frontend Login – New “Modern theme” with colour selectors to customize the login form **Updated** - Implemented new, standardized Uncanny Owl admin UI theme - Improved Melapress WP 2FA integration using the REST API #423 - Frontend Login – Added `login_form` action hook to login templates #458 **Fixed** - Topics Autocomplete Lessons (Legacy) – Fixed deprecated functions #429 **Internal** - Updated Uncanny Owl logo #### 3.7.0.4 \[2025-09-29\] **Security:** - Resolved a Cross-Site Scripting (XSS) vulnerability in version 3.7.0.3 #CVE-2025-57988 #### 3.7.0.3 \[2025-05-13\] **Fixed:** - Certificates widget – Added fallback in case `apply_filters` returns empty results #409 - Log In/Log Out Links – Tightened rules around anchor link to prevent XSS issue #417 - Text domain – Resolved warning related to missing or incorrect text domain #420 **Intneral:** - Toolkit/Toolkit Pro – Added module statistics collection #404 #### 3.7.0.2 \[2025-01-29\] **Fixed:** - PHP 8.x+ notices #393 - Log In/Log Out Links – Security fixes #405 **Internal:** Quiz completion advances to next step – Replaced Deprecated WP filter ‘learndash\_completion\_redirect’ #395 WP-Admin – Removed display – block !important from review request notices #342 #### 3.7.0.1 \[2024-07-11\] **Internal:** - Hide notifications from other plugins on Toolkit pages. #388 - WP action hooks to facilitate licensing updates in Toolkit Pro v4.3 #389 #### 3.7 \[2024-06-20\] **New Feature:** - Front End Login – New CloudFlare Turnstile support #373 **Updated:** - Front End Login – Added new filter `uo_frontend_login_modal_page_lockout_detection` to override detection #375 - Topics Autocomplete Lessons – Renamed to “Topics Autocomplete Lessons (Legacy)” #377 **Under the hood:** - Upgrade to Pro – Change Menu Link Color #380 - Upgrade to Pro menu item #381 #### 3.6.4.8 \[2024-01-02\] **Fixed:** - Certificate Widget – Throws PHP Error when LearnDash is not active #369 - WP2FA – 2.6 PHP Error issues #368 #### 3.6.4.7 \[2023-11-23\] **Internal:** - Removed featured plugin page modifications #365 #### 3.6.4.6 \[2023-11-09\] **Fixed:** - Blocks – Removed `lodash` dependency for WordPress v6.4+ #363 #### 3.6.4.5 \[2023-10-16\] **Updated:** - User Switching – Module updated to the latest version #350 - Front End login – Hide “Description” output from Forgot Password Form when visitors enter invalid email or username #345 **Fixed:** - WP2FA – v2.4+ support added and fixed PHP errors #352 - Install Automator – Recipe description duplicated #306 #### 3.6.4.4 \[2023-05-31\] **Updated:** - Allow review requests to be dismissed even if REST API blocked #334 - Load static assets from inside the plugin #335 - Suppress admin notices on Automation page #308 **Fixed:** - Install Automator – PHP Error in a specific situation #337 - Front End Login – PHP warning for `redirect_to` param #328 - Vulnerability – Update `redirect_url` param for `review-banner-visibility` endpoint to use `wp_safe_redirect` #331 - Vulnerability – Fix `permissions_callback` for `review-banner-visibility` endpoint #330 #### 3.6.4.3 \[2023-03-06\] **Updated:** - Log In/Log Out Links – Attributes `log_in_text` and `log_out_text` added to change the text of the anchor #301 - Front End Login & WP2FA – Added support for v2.4+ #206 **Fixed:** - Front End Login & WP2FA – PHP Error with v2.4+ #206 - Front End Login – Persist action `lostpassword` redirecting from wp-login.php #317 - Log In/Log Out Links – Fixed PHP Notice #320 - Breadcrumbs – Topic omitted from breadcrumb trail when quiz is embedded at topic level #294 - PHP Error on LearnDash’s third party Add-Ons page in a specific situation #313 **Internal:** - Notices showing on Get Automator page #295 - Renamed “Get Automator” to “Automation” #307 - Automation – Update strings for improved translation support #282 #### 3.6.4.2 \[2023-01-26\] **Fixed:** - CVE-2023-23714 security fix in 1-click installer in a specific situation #309 #### 3.6.4.1 \[2022-11-23\] **Fixed:** - Resume button – Removed the “Completed course” check added in v3.6.4 #292 **Developers:** - Resume button – Added a filter to optionally not show the button if the course is completed - `apply_filters( 'uo_resume_button_do_not_show_for_completed_course', false, $ld_course_id )` #### 3.6.4 \[2022-11-22\] **Added:** - Show Certificates & Certificate Widget – Add support for Group Certificates #263 - Resume module – New attribute `show_name` to display the name of the last LearnDash step in the Enhanced Course Grid module #256 **Updated:** - Not enrolled Redirect URL – Prevent redirect caching – Utilize existing filter `uncanny_toolkit_not_enrolled_redirect_nocache` #250 - 2FA – Show loading animation and disable button on submission #234 - Front End Login – Add “Verify” and “Unverify” to Bulk action menu #194 - Resume Button – Do not show resume button if the course is completed #261 **Fixed:** - Front-end login + WPML = get\_posts not populating Login page dropdown in module settings #266 - CSRF Vulnerability #259 - Misc PHP warnings and validation Fixes #248 - Frontend Login – Block redirect to external website #243 - Automator notification – Buttons could not be clicked #239 - Front End Login – Redirect conflicts between login page and login modal #230 **Internal:** - Add support for number field in Settings fields #286 - Try Automator – Branding updates #270 - Show Automator plugin on Add New Plugin’s page #268 - Add in-plugin notifications #265 - Pro Upsell Modules – Add “Single Page Courses” #254 - When activating/deactivating a module, the semi-transparent overlay doesn’t match the size of the module outline #184 - Updated Gutenberg dependencies #288 #### 3.6.3 \[2022-06-16\] **Added:** - Show Certificates – New shortcode attributes to show/hide courses/quizzes certificate links #207 - Front End Login – Password visibility toggle #159 - Not Enrolled Redirect – Filter `uncanny_toolkit_not_enrolled_redirect_nocache` added to prevent redirect caching with `nocache_headers()` #209 **Updated:** - Improved translation support #198 - Improved PHP 8.1+ compatibility #173 **Fixed:** - Front End Login – WP2FA settings link broken #217 - Front End Login – Typo in 2FA error message #190 - Front End Login – WP2FA – Front-end ajax erroneously invoking 2FA when it’s not enabled #215 - Show Certificates – Quiz certificate link issue missing time argument fixed #200 **Internal:** - Update `is_pro_active` function #222 - npm – Remove `sass-svg` & `sassdash` dependencies #213 #### 3.6.2 \[2022-02-09\] **Added:** - Login/Logout Redirects – Added filters to dynamically enable/disable redirect #179 - Certificates List Shortcode – Added filters to manipulate certificate title #171 - Resume Button – Added filter uo\_resume\_button\_permalink #164 **Fixed:** - Front End Login – reCaptcha causing issue with reset password link sent from wp-admin #177 - Front End Login – “Remember me” checkbox now works with WP 2FA integration enabled #166 #### 3.6.1 \[2021-12-16\] **Added:** - Front End Login – Support for 2FA plugin v2.0+ #155 - Front End Login – uo\_login shortcode now respects the “Disable Remember Me Checkbox” setting #156 - PHP 8.x Compatibility #154 **Fixed:** - Quiz completion advances to next step now forwards the user correctly in LearnDash 5.6.0.1 #152 #### 3.6 \[2021-11-17\] **Updated:** - Updated User Switching code to version 1.5.8 of User Switching plugin by John Blackbourn #141 - Front End Login – Added support for concurrent login feature in LearnDash Integrity plugin #138 - Front End Login – Added detection of reCaptcha setting conflict with LearnDash Integrity plugin #137 - Changes/fixes to ticket submission data when used with Toolkit Pro #135 - Updated `uncanny_toolkit_template_path` for easier custom template overrides. **Note:** any sites using this function should update their code #133 **Fixed:** - Front End Login – Compatibility issue with WP 2FA on some sites #130 - E\_ERROR – `wp_remote_get()` – admin-showcase.php #128 - Front End Login – Fixed compatibility issue with redirect filter in MemberPress #111 - Learn More buttons exceed box bounds when Toolkit Pro or LearnDash not active #110 #### 3.5.2 \[2021-08-18\] **Updated:** - Updated User switching codebase from John Blackbourn’s User Switching plugin version 1.5.7 #97 - Front End Login – Added custom events for JavaScript developers #89 - No longer using `block_categories` filter as it was deprecated in WordPress 5.8 **Fixed:** - Conflict with select2 library in other plugins prevented some toolkit modules from being enabled on some sites #99 - Front End Login – No longer redirects to /Array when WordPress periodically attempts to verify the site email address #95 - Front End Login – Unescaped redirect\_to parameter causes 403 error on some hosts #94 - Quiz Completion Advances to Next Step – Redirect erroneously uses $step instead of $step\_id resulting in an incorrect redirect in some situations #91 #### 3.5.1 \[2021-06-09\] **Fixed:** - Filter on modules page now returns relevant results - Quiz Completion Advances to Next Step – No longer advances to next lesson/topic if there are still incomplete quizzes in the lesson/topic - Login Redirect – No longer redirects admins on login #### 3.5 \[2021-05-03\] **Added:** - WP 2FA – Two-factor Authentication plugin integration for Front End Login module #48 - One-click Uncanny Automator install #47 **Fixed:** - Notice: Undefined index: uc\_exp\_email\_body in Group Expiration Module #31 - Notice: Undefined index: uc\_exp\_email\_title in Group Expiration Module #30 - LearnDash 3.4.x compatibility for Topics AutoComplete Lessons Module #21 - Topics complete lessons contains LD 3.4.0 incompatibility #46 - Deprecated notice when saving any module settings. #41 - Unable to open Settings in the Modules #34 - Deprecated: add\_option was called with a deprecated argument in Config #29 - Notice: Trying to get property ‘success’ of non-object #28 - Notice: Undefined index action in Frontend Login Plus #27 - PHPMailer file path #16 - Incompatibility with LearnDash 3.4.x in Topics Autocomplete Lessons module #14 - Topics Autocomplete Lessons: Now only redirects to course level when completing the last topic in the last lesson of a course #4 - Front End Login: Custom reCAPTCHA text set in settings panel now overrides default reCAPTCHA text #3 **Updated:** - “Upgrade to Pro” to Plugins page #24 - Code quality #18 #33 #### 3.4.3 \[2021-03-17\] **Fixed:** - Front End Login: Custom reCAPTCHA text set in settings panel now overrides default reCAPTCHA text - Topics Autocomplete Lessons: Now only redirects to course level when completing the last topic in the last lesson of a course #### 3.4.2 \[2021-02-11\] **Added:** - New parameters to settings array to support future functionality **Updated:** - Quiz completion advances to next step: “Click here to continue” button on last quiz of a course will now redirect to course page instead of lesson/topic - Not Enrolled Redirect: Now detects if users are enrolled via group access **Fixed:** - User Switching: Could not switch users on some site if Front End Login is enabled - Deprecated: Function get\_magic\_quotes\_gpc() - Notices on module page when LearnDash is not active - Disable Emails: PHP notice: Constant DISABLE\_EMAILS\_OPTIONS already defined - Front End Login: Users that become unverified and then are reverified will now receive a notification email #### 3.4.1 \[2021-01-04\] **Added:** - Front End Login – Option to ignore login redirects when using the modal login - Front End Login – Option to customize the user verification email - Front End Login – Option to disable the user verification email - Front End Login – Filter uo\_frontend\_login\_args for developers to modify the login form arguments - Front End Login – Show custom error messages in the Forgot password form - Front End Login – Actions to support user verification trigger in Uncanny Automator - Added `do_action( 'toolkit_settings_save_validation', $class, $options )` to let users manipulate module settings **Updated:** - Front End Login – Redirects from /wp-login.php to the assigned login page now preserve the redirect\_to parameter in the URL **Fixed:** - Topics Autocomplete Lessons – Activity tables now updated with proper completion data for the last topic in a lesson - Front End Login – Unverified users are no longer able to log in - Fixed – Log in / log out redirect – Conflict with frontend login module #### 3.4 \[2020-11-05\] - **New Module:** Quiz completion advances to next step – Automatically advance to the next step when user clicks “Click here to continue” on final quiz page of a lesson/topic - Updated: Front End Login – Users created before the module was activated or while the module is not activated are set to “Auto verified” instead of “Not verified” - Updated: Front End Login – Update to allow basic auth plugin to work with wp-json routes. *Contributed by asppsa* #### 3.3.4 \[2020-09-30\] - Updated: Menu Item Visibility – Updated nav menu walker function for improved compatibility with newer versions of WordPress - Updated: Added permission\_callback to all Rest API calls for WordPress v5.5 compatibility - Fixed: Front End Login – Redirect attribute now redirects correctly when logging in using modal login form - Fixed: Front End Login – PHP notice: Trying to get property ‘ID’ of non-object on some non-post pages #### 3.3.3 \[2020-08-06\] - Updated: Front End Login – Replaced file\_get\_contents with wp\_remote\_post to improve compatibility with some hosts - Fixed: Front End Login – Javascript notice – Uncaught TypeError: Cannot read property ‘currentPageIsLoginPage’ of undefined - Fixed: Topics Autocomplete Lessons – When someone other than the user (e.g. an Admin or Group Leader) marks the last topic in a lesson complete for the user the associated lesson is now automatically marked complete #### 3.3.2 \[2020-07-27\] - Updated: Front End Login – Improved compatibility of modal login with server-side caching - Updated: Front End Login – Added redirect attribute to uo\_login\_ui shortcode - Updated: Front End Login – Modal Login menu link now reloads the page if clicked while the user is on the login page specified in settings - Updated: Resume Button – Resume data now deleted when course progress is cleared - Updated: Resume Button – No longer appears on LearnDash post types (Universal resume button only; course-specific resume button will still appear on course pages) - Fixed: Not Enrolled Redirect – No longer redirects on the course archive page #### 3.3.1 \[2020-06-25\] - Updated: Menu Item Visibility – Updated to version 1.10.1 by Kathy Darling - Fixed: Resume Button – Input type changed back to “submit” from “button” - Fixed: Front End Login – Login form showing up twice on login pages created with the Gutenberg editor - Fixed: PHP notice $modal\_link undefined on modules page #### 3.3 - Added: Resume Button – Added shortcode to output a properly formatted link: \[uo\_learndash\_resume\_link\] or URL \[uo\_learndash\_resume\_link url\_only=”yes”\] - Added: “Help” button on module settings dialogs - Added: Front End Login – New pop-up modal login form - Added: Front End Login – AJAX support for common actions (Boxed with shadow template only) - Updated: Front End Login – Redirect to login page changed from 302 to 301 - Updated: Front End Login – Improved compatibility with Login/Logout Redirects module - Updated: Front End Login – reCAPTCHA now rendered explicitly to support more than one reCAPTCHA on the same page - Updated: Front End Login – Removed jQuery dependency from front end assets - Updated: Changed plugin name from “Uncanny LearnDash Toolkit” to “Uncanny Toolkit for LearnDash” - Updated: Resume Button – Improved translation support - Updated: User Switching updated to version 1.5.4 by John Blackbourn - Updated: Improved compatibility with WordPress versions < 5.1 - Updated: Code cleanup - Fixed: Front End Login – Workaround to enable users to log in if the login page is in the trash - Fixed: PHP Notice: register\_rest\_route was called incorrectly in WordPress 5.4.2 and newer - Fixed: Blocks now show up in Gutenberg editor #### 3.2.2 - Updated: Resume button – “RESUME” Button text now localized - Fixed: Uncanny Toolkit Pro Gutenberg blocks were unavailable unless at least one module from the Uncanny Toolkit (free version) that contained a Gutenberg block was active - Fixed: Front End Login – Admins being redirected to blank wp-login.php page on login on some sites - Fixed: Topics Autocomplete Lessons – After completing all topics, lesson no longer autocompleted if it contains an incomplete assignment #### 3.2.1 - Added: Front End Login – Require strong password option for password reset form (minimum 8 characters including 1 uppercase letter, 1 lowercase letter and 1 number) - Updated: Not Enrolled Redirect – Redirect field now accepts shortcodes - Updated: Tweaked CSS style for select2 dropdowns in /wp-admin - Updated: Front End Login – redirect\_to parameter in URL now takes precedence over redirect shortcode attribute and Login/Logout redirects module - Fixed: Front End Login – PHP fatal error on some sites when initiating a password reset before LearnDash settings are initialized #### 3.2 - Added: New Module: Disable Emails – When active, disables all emails sent via wp\_mail function. Fork of the excellent [Disable Emails](https://en-ca.wordpress.org/plugins/disable-emails/) plugin by [webaware](https://profiles.wordpress.org/webaware/) - Added: Certificate Widget/Show Certificates shortcode – Setting to output Certificate Name instead of Course/Quiz name - Added: Certificate Widget – Sort order options - Added: Front End Login – redirect\_to parameter now supported - Updated: Breadcrumbs – Dashboard link now inserted into native LearnDash breadcrumbs on 3.0 template - Updated: Front End Login – Added priority of 100 to wp\_mail\_content\_type filter to avoid conflicts with some email plugins such as WP Better Emails - Updated: User Switching – Link now floats right when Focus Mode is enabled for improved accessibility - Fixed: Front End Login – Fatal errors when resetting password after registration on some sites - Fixed: Front End Login – Invalid password reset link message now displayed before password reset form is displayed - Fixed: Front End Login – Invalid login/password messages not displayed when entering incorrect credentials on some sites - Fixed: Front End Login – Shortcode not detected when placed inside a Gutenberg layout block - Fixed: Duplicate Pages and Posts module missing in list Pro modules - Fixed: Redirect if not enrolled – PHP notice: Undefined property - Fixed: Updated: Some strings incorrectly using uncanny-toolkit-pro textdomain #### 3.1.4 - Added: Front End Login – Added redirect parameter to uo\_login shortcode to allow form-specific redirects - Updated: Front End Login – Failed login redirect now ignored for REST and AJAX requests - Updated: Front End Login – Eliminated 500 error on password reset when other plugins alter email filters - Updated: Front End Login – Improved translation support for strings related to account verification - Updated: Certificate Widget/Show Certificates – Now displays the course/quiz name instead of the certificate name - Fixed: Send Course/Quiz Certificate by Email – Email content loses line breaks on reload - Fixed: Clicking the label of “Verify this user and allow them to log in” checkbox no longer toggles the “Rich Editing” checkbox #### 3.1.3 - Updated: Restored copyright and GPL license info to User Switching module (thanks @johnbillion!) #### 3.1.2 - Updated: Removed PHP\_OS\_FAMILY constant to avoid false-positives in PHP compatibility checks - Fixed: Not Enrolled Redirect – Course settings being reset on save - Fixed: Front End Login – Headers already sent error on reset password #### 3.1.1 - Added: Course Dashboard (Pro): Logic to select dashboard 3.0 theme when module is activated or LearnDash 3.0 theme is active - Updated: Improved radio button behavior in module settings dialogs - Fixed: Front End Login – Issue that caused “Headers already sent” warning on some sites - Fixed: Hide Admin Bar – Admin bar no longer appears in Elementor editing view #### 3.1 - Added: Automatic template overrides! Override any file in the /src/templates folder by copying it into /uncanny-toolkit/ in your child theme - Added: Front End Login – Option to disable “Remember Me” checkbox - Updated: Front End Login – Improved compatibility with other login plugins when reCaptcha is enabled - Updated: Front End Login: Default template no longer displays email field after the reset password form is submitted - Updated: Log In/Log Out Links – Improved translation support - Updated: Hide Admin Bar – The admin bar is now always visible to all users with the “manage\_options” capability - Updated: Resume Button – Removed next post prefetch meta tag on courses, lessons, topics and quizzes to prevent Firefox users from being sent to the wrong lesson/topic when resuming - Fixed: Required PHP version message now correctly states PHP 5.6 or higher is required #### 3.0.2 - Updated: Improved compatibility with Internet Explorer 11 - Fixed: Front End Login: Forgot password email body field was duplicating content when settings saved on some sites - Fixed: Login/Logout Redirect: Resolved conflict with Group Login Redirect module (Toolkit Pro) #### 3.0.1 - Added: Front End Login – Added recaptcha support to **${errorMessage}** `; }, }); }; Remember Me [Forgot Password?](https://www.uncannyowl.com/login/?action=lostpassword) shortcode - Added: Plugin will automatically deactivate and show notice if PHP < 5.6 is detected - Updated: Improved scroll handling in module settings dialogs - Fixed: Front End Login – Unrecognized URL parameters no longer cause %placholder% to be rendered on the login form - Fixed: Typo in %placholder% - Fixed: Module settings dialogs with many options now render properly in Firefox - Fixed: Z-index issue on select2 elements in /wp-admin - Fixed: Missing dependency error: blocks.style.build.css #### 3.0 - **Important**: If you had overridden the Front End Login template file, you will need to update the template override by making a copy of the new file. - This release features a completely overhauled Front End Login module, including: - A new modern, clean design (selectable from module settings) - Many additional options for customizing text, including the password reset email - Better templating system, making it easier to make design changes without modifying the core plugin - Recaptcha support - New optional, customizable Register link - The link in the password reset email now goes to a front end page instead of the WordPress password reset page - Added: Gutenberg blocks for breadcrumbs and resume button modules - Added: WAI ARIA support in breadcrumbs module - Added: Tab structure for toolkit pages - Added: Help page for easier access to plugin documentation - Added: Log In/Log Out Redirects – Default priority set to 999, added field to manually set priority - Updated: Module names changed for consistency: - LearnDash Certificate Widget > Certificate Widget - LearnDash Groups in User Profiles > Groups in User Profiles - LearnDash Resume Button > Resume Button - Show LearnDash Certificates > Show Certificates - Updated: Hide Admin Bar – Improved multisite support - Updated: Hide Admin Bar – Added priority 11 to filter for improved compatibility with some themes and plugins - Updated: Cleaner, modernized UI for modules page - Updated: Changed admin URLs for toolkit pages - Updated: User Switching – Added position:relative to link to switch back to the admin user in the user switching module to improve theme compatibility - Updated: Reorganized plugin .js and .css files - Updated: Learndash Groups in User Profiles – Now uses LearnDash API for querying groups #### 2.7 - Added: Attributes category and course\_category to \[uo\_groups\_create\_group\] shortocde to limit the courses available in the form - Added: Featured image field to Create Group form (in both the back end and front end) - Added: Filters to modify or disable plugin emails: ``` ulgm_maybe_send_group_email //for all user emails ulgm_maybe_send_welcome_email //for welcome email ulgm_maybe_send_redemption_email //for redemption email ulgm_maybe_resend_redemption_email //for resend redemption email Example (disabling emails): add_filter('ulgm_maybe_send_group_email', '__return_false'); add_filter('ulgm_maybe_send_welcome_email', '__return_false'); add_filter('ulgm_maybe_send_redemption_email', '__return_false'); add_filter('ulgm_maybe_resend_redemption_email', '__return_false'); ``` - Updated: Email users function now sends a separate email to each user in the group rather than a single email with all users BCC’d - Updated: CSS on modal dialog close button for better compatibility with some themes - Updated: Bulk Add & Invite no longer overwrites First Name and Last Name data for existing users - Updated: Upload users via .csv now supports columns in any order - Updated: \[uo\_groups\_create\_group\] now works for Administrators, Group Leaders, and any role with the manage\_options capability - Fixed: Remove Group Leader button not showing up in some situations - Fixed: Add user button non-functional in Internet Explorer 11 - Fixed: SQL syntax error being logged on some operations - Fixed: \[uo\_groups\_create\_group\] content no longer renders above page content - Fixed: Bulk Add & Invite users form now sends the correct email to the newly added users (new users get the New User Welcome Email and existing users get the Existing User Welcome email) #### 2.6.1 - Added: Notice displayed and plugin automatically deactivated if LearnDash is not active - Updated: After submitting the Bulk Add & Invite Users form, the group that users were added to remains the active group - Updated: Improved error handling in front end .csv user upload - Updated: File name of individual progress report .csv now includes user’s first name and last name (or user ID if those fields are blank) - Fixed: Course Name column populated in .csv export of individual progress report - Fixed: Bug in Email Group Members function that prevented emails from being sent on some server configurations #### 2.5 - Added: Course-specific Resume Button; can be placed on course pages - Added: Option to output Resume Button destination below resume button - Added: Option to include current page in LearnDash Breadcrumb trail - Updated: Improvements to the Reset Password functions of Front End Login module - Updated: Ignore AJAX requests on Logout Redirect - Updated: Removed 999 priority on Hide Admin Bar module to address incompatibility with Elementor builder - Fixed: Admins are no longer redirected to lessons when approving assignments with Topics Autocomplete Lessons module enabled - Fixed: Page doesn’t exist error in Resume Button function in rare circumstances - Fixed: Notice in Redirect If Not Enrolled Module - Fixed: Removed slashes sometimes appended to email body content in Email Course/Quiz Certificate modules #### 2.4.2 - Fixed: Certificate widget and shortcode now display LearnDash certificates - Fixed: Certificate widget now correctly renders Uncanny Continuing Education certificates #### **2.4.1** - Fixed: Resume Button: Fatal error on LearnDash versions < 2.5 - Fixed: Not Enrolled Redirect: Undefined index notice #### **2.4** - Added: Additional string localizations - Added: List view for modules in Toolkit settings - Updated: Autocomplete Lessons and Topics: When enabled, a “Done” button is now added to last lesson in a course (returns user to course page) - Updated: Front End Login: Labels now positioned above login fields by default - Updated: LearnDash resume button: Improved compatibility with Shared Course Steps and Nested Permalinks enabled - Fixed: Breadcrumbs: Topic no longer appears twice in breadcrumbs on topic quizzes - Fixed: Certificate Widget: Notice no longer appears when no certificates have been earned #### **2.3** - Added: Not Enrolled Redirect Module – Redirect a user to a specified URL if they attempt to access a course in which they are not enrolled - Added: Front-End Login – Added label setting for login form (Username, Email, Username or Email, Login) - Updated: Front End Login – Cleaned up some error messaging in the user interface - Updated: Front End Login – Made some additional strings translatable - Updated: User Switching code to version 1.3 of [User Switching](https://wordpress.org/plugins/user-switching/) plugin by John Blackbourn - Updated: Confirmation message when disabling a toolkit module now appears in green instead of red - Fixed: JavaScript error on the Toolkit settings page in some environments when debug is enabled #### 2.2 - Added: User Switching Module based on User Switching by John Blackbourn: - Added: Support for LearnDash 2.5 - Updated: Hide Admin Bar action priority - Updated: Improved multisite support #### 2.1 - Updated: Certificate widget now recognizes course certificates - Fixed: Course complete action was called repeatedly when Topics Autocomplete Lessons module was active 2.0.6 - Fixed: Single quotes are saved properly in toolkit module settings - Fixed: Front end login reset password function on Edge and Safari #### 2.0.5 - Fixed: WooCommerce/Third Party plugin notices popping up in Pro Toolkit Ad banner - Fixed: Modules not loading because DB updates were not saving slashes on some hosts - Fixed: Password reset when WordPress is installed in a subdirectory #### 2.0.4 - Fixed: Restored ‘Sample Tag’ module - Fixed: Removed invalid slashes when saving settings #### 2.0.1 - Fixed: Flush admin scripts/styles #### 2.0 - Added: Module filtering options in the Toolkit UI - Fixed: Minor issue in auto-completion logic when multiple quizzes are assigned to the topic/lesson - Fixed: Front End Login now accepts username or email if user approval is turned on - Fixed: Minor layout issue in WordPress menu editor when Menu Item Visibility module is enabled #### 1.3.5 - Added: Textarea as an option for module settings - Added: Priority 11 to menu item visibility filter; will now override common theme menu enhancements like megamenu #### 1.3.4 - Removed: Dynamic announcement banner to admin UI #### 1.3.3 - Added: Dynamic announcement banner to admin UI - Updated: Changed log in link shortcode **${errorMessage}** `; }, }); }; Remember Me [Forgot Password?](https://www.uncannyowl.com/login/?action=lostpassword) to [Log In](https://www.uncannyowl.com/wp-login.php) - Fixed: Log in link redirects to login empty #### 1.3.2 - Added uo\_login\_link shortcode to replace deprecated uo\_login in Login/Logout Menu - Added WordPress 4.6 support - Improved design of module settings - Improved compatibility with Nav Menu Roles plugin - Fixed LearnDash Group User Profile module to only show group name if group ID is valid - Fixed multiple escape slash issue with custom module - Fixed auto completion of lessons if topics are complete but quiz is not - Reworded Front-End Login error label #### 1.3.1 - Blocked Pro reminders from appearing on page reloads after dismissal #### 1.3.0 - Added logout redirect setting - Added color pickers - Added links to Pro modules plugin - Added admin notification when user is manually approved - Added links to Knowledge Base articles for all modules - Fixed automatic approval of assignment when Topics Autocomplete Lessons module is on - Fixed widget certificate link - Enhanced security for mark lessons complete #### **1.2.7** - Fixed learndash\_lesson\_completed to allow hooks from BadgeOS and other plugins - Fixed Topics Auto Complete Lessons invalid argument for foreach() for non-logged in users - Fixed fix notice on 404 pages - Fixed do not setup resume button if last page has been deleted - Excluded admin users from manual verification script #### **1.2.6** - Allowed certificates with the same name - Fixed Uncanny Certificate Widget closing tag #### 1.2.5 - Fixed course completion date issue with Topics Autocomplete Lessons - Added support for alternate course labels (Thanks Eben Hale!) #### 1.2.4 - Added PHP/LearnDash/WP version checking - Fixed cookies for password reset and registration - Updated resume button to match theme button style - Fixed verified user email formatting #### 1.2.3 - Tested with WordPress 4.5 - Fixed breadcrumbs function #### 1.2.2 - Fixed duplicate breadcrumbs on quiz pages #### 1.2.1 - Fixed missing file #### 1.2 - NEW FEATURE: LearnDash Breadcrumbs - Fixed course completion time in CSV output - Fixed translation text domain - Added sorting of features by name on admin settings page - Added bitbucket pull requests for developers - Fixed all shortcode now use \_ rather than – - Dev Only Added simple user registration to Front End Login feature - Added translation support - Fixed course completion time in LearnDash CVS Reports #### 1.1 - NEW FEATURE: Log In/Log Out Links - Fixed redirect from wp registration page - Added registration link to uo\_login\_ui - Added setting to change Resume button text #### 1.0.1 - Open Certificate links in new window - Fixed blank settings page on older server configuration - Fixed auto loading on older server configuration - Fixed settings modal on small screens - OB Clean Buffer Before AJAX Response - Improved support for custom extensions - Set Addon Option default as Array() - Prevented login lockout if login page set incorrectly #### 1.0 - Public release **Article Categories:** Uncanny Toolkit for LearnDash --- ### [Uncanny Toolkit Pro for LearnDash - Changelog](https://www.uncannyowl.com/knowledge-base/learndash-toolkit-pro-change-log/) **Published:** August 16, 2017 **Author:** Anthony Lucic **Excerpt:** Detailed descriptions of the changes in each release of the Uncanny LearnDash Toolkit Pro. **Content:** ### 4.4.1\[2026-05-29\] **Addition:** - Group Sign Up – Added support for Forminator forms as registration forms on group sign-up pages #901 **Updated:** - Course Timer – Added WordPress filters `uo_course_timer_time_display` and `uo_course_timer_time_display_completion` to allow customizing the time display for \[uo\_time\] and \[uo\_time\_course\_completed\] #883 - Group Signup – Moved user authentication before group assignment so hooks triggered during registration have access to the correct current user context, improving compatibility with Automator and other integrations #902 **Fixed:** - Resolved COOKIEHASH mismatch that caused timer authentication failure when `get_site_option` returned the wrong `siteurl` #895 - Fluent Forms Autocomplete – Resolved a PHP warning on lesson and topic pages when the module is active #885 - Group Notifications – Ensured edited LearnDash notifications are scheduled for groups created after the notification was originally created #867 - Group Registration – Recognized Forminator forms on group edit pages so the built-in registration form is removed and users are added to the group after submitting the Forminator form #872 #874 - WordPress Compatibility – Settings now appear in a dedicated “Uncanny Toolkit” tab on the edit page for LearnDash post types #896 --- ### 4.4\[2025-11-13\] **Added:** - Learner Transcript – Added an option to allow public transcript access with a shareable link and copy-to-clipboard feature for easier viewing and sharing of transcript records #773 **Updated:** - Implemented new, standardized Uncanny Owl admin UI theme - Import Users – Enhanced CSV import functionality to support multiple delimiters (comma, semicolon, tab, pipe) with automatic detection #855 **Fixed:** - Autocomplete Lessons & Topics – Set `$force` to true when calling `learndash_process_mark_complete` #817 - Course Dashboard – PHP warning Undefined array key “has\_graded” #858 - Duplicate Pages & Posts module – Duplicating a course no longer enables nested URLs #836 - Email Course Certificates – Refactored hardcoded certificate paths to dynamic upload directory with fallbacks #842 - Import Users – Fixed password reset token regeneration issue in CSV #845 --- ### 4.3.2 \[2025-05-13\] **Added:** - Simple Course Timer – Added option to enable logout and redirect after timer expires #169 **Developers:** - Transcript – Introduced WP filter `uo_pro_transcript_cell_$key` (e.g., `title`) to make course title linkable #820 - Group Registration Form – Added WP action hooks `uo_group_signup_before_table`, `uo_group_signup_after_table` to add custom group signup form fields #809 **Fixed:** - Autocomplete Lessons & Topics – Resolved PHP warnings when a lesson is not found #805 - Autocomplete Lessons & Topics – Fixed issue preventing user redirection to the “Course Completion Page” #822 - Bulk Certificate Email – Corrected HTML tag escaping issue #815 - Course Dashboard – Fixed issue where category IDs did not work in the Gutenberg block category field #130 - Gravity Forms Autocomplete Lessons & Topics – Resolved hook priority conflict #823 - PHP Notice related to `load_text_domain` resolved #826 - Simple Course Timer – Fixed WP 6.8+ `wp_validate_auth_cookie` and password hashing compatibility #829 - Simple Course Timer – Ensured compatibility with Tin Canny v5.0 #831 --- ### 4.3.1 \[2024-10-29\] **Updated:** - Learner Transcript – Table Course Sorting – Added “Course completion date ascending” and “Course completion date descending” options #796 - Learner Transcript – Table Course Sorting – Renamed “Date ascending” to “Course publish date ascending” #796 - Learner Transcript – Table Course Sorting – Renamed “Date descending” to “Course publish date descending” #796 - Learner Transcript – `all` option added for `category` and `ld_category` attributes #525 - Group Registration – New WP Action `uo_group_signup_before_submission` and Filter `uo_group_signup_errors` to allow custom validation #801 **Fixed:** - Import Users – Fix message when email is not sent #786 - Learner Transcript – Additional validation for post variables before attempting to retrieve properties #798 - Learner Transcript – Fixed deprecated notice related to `usort()` #791 --- ### 4.3 \[2024-07-11\] **New Feature:** - Learner Transcript – Optionally show historical course completion records (Requires Uncanny CEUs) #767 **Fixed:** - Autocomplete Lessons & Topics on Fluent Forms submission – Updated deprecated action hooks #724 - Course Timer – Fixed PHP notice in a specific case #775 - Download Certificates In Bulk – Set current user for LD access checks #765 - Drip Lessons by LearnDash Group – Filter to override LearnDash Lesson Access setting no longer working #762 - Import Users – Populate course and group IDs from default options for hooks #771 **Internal:** - License activation moved to modules menu (Requires Toolkit v3.7+) #777 - License endpoint updates #777 - Download Certificate modules – New filters `uo_learndash_certificate_font` & `uo_learndash_certificate_font_size` for custom fonts #778 --- ### 4.2.1 \[2024-05-09\] **Addition:** - Download Certificates in Bulk – “Clear previous runs” front end checkbox #755 **Updated:** - Course Dashboard – Course Start button – Course status CSS class added for custom CSS rules #743 - Download Certificates In Bulk – Translatable Email Body #733 - Group Logo/List – New attribute `hide_logo_admin` to hide group images for admins #753 - Import Users – New filter `uo_toolkit_csv_import_wp_user_by_field` to optionally look up user by login instead of email #740 - Reset Progress Button – Make default button label translatable #745 **Fixed:** - Download Certificates In Bulk – Improved count and messaging of dropdown options #735 - Download Certificates In Bulk – Now displays a message if PHP `ZipArchive` module is not active #670 - Download Certificates and Certificates running with cron are not rendering LearnDash’s usermeta shortcodes #700 - Drip Lessons by Topic/Group – LearnDash notifications are not firing when module is enabled #737 - Group Logo/List – All group logos are appearing for admins #749 **Under the hood:** - Licensing – Allow plugin to be pre-activated by defining `UNCANNY_TOOLKIT_PRO_LICENSE_KEY` in `wp-config.php` #761 - Licensing endpoint updated #757 --- ### 4.2 \[2024-02-07\] **New Features:** - Simple Course Timer – Timer that counts up `[uo_time_live]` #721 - Enhanced Lessons/Topics Grid – Show quizzes #605 - Transcript Report `[uo_transcript]` – `user-id` attribute to support Transcript page ID attribute in Uncanny Groups v6.0 #726 **Updated:** - Duplicate Pages & Posts – Minimum role changed from `manage_options` to `edit_published_posts` #711 - Enhanced Course Grid – Added `taxonomy_relation` attribute to set `OR` or `AND` values #713 - Import Users – `%Password Reset URL%` token #715 - Import Users – Upload error message made clearer #717 - Group Registration – New WordPress - Filters `uo_ld_group_signup_registered_message`, `uo_ld_group_signup_joined_remove_previous_group_message` & `uo_ld_group_signup_joined_message` to override Group Signup Messages #709 --- ### 4.1.4.2 \[2023-12-14\] **Update:** - Download Certificates In Bulk – WP Filters `uo_bulk_downlad_cert_capability` & `uo_bulk_downlad_cert_allowed_roles` for Permission Handling #702 **Fixed:** - Autocomplete Lessons & Topics enabled causes additional “Next Lesson” / “Next Topic” button to appear #699 - Restrict Page Access reseting on page save/update #704 - Transcript module – Not showing completion date for custom CEU records #693 --- ### 4.1.4.1 \[2023-12-04\] **Updated:** - Group Leader Access – WP Filter `uo_groupleaderaccess_add_to_group_on_login` to optionally skip adding Group leader to courses on login #682 - Learner Transcript – Optimize printing of transcript by loading only the main CSS file #684 - Learner Transcript – WP Filters `uo_transcript_print_styles`, `uo_transcript_print_elements` #684 - Download Certificates In Bulk – WP filters `uo_download_certificates_in_bulk_group_data`, `uo_download_certificates_in_bulk_course_data` & `uo_download_certificates_in_bulk_quiz_data` to manipulate the respective data #696 **Fixed:** - Email certificate modules – Improved reliability of Certificate Builder check #686 - Download Certificates In Bulk – Not using LearnDash labels in form #694 - Restrict page access – Added WP filter `uncanny_toolkit_restricted_content_filter` to avoid conflict with Avada header and footer #676 - Simple Timer Script & FlyWheel – Load `wp-load.php` from a specific folder #680 **Internal:** - Additional validation on Ajax calls by adding nonce and admin check #688 --- ### 4.1.4 \[2023-11-23\] **Add:** - Course & Lesson/Topic Grids – Support for Alt tags for images #663 **Fix:** - Download Certificates In Bulk – Not generating email when certificate builder is used #671 **Internal:** - License check – Switched to Item ID instead of Item name #678 --- ### 4.1.3.1 \[2023-11-09\] **Updated:** - Group Registration – WP filter `uo_show_groups_login_form` to allow hiding the login form #664 **Fixed:** - Blocks – Removed `lodash` dependency for WordPress v6.4+ #667 --- ### 4.1.3 \[2023-10-31\] **Fixed:** - Download Certificates In Bulk – Course/Quiz dropdown not working when a group leader does not have any groups #660 - Download Certificates In Bulk – Use LearnDash Labels for Groups, Courses and Quizzes #654 - Download Certificates In Bulk – CEU shortcode not rendering in Certificates #648 - Download Certificates In Bulk – Module settings – “Clear previous runs” to clear rogue runs interfering with newer requests on some sites #645 - Drip Lessons by Group – LearnDash notifications not triggering as expected #643 - Group Registration – `emailto` link typo #650 - Improved PHP 8.2 compatibility #656 --- ### 4.1.2 \[2023-09-14\] **Fixed:** - Group Registration – Single Group Query Improved #641 - Autocomplete Lessons & Topics on Fluent Forms Submission – Cannot activate module when Fluent Forms is activated #639 - Course Dashboard is showing quiz “Statistics” button when statistics is not enabled on the quiz #636 - Course Certificate – Non-default language – Email is not working #634 - Email Quiz Certificates – Correctly assign course-id when course is passed an object #632 - \[TinCanny\] – Course Timer JS error #628 --- ### 4.1.1 \[2023-08-03\] **Updated:** - Download Certificates in Bulk – WordPress filter to optionally modify certificate types drop-down list #625 - User Imports – Confirmation message shown after import completion #622 - Group Expiration – Allow resetting the expiration date field using backspace or delete key #598 - Email certificate modules – Continuing Education Units (CEUs) shortcodes now render the values properly #627 **Fixed:** - Group Registration – Users not being added to group when registered via Gravity Forms with recent Gravity Forms versions #616 - Email Quiz Certificate – Not sending email when quizzes are graded manually #611 - Download Certificates in Bulk – `[quizinfo show="percentage"]` shortcode not rendering #606 - Days Until Course Expiry – Incorrect expiry days #602 - Download Certificates in Bulk – Drop-down lists not working when select2 library is missing #600 - Download Certificates in Bulk – LeranDash usermeta shortcode not displaying anything #596 --- ### 4.1 \[2023-06-01\] **New Modules:** - Drip Topics by Group #524 - Autocomplete Lessons & Topics on Fluent Forms Submission #573 - Autocomplete Lessons & Topics on Formidable Forms Submission #572 **Updated:** - Restrict Page Access – Add Course Completion selection #584 - Simple Course Timer – Increase default polling interval and text #574 - Enhanced CSV Reports – Course Start Date column added #583 **Fixed:** - Download Certificates In Bulk – Date conflict with ProPanel filter widget shortcode #594 - Download Certificates In Bulk – Quiz drop-down issue if the course has only quizzes and no other steps #592 - Certificate Preview – `date_i18n` hooking too early #587 - Email Quiz Certificate – Not rendering shortcode `[quizinfo show="percentage"]` #577 - Learner Transcript – Only displaying courses assigned to a category #576 - Group Expiration Module – Timestamp using wrong time #570 --- ### 4.0.0.1 \[2023-04-26\] **Fixed:** - Bulk certificates – Groups dropdown now hides “Any group” or “All groups” option if the user has access to one group only #564 - Bulk certificates – `disk_free_space` not returning available space on some servers #560 - Import Users – Importing CSV with empty data in a column clearing data for existing users #563 - Import Users – Importing CSV not working in certain conditions, showing “No rows were found in the file that could be imported” #557 --- ### 4.0 \[2023-04-11\] **New module:** - Download certificates in bulk #473 **Added:** - Group Expiration – WordPress filters for email overrides #548 - Transcript module – Course category attributes added #525 **Updated:** - Import Users – Ignore blank rows #528 - Reset Progress Button – Now supports time data reset by course id #518 - Learner Transcript – Now supports RTL in PDF version #507 - Group Registration – noindex and nofollow robot tags added #505 - Group Expiration – Description added to group expiration date field #504 - Course grid – Replace deprecated `learndash_30_get_currency_symbol` with `learndash_get_currency_symbol` #498 - Import Users & Multisite – Add user to the current subsite #493 **Fixed:** - Group Registration – Logging in from the page not adding user to the group #531 - Improved Group Leader Interface – PHP Warning fixed #526 - Reset Progress Button – Tin Canny attribute reset\_tincanny=”yes” now resets course progress properly #510 - Group Registration – PHP warning fix #495 - Lesson Topic Auto Complete – PHP Error fixed #491 - Course Dashboard – Hide Resume, Start or Certificate button when a user\_id attribute is used in the shortcode and a different user views the page #394 - Email Group Certificates – Not sending to Group Leaders #550 - Enhanced Course Grid – Allow HTML in short course description field #546 - Restrict Page Access – Line Breaks being stripped from editor #538 **Internal:** - Email Course Certificates – Addition WordPress filters to modify subject, body and certificate attached message #533 - Group Registration – Additional WordPress action and filter to allow signup URL multi-language support #520 - Group Registration – Improved WPML support #535 - Improved Group Leader Interface – Module text updated and deprecated #497 - Restrict Page Access – Replace select2 library with tom-select #516 - Restrict Page Access – WordPress filter to exclude post types from page dropdown #514 --- ### 3.10 \[2022-11-22\] **New Module**: - Email Group Certificates #468 **Updated**: - Group Logo – Added new attributes to the shortcode #470 #484 - `group_id` (To limit to a specific group ID) - `limit` (To limit number of logos) - `only_user_groups` (To limit to groups the user is enrolled in \[*applies to Group Leaders and administrators*\]) - Single Page Courses – Add bailout condition for prerequisites course setting #476 - Simple Course Timer – Filter added to not run timer on courses optionally #474 - `apply_filters( 'uo_course_timer_enabled', true, $course_id );` **Internal**: - In-plugin notifications #478 --- ### 3.9.1 \[2022-09-19\] **Updated:** - Reset Progress Button – Now deletes any Resume Button data for the reset course #461 **Fixed:** - Icon fonts missing #465 --- ### 3.9 \[2022-09-15\] **Added:** - Group Expiration – Delete Expired Groups #435 **Updated:** - Course Dashboard – Updated template override instructions in files #451 - Course Dashboard – Added new value “free” for the attribute ‘show’ `[uo_dashboard show="free"]` #424 - Course Dashboard – Added new attribute `"not_enrolled"` with value “yes” (default: blank) - Course Dashboard – Now triggers custom JS event `(uncanny-toolkit-pro-learndash-statistics-contentchanged)` when the content of the LearnDash statistics box changes #421 - Enhanced LearnDash CSV Reports – Added assignment tracking #437 - Group Logo/List – Now displays group logos to group leaders #433 - Import Users – Now adds the user to the correct subsite on multisites #7 **Fixed:** - Import Users – Imported users now properly assigned group seats when Uncanny Groups is active and seat management is enabled #452 - Enhanced Course Grid – Resume button no longer displays title of course/lesson/topic in the grid #445 - Enhanced Course Grid – View More button does not load more courses when more than 1 category or LD category assigned #456 - Course Dashboard – LearnDash category and tag attributes are getting ignored when “open” or “free” course type is selected #450 - Enhanced Lessons/Topics Grid – Now displays date in format specified in WordPress settings #442 - Days until Course Expiry – PHP warning in uo\_expiration\_in shortcode #428 - Group Registration – Removed ‘gid’ to allow setting body CSS class #426 - Reset Progress Button – PHP notices/warning on reset #422 - Group Drip – Conflict with LearnDash – Elementor Pro integration #420 - Email Course/Quiz Certificate – User information in certificates created by Certificate Builder are now displayed reliably #417 --- ### 3.8.3 \[2022-06-22\] **Added:** - Simple Course Timer – Function to delete course timer records for individual users #402 **Updated:** - Group Registration – Now compatible with public group pages #391 - Improved PHP 8.1+ compatibility #302 **Fixed:** - Group Expiration – PHP Notice for empty condition #406 --- ### 3.8.2 \[2022-05-18\] **Fixed:** - Course Dashboard – Block displays ‘no’ when ‘No courses message’ is blank #399 - Group Expiration – Group expiry date returns empty #396 - Restrict Page Access – PHP Error fixed for > PHP 8.x+ sites #392 --- ### 3.8.1 \[2022-04-27\] **Added:** - Email Course Certificates and Email Quiz Certificates – New filter to optionally disable sending email to the user #383 - `uo_enable_mail_user_quiz_certificates` - `uo_enable_mail_user_course_certificates` - Course Dashboard: `no_courses_message` attribute added to shortcode and block #371 **Fixed:** - Days Until Course Expiry – Shortcodes now render more reliably #382 - Course and Quiz Certificates – Now renders LD Shortcodes with cron when certificate builder is used #377 - LearnDash Group Registration – Conflict resolved with Tin Canny Reports #375 - Group Registration – Malformed group signup URL when WPML ?lang parameter is present #373 - Single Page Courses – Improved course completion logic #369 --- ### 3.8 \[2022-03-30\] **New Module:** - Autocomplete Lessons and Topics on WPForms submission #187 **Added:** - Group Registration – Added filter `uo_group_signup_notification_type` to set `wp_new_user_notification` type #345 - Enhanced Course Grid – Now supports WordPress’s Reusable blocks #344 - Simple Course Timer – New Shortcodes #340 - `[uo_time_topic topic-id=""]` – Return time for the associated topic (and quiz, if there’s a quiz associated with the topic). - `[uo_time_lesson lesson-id=""]` – Return time spent in the lesson AND any associated topics and quizzes. - `[uo_time_quiz quiz-id=""]` – Return time spent in a quiz. - `[uo_time_total user-id=""]` – Return total time the user has spent across ALL courses on the site. - Group Expiration – Added `pre-text=""` attribute for all shortcodes #330 - Enhanced Learndash CSV Reports – Now supports CEU and Course Meta columns #300 **Fixed:** - Autocomplete Lessons & Topics on Quiz Results Page – Learn More link fixed #358 - Enhanced Lesson & Topics Grid – Now displays quizzes when using LD 3.0 template #364 - Autocomplete Lessons & Topics – Topic Timer setting now works reliably when module is active #356 - Course Dashboard – Now uses LearnDash Custom Labels #353 - Import Users – Improved translation support #351 - Import Users – Roles not applied to imported users in some situations #342 - Enhanced Course Grid – “Start course” button disappears in some situations #335 - Enhanced Lessons/Topics Grid – Lessons table no longer displayed in Single Page Courses if module is globally enabled #328 - Enhanced Lessons/Topics Grid – Quiz table now displayed on course pages when module enabled globally - Group Registration – No longer fails due to legacy Uncanny Groups seat management code #326 --- ### 3.7.12 \[2022-02-17\] **Updated:** - Autocomplete Lessons and Topics – New filter to override button link #296 - Import Users – Added several `do_actions` for external action, like adding user to a subsite #315 - Import Users – Email functionality updates to enable developers to build custom email workflows #292 - Lazy Load Navigation – Output now shows heading #298 **Fixed:** - Email Quiz Certificates – Emails not being sent on some server configurations #322 - Email Quiz Certificates – Last name variable now renders consistently #294 - Enhanced Course Grid – No longer resets course settings in “Preview changes” mode #306 - Days until LearnDash Course Expiry – PHP error – Incorrect return value for `ld_course_access_expires_on` filter #309 - LearnDash Group Expiration – – PHP error – Incorrect return value for `ld_course_access_expires_on` filter #309 - Drip Lessons by Group – Drip date appearing offset by 1 hour on some site configurations #305 - Resume Button – Button now appears consistently below course in Enhanced Course Grid #301 --- ### 3.7.11 \[2021-12-14\] **Added:** - Enhanced LearnDash CSV Reports: Added more usermeta columns #278 - Enhanced Course Grid – Added attribute `hide_title` to turn off course titles #258 - Enhanced Course Grid – Now supports multiple category slugs, separated by commas #235 - Enhanced Course Grid – `uo_course_after_short_description` action hook #276 - Enhanced Course Grid – `uo_course_before_short_description` action hook #275 - Enhanced Course Grid – `uo_course_before_course_title` action hook #274 - Enhanced Course Grid – `uo_course_after_course_title` action hook #273 - Enhanced Course Grid – `uo_course_after_featured_image` action hook #272 - Enhanced Course Grid – `uo_course_after_grid_ribbon_price` action hook #271 - Enhanced Course Grid – `uo_course_after_grid_ribbon_text` action hook #270 **Updated:** - Added categories for sorting/filtering to newer toolkit modules #247 - Import Users – No longer requires LearnDash #255 - Import Users – `toolkit_learndash_user_import_capability` filter now allows non-admin users to import users #239 **Fixed:** - PHP notices on PHP 8.0.x #283 - Duplicate Pages & Posts – Now properly clones courses when shared course steps are enabled on LearnDash 3.6+ #282 - LearnDash course expiration date overrides Toolkits Group Expiration Date #263 - Group Registration – PHP notices/warnings preventing submission on some sites #260 - Enhanced Lessons and Topics Grid – Filter by category/tags now works reliably with LearnDash 3.5+ #250 - Enhanced Lessons and Topics Grid – Updated deprecated LearnDash transient function to newer version #243 - Group Registration – Built-in registration form now displays submission errors in a more user-friendly way #246 - Group registration – Improved compatibility with WPML #223 - Email Course Certificates – Emails now support additional HTML tags #213 - Simple Course Timer – Additional sanitization of variables in performance mode #211 --- ### 3.7.10 \[2021-09-01\] **Added:** - Enhanced Course Grid – `uo_course_category_cats` filter to modify course categories #195 - Course dashboard: `uo_dashboard_user_courses` filter to modify user courses #182 **Fixed:** - Group Expiration – Shortcode compatibility with PHP strict standards improved #200 - Group Expiration – Added `group_id` attribute variation #200 - Course Dashboard – Manually completed quiz no longer shows as “failed” in some instances #194 - Duplicate Pages & Posts – Cloning course with “Shared Steps” enabled/disabled now duplicates contents reliably with newer versions of LearnDash #186 - Autocomplete Lessons and Topics on Gravity Form Submission – PHP notices #148 - Group Registration – PHP warnings #191 - Some modules updated to use LearnDash’s standard function args #36 --- ### 3.7.9 \[2021-08-20\] **Added:** - `uo_csv_report_column_value` filter to modify Enhanced CSV module value #175 - `uo_course_cert_img_path` filter to allow both url/path option #170 - Enhanced LearnDash CSV Reports – Added two additional usermeta fields #165 - Simple Course Timer – Added wrapper around the message that blocks quiz access to allow styling #162 **Fixed:** - Learner Transcript – CSS now loads if the shortcode is embedded inside other elements #152 - Simple Course Timer – Now consistently adds time columns to [Tin Canny](https://www.uncannyowl.com/downloads/tin-canny-reporting/) Course Report #178 - Autocomplete Lessons & Topics on Gravity Form Submission – Now reliably redirects users to next step on submission #166 - Enhanced Lesson/Topic Grid – Lesson Materials now appears on lesson page with LearnDash’s legacy template enabled #158 - Drip Lessons by Group – Drip date no longer displays “1970” in year field when no date has been assigned #154 --- ### 3.7.8 \[2021-06-09\] **Fixed:** - Enhanced lesson/topic grid – CSS issue when grids enabled globally --- ### 3.7.7 \[2021-06-08\] **Added:** - Reset Progress Button – Added redirect attribute to redirect to a different URL when clicked - Import Users – Added support for group\_leader column to assign users as group leaders on import **Updated:** - Group Logo/List – uo\_group\_leaders now outputs Group Leader email addresses as mailto links **Fixed:** - Drip Lessons by Group – Lesson available notifications now sent consistently (from LearnDash Notifications plugin) - Drip Lessons by Group – Time no longer shifts after save based on WordPress time zone - Group Expiration – Expiration emails are now sent when the group was created programmatically and not edited and saved - Group Registration – Gravity Form registration form now recognized when page is created with the block editor - Gutenberg blocks now load consistently when a block is embedded inside another block --- ### 3.7.6 \[2021-04-22\] **Fixed:** - Updated: Lazy Loading Course Navigation: Now respects Course Content visibility setting #115 - Updated: Duplicate Pages and Posts: Cloning courses retains course structure on newer versions of LearnDash (when Shared Course Steps is enabled) #112 - Fixed: Group Expiry: PHP Notice that was preventing emails from being saved #97 --- ### 3.7.5 \[2021-04-12\] **Fixed:** - Enhanced Lessons and Topics Grid – Added compatibility with LearnDash 3.4.0.4 #92 - Autocomplete Lessons and Topics on Quiz Results Page – Added compatibility with LearnDash 3.4.0.4 #25 - Autocomplete Lessons and Topics when Quiz is Graded – Added compatibility with LearnDash 3.4.0.4 #24 - Relative path causes fatal error on some servers #95 --- ### 3.7.4 \[2021-03-31\] **Updated:** - Additional string localizations #55 **Fixed:** - Added compatibility with LearnDash > 3.4 for various Toolkit modules #71, #72, #81 - Learner Transcript: Sorting on columns now works consistently #75 - Group Registration: Gravity Forms block is now detected on group page #54 - Course Timer: Fixed compatibility with Tin Canny #65 - Course Timer: Catch errors reliably when accessing iframe content #43 - Various PHP notices #67, #69, #79, #85 --- ### 3.7.3 \[2021-03-23\] **Updated:** - Email Course Certificates: Added ‘uo\_course\_completion\_add\_certificate\_attached’ filter to optionally remove “Your certificate is attached with this email” from course completion certificate email - Email Quiz Certificates: Added ‘uo\_quiz\_completion\_certificate\_email\_args’ filter to optionally return email params back to LearnDash quiz email filter **Fixed:** - Certificate Preview: Fixed type E\_ERROR when LearnDash Certificate Builder is not active --- ### 3.7.2 \[2021-03-19\] **Fixed:** - Simple Course Timer: JavaScript conflict with Tin Canny reports --- ### 3.7.1 \[2021-03-18\] **Added:** - Import Users: Added filter uo\_toolkit\_csv\_import\_map to remap column names - Import Users: Added filter uo\_csv\_overwrite\_existing\_roles to allow adding roles instead of replacing roles on import - Drip Lessons by Group: Added filter uo\_drip\_ignore\_learndash\_release\_date to ignore LearnDash drip settings when access is granted by Uncanny Drip Lessons by Group - Email certificates and Certificate preview: Compatibility with new LearnDash Certificate Builder plugin **Updated:** - Restrict Page Access: Group Leaders now have access to pages restricted to groups they are the leader of - Replaced deprecated function call leardash\_min\_assets with learndash\_min\_assets **Fixed:** - Drip Lessons by Group: JavaScript error preventing drip dates from being saved on some non-English sites - Group Login: PHP warnings/error - Group Logo: PHP warnings/error - Simple Course Timer: When the latest version of Tin Canny Reporting for LearnDash is also installed, completion columns may appear blank - Autocomplete Lessons and Topics: PHP error: Object of class WP\_Post could not be converted to string on some sites --- ### 3.7 \[2021-02-12\] **Added:** - Course Dashboard: Quizzes are now displayed even if they have not yet been attempted - Enhanced LearnDash CSV Reports: Ability to add custom user meta columns to the reports - Learner Transcript: New certificate column with link to associated certificate (if any) - Learner Transcript: Display of custom credits added via the [Uncanny Continuing Education Credits plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) - Group Expiration: New shortcode to show expiry date in a countdown format ``` [uo_group_expiration_in] ``` - Drip Lessons by Group: New notification type “A scheduled lesson is available to user with Uncanny Drip by Group” **Updated:** - Group Forums with bbPress: Moderators are now able to see all group forums on the front end - Course Dashboard: Multiple results for the same quiz are now sorted with the most recent attempts listed first - Course & Quiz certificates: Additional parameters for save\_path action hooks - Drip Lessons by Group: Compatibility with LearnDash Notifications v1.5+ **Fixed:** - Drip Lessons by Group: LearnDash notifications are now set only for the selected lessons - Single Page Course: Can now be created by all users with the edit\_page capability - Course Dashboard: View link on essay submissions now works more consistently - Group Login Redirect: Icon path now relative instead of absolute - Group Logo/List: PHP Notice: Undefined variable: custom\_labels --- ### 3.6.2 \[2021-01-08\] **Fixed:** - Course Dashboard – No longer showing only the last lesson of each course in some situations - Front End Login – Fixed incorrect textdomain on reset password link text - Autocomplete Lessons and Topics – Done button in last topic no longer completes the lesson and advances to the next lesson if there’s an incomplete lesson-level quiz --- ### 3.6.3 \[2021-01-19\] **Fixed:** - Group Logo/List – No longer displays a comma between the group leader’s first and last name - Autocomplete Lessons and Topics – Now autocompletes the associated lesson when all associated topics are completed - Restrict Page Access – Admins are now exempt from page access restrictions - Restrict Page Access – PHP notices if LearnDash is not active - Enhanced Course Grid – Start Course button now uses LearnDash label for “course” --- ### 3.6.2 \[2021-01-08\] **Fixed:** - Course Dashboard – No longer showing only the last lesson of each course in some situations - Front End Login – Fixed incorrect textdomain on reset password link text - Autocomplete Lessons and Topics – Done button in last topic no longer completes the lesson and advances to the next lesson if there’s an incomplete lesson-level quiz --- ### 3.6.1 \[2021-01-06\] **Fixed:** - Single Page Courses – The LearnDash status bar is no longer hidden on pages of Single Page Courses - Single Page Courses – Page builders (including Elementor) no longer reset the Single Page Course checkbox when posts are saved inside builders - Learner Transcript – The Accent UI Color setting includes a default colour so the button doesn’t appear hidden on some sites --- ### 3.6 \[2021-01-04\] **New Module:** - Single Page Course – Create courses that consist of a single course page with no lessons or topics. Learn More **Added:** - Course Dashboard – Support for course sections - Certificate preview, Email Course/Quiz Certificates – Added compatibility with Certificate Tracker for LearnDash **Fixed:** - Autocomplete Lessons and Topics on Gravity Form submission – Users no longer redirected to blank screen on the last topic of a lesson or last lesson of a course - Simple Course Timer – PHP notice – Trying to get property ‘post\_type’ of non-object - Import Users – Fixed conflict with Easy Digital Downloads and KB Support plugins - Group Forums with bbPress – PHP warning – Warning: call\_user\_func\_array() expects parameter 1 to be a valid callback --- ### 3.5.9 \[2020-11-11\] **Added:** - Learner Transcript – Setting to show courses the user is no longer enrolled in **Updated:** - Drip Lessons by Group – Improved compatibility with LearnDash Notifications - Enhanced Lessons/Topics Grid – Updated LearnDash template base - Autocomplete Lessons and Topics on Gravity Form Submission – Improved AJAX support - Quiz Certificate – Added filter uo\_quiz\_completion\_add\_certificate\_attached to let user skip Your certificate is attached with this email line at the end of email. **Fixed:** - Drip Lessons by Group – PHP Warning: Trying to get property ‘post type’ of non-object in uncanny-drip-lessons-by-group.php - Group Registration – Gravity Forms shortcode not detected on some sites - Autocomplete Lessons and Topics – Do not autocomplete lesson when all topics are marked completed if there’s a lesson-level quiz as last step - Simple Course timer – Now listens for activity inside iframes that are created on page load --- ### 3.5.8 \[2020-10-08\] - Updated: Improved reliability of detection of the Uncanny Continuing Education Credits plugin - Updated: Added lang query string support to Certificate Preview module for WPML compatibility - Fixed: Autocomplete Lessons and Topics: Automatic completion of lessons/topics with a timer set is more consistent - Fixed: Autocomplete Lessons and Topics: No longer autocompletes lessons with a future drip or group drip date set - Fixed: Autocomplete Lessons and Topics: Now consistently marks the correct lesson/topic complete when the same lesson/topic appears in multiple courses - Fixed: Autocomplete Lessons and Topics: Various PHP notices when debug is enabled - Fixed: Import Users: Selected group now displayed on confirmation screen on sites with > 100 groups - Fixed: Course Dashboard: Drip dates no longer appearing with HTML code --- ### 3.5.7 \[2020-09-30\] - Updated: Autocomplete Lessons and Topics – Refactored for improved readability - Updated: Autocomplete Lessons and Topics – No longer autocompletes on page load if a lesson/topic timer is set; lesson/topic is autocompleted after the timer elapses - Updated: Import Users – Changed course and group selectors to select2 pillboxes; now supports > 100 courses/groups - Updated: Restrict Page Access – Changed redirect priority from 20 to 0 - Fixed: Import Users – When updating existing users an empty or missing display\_name column no longer replaces existing display name with username - Fixed: Import Users – Reset password token now renders a reset password link - Fixed: Simple Course Timer – Now detects activity within iFrames, including in Tin Canny content (Storyline, Rise, iSpring, Captivate, etc.) - Fixed: Certificate Preview – Fatal error when previewing a certificate containing certain shortcodes in newer versions of LearnDash - Fixed: Group Drip – Drip dates not appearing on lessons when lesson list is paginated via AJAX - Fixed: Autocomplete Lessons and Topics – No longer autocompletes on page load if a supported Gravity Form is on the page and the Autocomplete Lessons and Topics on Gravity Forms Submission module is active - Fixed: Autocomplete Lessons and Topics – No longer autocompletes when editing a page using Beaver Builder --- ### 3.5.6 \[2020-08-19\] - Fixed: Email Course, Quiz and Preview Certificate modules – Removed merge conflicts --- ### 3.5.5 \[2020-08-19\] - Updated: Added permission\_callback to all Rest API calls for WordPress v5.5 compatibility - Updated: Changed \_\_(), \_e(), \_x() to attr\_esc\_\_(), attr\_esc\_e(), attr\_esc\_x() - Fixed: Simple Course Timer – Performance mode now compatible with more site configurations (incl. multisite) - Fixed: Duplicate Pages and Posts – Fixed SQL error when duplicating quizzes - Fixed: Autocomplete Lessons and Topics when Quiz is Graded – Now working consistently for all user roles - Fixed: $from\_email typo in Course Completion Certificate --- ### 3.5.4 \[2020-07-29\] - Added: Option to dismiss “Try Automator” menu entry - Updated: Reset Progress Button – Calling reset function directly on older PHP versions no longer throws a fatal error - Fixed: Course Dashboard – Order attribute no longer throwing error on some sites - Fixed: Enhanced Course Grid – Start Course button no longer appearing for courses in which the user is not enrolled - Fixed: Group Registration – Hide native LearnDash content option no longer hides custom content or Gravity Form/Theme My Login registration forms --- ### 3.5.3 \[2020-07-21\] - Added: Group Logo/List – New shortcode \[uo\_group\_leaders\] outputs a list of group leader names and email addresses for the current user - Updated: Email Course/Quiz Certificates – Added Sender Name and Sender Email fields to module settings - Updated: Group Registration – Added setting to hide native LearnDash group info in LearnDash 3.2.2 and later - Updated: Import Users – Empty cells in the learndash\_courses or learndash\_groups columns no longer throw errors - Updated: Group Registration – Added sanitization on text fields - Updated: Email Course/Quiz Certificates, Certificate Preview – Supports updated certificate rendering in LearnDash 3.2.2 and later; if you are on LearnDash 3.2.0 or 3.2.1, please update to 3.2.2 - Fixed: Restrict Page Access – Settings now save on media post type - Fixed: Import Users – Now uses email address as username when user\_login column is left empty - Fixed: Autocomplete Lessons and Topics – PHP notice: DateTime::\_\_construct - Fixed: Group Logo/List – PHP Fatal error Cannot use object of type stdClass as array --- ### 3.5.2 \[2020-07-03\] - Added: Autocomplete Lessons and Topics on Gravity Form Submission – Filter to prevent redirection on submit (uo\_gf\_maybe\_autocomplete\_redirect) - Updated: Email Course/Quiz Certificates – Updated to improve consistency of emailed certificates in LD 3.2.0. Submitted pull (change) request to LearnDash to further improve support in LD 3.2.1 - Fixed: Enhanced Course Grid – Now properly supports 1, 2, 3, 4, 5 columns - Fixed: Enhanced Course Grid – Removed extraneous string (“;) from previous refactor - Fixed: Restrict Page Access – Restrictions no longer apply to archive pages when the previously viewed page was restricte --- ### 3.5.1 \[2020-06-22\] - Updated: Enhanced Course Grid – Improved support for multiple grids on a page - Updated: Restrict Page Access – Additional content hidden on LearnDash post types (course, lesson, topic, quiz) for users that are denied access - Updated: Email Quiz Certificates – Added option “Use Cron to send certificate” if shortcodes not rendering as expected - Updated: Replaced learndash\_post\_args\_groups with register\_post\_type\_args for upcoming LearnDash 3.2 compatibility - Fixed: Import Users – Existing users are no longer skipped if only the email column is included in the uploaded CSV file - Fixed: Duplicate Pages and Posts – When duplicating quiz questions the answer field is now correctly duplicated - Fixed: Autocomplete Lessons and Topics – PHP Error: Object of class WP\_Post could not be converted to string - Fixed: Autocomplete Lessons and Topics – Lessons and topics added after a user has completed the course are now autocompleted --- ### 3.5 - New Module: Enhanced LearnDash CSV Reports – Optionally add columns to the native LearnDash .csv reports including: Username, First Name, Last Name, Nickname, Display Name, Role(s), Group(s), Language, Website, Biographical info. Learn more - Added: Enhanced Course/Lesson/Topic grid – Support for 1 column layouts - Added: Duplicate Pages and Posts – Ability to select the post types that can be duplicated; now defaults to supported types only - Updated: Duplicate Pages and Posts – Improved compatibility with Elementor - Updated: Autocomplete Lessons and Topics – Done button no longer displays in the last topic of a lesson or last lesson of a course after the course is completed - Updated: Simple Course Timer – Improved time tracking in Internet Explorer 11 - Updated: Group Registration – Now creates users with default new user role set in WordPress settings instead of subscriber role - Updated: Drip Lessons by Group – Improved lesson appearance when using LearnDash 3.0 template - Updated: Improved translation support across multiple modules - Updated: Import Users – Added support for Mac/Linux line breaks (CR, LF) - Updated: Import Users – Added support for apostrophes in email addresses - Updated: Plugin name changed from Uncanny LearnDash Toolkit Pro to Uncanny Toolkit Pro for LearnDash - Fixed: Import Users – Commas enclosed in double quotes are now ignored - Fixed: Drip Lessons by Group – Improved compatibility with LearnDash native lesson drip - Fixed: Drip Lessons by Group – Force page reload on Save date button due to Custom Meta metabox resaving old dates on lesson update - Fixed: Drip Lessons by Group – Topics within a dripped lesson were still accessible via direct links - Fixed: Autocomplete Lessons and Topics – Topics within dripped lessons are no longer autocompleted when accessed via direct link - Fixed: Enhanced Course Grid – Localization of “Start Course” string was using incorrect function - Fixed: Course Dashboard – show=”all” attribute now shows all courses in the system to logged in users - Fixed: Course Dashboard – PHP warning key\_exists() expects parameter 2 to be array --- ### 3.4.4 - Fixed: Course Dashboard – Course IDs being output after course titles --- ### 3.4.3 - Added: Course Dashboard – Support for Internet Explorer 11 - Added: Group Expiration – Option to send group expiration email to group leaders only, instead of all group members - Added: Enhanced Course Grid – Setting for custom message displayed to users when no courses match the grid criteria - Added: Enhanced Course Grid – Filters for ribbon text: uo\_course\_grid\_ribbon\_text, uo\_course\_grid\_ribbon\_price - Updated: Course Dashboard – Results of topic-level quizzes now displayed - Updated: Autocomplete Lessons and Topics – Lessons/Topics are no longer autocompleted if the lesson/topic contains an assignment - Updated: Autocomplete Lessons and Topics on Quiz Results Page – Completing a course-level quiz will now mark the course complete on the quiz results page - Fixed: Certificate Preview – courseinfo shortcode now renders date formats correctly - Fixed: Certificate Preview – PHP Notices – Undefined variable - Fixed: Simple Course Timer – Typo in error message “You must be logged in.” - Fixed: Gutenberg blocks were unavailable unless at least one module from the Uncanny Toolkit (free version) that contained a Gutenberg block was active - Fixed: Course Dashboard/Lazy Loading Course Navigation – jQuery issue with some minification plugins --- ### 3.4.2 - Updated: Enhanced Course Grid – Now renders HTML in Short Description field (Note: the LearnDash Course Grid plugin removes HTML from this field and should be disabled if using HTML with the Uncanny Course Grid) - Updated: Drip Lessons by Group – Implemented via filter; no longer uses a template file override - Updated: Import Users – Blank rows in the uploaded .csv file are now ignored - Fixed: Drip Lessons by Group – Drip times were shifting by one hour across Daylight Savings Time changes - Fixed: Certificate Preview: PHP fatal error when including files in tcpdf/config/lang folder on some versions of LearnDash - Fixed: Learner Transcript – Dates are now displayed in the WordPress site language - Fixed: Learner Transcript – Completion dates are now displayed in the WordPress time zone - Fixed: Course Timer – PHP notice: “Trying to get property ID of non-object” on non-post pages (e.g. archives) - Fixed: Autocomplete Lessons and Topics when Gravity Form is Submitted – Mark Complete button no longer appears when Autocomplete Lessons and Topics is enabled - Fixed: Email Course Certificates – PHP notices due to uninitialized variables - Fixed: Enhanced Course Grid – Courses no longer disappear from grid when completed when not using attribute limit=”all” --- ### 3.4.1 - Fixed – Restrict Page Access – select2 JavaScript library conflict with LearnDash ProPanel - Fixed – Enhanced Course Grid – Courses with a non-numeric value in the course price field were showing as “Closed” --- ### 3.4 - New Module: Group Forums with bbPress – Create group-specific discussion forums with bbPress. Only group members will have access to group-specific forums. Includes a handy widget. Learn more - New Module: Restrict Page Access – Restrict access to any page by role, logged in/out status, course enrollment or group membership. Display a message or automatically redirect users that are denied access - Added: Duplicate Pages and Posts – Support for renamed quiz tables - Added: Reset Button – Support for renamed quiz tables - Updated: Import Users – UI text is now translatable - Updated: EDD updater class - Fixed: Reset Progress Button – Some users losing access to courses when progress reset - Fixed: Enhanced Lesson/Topic Grid – PHP warning count(): Parameter must be an array or object that implements Countable - Fixed: Simple Course Timer – PHP notice on 404 pages Trying to get property of non-object - Fixed: Simple Course Timer – Idle dialog button text wrapping with longer strings - Fixed: Enhanced Course Grid – Closed courses showed as “Free” on older versions of LearnDash - Fixed: Enhanced Course Grid – Some course type strings were not translatable - Fixed: Group Registration – PHP notice Undefined index: gid --- ### 3.3.2 - Added: Course Dashboard – Now shows available CEUs for each course if set with the Uncanny Continuing Education Credits plugin - Fixed: Learner Transcript – HTML bugs --- ### 3.3.1 - Added: readme.txt file - Added: Enhanced Course Grid – Filters for developers (uo\_courses\_shortcode\_args, uo\_courses\_shortcode\_get\_posts) - Updated: Group Drip – Completely rewritten and updated user interface to make it much easier to view and manage Group Drip dates - Updated: Import Users – Username is now optional in uploaded .csv files, making it easier to mass update users - Updated: Import Users – Whitespace before/after email addresses is now ignored instead of throwing an error - Updated: Autocomplete Lessons and Topics when Quiz is Graded – Now supports multiple essays per quiz - Updated: Simple Course Timer – Label on Disable Performance Mode checkbox reworded for clarity - Updated: Autocomplete Lessons and Topics on Gravity Form Submission – Next Lesson/Topic button is no longer visible unless Lesson/Topic is completed - Fixed: Import Users – Link to sample .csv file - Fixed: Enhanced Lesson/Topic Grid – Now properly handles sample lessons - Fixed: Simple Course Timer – Conflict with randomize quiz questions setting - Fixed: Simple Course Timer – Cookie hash issue causing time tracking issues on some site configurations - Fixed: Autocomplete Lessons and Topics on Gravity Form Submission – PHP Notice: Undefined variable - Fixed: .pot file errors preventing Loco Translate and other plugins from properly translating strings - Fixed: Reference to empty CSS file in /wp-admin --- ### 3.3 - Added: Support for LearnDash 3.1 - Added: Group Expiration – Setting to specify the number of days before expiration to send reminder email - Added: Lesson/Topic Grid – Support for sections in LearnDash 3.x - Added: Email Quiz Certificates – Filters to change save path (uo\_quiz\_certificate\_save\_path, uo\_quiz\_certificate\_http\_url), change file name (uo\_quiz\_completion\_certificate\_filename) and additional advanced filters ([see KB](https://www.uncannyowl.com/knowledge-base/send-quiz-certificates-by-email/#Overriding_the_certificate_save_location)) - Updated: Lesson/Topic Grid – Improved compatibility with Astra and GeneratePress themes - Updated: Group Expiration – Expiry date displayed to group members only, even when group\_id attribute specified - Updated: Duplicate Pages and Posts – Improved compatibility with Uncanny LearnDash Groups (cloning a group now retains group leaders and seats) - Updated: Group Registration – Removed check for “Anyone can register” setting - Updated: Group Registration – Added redirect exclusion for Gravity registration forms to allow Gravity Forms post-submission filters/actions to execute - Updated: Simple Course Timer – Removed filters causing long Quiz save times on some systems - Updated: Simple Course Timer – Improved CSS in “Still working?” dialog - Updated: Simple Course Timer – Performance mode is now the default setting - Updated: Improved translation support - Updated: Group Registration – Registration form now ignores “Anyone can register” option in WordPress settings - Fixed: Group Registration – Gravity Forms integration preventing Gravity Forms’ post-registration hooks from running - Fixed: Simple Course Timer – Time columns restored to front-end reports in Tin Canny LearnDash Reporting plugin - Fixed: uncanny-learndash-toolkit textdomain references updated to uncanny-pro-toolkit - Fixed: Autocomplete Lesson/Topic when Gravity Form is submitted – Users not automatically advanced to the next topic/lesson - Fixed: Autocomplete Lesson/Topic when Gravity Form is submitted – 500 error on WordPress < 5.0 - Fixed: Autocomplete Lessons and Topics – Done button not showing up in last topic of lesson when LearnDash 3.0 template is selected - Fixed: Autocomplete Lessons and Topics – Topic-level override of Global Setting not working - Fixed: Autocomplete Lessons and Topics – Default setting on new topics and lessons was *Disabled* instead of *Use Global Setting* - Fixed: Course Dashboard – user\_id attribute ignored for \[uo\_dashboard\] in legacy mode, defaulted to current\_user - Fixed: Import LearnDash Users – Progress bar image URL on WordPress subfolder installs - Fixed: Autocomplete Lesson/Topic when Quiz is Graded – Added support for shared course steps - Fixed: Enhanced Course Grid – Issue with completed courses showing as in-progress on sites that have been translated - Fixed: Course Dashboard – Added additional quiz completion checks - Fixed: Improved Group Leader Interface – Group Leaders no longer trigger “Added to group” notifications (in the LearnDash Notifications plugin) on each login - Fixed: Error in .pot file that prevented translation into some languages --- ### 3.2.9 - Added: Group Expiration – New shortcode uo\_group\_expiration\_date that displays the current user’s group expiration date. Learn more - Added: Reset Progress Button – New attribute reset\_tincanny=”yes|no” enables the reset of Tin Canny data for modules in the course being reset. Note: Due to technical constraints, bookmark (resume) data for the modules is not reset. - Updated: Simple Course Timer – Removed “beta” label from performance mode - Updated: Simple Course Timer – Changed console.table to console.log for improved IE11 support when debugging is enabled - Updated: Enhanced Lesson/Topic Grid – When the grid is displayed, the Expand All button for the native LearnDash lesson/topic list is now hidden - Updated: Course Dashboard – Improved performance of Expand All/Collapse All - Updated: Import Users – Empty columns no longer required to use course and group enrollment options - Updated: Autocomplete Lessons and Topics – Next Lesson link now appears in autocompleted lessons/topics when using the LearnDash 3.0 template --- ### 3.2.8 - Fixed: Drip Lessons by Group – Calendar icon was sometimes displayed next to available lessons on course page - Fixed: Drip Lessons by Group – Some users seeing incorrect drip dates for their group on course page --- ### 3.2.7 - Fixed: Issue with “All Other Users” drip date not allowing access to lesson content for users not in groups with drip dates set --- ### 3.2.6 - Added: Group Registration and [Uncanny LearnDash Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) integration – When Uncanny LearnDash Groups is installed, users that register through a group’s unique registration URL are automatically assigned a seat in that group. With this module, distribution of registration keys is no longer required for self-registration. [Details](https://www.uncannyowl.com/knowledge-base/group-sign-up/#Integration_with_Uncanny_LearnDash_Groups) - Added: Import Users and [Uncanny LearnDash Groups](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) integration – When Uncanny LearnDash Groups is installed, users imported to a group are now assigned seats in the group. - Added: Group Drip and LearnDash Notifications integration – Users in groups can now receive “A scheduled lesson is available to user” notifications generated by the LearnDash Notifications plugin. [Details](https://www.uncannyowl.com/knowledge-base/drip-lessons-by-ldgroup/#Integration_with_LearnDash_Notifications_Plugin) - Fixed: Email Course/Quiz Certificates – Line breaks were being removed from email content - Fixed: Autocomplete Lessons and Topics – Override setting was not available on edit topic page - Fixed: Lazy Loading Course Navigation – When in a quiz, the course hierarchy did not expand - Fixed: Clone Pages and Posts – Cloning a page with Beaver Builder active caused a 500 error - Fixed: Clone Pages and Posts – Cloned quiz questions had meta values linked to the original question --- ### 3.2.5 - Updated: Sample Lesson Label – Now identified as a legacy module - Updated: Autocomplete Lesson/Topic on Gravity Form Submission – Mark Complete button now hidden in LearnDash 3.0 “Focus Mode” - Fixed: Drip Lessons by Group – CSS was not being loaded on lesson pages in LearnDash 3.0 theme - Fixed: Enhanced Course Grid – Fatal Error when viewing the grid on some sites - Fixed: Removed errant references to Uncanny Automator plugin --- ### 3.2.4 - Updated: Simple Course Timer – Improved translation support when used with Tin Canny LearnDash Reporting - Updated: Lazy Loading Course Navigation – Added nonce verification to REST API call - Fixed: Lazy Loading Course Navigation not loading properly on some lesson and topic pages - Fixed: Enhanced Lesson/Topic Grid – Quizzes are now displayed below lesson/topic grid when using LD 3.0 theme - Fixed: Import Users – Link to sample .csv file fixed - Fixed: Course Dashboard – 3.0 template incorrectly associating shared lessons/topics - Fixed: Course Dashboard – Category dropdown reported maximum 5 courses per category --- ### 3.2.3 - Updated: Course Dashboard – Automatically switch to 3.0 theme when LearnDash 3.0 on LearnDash 3.0 theme is detected --- ### 3.2.2 - Fixed: Drip Lessons by Group – Drip dates were not being displayed in group dropdown - Fixed: Course Dashboard – CSS for Legacy theme not loading if Legacy theme not explicitly selected in module settings --- ### 3.2.1 - Fixed: Enhanced Lessons/Topics Grid – Removed debug output --- ### 3.2 IMPORTANT: If you have overridden the Course Dashboard template using a filter, note that the template file name and location has changed; you will need to update your filter function. - Added: Compatibility with LearnDash 3.0 - Added: Course Dashboard – Ability to switch themes - Added: New Course Dashboard theme “3.0”. Modern and responsive HTML and CSS code. Fully independent of LearnDash CSS, the new theme will greatly reduce WordPress theme conflicts, especially when the theme includes LearnDash-specific styling - Added: New Module: Lazy Loading Course Navigation – Loads the LearnDash Course Navigation widget via AJAX (after initial page load) to speed up page load times on sites with many courses, lessons, topics and/or quizzes - Added: New Module: Preview Certificate – Enables previewing of LearnDash certificates right from the Edit Certificate page - Added: Enhanced Lesson/Topic Grid – Added category and tag attributes - Updated: Email Course Certificates – %Group Name% token now works in email subject field - Updated: Drip Lessons by Group – Drip date/time now shown beside “All other users” in group selection dropdown (if set) - Updated: Enhanced Course Grid – Added CSS to prevent conflict with Social Learner theme - Fixed: Textdomain inconsistencies – replaced a few instances of uncanny-toolkit-pro with uncanny-pro-toolkit - Fixed: Drip Lessons by Group – Drip access not working when user is enrolled directly in a course with dripped lessons and is also a member of a group that does not have access to the course - Fixed: Autocomplete Lessons & Topics on Gravity Form Submission: Submitting the form now automatically advances the user to the next lesson/topic - Fixed: Drip Lessons by Group – Fixed PHP notice in uncanny-drip-lessons-by-group.php - Fixed: Gutenberg dependency reported by Query Monitor --- ### 3.1 - Added: Automatic template overrides! Override any file in the /src/templates folder by copying it into /uncanny-toolkit/ in your child theme (Requires Uncanny LearnDash Toolkit (free) version 3.1) - Updated: Improved Group Leader Interface: Added settings for Group Leader login redirect - Updated: Email Quiz Certificates: Added tokens for user’s first and last name to admin/group leader email - Updated: Enhanced Lesson/Topic Grid: Moved grid element HTML to template file - Updated: Group Registration: Moved registration form HTML to template file - Updated: Group Registration: Added confirmation message when a user clicks the Join Group button - Updated: Group Registration: Improved translation support - Updated: Course Dashboard: Added localization support for drip dates - Updated: Email Quiz Certificates: Added localization support for quiz completion date - Fixed: Simple Course Timer: Course Completion Time and Course Total Time columns now added properly to course and user reports (requires Tin Canny LearnDash Reporting plugin) --- ### 3.0.4 - Added: Email Course Certificates – Option to send email via cron – may resolve issues on very large sites - Updated: Simple Course Timer – Increased z-index of idle alert dialog - Updated: Group Registration – CSS tweaked for improved theme compatibility - Updated: Course Dashboard / Enhanced Course Grid – Empty categories are no longer listed in category selector dropdowns - Updated: Days until Course Expiry – Sentence is now fully translatable in module settings - Updated: Days until Course Expiry – Removed deprecated “Pre-text” attribute from Gutenberg block - Fixed: Days until Course Expiry – When one day is remaining, the correct (singular) text is now displayed --- ### 3.0.3 - Added: Simple Course Timer – Adds course time data to Tin Canny reports when Tin Canny LearnDash Reporting plugin is installed - Added: Email Course Certificates – Filters for saving/modifying data before pdf generation - Updated: Email Course Certificates – Added 20 second delay to email generation to ensure LearnDash completes course completion process - Fixed: Email Quiz Certificates – PHP class name for module --- ### 3.0.2 - Added: Learner Transcript: Option to display only completed courses - Added: Learner Transcript: Filter to add total rows to custom columns - Added: Enhanced Course Grid: Filter on grid element buttons - Added: Show course Start button attribute in Gutenburg block - Updated: Enhanced Course Grid: Improved WPML support - Fixed: Log In Redirect not working with Group Login Redirect module enabled - Fixed: Done button not appearing in last topic of lessons --- ### 3.0.1 - Added: Group Login Redirect – Shortcodes to output group login link and URLs (\[uo\_group\_login\_redirect\_url\] and \[uo\_group\_login\_redirect\_link\]) - Updated: Learner Transcript – Improved performance on sites with many courses - Fixed: Import Users – display\_name column now correctly populates users’ display names - Fixed: Enhanced Course Grid – Added additional grid container to fix width issues on some sites - Fixed: Learner Transcript – Restored integration with CEU plugin and added module setting to toggle column on/off --- ### 3.0 - This release features a completely overhauled Learner Transcript module, including: - A new modern, clean, responsive and mobile-friendly design - A customizable header including a logo, heading and organization name - Ability to hide or show columns and specify a sort order for courses - A customizable footer including a logo and footer text - Improved printing support - Added: New module: Autocomplete Lesson/Topic when Quiz is Graded - Added: New module: Group Login Redirect - Added: Support page for submitting a ticket directly from your site when a valid license key is detected - Added: Simple Course Timer – Setting to toggle debug info on/off - Added: Basic Gutenberg block support - Added: Course Dashboard – Ability to display a Category or Course Category dropdown menu filter - Added: Filter to override wp\_mail\_content\_type for email certificate pdf modules (uo\_apply\_wp\_mail\_content\_type) - Updated: Module names changed for consistency: - Drip Lessons by LearnDash Group > Drip Lessons by Group - LearnDash Course Dashboard > Course Dashboard - LearnDash Group Expiration > Group Expiration - LearnDash Group Logo/List > Group Logo/List - LearnDash Group Registration > Group Registration - Import LearnDash Users > Import Users - LearnDash Reset Button > Reset Button - LearnDash Table Colors > Lesson/Topic/Quiz Table Colors - Updated: Reset Button – A course\_id attribute is no longer necessary if the shortcode is placed on a course page - Updated: Duplicate Pages and Posts – Duplicating a quiz in LearnDash 2.6+ has two modes depending on whether Shared Quiz Questions is enabled ([see KB for details](https://www.uncannyowl.com/knowledge-base/duplicate-pages-posts/)) - Updated: License activation page design - Updated: Autocomplete Lessons and Topics, Learner Transcript and Autocomplete Lessons and Topics on Quiz Results Page modules now use LearnDash API functions - Updated: Email Quiz Certificates – Subject and Body field labels in settings to make it clearer they apply to emails sent to the Administrator/Group Leader only - Updated: Course Dashboard – CSS no longer loads when the shortcode/block is not on the page - Fixed: Enhanced Course Grid – Text no longer wraps around the grid on some themes - Fixed: Enhanced Course Grid – link\_to\_course attribute now works for all course types - Fixed: Lesson/Topic Grid – Enabling the grid on a page no longer forces the “Course Materials” heading to be visible - Fixed: Reset Button – Fatal error on PHP 7+ when module was activated - Fixed: Duplicate Pages and Posts – Error when cloning posts on LD 2.6+ - Fixed: “Import Users” menu link did not appear on some sites - Fixed: Course Dashboard – “Registered Courses” was not showing “Courses” - Fixed: Drip Lessons by LearnDash Group – Date is no longer shifted and drip icon (calendar) is no longer affected when module is enabled - Fixed: Autocomplete Lessons and Topics – Dripped lessons could be completed before they were dripped if the Drip Lessons by Group module was not enabled --- ### 2.5.1 - Fixed: Autocomplete Lessons and Topics – Save error on lessons and topics when Gutenberg is enabled - Fixed: Autocomplete Lessons and Topics – Done button redirect now follows LearnDash logic - Fixed: Autocomplete Lessons and Topics – Done button now shows up if there’s only one topic in a lesson - Fixed: Autocomplete Lessons and Topics – Done button is no longer clickable when Video Progression is enabled --- ### 2.5 - Added: New Module – Course Progress Reset button – Give users a button that resets their progress in a course. Also provides a PHP function to reset course progress for a user - Added: Import LearnDash Users – Ability to set users’ display name in imported spreadsheet - Added: Enhanced Course Grid – Optional Start Course and Resume buttons with the attributes start\_course\_button=”show|hide”, resume\_course\_button=”show|hide” (Resume button module must be active) - Added: Enhanced Course Grid – Optional category/course category filters with the attributes categoryselector=”show|hide”, course\_categoryselector=”show|hide” - Updated: Enhanced Course Grid – HTML output moved to template file - Fixed: Duplicate quiz links in Course Dashboard module --- ### 2.4.2 - Added: New attribute to the Course Dashboard shortcode: expand\_by\_default=”yes|no” to show the dashboard expanded by default on load - Updated: “Your certificate is attached with this email” text in email certificate modules is now translatable - Updated: Improved time zone support across all modules - Fixed: Fatal error in email course certificates module - Fixed: Quiz associations in the Course Dashboard module when Shared Course Steps is enabled - Fixed: Enhanced Lessons/Topics Grid now behaves as expected when “Hide Course Materials Table” is checked in course settings --- ### 2.4.1 - Updated: Course Status label no longer displays on Enhanced Course Grid if hide\_progress=”yes” - Fixed: Autocomplete Lessons & Topics on Gravity Form Submission caused a 500 error when using an older version of Gravity Forms --- ### 2.4 - Added: hide\_progress=”yes|no” attribute in Enhanced Course Grid module to enabling hiding the course progress bar to reduce overhead and speed up grid load times - Added: Option to ignore previous entries in Autocomplete Lessons and Topics on Gravity Forms Submission module - Updated: Learner Transcript module now shows all courses that the user has recorded progress for, whether or not they are current enrolled - Updated: Improved multisite compatibility of Import LearnDash Users module - Updated: Improved code accessibility of Enhanced Course Grid - Updated: \[uo\_group\_organization\] shortcode now accepts group\_id=”##” attribute - Fixed: Group Drip times saved incorrectly in some time zones - Fixed: lesson\_id attribute now works in Enhanced Lesson/Topic Grid shortcode - Fixed: Email Course Certificate module sometimes sent two emails on course completion - Fixed: Timestamp in emailed certificate sometimes offset by several hours - Fixed: Typo on Import LearnDash Users interface - Fixed: Template override instructions for Course Dashboard module --- ### 2.3.1 - Fixed: Autocomplete Lessons & Topics: Done button no longer shows up in all lessons. Done button now shows up only when there is no obvious user action to take, e.g. in the last topic of a lesson and the last lesson of a course (provided there are no topics or quizzes attached to that lesson) --- ### 2.3 - Added: .po file now included for translation - Added: do\_action “uo\_course\_completion\_time” in Course completion certificate that passes completion time - Added: do\_action “uo\_quiz\_completion\_time” in Quiz completion certificate that passes completion time - Added: Additional string localizations - Updated: Send Course Certificates by Email and Send Quiz Certificates by Email now support rich text formatting - Updated: Send Course Certificates by Email now supports sending different emails to the user and Group Leader/Site Admin - Fixed: %Group Name% variable now populates correctly in Send Course Certificates by Email - Fixed: “Done” button in “Autocomplete Lessons and Topics” module works more consistently - Fixed: License key could not be deactivated on some sites - Fixed: Fatal error for Course Completion Certificate module when assumed array is declared as a string - Fixed: TCPDF Image error in course completion certificate - Fixed: Undefined variable notices in Lesson/Topic Grid when course contains no lessons --- ### 2.2 - Updated: Simple Course Timer with local data validation to prevent timer loop - Updated: Confirmation message on group registration page after the registration form is submitted and the user is logged in changed from: “Congratulations! You are now registered on this site. You will receive an email shortly with login details.” to: “Congratulations! You are now registered on this site.” - Updated: Improved time zone handling of group drip dates/times - Fixed: Sample label no longer appears on quizzes in sample lessons - Fixed: Issue where UNIX timestamps were output along with group drip dates - Fixed: Issue where “Course Materials” and “Course Content” were both output when group drip dates are used --- ### 2.1.13 - Fixed: LearnDash Course Dashboard \[uo\_dashboard\] compatibility issue with LearnDash versions earlier than 2.5 --- ### 2.1.12 - Updated: Group Drip dates are now stored in UNIX timestamp format for compatibility with non-English sites - Updated: LearnDash Course Dashboard supports proper permalinks in LearnDash 2.5+ with Shared Course Steps enabled - Updated: In the Enhanced Course Grid module, the “Course Status” text for in-progress courses is now translatable - Fixed: In the Import LearnDash Users module, First Name and Last Name email tokens now work correctly --- ### 2.1.11 - Updated: “Done” button text in Autocomplete Lessons and Topics module is now translatable - Fixed: Simple Course Timer Quiz lockout feature now correctly blocks access to quiz on newer versions of LearnDash --- ### 2.1.10 - Updated: Autocomplete Lessons & Topics on Gravity Form Submission now supports Gravity Forms “Save and Continue” function - Updated: LearnDash Course Dashboard shortcode now supports HTML in course titles - Fixed: Improved Group Leader Interface now checks a Group Leader’s assigned courses when determining whether they should have access to dripped lessons prior to their “Available On” date - Fixed: Import LearnDash Users filter ‘csv\_wp\_update\_user’ restored - Fixed: Group registration page layout issues on some themes - Fixed: False-positive PHP 7 compatibility issue fixed in Simple Course Timer module --- ### 2.1.9 - Updated: Duplicate Pages and Posts clones courses properly in LearnDash 2.5+ with Shared Course Steps enabled - Fixed: Objects cloned by the Duplicate Pages and Posts module do not lose their category --- ### 2.1.8 - Added: Shortcodes are now rendered in Enhanced Course Grid short descriptions - Added: New (beta) Course Timer polling method to reduce server overhead - Updated: Default Course Timer polling interval increased to 15 seconds from 10 seconds - Updated: Minimum Course Timer polling interval reduced to 5 seconds - Updated: Course Timer now tracks time consistently with “Shared Course Steps” enabled (LearnDash 2.5+) - Updated: Days until Course Expiry now works consistently with “Shared Course Steps” enabled (LearnDash 2.5+) - Fixed: Autocomplete Lessons and Topics module no longer autocompletes lessons that are not yet available (dripped) - Fixed: Group Drip module: “All other users” drip date no longer takes precedence over group drip dates Known Issue: “Done” button in last topic of lesson may not forward the user to the appropriate page with “Shared Course Steps” enabled (LearnDash 2.5+) --- ### 2.1.7 - Updated: Group Drip module now properly records drip time in addition to drip date --- ### 2.1.6 - Updated: Improved theme compatibility of simple timer quiz lockout function - Updated: Course and Quiz Certificate emails now support post meta shortcodes - Updated: Error message when an imported user has a matching email but mismatched username - Fixed: Added missing namespace on some strings - Fixed: Row numbers reported in .csv upload errors - Fixed: Missing ” in learn-dash-group-sign-up.php - Fixed: Import users settings page now populates default values on first run if settings have not yet been saved --- ### 2.1.5 - Added: Course credit value from the Uncanny LearnDash Continuing Education Credits plugin is now displayed in the Enhanced Course Grid. - Fixed: Having Drip Lessons by Group module enabled no longer causes Hide Course Content Table setting to be ignored --- ### 2.1.4 - Fixed: When Autocomplete Lessons and Topics is enabled, Done button in last topic of last lesson now returns the user to the course page - Fixed: Bug in multiple modules that triggered the course complete action on page load - Fixed: Send Course Certificates by email no longer emails certificates repeatedly on course, lesson and topic page load when certain other modules are enabled - Fixed: When Send Course Certificates by Email is enabled, an email is no longer sent when a completed course does not have an associated certificate - Fixed: Enhanced Lessons/Topics Grid now works with Hide Course Content Table setting --- ### 2.1.3 - Added: Support for the new Uncanny Continuing Education Credits plugin - Updated: Removed Save Changes button on license activation page - Updated: Adding the Enhanced Lessons/Topics Grid shortcode to a course or lesson page suppresses the LearnDash lesson/topic table - Updated: Adding the Enhanced Lessons/Topics Grid shortcode to a course or lesson page while the module is enabled globally suppresses the global grid on that page - Updated: The Enhanced Lessons/Topics Grid elements are forced to 100% width within the grid - Updated: The Enhanced Lessons/Topics Grid displays lesson and group lesson drip dates - Fixed: View More button on Enhanced Course Grid - Fixed: Knowledge Base link for Enhanced Lessons/Topics Grid module - Fixed: Autocomplete Lesson/Topic on Quiz Results Page without clicking “Click here to continue” button ### 2.1.2 - Fixed: Removed extraneous text from Autocomplete Lessons and Topics module ### 2.1.1 - Fixed: Removed extraneous text from Autocomplete Lessons and Topics module - Fixed: Remove sample tag on topics ### 2.1 - New module: Enhanced Lessons/Topics Grid - New module: Send Course Certificates by Email - Added: New attribute “show” for uo\_dashboard shortcode (enrolled, open, all) - Updated: Autocomplete Lessons and Topics now allows autocompletion of topics in any order - Updated: When Autocomplete Lessons and Topics is enabled, the Done button on the last topic in a lesson goes to next lesson if the lesson is complete - Updated: LearnDash Table Colors module now makes color !important to work in more situations ### 2.0.5 - Added actions and filters to Import Users module to allow more flexible profile data - Added filters to Transcript to change default number of rows - Fixed course timer loop when user was not logged in - Fixed typos in Transcript and Import Users modules - Fixed View More button in the course grid when the number of columns equaled the number of courses - Fixed 404 console error in wp-admin when Drip Lessons by Group was enabled ### 2.0.4 - Added: Currency attribute to Enhanced Course Grid shortcode - Added: Preliminary support for upcoming Group Management plugin - Fixed: Modules not saving when slashes are removed during wp\_options save - Fixed: Statistics popup in uo\_dashboard shortcode - Fixed: Link to certificate in uo\_dashboard shortcode covered link to course - Fixed: Alignment of course name and certificate icon in uo\_dashboard shortcode - Fixed: Display Mark Complete button when gravity form setting is unchecked ### 2.0.3 - Added ld\_category attribute in Enhanced Course Grid shortcode to support LearnDash course categories - Updated Drip Lessons by LearnDash Group module for new drip date format - Fixed missing CSS class when ignore\_default\_sorting attribute is added to Enhanced Course Grid shortcode ### 2.0.2 - Added: Error checking for blank rows in Import LearnDash Users CSV files - Added: More variables for new user email templates for Import LearnDash Users - Added: Mark Complete button when a Gravity Form is on a lesson with completed topics - Updated: Use LearnDash custom course, lesson, topic, and quiz labels in Transcript - Fixed: generate PDF quiz id failing on some servers ### 2.0.1 - Fixed: New user upload stall ### 2.0 - Added: New module, Import LearnDash Users - Added: Course description to Enhanced Course Grid - Updated: Group Leader Access to view dashboard & added ability to view ProPanel widget - Updated: Course Timer inline-css for settings panel - Updated: Group Drip to let user view lessons on earliest date if in multiple groups - Updated: UI tweaks - Updated: Plugin licensing and updating - Fixed: PDF certificate orientation & size - Fixed: PDF certificate online view more consistent with email output - Fixed: timestamp handling - Fixed: Course Grid hide View More when limit is set to all - Fixed: Course Grid added (int) to limit grids - Fixed: Group Registration redirect to avoid cached page - Fixed: Group Registration permalink - Fixed: Redirect\_to on wp\_login filter to improve login process for Group Leader module - Fixed: Group Drip to let admin view contents - Fixed: Group Sign up login form 502 gateway error on WP Engine - Fixed: Simple timer missing data in LearnDash 2.3 CSV report ### 1.4 - Added: New module, Group Leader Experience - Added: New module, Send Certificates by Email - Added: New module, Autocomplete Lesson, Topic on Quiz Completion - Updated: Made Group Registration sign up lines translatable - Updated: Course Grid to truly ignore default sorting for enrolled courses - Updated: Course Grid to be flex for consistent heights - Updated: Sort-able Expiry Date column for Group Expiration Module - Fixed: Done button behavior inconsistent if lesson contains quiz ### 1.3.2 - Added: Course sorting in course dashboard shortcode - Fixed: Missing Mark Complete button when global Autocomplete is disabled ### 1.3.1 - Added: Show post navigation links if autocomplete is enabled - Updated: Repositioned sample lesson tag to be more mobile friendly - Updated: Made transcript fully translatable - Fixed: Typo in learner transcript column headers - Fixed: Enable Quizzes after X time not removed in certain themes - Fixed: Random redirect on quiz completion in Safari/Firefox - Fixed: Group signup URL registration link key causing URL error ### 1.3 - Added: Course Timer feature – Only allow access to a quiz when time spent in the course EQUALS OR EXCEEDS a specified number of minutes - Added: “Done” button in last topic within a lesson when Autocomplete Lessons & Topics is enabled - Updated: Made fonts consistent across transcript PDF - Fixed: Topics with quizzes are not autocompleted ### 1.2.1 - Fixed: Autocompletion issue ### 1.2 - Added: Sample Lesson Label module - Added: Deactivate Pro version if Free version is not activated, link to Free download - Added: Ctrl+P print function on transcript - Updated: Transcript print styles - Updated: Course dashboard HTML and CSS to better support long course names - Updated: Allow timer to resume after it has been paused for up to 48 hours - Updated: Group registration provides immediate access to courses - Fixed: Enhanced Course Grid CSS override theme path (/wp-content/themes/your-theme/uncanny-toolkit-pro/css/course-grid-view.css) - Fixed: Do not autocomplete lesson if previous lesson is not completed and lesson progression is enabled ### 1.1.0 - Added new sorting and ordering options to course grid - Added logo option for LearnDash Groups - Added shortcode that lists LearnDash Groups for user ### 1.0.3 - Fixed a conflict with Duplicate Posts & Pages and WooCommerce products. ### 1.0.2 - Added improved support for alternative slugs for LearnDash post types. ### 1.0.1 - Initial Release. **Article Categories:** Uncanny Toolkit Pro for LearnDash --- ### [Migrating from Manual Enrollment to Code-Based Enrollment](https://www.uncannyowl.com/knowledge-base/migrating-from-manual-enrollment-to-code-based-enrollment/) **Published:** June 4, 2026 **Author:** David Chambo **Content:** ### Overview If you’re currently enrolling users in LearnDash courses and groups by hand — adding them one at a time from the WordPress admin, emailing login credentials, or managing spreadsheets of who has access to what — you already know the pain. Manual enrollment doesn’t scale, it’s error-prone, and it turns the site administrator into a bottleneck for every new user. Uncanny Codes replaces that manual process with self-service enrollment. You generate codes, distribute them however works for your organization, and users enroll themselves by entering their code. This article walks you through the migration from manual to code-based enrollment. ### The Problems with Manual Enrollment Before diving into the solution, it’s worth naming the specific problems that codes solve: **It’s slow.** Adding 50 users to a course one at a time in the LearnDash admin takes a significant chunk of your day. Adding 500 takes days. **It’s error-prone.** Typos in usernames, forgetting to add someone to a group, accidentally enrolling someone in the wrong course — manual processes produce manual errors. **It creates a bottleneck.** Every new enrollment request goes through the admin. If you’re on vacation, enrollments stop. **It’s untraceable.** There’s no audit trail for who was enrolled, when, or by whom. If someone claims they don’t have access, you’re digging through records to figure out what happened. **It doesn’t scale to multiple organizations.** If you serve several companies or departments, managing enrollment across all of them in the admin becomes unmanageable. ### How Codes Solve Each Problem Manual Pain PointCode-Based SolutionSlow, one-at-a-time enrollmentGenerate hundreds of codes in seconds; users enroll themselvesAdmin is the bottleneckDistribute codes to coordinators; they handle distribution within their orgNo audit trailEvery code has a unique redemption record: who, when, which batchError-proneCodes map to predefined courses/groups — no room for enrollment mistakesDoesn’t scale to multiple orgsCreate separate batches per organization with independent tracking### Migration Plan #### Phase 1: Set Up Uncanny Codes 1. **Install and activate** [Uncanny Redemption Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) and enter your license key. 2. **Review settings** under **Uncanny Codes > Settings**. Pay attention to the LearnDash group behavior setting — this controls what happens if a user redeems a code that adds them to a new group. See [Set up Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/). 3. **Create your first batch** to match one of your current manual enrollment workflows. For example, if you regularly enroll users in “Safety Training 101,” create a batch of codes mapped to that course. #### Phase 2: Set Up the Redemption Experience Choose how users will redeem their codes: **For existing users who already have accounts:** Add the `[uo_user_redeem_code]` shortcode to a page on your site. Send users there with their code. See [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/). **For new users who need to register:** Set up a registration form with a code field using Gravity Forms, WPForms, Formidable Forms, or the built-in registration shortcode. The user creates an account and enrolls in one step. See [Setting Up Code Redemption Forms](https://www.uncannyowl.com/knowledge-base/setting-up-code-redemption-forms/). **For organizations that purchase access through WooCommerce:** Link a code batch to a WooCommerce product so that organizations can purchase seats and receive codes automatically. See [Sell Code Batches as WooCommerce Products](https://www.uncannyowl.com/knowledge-base/sell-uncanny-codes/). #### Phase 3: Migrate One Workflow at a Time Don’t try to migrate everything at once. Pick your highest-volume manual enrollment workflow and convert it to codes first: 1. Generate a batch for that workflow 2. Test the redemption flow with a test user 3. Update your internal process documentation to reference codes instead of manual enrollment 4. Communicate the change to coordinators or clients who request enrollments 5. Monitor redemption for the first week to make sure everything works Once the first workflow is running smoothly, repeat for the next one. #### Phase 4: Retire Manual Enrollment Once all your enrollment workflows are code-based, you can stop doing manual enrollments entirely. If someone asks you to enroll a user, the answer is: “Here’s a code — have them enter it on the enrollment page.” For the rare case where you need to enroll a single user manually (troubleshooting, special circumstances), the LearnDash admin enrollment still works. But it should be the exception, not the default. ### What About Users Who Are Already Enrolled? Migrating to codes doesn’t affect users who are already enrolled in courses or groups. Existing enrollments remain in place. Codes only apply to new enrollments going forward. If you want to track existing users in the same system, you can retroactively generate codes and mark them as redeemed — but this is usually unnecessary. The simpler approach is to use codes for all new enrollments and let existing enrollments stand. ### Communicating the Change If you distribute enrollment to coordinators, managers, or HR contacts at other organizations, let them know about the new process: **Sample communication:** > We’re updating how we handle course enrollment to make it faster and easier for everyone. Going forward, instead of sending us a list of users to enroll, we’ll provide you with a set of enrollment codes. Each code can be given to one person — they’ll enter it on our enrollment page and instantly get access to their courses. This means no more waiting for us to process enrollments manually, and each person can enroll on their own schedule. ### Related Articles - [Getting Started with Uncanny Codes](https://www.uncannyowl.com/knowledge-base/getting-started-with-uncanny-codes/) — Overview of all Codes workflows - [Set up Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/) — Installation and settings - [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/) — Create code batches - [Corporate Training & Bulk Enrollment Codes](https://www.uncannyowl.com/knowledge-base/use-case-corporate-training-bulk-enrollment-codes/) — Scaling code distribution for large organizations - [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/) — Self-service redemption for existing users - [Viewing and Editing Codes](https://www.uncannyowl.com/knowledge-base/view-codes/) — Track and manage code usage **Article Categories:** Uncanny Redemption Codes --- ### [Use Case: Event & Conference Access Codes](https://www.uncannyowl.com/knowledge-base/use-case-event-conference-access-codes/) **Published:** June 4, 2026 **Author:** David Chambo **Content:** ### Overview If you run conferences, workshops, webinars, or training events, Uncanny Codes gives you a simple way to bridge the gap between the in-person (or live) experience and your online platform. Generate codes before the event, distribute them to attendees, and let each person self-enroll in follow-up courses, resources, or communities by redeeming their code after the event. ### Why Codes Work for Events Traditional post-event enrollment relies on attendees remembering to sign up, finding the right URL, and completing a registration process. Codes simplify this to one step: enter the code, get access. This dramatically increases the conversion rate from “attended the event” to “enrolled on the platform.” Codes also give you something most event tools don’t: **individual redemption tracking**. You know exactly which attendees redeemed their codes, when they did it, and what access they received — useful data for measuring event ROI and planning follow-ups. ### The Workflow #### Before the Event **1. Create a code batch for the event** Navigate to **Uncanny Codes > Add New Batch** and create a batch with enough codes for your expected attendance, plus a small buffer. Name the batch clearly (e.g., “WordCamp 2026 — Post-Event Access”). Choose the code type based on what you want to happen on redemption: - **LearnDash** — directly enroll attendees in a course or group - **Automator** — trigger a multi-step workflow (enrollment + email + CRM tag + more) **2. Set an expiration date** Set the batch to expire 30-90 days after the event. This creates urgency for attendees to redeem their codes promptly and prevents stale codes from being used months later. **3. Export and prepare for distribution** Download the codes as CSV from **Uncanny Codes > View Codes**. How you distribute them depends on your event format: Distribution MethodBest For**Printed cards**In-person conferences — hand a card to each attendee at check-in or in their swag bag**Badge inserts**In-person events — print each code on the attendee’s name badge**Email**Virtual events or webinars — send each attendee a unique code in a follow-up email**Chat/slide**Live webinars — display a shared code on screen (use a multi-use code)**QR codes**Any format — generate QR codes that link to your redemption page with the code pre-filled**4. Set up a redemption page** Create a dedicated landing page on your site for event attendees to redeem their codes. Add the `[uo_user_redeem_code]` shortcode for logged-in users, or a registration form with a code field for new users. Make the page welcoming and event-specific: include the event name, a brief reminder of what they’re unlocking, and clear instructions for entering the code. #### During the Event Announce the codes and explain what attendees will get by redeeming them. Be specific: “Your access code unlocks the full recording of today’s sessions, plus our bonus resources library.” If using printed cards, hand them out at check-in or during a specific session. If using a shared code for a live webinar, display it on a slide and give attendees a minute to redeem it in real time. #### After the Event **1. Send a follow-up email** For in-person events where codes were distributed on cards, send a follow-up email reminding attendees to redeem. Include the URL to the redemption page and a note about the expiration date. **2. Monitor redemption** Check **Uncanny Codes > View Codes** regularly to see how many codes have been redeemed. If redemption is low after a week, send another reminder. **3. Automate the post-redemption experience** If you’re using Automator-type codes, the redemption itself can trigger a full follow-up workflow: - Enroll the user in the post-event course or resource library - Send a welcome email with links to recordings, slides, and resources - Tag the contact in your CRM as an event attendee - Add them to a BuddyBoss community group for event alumni - Post a notification to your team’s Slack channel See [Codes + Automator: Advanced Workflows](KB_LINK) for detailed recipe examples. ### QR Code Integration QR codes can make redemption frictionless at in-person events. While Uncanny Codes doesn’t generate QR codes directly, you can create them easily: 1. Set up your redemption page at a URL like `yoursite.com/event-access` 2. If using a shared multi-use code, append it to the URL as a parameter (requires a small custom code snippet to auto-fill the form) 3. Generate a QR code pointing to that URL using any free QR code generator 4. Print the QR code on badges, cards, or event signage Attendees scan the QR code with their phone, land on the redemption page, and enter (or have pre-filled) their code. This reduces friction to almost zero. ### Measuring Event ROI Code redemption data gives you concrete metrics for event ROI: MetricWhat It Tells You**Redemption rate** (redeemed / distributed)What percentage of attendees engaged with your post-event content**Time to redemption**How quickly attendees acted — same day vs. days later**Course completion rate** (via LearnDash)How many attendees who redeemed actually completed the follow-up content**Per-event comparison**Compare redemption rates across events to identify which formats and audiences are most engagedExport the CSV from View Codes and combine it with your event attendance records for a complete picture. ### Related Articles - [Getting Started with Uncanny Codes](KB_LINK) — Overview of all Codes workflows - [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/) — Batch creation and configuration - [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/) — Redemption form shortcode - [Codes + Automator: Advanced Workflows](KB_LINK) — Post-event automation recipes - [Viewing and Editing Codes](https://www.uncannyowl.com/knowledge-base/view-codes/) — Tracking and exporting redemption data **Article Categories:** Uncanny Redemption Codes --- ### [Uncanny Codes vs. WooCommerce Coupons: What's the Difference?](https://www.uncannyowl.com/knowledge-base/uncanny-codes-vs-woocommerce-coupons-whats-the-difference/) **Published:** June 4, 2026 **Author:** David Chambo **Content:** ### Overview If you sell courses or products through WooCommerce, you’ve probably used WooCommerce coupons to offer discounts. When you hear about Uncanny Codes, a natural question is: “How is this different from a coupon?” The answer is that they solve fundamentally different problems, and in many cases you’ll want to use them together. ### The Core Difference **WooCommerce coupons reduce a price.** A coupon takes a percentage or fixed amount off a product at checkout. The customer still goes through the full WooCommerce purchase flow — cart, checkout, payment (even if the total is $0). **Uncanny Codes grant access.** A code directly enrolls the user in a course, adds them to a group, assigns a role, or triggers an Automator recipe. No cart, no checkout, no payment step required. The user enters a code on a form or redemption page and immediately receives access. WooCommerce CouponUncanny Code**Primary function**Discounts a product priceGrants access or triggers an action**Requires checkout?**Yes — user goes through cart and checkoutNo — user redeems on a form or standalone page**Requires payment setup?**Yes — even for $0 orders, WooCommerce processes the orderNo — no payment infrastructure needed**Tracks individual usage?**Limited — tracks total uses and per-user limitYes — every code is individually tracked with user, date, and status**Unique per user?**Typically shared (one coupon code used by many people)Can be unique (one code per person) or shared**Can trigger automations?**Via WooCommerce order actionsYes — via Uncanny Automator with 200+ integrations**Can be sold as a product?**No — coupons discount products, they aren’t productsYes — code batches can be sold as WooCommerce products**Expiration**By dateBy date or by redemption count### When to Use WooCommerce Coupons Use coupons when the goal is to **reduce the price** of a product: - “Get 20% off any course this weekend” - “Use code WELCOME10 for $10 off your first purchase” - “Free shipping with code FREESHIP” Coupons work within the WooCommerce checkout flow. The customer adds a product to their cart, enters the coupon, and completes the purchase at the discounted price. ### When to Use Uncanny Codes Use codes when the goal is to **grant access** without requiring a purchase: - “Enter your enrollment code to access the training program” - “Redeem your conference access code” - “Here’s your free course code — no purchase required” - “Enter the code from your manager to join the team workspace” Codes work outside the WooCommerce checkout flow. The user enters the code on a redemption page or registration form and receives access immediately. ### Using Both Together Uncanny Codes and WooCommerce coupons are complementary, not competing. Here are scenarios where you’d use both: #### Selling Codes at a Discount You sell code batches as WooCommerce products (using the [Sell Code Batches as WooCommerce Products](https://www.uncannyowl.com/knowledge-base/sell-uncanny-codes/) workflow). A WooCommerce coupon can discount the code product at checkout: - Customer adds “10-Pack Enrollment Codes” to cart ($500) - Customer applies coupon “BULK20” for 20% off ($400) - Customer receives 10 codes after purchase - Each code is distributed to an end user who redeems it for course access In this flow, the **coupon** reduces the price and the **codes** grant the access. #### Requiring a Code at Checkout You can enable the **Require LearnDash Code** checkbox on a WooCommerce product. This adds a code field to the checkout page. The customer enters a valid Uncanny Code to complete the purchase. A WooCommerce coupon can also be applied to the same order: - Customer adds a course product to cart - Customer enters a coupon for a discount - Customer also enters an Uncanny Code for enrollment - Both are processed: the coupon reduces the price, and the code triggers enrollment #### Promotional Code + Purchase Incentive You give away free Uncanny Codes for a basic course, then use WooCommerce coupons to incentivize upgrading: - User redeems a free code for “Photography 101” - Automator sends a follow-up email 7 days later with a WooCommerce coupon for 30% off “Photography Masterclass” - User purchases the advanced course at a discount The code drives initial engagement; the coupon drives the upsell. ### Quick Decision Guide Your GoalUseDiscount a product priceWooCommerce CouponGive someone free course/group accessUncanny CodeSell access codes to organizationsUncanny Code (as WooCommerce product)Track individual code usage per personUncanny CodeOffer a limited-time percentage discountWooCommerce CouponDistribute unique access tokens at an eventUncanny CodeGrant access + trigger a multi-step workflowUncanny Code + AutomatorReduce price AND grant access in one checkoutBoth — coupon for price, code for access### Related Articles - [Getting Started with Uncanny Codes](KB_LINK) — Overview of Uncanny Codes workflows - [Sell Code Batches as WooCommerce Products](https://www.uncannyowl.com/knowledge-base/sell-uncanny-codes/) — Sell codes through WooCommerce - [Redeem Codes During WooCommerce Checkout](https://www.uncannyowl.com/knowledge-base/using-codes-woocommerce/) — Code field at checkout - [Promotional Codes & Marketing Campaigns](KB_LINK) — Using codes for promotions **Article Categories:** Uncanny Redemption Codes --- ### [Use Case: Promotional Codes & Marketing Campaigns](https://www.uncannyowl.com/knowledge-base/use-case-promotional-codes-marketing-campaigns/) **Published:** June 4, 2026 **Author:** David Chambo **Content:** ### Overview Uncanny Codes isn’t just for enrollment management — it’s also a powerful promotional tool. You can create limited-run batches of codes for giveaways, early-bird access, partner co-marketing, social media contests, or any campaign where you want to distribute access in a controlled, trackable way. This article shows how to use Uncanny Codes to run promotional campaigns, track their performance, and automate the post-redemption experience. ### Why Codes Make Great Promotional Tools Promotional codes offer several advantages over open enrollment or discount coupons: - **Exclusivity.** A code feels personal and valuable — “here’s your access code” is more compelling than “sign up here.” - **Scarcity.** You control exactly how many codes exist. When a batch runs out, the promotion is over. - **Trackability.** Every redemption is logged. You know exactly how many of your 100 giveaway codes were used, when, and by whom. - **Flexibility.** Codes can grant course access, group membership, role upgrades, CRM tags, or any combination via Automator. - **No price manipulation.** Unlike WooCommerce coupons, Uncanny Codes don’t reduce a price — they grant access directly. This means you’re not training customers to wait for discounts. ### Campaign Types #### Free Course Access Giveaway **Goal:** Drive awareness and trial usage by giving away free access to a course. **Setup:** 1. Create a LearnDash-type batch with 50-100 codes mapped to the course you want to promote 2. Set an expiration date (e.g., 30 days from campaign launch) 3. Add the `[uo_user_redeem_code]` shortcode to a dedicated landing page 4. Distribute codes through your email list, social media, or podcast **Distribution ideas:** - Email: “Reply to this email for a free access code” (manually or via Automator) - Social: “First 50 people to DM us get a free code” - Podcast: “Use code PODCAST2026 for free access” (create a multi-use code) - Webinar: Share a batch of single-use codes in the webinar chat #### Partner Co-Marketing **Goal:** Give a partner organization codes to distribute to their audience, driving new users to your site. **Setup:** 1. Create a dedicated batch for each partner (e.g., “Partner — WPBeginner Giveaway”) 2. Generate the number of codes the partner will distribute 3. Export as CSV and send to the partner 4. Track redemption rates per partner batch **Why separate batches matter:** By giving each partner their own batch, you can compare which partnerships drive the most redemptions. This data informs future co-marketing decisions. #### Early-Bird / VIP Access **Goal:** Reward loyal customers or email subscribers with early access to a new course before it goes on sale. **Setup:** 1. Create a batch mapped to the new course 2. Set the batch to expire when the course launches publicly 3. Distribute codes to your VIP list or loyal customers 4. Use Automator to tag redeemers in your CRM as “Early Adopter” for future segmentation #### Social Media Contest **Goal:** Drive engagement and follower growth by giving away codes as contest prizes. **Setup:** 1. Create a small batch (10-20 codes) for contest prizes 2. Announce the contest on your social channels with clear entry instructions 3. Send winning codes via DM or email 4. Use the redemption page as a conversion point — include upsells or email signup prompts alongside the code field ### Automating the Post-Redemption Experience When a promotional code is redeemed, you want the experience to feel special — not just a silent enrollment. Use Uncanny Automator to create a post-redemption workflow: **Example Automator recipe for a promotional campaign:** - **Trigger:** A user redeems a code from the “Spring 2026 Giveaway” batch - **Action 1:** LearnDash — Enroll the user in “Photography Masterclass” - **Action 2:** Automator — Send a branded welcome email: “Congrats! Your free access to Photography Masterclass is now active. Here’s how to get started…” - **Action 3:** ActiveCampaign — Add the “Spring Promo Redeemer” tag (for future re-targeting) - **Action 4:** Automator — Wait 7 days, then send a follow-up email: “How are you enjoying the course? Upgrade to our full bundle for 30% off” This turns a simple code redemption into an automated nurture funnel. ### Tracking Campaign Performance Every code batch gives you built-in campaign analytics: MetricWhere to Find ItTotal codes generated**Uncanny Codes > View Codes** — batch summaryCodes redeemed**Uncanny Codes > View Codes** — redeemed countRedemption rateRedeemed / Total (calculate from CSV export)Codes remaining**Uncanny Codes > View Codes** — available countWho redeemed**Uncanny Codes > View Codes** — username and date per codeWhen they redeemedCSV export — Issue Date and redemption timestamp columnsFor campaigns sold through WooCommerce, you can also cross-reference the Order ID column in the CSV with WooCommerce order data. > **Tip:** Export the CSV at the end of each campaign and store it with your campaign reports. This gives you historical data even if codes are eventually deleted from the system. ### Codes vs. WooCommerce Coupons A common question: “Why not just use WooCommerce coupons for promotions?” The answer depends on what you’re trying to do. See [Uncanny Codes vs. WooCommerce Coupons](KB_LINK) for a detailed comparison. The short version: WooCommerce coupons discount a price; Uncanny Codes grant access. If your promotion is “get a discount on this product,” use a coupon. If your promotion is “get free access to this course/content/membership,” use a code. ### Related Articles - [Getting Started with Uncanny Codes](KB_LINK) — Overview of all Codes workflows - [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/) — Batch configuration and code generation - [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/) — Add a redemption form to a landing page - [Viewing and Editing Codes](https://www.uncannyowl.com/knowledge-base/view-codes/) — Track redemptions and export data - [Codes + Automator: Advanced Workflows](KB_LINK) — Build post-redemption automations - [Uncanny Codes vs. WooCommerce Coupons](KB_LINK) — When to use which **Article Categories:** Uncanny Redemption Codes --- ### [Use Case: Corporate Training & Bulk Enrollment Codes](https://www.uncannyowl.com/knowledge-base/use-case-corporate-training-bulk-enrollment-codes/) **Published:** June 4, 2026 **Author:** David Chambo **Content:** ### Overview Uncanny Codes is a natural fit for corporate training and L&D teams that need to enroll employees, partners, or customers in training programs. Instead of manually adding users to courses one by one, you generate a batch of codes and distribute them to a department, organization, or partner — and each person self-enrolls by redeeming their code. This article walks through the complete workflow for distributing enrollment codes at scale, from generating the batch to tracking completion. ### Why Use Codes for Corporate Training? Manual enrollment is manageable for 5-10 users, but it breaks down quickly when you’re onboarding 50, 200, or 1,000 learners across multiple organizations. Codes solve several specific problems: - **Self-service enrollment.** Learners enroll themselves — no admin bottleneck. - **Delegated distribution.** Give a batch of codes to an HR manager or training coordinator and let them handle distribution within their organization. - **Trackable.** Every code is individually trackable — you know exactly which codes were redeemed, by whom, and when. - **Controlled access.** Each code can only be redeemed once (or a set number of times), so you control exactly how many seats are issued. - **Expiration dates.** Set an expiration on the batch so codes are only valid during a specific enrollment window. ### The Workflow #### Step 1: Create a Code Batch for the Program 1. Navigate to **Uncanny Codes > Generate Codes** 2. Name the batch descriptively — include the client or program name and date (e.g., “Acme Corp — Safety Training Q2 2026”) 3. Choose the code type: - **LearnDash** — if the code should directly enroll users in specific courses or groups - **Automator** — if you want the code to trigger an Automator recipe (useful for multi-step onboarding workflows) 4. For LearnDash-type batches, select the courses and/or groups the code should grant access to 5. Set the **number of codes** to match the number of seats purchased or allocated 6. Set an **expiration date** if the enrollment window is time-limited 7. Click **Generate Codes** ![](https://www.uncannyowl.com/wp-content/uploads/2026/06/Codes-workflow-step-1-861x1030.png "Codes workflow - step 1 - Uncanny Owl") #### Step 2: Export and Distribute 1. Navigate to **Uncanny Codes > View Codes** and select your batch 2. Click **Download CSV** to export the codes 3. Send the CSV to the training coordinator or HR contact at the organization The coordinator can then distribute individual codes to their team members via email, an internal portal, or however they normally communicate. > **Tip:** If you’re distributing to multiple organizations, create a separate batch for each one. This makes it easy to track enrollment per organization and manage seat counts independently. #### Step 3: Set Up the Redemption Page Create a page on your site where learners can redeem their codes. You have two options: **For existing users** (learners who already have accounts on your site): Add the standalone redemption shortcode to a page: `[uo_user_redeem_code]` **For new users** (learners who need to register first): Add a registration form with a code field using Gravity Forms, WPForms, or the built-in registration shortcode. See [Setting Up Code Redemption Forms](KB_LINK) for setup details. Include clear instructions on the page: what the code looks like, where to enter it, and what happens after redemption. #### Step 4: Track Enrollment Progress Monitor code usage from the admin: - **Uncanny Codes > View Codes** — See which codes have been redeemed, by whom, and when. Download updated CSV reports at any time. - **LearnDash > Groups** — If using group-based enrollment, view the group’s member list to see who has enrolled. - **Uncanny Groups** — If you use [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/), group leaders can access front-end reports showing enrollment progress, course completion, and quiz scores — without needing admin access. #### Step 5: Report Back to the Client Use the CSV download from the View Codes page to generate a redemption report for the client or internal stakeholders. As of v4.4, the CSV includes columns for Status, Issue Date, Order ID, Linked Product, and Redeemed Times, giving you comprehensive data for reporting. ### Combining Codes with Uncanny Groups For enterprise scenarios, Uncanny Codes works best alongside [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/). The combination gives you: - **Code-based enrollment** — learners self-enroll by redeeming a code - **Group leader dashboard** — a designated coordinator can view their team’s progress, manage assignments, and run reports from the front end - **Group-specific course dripping** — release content on a schedule specific to each group’s start date - **Front-end essay and assignment management** — group leaders can grade submissions without admin access This is the recommended setup for any organization managing more than one cohort of learners. ### Multi-Batch Strategy for Large Deployments For organizations with multiple departments, locations, or training programs, we recommend a multi-batch strategy: Batch NameCoursesSeatsExpiresAcme Corp — Sales Team — Product TrainingProduct 101, Product Advanced252026-06-30Acme Corp — Engineering — Safety CertificationSafety 101, Safety 201, Safety Exam402026-09-30Acme Corp — All Staff — Compliance AnnualCompliance 20262002026-12-31Each batch maps to a specific training program, has its own seat count, and can have its own expiration. You can report on each independently and generate additional codes if a department needs more seats. ### Related Articles - [Getting Started with Uncanny Codes](KB_LINK) — Overview of all Codes workflows - [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/) — Code batch configuration details - [Viewing and Editing Codes](https://www.uncannyowl.com/knowledge-base/view-codes/) — Track redemptions and download reports - [Uncanny Groups for LearnDash](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) — Group management for corporate training - [Codes + Automator: Advanced Workflows](KB_LINK) — Multi-action onboarding recipes **Article Categories:** Uncanny Redemption Codes --- ### [Codes + Automator: Advanced Workflows](https://www.uncannyowl.com/knowledge-base/codes-automator-advanced-workflows/) **Published:** June 3, 2026 **Author:** David Chambo **Content:** ### Overview [Uncanny Automator](https://automatorplugin.com/) transforms Uncanny Codes from a simple enrollment tool into a full workflow automation engine. When a user redeems an Automator-type code, Automator can trigger any combination of actions across 200+ connected plugins and external services — all from a single code redemption. This article goes beyond the [basic Automator connection guide](https://www.uncannyowl.com/knowledge-base/connect-codes-to-uncanny-automator/) to show you real-world recipes that demonstrate what’s possible. ### Prerequisites - [Uncanny Redemption Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) installed and activated - [Uncanny Automator](https://automatorplugin.com/) installed and activated - At least one Automator-type code batch created - The plugins relevant to your desired actions installed and activated ### Recipe Building Basics Every Codes + Automator workflow follows the same structure: 1. **Create an Automator-type code batch** in Uncanny Codes 2. **Create an Automator recipe** with the trigger: *“A user redeems a code from a batch”* 3. **Add one or more actions** that fire when the trigger occurs 4. **Set the recipe to Live** and distribute the codes Automator passes useful data from the trigger to your actions via **tokens** — including the user’s name, email, the code string, and the batch name. You can use these tokens in email templates, CRM fields, Slack messages, and anywhere else that accepts dynamic values. ### Recipe Examples #### Recipe 1: New Employee Onboarding (LearnDash + CRM + Slack) **Scenario:** A corporate training team distributes codes to new hires. When redeemed, the employee is enrolled in onboarding courses, tagged in the CRM, and the HR channel is notified. ComponentConfiguration**Trigger**A user redeems a code from the “2026 Onboarding” batch**Action 1**LearnDash — Enroll the user in “Company Onboarding” course**Action 2**LearnDash — Add the user to the “New Hires Q2 2026” group**Action 3**ActiveCampaign — Add the “New Hire” and “Onboarding Started” tags**Action 4**Automator — Send a welcome email with login instructions and course links**Action 5**Slack — Post to [\#hr-notifications](#hr-notifications): “New hire {user\_email} has started onboarding”**Why this works:** One code redemption replaces what would otherwise be 5 manual steps across 3 different platforms. HR just hands out a code and everything else is automated. [![](https://www.uncannyowl.com/wp-content/uploads/2026/06/Automator-Codes-onboarding.png "Automator Codes - onboarding - Uncanny Owl")](https://www.uncannyowl.com/?attachment_id=382762)#### Recipe 2: Premium Content Unlock (No LearnDash) **Scenario:** A publisher distributes codes that grant access to premium content by upgrading the user’s WordPress role. ComponentConfiguration**Trigger**A user redeems a code from the “Premium Access” batch**Action 1**WordPress — Change the user’s role to “Premium Member”**Action 2**Automator — Send an email: “Your premium access is now active. Here’s what’s available…”**Action 3**Mailchimp — Add the user to the “Premium Members” audience segment**Why this works:** No LearnDash needed. The user’s WordPress role change unlocks content gated by any membership or role-based access plugin (MemberPress, Restrict Content Pro, WooCommerce Memberships, etc.). ![](https://www.uncannyowl.com/wp-content/uploads/2026/06/Automator-Codes-Premium-Content-No-LD.png "Automator Codes - Premium Content No LD - Uncanny Owl") #### Recipe 3: Conference Follow-Up (Event + CRM + Email Sequence) **Scenario:** An event organizer prints codes on attendee badges. When scanned/redeemed after the conference, the attendee receives follow-up materials and is tagged for post-event nurturing. ComponentConfiguration**Trigger**A user redeems a code from the “WordCamp 2026” batch**Action 1**Automator — Send an email with presentation slides and resource links**Action 2**HubSpot — Create or update a contact with the “WordCamp 2026 Attendee” property**Action 3**Google Sheets — Add a row to the “Event Attendee Log” spreadsheet**Why this works:** Redeemable codes bridge the gap between in-person events and digital follow-up. The organizer distributes physical codes and lets automation handle the rest. ![](https://www.uncannyowl.com/wp-content/uploads/2026/06/Automator-Codes-Conference-Follow-up-1030x520.png "Automator Codes - Conference Follow up - Uncanny Owl") #### Recipe 4: Partner Referral Codes (WooCommerce + Affiliate Tracking) **Scenario:** You give partner organizations unique code batches. When their referrals redeem a code, the partner gets credit and the new user gets a discount. ComponentConfiguration**Trigger**A user redeems a code from the “Partner — Acme Corp” batch**Action 1**WooCommerce — Create a coupon for the user (20% off first purchase)**Action 2**WordPress — Set user meta `referred_by` to “Acme Corp”**Action 3**Automator — Send an email to : “Your referral {user\_name} has signed up”**Action 4**Google Sheets — Log the referral in the partner tracking spreadsheet**Why this works:** Each partner gets their own batch, so you can track referral volume per partner. The Automator recipe handles the credit, discount, and notification automatically. #### Recipe 5: Conditional LearnDash Enrollment (Multi-Batch Strategy) **Scenario:** A training provider offers different certification tracks. Instead of one generic code, they create separate batches per track so that each code automatically enrolls the user in the right courses. BatchRecipe Actions“Safety Certification” batchEnroll in Safety 101, Safety 201, Safety Exam + Add to “Safety Track” group“Leadership Certification” batchEnroll in Leadership 101, Leadership 201, Leadership Capstone + Add to “Leadership Track” group“Compliance Certification” batchEnroll in Compliance Annual, Compliance Ethics + Add to “Compliance 2026” group + Set CEU credit typeEach batch has its own Automator recipe with different enrollment actions. This is cleaner and more maintainable than using conditional logic within a single recipe. **Why this works:** The code itself determines the entire enrollment path. Administrators don’t need to manage enrollment manually or create complex conditional rules. #### Recipe 6: Community Membership + Gamification (BuddyBoss) **Scenario:** A community site uses codes to gate access to private groups and award points on join. ComponentConfiguration**Trigger**A user redeems a code from the “Community VIP” batch**Action 1**BuddyBoss — Add the user to the “VIP Members” group**Action 2**BuddyBoss — Set the user’s profile type to “VIP”**Action 3**GamiPress — Award 500 points to the user**Action 4**Automator — Send a welcome email with community guidelines and group links**Action 5**BuddyBoss — Post an activity update: “Welcome our newest VIP member!”**Why this works:** Code redemption becomes a complete community onboarding event — group access, profile configuration, gamification reward, welcome communication, and public announcement, all in one step. ### Tips for Advanced Workflows #### Use Separate Batches for Separate Workflows Rather than trying to build complex conditional logic into a single recipe, create separate code batches for each workflow and give each batch its own recipe. This keeps recipes simple and makes it easy to track which codes map to which actions. #### Leverage Tokens for Personalization Automator tokens let you insert dynamic data from the trigger into your actions. For code redemptions, available tokens typically include the user’s display name, email, the code string, and the batch name. Use these in email templates, Slack messages, and CRM fields to personalize the experience. #### Test with a Small Batch First Before generating hundreds of codes, create a test batch with 2-3 codes and run through the full workflow. Verify that all actions fire correctly and the user experience is what you expect. #### Monitor with Automator Logs Automator Pro includes recipe logs that show every trigger and action execution. Use these to troubleshoot failed actions, verify timing, and confirm that all steps in your workflow completed successfully. ### Related Articles - [Connecting Codes to Uncanny Automator](https://www.uncannyowl.com/knowledge-base/connect-codes-to-uncanny-automator/) — Basic connection setup - [Using Codes Without LearnDash](KB_LINK) — Non-LearnDash use cases and setup guide - [Getting Started with Uncanny Codes](KB_LINK) — Overview of all Codes workflows - [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/) — Create Automator-type code batches **Article Categories:** Uncanny Redemption Codes --- ### [Using Codes Without LearnDash](https://www.uncannyowl.com/knowledge-base/using-codes-without-learndash/) **Published:** June 3, 2026 **Author:** David Chambo **Content:** ### Overview While Uncanny Codes is often used alongside LearnDash for course and group enrollment, the plugin works just as well **without LearnDash installed**. By using Automator-type code batches paired with [Uncanny Automator](https://automatorplugin.com/), you can create codes that trigger virtually any action on your WordPress site — from assigning user roles to adding members to BuddyBoss groups to tagging contacts in your CRM. If you don’t use LearnDash, this article is your starting point. If you do use LearnDash but want codes to do more than just enroll users, this article is for you too. ### How It Works Uncanny Codes supports two types of code batches: Batch TypeWhat It DoesRequires LearnDash?**LearnDash**Directly enrolls users in LearnDash courses or groups on redemptionYes**Automator**Fires an Uncanny Automator trigger on redemption — the Automator recipe determines what happens nextNo**Automator-type batches** are the key to using Codes without LearnDash. When a user redeems a code from an Automator batch, the plugin fires a trigger in Uncanny Automator. You then build an Automator recipe that listens for that trigger and runs whatever actions you need — no LearnDash required. Since Uncanny Automator connects to 200+ WordPress plugins and external services, the possibilities are extensive. ### Prerequisites - [Uncanny Redemption Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) installed and activated - [Uncanny Automator](https://automatorplugin.com/) installed and activated (Free or Pro) - A redemption method set up (standalone shortcode, form plugin, or WooCommerce) You do **not** need LearnDash or any other specific plugin installed — only the plugins relevant to the actions you want to trigger. ### Step-by-Step Setup #### 1. Create an Automator-Type Code Batch 1. Navigate to **Uncanny Codes > Add New Batch** 2. Give your batch a name (e.g., “Premium Membership Codes”) 3. Set the **Code Type** to **Automator** 4. Configure the number of codes, format, and any expiration settings 5. Click **Generate Codes** ![](https://www.uncannyowl.com/wp-content/uploads/2026/06/Automator-Code-batch.png "Automator Code batch - Uncanny Owl") #### 2. Build an Automator Recipe 1. Navigate to **Automator > Add New** to create a new recipe 2. Set the recipe type to **Logged-in users** (or **Everyone** if using Automator Pro and you want anonymous redemption) 3. Add a trigger: **Uncanny Codes > A user redeems a code from a batch** 4. Select the batch you just created 5. Add one or more actions — see the examples below for ideas 6. Set the recipe to **Live** ![](https://www.uncannyowl.com/wp-content/uploads/2026/06/Automator-Codes-Trigger.png "Automator Codes Trigger - Uncanny Owl") #### 3. Set Up a Redemption Method Choose how users will enter their codes: - **Standalone redemption page** — Add the `[uo_user_redeem_code]` shortcode to any page. Best for existing logged-in users. See [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/). - **Registration form** — Add an Uncanny Code field to a Gravity Forms, WPForms, or Formidable Forms registration form. Best for new user registration. See [Setting Up Code Redemption Forms](KB_LINK). - **WooCommerce checkout** — Enable the code field on the checkout page. Best when codes are tied to a product purchase. See [Redeem Codes During WooCommerce Checkout](https://www.uncannyowl.com/knowledge-base/using-codes-woocommerce/). #### 4. Distribute and Test Generate your codes, distribute them to users, and test the full flow: enter a code, verify the Automator recipe fires, and confirm the actions complete successfully. ### Example Use Cases Here are some common scenarios where Codes + Automator replaces what would otherwise require custom development or manual processes. #### Assign a WordPress Role **Scenario:** You sell premium memberships and want to upgrade a user’s role when they redeem a code. **Automator recipe:** - **Trigger:** A user redeems a code from the “Premium Membership” batch - **Action:** WordPress > Change the user’s role to Subscriber/Editor/Custom Role This is useful for membership sites, gated content areas, or any site where user roles control access. #### Add to a BuddyBoss or BuddyPress Group **Scenario:** You run a community site and want to grant group access via codes. **Automator recipe:** - **Trigger:** A user redeems a code from the “Community Access” batch - **Action:** BuddyBoss > Add the user to a group #### Tag a Contact in Your CRM **Scenario:** You distribute codes at events and want to tag attendees in your CRM when they redeem. **Automator recipe:** - **Trigger:** A user redeems a code from the “Conference 2026” batch - **Action:** ActiveCampaign/HubSpot/Mailchimp > Add a tag to the contact #### Send a Custom Email **Scenario:** You want to send a personalized welcome email with specific instructions when a code is redeemed. **Automator recipe:** - **Trigger:** A user redeems a code from any batch - **Action:** Automator > Send an email to the user (with custom subject, body, and tokens for personalization) #### Grant WooCommerce Product Access **Scenario:** You want codes that unlock access to a downloadable product or subscription. **Automator recipe:** - **Trigger:** A user redeems a code from the “Product Unlock” batch - **Action:** WooCommerce > Create an order for the user (or add them to a membership via WooCommerce Memberships) #### Multi-Action Workflow **Scenario:** A single code redemption should trigger several things at once. **Automator recipe:** - **Trigger:** A user redeems a code from the “Onboarding” batch - **Action 1:** WordPress > Change user role to “Member” - **Action 2:** BuddyBoss > Add user to the “New Members” group - **Action 3:** Automator > Send a welcome email - **Action 4:** ActiveCampaign > Add the “Onboarded” tag - **Action 5:** Slack > Send a notification to the [\#new-members](#new-members) channel This is the real power of the Automator integration: a single code redemption can orchestrate a complex onboarding workflow across multiple platforms. ### Selling Automator-Type Codes via WooCommerce You can sell Automator-type codes as WooCommerce products, just like LearnDash-type codes. The setup is the same — create a code product, link it to an Automator batch, and customers receive codes on purchase. See [Sell Code Batches as WooCommerce Products](https://www.uncannyowl.com/knowledge-base/sell-uncanny-codes/) for the full setup guide. The difference is in what happens when the code is redeemed: instead of enrolling the user in a course, the redemption fires your Automator recipe. ### Related Articles - [Getting Started with Uncanny Codes](KB_LINK) — Overview of all Codes workflows - [Connecting Codes to Uncanny Automator](https://www.uncannyowl.com/knowledge-base/connect-codes-to-uncanny-automator/) — Basic setup guide - [Codes + Automator: Advanced Workflows](KB_LINK) — More recipe examples and advanced patterns - [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/) — Add a redemption form to any page - [Sell Code Batches as WooCommerce Products](https://www.uncannyowl.com/knowledge-base/sell-uncanny-codes/) — Sell codes through WooCommerce **Article Categories:** Uncanny Redemption Codes --- ### [Setting Up Code Redemption Forms](https://www.uncannyowl.com/knowledge-base/setting-up-code-redemption-forms/) **Published:** June 3, 2026 **Author:** David Chambo **Content:** ### Overview Uncanny Codes integrates with several popular WordPress form plugins so that users can redeem a code during registration. This is the most common setup: a new user visits your registration form, enters a code alongside their account details, and upon submission they are both registered and enrolled in the course or group linked to that code. This article explains the shared setup concepts that apply to all form plugins, then walks through the specific configuration for each supported plugin. ### How Form-Based Redemption Works Regardless of which form plugin you use, the process follows the same pattern: 1. You create a registration form using your form plugin. 2. You add an **Uncanny Code** field to the form. 3. When the form is submitted, Uncanny Codes validates the code, registers the user (via the form plugin’s user registration feature), and enrolls them in the associated courses or groups. The code field is validated before the form submission completes. If the code is invalid, expired, or already used, the user sees an error and the form is not submitted. ### Before You Start These prerequisites apply to all form plugin integrations: - **Uncanny Redemption Codes** must be installed and activated with a valid license. - Your form plugin must be installed and configured for **user registration** (not just contact forms). Most form plugins offer user registration as an add-on or built-in feature. - You need at least one **code batch** already generated. See [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/). - If your form plugin supports **User Activation** (email verification), be aware that the code will not be redeemed until the user completes the activation step. This is by design — it prevents codes from being consumed by abandoned registrations. ### Gravity Forms **Requirements:** [Gravity Forms](https://www.gravityforms.com/) + [User Registration Add-on](https://www.gravityhelp.com/documentation/category/user-registration-add-on/) #### Setup 1. Create a new form in Gravity Forms or edit an existing registration form. 2. In the form editor, look for the **Uncanny Code** field under the **Advanced Fields** section. Drag it into your form. 3. Configure the User Registration feed to create a new user on form submission. See the [Gravity Forms User Registration documentation](https://www.gravityhelp.com/documentation/category/user-registration-add-on/) for details. 4. Publish the form on a page using the Gravity Forms block or shortcode. ![](https://www.uncannyowl.com/wp-content/uploads/2026/06/Gravity-Forms-Uncanny-Code-1030x435.png "Gravity Forms - Uncanny Code - Uncanny Owl") #### Notes - If **User Activation** is enabled in your User Registration feed settings, the code will not be redeemed until the user clicks the activation link in their email. - As of Uncanny Codes v5.0, code redemption with Gravity Forms uses the `gf_pre_handle_confirmation` hook for improved reliability. #### Optional Settings Navigate to **Uncanny Codes > Settings** and select your Gravity Forms registration form from the drop-down. This enables optional label customization for the code field. ### WPForms **Requirements:** [WPForms](https://wpforms.com/) + [User Registration addon](https://wpforms.com/addons/user-registration-addon/) #### Setup 1. Create a new form or edit an existing registration form in WPForms. 2. In the form builder, look for the **Uncanny Code** field under the **Standard Fields** section. Add it to your form. 3. Configure the User Registration settings for the form. See the [WPForms User Registration documentation](https://wpforms.com/docs/how-to-install-and-use-user-registration-addon-with-wpforms/) for details. 4. Embed the form on a page using the WPForms block or shortcode. ![](https://www.uncannyowl.com/wp-content/uploads/2026/06/WP-Forms-Uncanny-Codes.png "WP Forms - Uncanny Codes - Uncanny Owl") #### Notes - WPForms Lite does not support user registration. You need WPForms Pro or higher with the User Registration addon installed. ### Formidable Forms **Requirements:** [Formidable Forms](https://formidableforms.com/) + [User Registration addon](https://formidableforms.com/knowledgebase/user-registration/) #### Setup 1. Create a new form or edit an existing registration form in Formidable Forms. 2. In the form builder, find the **Uncanny Code** field and add it to your form. 3. Configure the User Registration action for the form. See the [Formidable Forms User Registration documentation](https://formidableforms.com/knowledgebase/user-registration/) for setup details. 4. Add the form to a page using the Formidable shortcode or block. ![](https://www.uncannyowl.com/wp-content/uploads/2026/06/Formidable-Forms-Uncanny-Codes-1030x436.png "Formidable Forms - Uncanny Codes - Uncanny Owl") ### Built-In Registration Form Uncanny Codes includes a built-in registration shortcode that doesn’t require a third-party form plugin. This is the simplest option if you don’t already use a form builder. **Requirements:** None — this is included with Uncanny Codes. #### Setup 1. Add the registration shortcode to any page: `[uo_code_registration]` **Block name:** Code Registration Form 2. The form includes fields for username, email, password, and the code field. 3. Optionally configure **Terms & Conditions** under **Uncanny Codes > Settings**. If text is entered in the Terms & Conditions field, a checkbox will appear on the registration form requiring users to accept before they can register. ![](https://www.uncannyowl.com/wp-content/uploads/2026/06/Uncanny-Codes-built-in-reg-form-1030x886.png "Uncanny Codes - built in reg form - Uncanny Owl") #### Notes - This shortcode creates a full registration form. It is intended for new users who do not yet have accounts. - For existing logged-in users who need to redeem codes, use the [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/) shortcode instead. ### Theme My Login **Requirements:** [Theme My Login](https://developer.developer.developer.developer.developer.developer/) plugin #### Setup 1. Install and activate the Theme My Login plugin. 2. Uncanny Codes automatically adds a code field to the Theme My Login registration form when both plugins are active. 3. No additional configuration is needed — the code field will appear on the registration form. ![](https://www.uncannyowl.com/wp-content/uploads/2026/06/TML-Uncanny-Codes-1030x957.png "TML - Uncanny Codes - Uncanny Owl") #### Notes - Theme My Login replaces the default WordPress login and registration pages with theme-integrated versions. The Uncanny Code field integrates into these custom forms automatically. - Make sure Theme My Login’s registration page is accessible and that user registration is enabled in **Settings > General** in WordPress. ### Which Form Plugin Should I Use? If you’re not sure which form plugin to use for code redemption, here’s a quick guide: OptionBest ForCost**Built-In Registration**Simple setups with no existing form plugin; quick deploymentFree (included with Uncanny Codes)**Gravity Forms**Sites already using Gravity Forms; complex forms with conditional logicPaid (requires GF + User Registration addon)**WPForms**Sites already using WPForms; user-friendly form builderPaid (requires WPForms Pro + User Registration addon)**Formidable Forms**Sites already using Formidable; advanced form featuresPaid (requires Formidable + User Registration addon)**Theme My Login**Sites using Theme My Login for custom login/registration pagesFree pluginIf you only need code redemption for existing users (not new registrations), skip all of the above and use the [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/) shortcode instead. ### Related Articles - [Getting Started with Uncanny Codes](KB_LINK) - [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/) — For existing users to redeem codes without registration - [Set up Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/) — Plugin installation and settings - [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/) — Create code batches - [Troubleshooting & FAQ](KB_LINK) — Common issues and solutions **Article Categories:** Uncanny Redemption Codes --- ### [Troubleshooting & FAQ](https://www.uncannyowl.com/knowledge-base/troubleshooting-faq/) **Published:** June 3, 2026 **Author:** David Chambo **Content:** Overview This article covers common issues and frequently asked questions about Uncanny Redemption Codes. If you’re experiencing a problem, check through the sections below before submitting a support ticket — many issues have straightforward solutions. ### Common Issues #### Codes show as “invalid” when users try to redeem them This is the most common issue and usually has one of these causes: - **The code has already been redeemed.** If the code is configured for single use and has already been redeemed by another user (or the same user), it will show as invalid. Check the code’s status on the **View Codes** page under **Uncanny Codes > View Codes**. - **The code has been cancelled.** Cancelled codes cannot be redeemed. Check whether the code was manually cancelled by an administrator. - **The code batch type doesn’t match the redemption method.** Codes generated as “Automator” type batches can only be sold through WooCommerce, not redeemed through registration or standalone forms. Make sure the batch type matches your intended distribution method. - **Copy/paste whitespace.** Users sometimes accidentally copy leading or trailing whitespace when pasting a code. The plugin trims whitespace, but unusual characters (such as non-breaking spaces) can cause validation failures. - **The code belongs to a different site.** If you’re running a multisite network, codes are site-specific. A code generated on one site cannot be redeemed on another. #### User is not enrolled after redeeming a code If a user successfully redeems a code but doesn’t appear to be enrolled in the expected course or group: - **User Activation is enabled on the registration form.** If you use a form plugin (Gravity Forms, WPForms, etc.) with User Activation or email verification enabled, the code is not redeemed until the user activates their account via the confirmation email. Check whether the user has completed the activation step. - **The code grants group access, not direct course access.** If the code is linked to a LearnDash Group, the user is added to the group — but they only gain course access if courses are assigned to that group. Verify the group configuration in **LearnDash > Groups**. - **Caching.** If your site uses object caching or a page cache plugin, the user’s enrollment status may not appear immediately. Have the user log out and back in, or clear the cache. #### Codes are not being assigned to WooCommerce orders If customers purchase a code product but don’t receive codes: - **WooCommerce order status.** Codes are linked to an order when it is created, but the completion email (which includes the codes) is only sent when the order status changes to **Completed**. Enable the **Autocomplete orders** setting under **Uncanny Codes > Settings** to automatically complete orders that contain code products. - **Code batch is exhausted.** If all codes in the linked batch have been assigned or redeemed, new orders will not receive codes. Check the **Available Codes** count on the product edit page. - **WP Engine “Allow Order by RAND()”** setting. If your site is hosted on WP Engine, the “Allow Order by RAND()” setting must be enabled in the WP Engine control panel. If it’s off, codes will not be associated with orders properly. #### Redemption form doesn’t appear on the page If the `[uo_user_redeem_code]` shortcode or block doesn’t render on the page: - **The user is not logged in.** The standalone redemption shortcode only displays for logged-in users. If you need anonymous users to redeem codes, use a registration form integration instead. - **Plugin is not activated.** Verify that Uncanny Redemption Codes is installed and activated under **Plugins** in wp-admin. - **Theme or plugin conflict.** Try switching to a default WordPress theme (e.g., Twenty Twenty-Four) to rule out a theme conflict. Deactivate other plugins one by one to identify any conflicts. #### User already enrolled — code is wasted As of Uncanny Codes v5.0, the plugin checks whether a user is already enrolled in the course or group associated with a code before processing the redemption. If the user already has access, the code is not consumed and the user sees a message indicating they’re already enrolled. If you’re on an older version, codes could be redeemed even if the user was already enrolled, effectively wasting the code. We recommend updating to v5.0 or later to benefit from this validation. ### Frequently Asked Questions #### Can I use the same code batch with multiple WooCommerce products? No. Each code batch can only be linked to one WooCommerce product. This restriction exists to prevent inventory tracking issues — if multiple products shared the same batch, the available code count would be unreliable. Create separate batches for each product. #### Can codes be redeemed more than once? It depends on how the batch was configured. When generating a batch, you can specify the number of times each code can be redeemed. If set to 1 (the default), each code can only be used once. If set to a higher number, the same code can be redeemed by multiple users up to that limit. > **Note:** Codes in batches that allow multiple redemptions per code cannot be sold through WooCommerce. #### Can I change what a code grants access to after it’s been created? The courses and groups associated with a code are set at the batch level when the batch is created. You cannot change the association for individual codes after generation. To change what access is granted, you would need to create a new batch with the updated configuration. #### How do I translate the redemption form text? The plugin’s strings are translation-ready. You can use a translation plugin like [Loco Translate](https://wordpress.org/plugins/loco-translate/) to modify any text strings, including form labels, button text, and error messages. You can also customize some messages directly from the **Uncanny Codes > Settings** page. #### Can I set codes to expire? Code expiration is managed at the batch level. When generating a batch, you can set an expiration date. After the expiration date, codes in the batch can no longer be redeemed. Individual code dates can also be modified as of v5.0 — see [Viewing and Editing Codes](https://www.uncannyowl.com/knowledge-base/view-codes/). #### What happens when a user who redeemed a code is deleted? The code’s redemption record is preserved, and the **Redeemed** column on the View Codes page shows a **“Deleted User”** label instead of the username. The code is still marked as redeemed and cannot be reused unless manually reset by an administrator. #### Can I import codes from an external system? Yes. In addition to generating codes within the plugin, you can add existing codes to a batch manually. See [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/) for details on adding codes to a batch. ### Getting Help If your issue isn’t covered above, you can submit a support ticket through your [Uncanny Owl account](https://www.uncannyowl.com/my-account/). When submitting a ticket, please include: - Your Uncanny Codes plugin version (found under **Plugins** in wp-admin) - The WordPress version and PHP version - Steps to reproduce the issue - Any error messages you’re seeing - The code string(s) affected, if applicable ### Related Articles - [Set up Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/) - [Getting Started with Uncanny Codes](KB_LINK) - [Viewing and Editing Codes](https://www.uncannyowl.com/knowledge-base/view-codes/) - [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/) - [Selling Codes with WooCommerce](https://www.uncannyowl.com/knowledge-base/sell-uncanny-codes/) **Article Categories:** Uncanny Redemption Codes --- ### [Developer Hooks & Filters Reference](https://www.uncannyowl.com/knowledge-base/developer-hooks-filters-reference/) **Published:** June 3, 2026 **Author:** David Chambo **Content:** ### Overview Uncanny Redemption Codes provides a number of action hooks and filters that allow developers to extend and customize the plugin’s behavior. This reference documents the available hooks, their parameters, and example usage. > **Note:** No support is provided for the use of developer hooks and filters. Use them at your own risk and always test thoroughly in a staging environment before deploying to production. ### Action Hooks Action hooks allow you to execute custom code at specific points during the code lifecycle — such as before or after a code is redeemed, when a batch is generated, or when access is granted. #### uo\_codes\_after\_redeem Fires after a code has been successfully redeemed by a user. Use this to trigger custom logic after enrollment is complete — for example, logging the redemption, sending a notification, or updating an external system. ``` /** * Log code redemptions to an external system. * * @param int $user_id The ID of the user who redeemed the code. * @param string $code The code string that was redeemed. * @param int $batch_id The batch ID the code belongs to. */ add_action( 'uo_codes_after_redeem', function( $user_id, $code, $batch_id ) { // Example: log the redemption error_log( sprintf( 'User %d redeemed code %s from batch %d', $user_id, $code, $batch_id ) ); }, 10, 3 ); ``` #### uo\_codes\_before\_redeem Fires before a code is redeemed, after validation has passed but before enrollment is processed. Use this to add pre-redemption checks or modify behavior. ``` /** * Perform a custom check before code redemption. * * @param int $user_id The ID of the user attempting to redeem. * @param string $code The code string being redeemed. * @param int $batch_id The batch ID the code belongs to. */ add_action( 'uo_codes_before_redeem', function( $user_id, $code, $batch_id ) { // Custom pre-redemption logic }, 10, 3 ); ``` #### uo\_codes\_access\_removed Fires when a user’s code-based access is removed (e.g., via the `[uo_self_remove_access]` shortcode or admin action). ``` /** * Notify when access is removed. * * @param int $user_id The ID of the user whose access was removed. */ add_action( 'uo_codes_access_removed', function( $user_id ) { // Custom logic after access removal }, 10, 1 ); ``` ### Filters Filters allow you to modify data as it passes through the plugin — such as customizing validation messages, modifying the redemption form output, or altering code data before it is saved. #### uo\_codes\_validate\_code Filter the validation result for a code before it is redeemed. Return a `WP_Error` object to prevent redemption with a custom error message, or return `true` to allow it. ``` /** * Add custom validation before a code can be redeemed. * * @param bool|WP_Error $valid Whether the code is valid (true) or an error. * @param string $code The code string being validated. * @param int $user_id The user attempting to redeem. * @return bool|WP_Error */ add_filter( 'uo_codes_validate_code', function( $valid, $code, $user_id ) { // Example: restrict redemption to users with a specific role $user = get_user_by( 'id', $user_id ); if ( ! in_array( 'subscriber', $user->roles, true ) ) { return new WP_Error( 'role_mismatch', 'Only subscribers can redeem codes.' ); } return $valid; }, 10, 3 ); ``` #### uo\_codes\_redemption\_message Filter the success message displayed after a code is successfully redeemed. ``` /** * Customize the redemption success message. * * @param string $message The default success message. * @param string $code The code that was redeemed. * @param int $user_id The user who redeemed the code. * @return string */ add_filter( 'uo_codes_redemption_message', function( $message, $code, $user_id ) { return 'Welcome! Your code has been applied and your access is now active.'; }, 10, 3 ); ``` #### uo\_codes\_error\_message Filter the error message displayed when a code cannot be redeemed (invalid, expired, already used, etc.). ``` /** * Customize code error messages. * * @param string $message The default error message. * @param string $error_type The type of error (e.g., 'invalid', 'expired', 'already_redeemed'). * @param string $code The code that failed validation. * @return string */ add_filter( 'uo_codes_error_message', function( $message, $error_type, $code ) { if ( 'already_redeemed' === $error_type ) { return 'This code has already been used. Please contact support if you need assistance.'; } return $message; }, 10, 3 ); ``` #### uo\_codes\_csv\_columns Filter the columns included in the CSV download from the View Codes page. Use this to add custom columns or remove default ones. ``` /** * Add a custom column to the CSV download. * * @param array $columns The default CSV columns (key => label). * @return array */ add_filter( 'uo_codes_csv_columns', function( $columns ) { $columns['custom_field'] = 'Custom Field'; return $columns; } ); ``` #### uo\_codes\_csv\_row\_data Filter the data for each row in the CSV download. Use alongside `uo_codes_csv_columns` to populate custom column data. ``` /** * Populate data for a custom CSV column. * * @param array $row_data The data for the current row. * @param object $code The code object. * @return array */ add_filter( 'uo_codes_csv_row_data', function( $row_data, $code ) { $row_data['custom_field'] = get_post_meta( $code->batch_id, 'custom_value', true ); return $row_data; }, 10, 2 ); ``` #### uo\_codes\_form\_output Filter the HTML output of the code redemption form rendered by the `[uo_user_redeem_code]` shortcode. ``` /** * Add a wrapper div around the redemption form. * * @param string $html The default form HTML. * @return string */ add_filter( 'uo_codes_form_output', function( $html ) { return '' . $html . ''; } ); ``` ### Template Overrides In addition to hooks and filters, you can customize the appearance of code forms by overriding template files. Copy the template file from the plugin directory to your theme: **From:** `wp-content/plugins/uncanny-learndash-codes/templates/` **To:** `wp-content/themes/yourtheme/uncanny-codes/` The copied file will override the default template. See [Template Overrides](https://www.uncannyowl.com/knowledge-base/template-overrides/) for more details. > **Warning:** Do not edit template files within the plugin directory, as they will be overwritten on plugin update. ### Related Articles - [Set up Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/) - [Template Overrides](https://www.uncannyowl.com/knowledge-base/template-overrides/) - [Connecting codes to Uncanny Automator](https://www.uncannyowl.com/knowledge-base/connect-codes-to-uncanny-automator/) - [Getting Started with Uncanny Codes](KB_LINK) **Article Categories:** Uncanny Redemption Codes --- ### [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/) **Published:** November 26, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to display a form that enables existing users to self-enroll into LearnDash courses and groups. **Content:** ### Overview Signed-in users can redeem group or course codes from anywhere on a LearnDash site by using the Redemption shortcode or Gutenberg block. This provides a simple way for existing users to enter a code and gain access to the associated course or group without needing to go through a registration form. ### Redemption Shortcode Signed-in users can redeem group or course codes from anywhere on a LearnDash site by using the Redemption shortcode or Gutenberg block. This provides a simple way for existing users to enter a code and gain access to the associated course or group without needing to go through a registration form. ### Shortcode/Block ``` [uo_user_redeem_code redirect="" check_only="no"] ``` Block Name: **User Redeem Code** The shortcode or block can be added to any page. It displays a simple form where logged-in users can enter a code to redeem it. AttributeDescriptionValuesDefault`redirect`URL to redirect the user to after successful redemptionAny valid URLEmpty (stays on current page)`check_only`When set to “yes”, the system will check whether the code is valid but **will not redeem it**. Useful for verifying codes before committing.`yes` or `no``no`[![Redeem and remove access buttons](https://www.uncannyowl.com/wp-content/uploads/2019/02/redemption-and-remove-buttons.png "redemption-and-remove-buttons - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/02/redemption-and-remove-buttons.png)### LearnDash Enrollment Validation *(New in v5.0)* When a user attempts to redeem a code that would enroll them in a LearnDash course or group, the plugin now checks whether the user is **already enrolled** before processing the redemption. If the user is already enrolled in the course or group associated with the code, the redemption is blocked and the user sees a message indicating they already have access. This prevents users from accidentally wasting codes on courses or groups they already belong to, which is especially useful in scenarios where codes are purchased or distributed in limited quantities. Previously, a code could be redeemed even if the user was already enrolled, consuming the code without providing any additional benefit. ### Access Removal Shortcode To remove access, the plugin also includes a Access Removal shortcode. This shortcode adds a button that, when clicked, removes *all access* to courses and groups for the user. This button should be used very carefully. ### Shortcode ``` [uo_self_remove_access] ``` **Note:** This shortcode removes all code-based access at once — it does not allow selective removal of individual course or group enrollments. Use with caution and make sure users understand the implications before clicking the button. ### Related Articles - [Set up Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/) - [Using Codes with Gravity Forms](https://www.uncannyowl.com/knowledge-base/using-codes-gravity-forms/) - [Using Codes with WPForms](https://www.uncannyowl.com/knowledge-base/using-codes-with-wpforms/) - [Using Codes With the Built-In Registration Form](https://www.uncannyowl.com/knowledge-base/using-codes-custom-registration-form/) - [Viewing and Editing Codes](https://www.uncannyowl.com/knowledge-base/view-codes/) **Article Categories:** Uncanny Redemption Codes --- ### [Redeem Codes During WooCommerce Checkout](https://www.uncannyowl.com/knowledge-base/redeem-codes-woocommerce/) **Published:** December 1, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to use coupon codes with WooCommerce to enroll users in LearnDash courses. **Content:** ### Overview Uncanny Codes can add a code redemption field directly to the WooCommerce checkout page. This allows customers to enter a code while purchasing a product, so that their code is redeemed as part of the checkout process. This is particularly useful for enrolling users in LearnDash Groups at the point of purchase, since the native LearnDash WooCommerce integration only supports adding users to courses — not groups. ![](https://www.uncannyowl.com/wp-content/uploads/2016/12/enter-registration-code-1030x355.png "enter registration code - Uncanny Owl") ### How It Works Once the Uncanny Redemption Codes plugin is activated, a new **Require LearnDash Code** checkbox is automatically added to the **Product data** section of all WooCommerce products. When this checkbox is enabled on a product: 1. A code redemption field is added to the WooCommerce checkout page whenever that product is in the cart. 2. The customer must enter a valid code to complete the purchase. 3. Upon successful checkout, the code is redeemed and the customer is enrolled in the associated course or group. > **Important:** Only one code can be redeemed per checkout. If a customer is purchasing multiple products, only one code field is displayed. For this reason, we recommend mapping a single code to multiple courses or groups rather than requiring users to redeem separate codes for each. ### Setup To enable code redemption on the WooCommerce checkout page: 1. Navigate to **Products** in your WooCommerce admin and edit the product you want to require a code for (or create a new product). 2. In the **Product data** section, locate the **Require LearnDash Code** checkbox. 3. Check the box to enable the code field at checkout for this product. 4. **Publish** or **Update** the product. That’s it — the code field will now appear on the checkout page whenever this product is in the customer’s cart. ### LearnDash Enrollment Validation *(New in v5.0)* As of Uncanny Codes v5.0, the plugin validates whether the customer is already enrolled in the course or group associated with the code before allowing redemption at checkout. If the customer already has access, the checkout will display a message indicating they are already enrolled, and the code will not be consumed. This prevents customers from accidentally using codes for access they already have, which is especially valuable when codes are purchased or distributed in limited quantities. ### Usage Tips - **Best for group enrollment.** This feature is most useful when you want to combine a WooCommerce product purchase with LearnDash Group enrollment. The native LearnDash WooCommerce integration doesn’t support group enrollment at checkout, but Uncanny Codes fills that gap. - **One code per order.** Only one code can be redeemed per checkout. If you need to grant access to multiple courses or groups, create a single code that maps to all of them. - **The code field appears for all products with the checkbox.** If any product in the cart has the **Require LearnDash Code** checkbox enabled, the code field will appear at checkout. Make sure this is intentional for each product. - **Works alongside product-based code sales.** This feature is separate from [selling code batches as WooCommerce products](https://www.uncannyowl.com/knowledge-base/sell-uncanny-codes/). You can use both features on the same site — one for selling codes and another for redeeming codes at checkout. ### Related Articles - [Sell Code Batches as WooCommerce Products](https://www.uncannyowl.com/knowledge-base/sell-uncanny-codes/) — How to sell code batches as purchasable WooCommerce products - [Set up Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/) — Plugin installation and settings - [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/) — Let existing users redeem codes from any page - [Troubleshooting & FAQ](KB_LINK) — Common issues and solutions - [Getting Started with Uncanny Codes](KB_LINK) — Overview of all code distribution workflows **Article Categories:** Uncanny Redemption Codes --- ### [Sell Code Batches as WooCommerce Products](https://www.uncannyowl.com/knowledge-base/sell-uncanny-codes/) **Published:** March 14, 2021 **Author:** Ryan Moore **Content:** ### Overview Uncanny Codes allows you to sell codes directly to customers. This means administrators can generate large batches of codes, associate a product with those codes, and when users purchase the product they receive the codes for use by themselves or other people. This functionality is useful as a substitute for gift cards, promotional gifts, selling accounts to organizations, or really anything where codes grant access to something. ### Set Up WooCommerce Products for Code Sales Selling codes requires the use of WooCommerce, the most widely used ecommerce plugin for WordPress. WooCommerce must be configured before codes can be sold. To set up a WooCommerce product to sell codes to end users: 1. Generate the code batch you want to sell before creating a new product. 2. In the **Products** menu for WooCommerce in `/wp-admin/`, choose **Add New** to create a new product. 3. Set up the product as you normally would for other WooCommerce products. See the [WooCommerce documentation on managing products](https://docs.woocommerce.com/document/managing-products/) for additional help. In the **Product data** drop-down list, choose **Codes for Uncanny Automator**. 4. Make sure you set a **Regular price** for each code. The user will be charged this times the number of codes (the quantity) that they purchase. 5. In the **Code batch** field, choose the name of the batch that you want to link to the product. When users buy the product, they will be assigned codes from this batch. 6. Publish the product so that it is available for users to purchase. > **Note:** If you don’t see the batch that you want to use, it could be because of one of these 3 things: the batch is not an Automator type, codes in the batch allow more than one redemption per code, or the batch is already mapped to another product. You cannot add a batch to more than one product because it would create issues with inventory tracking. The values for **Total codes**, **Available Codes** and **Stock quantity** are not editable. These values are calculated automatically based on the number of codes available. ![](https://www.uncannyowl.com/wp-content/uploads/2021/03/Codes-For-Automator-product-1030x558.png "Codes For Automator product - Uncanny Owl") ### Tax Configuration *(New in v4.4)* The **Codes for Uncanny Automator** product type now supports WooCommerce **Tax Status** and **Tax Classes**. This allows you to configure tax settings for code products just as you would for any other WooCommerce product. To configure tax settings for a code product: 1. Navigate to the product edit page for your code product 2. In the **Product data** panel, locate the **Tax Status** and **Tax Class** fields 3. Set **Tax Status** to **Taxable**, **Shipping only**, or **None** as appropriate 4. If taxable, select the appropriate **Tax Class** (Standard, Reduced Rate, Zero Rate, or any custom tax classes you have configured) 5. Click **Update** to save the product > **Note:** You must have WooCommerce tax settings enabled under **WooCommerce > Settings > General** for the tax fields to appear. See the [WooCommerce tax documentation](https://docs.woocommerce.com/document/setting-up-taxes-in-woocommerce/) for more information on configuring taxes. ### Buying codes as a WooCommerce customer Code products are purchased in the same way as other WooCommerce products, but we highly recommend you autocomplete orders that include codes (see the WooCommerce settings in [Set up Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/#Settings) for more information). This is because codes from a batch are linked to an order as soon as the order is created and are no longer available for sale to other customers. When a “Codes for Uncanny Automator” product is purchased, the customer buying the product is sent the WooCommerce order completion email, which will include a copy of the purchased codes in plain text and in a CSV attachment. The customer also has access to code details (including an indicator of whether or not the code has been redeemed) on the order details page under the WooCommerce **My Account** area. [![WooCommerce codes in My Account](https://www.uncannyowl.com/wp-content/uploads/2021/03/WooCommerce_codes_for_sale.png "WooCommerce_codes_for_sale - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/03/WooCommerce_codes_for_sale.png)### Order Codes Metabox *(New in v4.4)* When viewing an order that includes code products, a new **Order Codes** metabox is now displayed on the WooCommerce **Edit Order** page in the admin. This metabox provides administrators with a quick overview of the codes associated with the order. ![](https://www.uncannyowl.com/wp-content/uploads/2021/03/codes-associated-with-woo-order.png "codes associated with woo order - Uncanny Owl") ### Important notes While the code sale process is straightforward, keeping a few best practices in mind will make selling codes with WooCommerce far easier to manage: 1. If you map a code batch to a product, make those codes only available for purchasers of the product. It’s not a good idea to also distribute codes that you plan to sell; in other words, if you’re selling codes, don’t also retrieve them from the View Codes page and then share them with other users. 2. Any WooCommerce plugins that support custom pricing and quantity rules will work with our code products. This means you can sell codes only in quantities of 100 if you want, or offer discounts if someone buys 10 or more codes. 3. You must set up a way for users to redeem the codes that you sell. Make sure you set up a [registration form](https://www.uncannyowl.com/knowledge-base/using-codes-custom-registration-form/) or [redemption form](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/), as appropriate, and that buyers of your codes are given instructions so they know how to redeem them. ### Related Articles - [Standalone Code Redemption](https://www.uncannyowl.com/knowledge-base/standalone-code-redemption/) - [Set up Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/) - [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/) - [Viewing and Editing Codes](https://www.uncannyowl.com/knowledge-base/view-codes/) - [Redeem Codes During WooCommerce Checkout](https://www.uncannyowl.com/knowledge-base/using-codes-woocommerce/) **Article Categories:** Uncanny Redemption Codes --- ### [Viewing and Editing Codes](https://www.uncannyowl.com/knowledge-base/view-codes/) **Published:** November 25, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to view LearnDash enrollment codes and associated information, including the users that redeemed them and the date they were redeemed. **Content:** ### Overview The **View Codes** page in the WordPress admin lets you see all codes in a batch, check their status, and make changes to individual codes. You can access it by navigating to **Uncanny Codes > View Codes** and selecting a batch from the drop-down list. ### Viewing Codes When you select a batch, the View Codes page displays a table listing every code in that batch. The table includes the following columns: - **Action** — Provides options to edit or cancel individual codes. - **Code Name** — The unique code string. - **Code Type** — The type of code (e.g., Automator, Group, Course)\*. - **Status** — Whether the code is available, redeemed, or cancelled. - **Redeemed** — Shows who redeemed the code and when, if applicable. \*For most sites, Automator will be the most common code type, as its integration with [Uncanny Automator](https://automatorplugin.com) offers the most flexibility for code redemption. ### Refreshed Admin Table UI *(Updated in v5.0)* The View Codes admin interface has been updated with a modern, refreshed table design. The new UI provides a cleaner layout with improved readability and better visual hierarchy, making it easier to scan through large batches of codes at a glance. ![](https://www.uncannyowl.com/wp-content/uploads/2016/11/Codes-new-UI-1030x501.png "Codes new UI - Uncanny Owl") ### Deleted User Label *(Added in v4.4)* If a code was redeemed by a user who has since been deleted from WordPress, the **Redeemed** column will display a **“Deleted User”** label instead of the username. This makes it easy to identify codes that were redeemed by users who no longer exist in the system, which is helpful for auditing and troubleshooting. ### Editing Codes To edit a code, click the **Edit** link in the **Action** column for the code you want to modify. This opens the code editing view where you can update code details. ### Individual Code Expiration Date Modification *(New in v5.0)* You can now modify the **expiration date** associated with individual codes directly from the editing interface. This is useful for extending or adjusting code validity, correcting dates that were set incorrectly during batch generation, or accommodating special circumstances for specific users. To modify a code’s date: 1. Navigate to **Uncanny Codes > View Codes** 2. Select the batch containing the code expiration date you want to edit 3. Click **View** on the code you want to modify 4. Click the **Edit Expiration Date** button in the row that contains the expiration date you wish to change 5. Update the date field as needed 6. Click **Save** to apply the changes ![](https://www.uncannyowl.com/wp-content/uploads/2026/05/Codes-View-Codes-1030x328.png "Codes - View Codes - Uncanny Owl") *Step 3: Click **View** on the code you want to modify* ![](https://www.uncannyowl.com/wp-content/uploads/2026/05/Codes-Edit-Expiry-Date-1030x454.png "Codes - Edit Expiry Date - Uncanny Owl") *Step 4: Click the **Edit Expiration Date** button to change date* ![](https://www.uncannyowl.com/wp-content/uploads/2026/05/Codes-Set-Expiry-Date-1030x464.png "Codes - Set Expiry Date - Uncanny Owl") *Step 5: **Update** the date and **save*** ### Downloading Code Data You can download code data as a CSV file from the View Codes page. Click the **Download CSV** button to export the batch data. ### Enhanced CSV Columns *(Added in v4.4)* The CSV download now includes additional columns for more comprehensive reporting: ColumnDescription**Status**The current status of the code (available, redeemed, cancelled)**Issue Date**The date the code was generated or added to the batch**Order ID**The WooCommerce order ID associated with the code, if the code was sold via WooCommerce**Linked Product**The WooCommerce product linked to the code batch, if applicable**Redeemed Times**The number of times the code has been redeemed (relevant for codes that allow multiple redemptions)These additional columns make it easier to generate detailed reports, reconcile code usage with WooCommerce orders, and track code lifecycle data outside of WordPress. ### Related Articles - [Set up Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/) - [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/) - [Cancelling Codes](https://www.uncannyowl.com/knowledge-base/cancelling-codes/) - [Selling Codes with WooCommerce](https://www.uncannyowl.com/knowledge-base/sell-uncanny-codes/) **Article Categories:** Uncanny Redemption Codes --- ### [Update Your Credit Card or Change Your Payment Method](https://www.uncannyowl.com/knowledge-base/update-your-credit-card-or-change-your-payment-method/) **Published:** August 19, 2025 **Author:** Ken **Content:** We support two payment methods on our checkout: Credit card (processed by Stripe) and PayPal. The steps to update your credit card varies depending on how you paid for your purchase. ### PayPal If you purchased via PayPal, then you can update your credit card by logging in at PayPal.com. - If you’re updating your credit card because your previous card is expiring, you can follow [these instructions](https://securepayments.paypal.com/ca/cshelp/article/how-do-i-update-my-debit-or-credit-card-on-paypal-help157) to update your card. - If you want to switch your subscription to a different credit card, from the *Subscriptions* page in the PayPal app or website, tap the *Manage* button to update the payment method for your subscriptions. ### Credit Card If you purchased via credit card, you can update your credit card by following these steps: 1. [Log in](https://www.uncannyowl.com/login) to your account. 2. Go to the [Purchases & Subscriptions](https://www.uncannyowl.com/my-account/invoices/) page. 3. Find the subscription for which you want to update your credit card and click *Update Payment Method*. 4. Enter your new card details and click *Update Payment Method*. ### Switching between PayPal and Credit Card Unfortunately, there is no way to automatically transfer your payment information between payment providers, so to switch from PayPal to credit card or vice versa, you’ll need to [cancel your subscription](https://www.uncannyowl.com/knowledge-base/manage-your-subscription/). When your license expires, you can renew it using the new payment method. You will receive an email two weeks before your license expires, and then immediately after expiry. Once your license has expired, you can follow these steps to renew using your new payment method: 1. [Log in](https://www.uncannyowl.com/login) to your account. 2. Go to the [Plugin licenses](https://www.uncannyowl.com/my-account/licenses/) page. 3. Find the license you wish to renew and click *Renew license*. 4. Use the new payment method to complete the purchase and reactivate your license. As always, don’t hesitate to [reach out to our support team](https://www.uncannyowl.com/my-account/submit-a-request/) if you have any questions! **Article Categories:** Your Account --- ### [Uncanny Codes - Changelog](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-codes-changelog/) **Published:** August 16, 2017 **Author:** Anthony Lucic **Excerpt:** Detailed descriptions of the changes in each release of Uncanny LearnDash Enrollment Codes. **Content:** ### 5.0 \[2025-11-13\] **New Feature:** - Added an option to modify the date for each individual code #240 **Updated:** - Implemented new, standardized Uncanny Owl admin UI theme - Updated pages with redesigned layouts and improved Codes tables - Gravity Forms – Moved code redemption to the `gf_pre_handle_confirmation` hook for improved reliability #278 - LearnDash Code Redemption – Added validation to check if the user redeeming a code is already enrolled in the course or a member of a group #292 **Fixed:** - Uncanny Codes – Resolved text domain warning on WordPress 6.7+ websites #298 - Woo – Edit Product – Fixed an issue where the Automator codes product type broke the layout in specific cases #275 - Fixed text domain path for WordPress 6.7+ compatibility #322 **Internal:** - Added `code_id` index to the usage table to optimize database operations on large datasets #290 - Updated Uncanny Owl logo --- ### 4.4.0.1 \[2024-10-02\] **Fix:** - Woo & Automator Codes – Additional validation to avoid PHP Error when order is not valid #265 --- ### 4.4 \[2024-05-17\] **Addition:** - Woo – Edit order page – Show order codes in a side metabox #250 **Updated:** - Automator Codes & Woo – Allow Tax Status and Classes for the product type #245 - Download Codes – Added Status, Issue Date, Order ID, Linked Product & Redeemed Times columns #253 - View/Download Codes – Show “Deleted User” if the user no longer exists #242 **Fixed:** - Automator Codes & Woo – Blank CSV file is erroneously attaching to Woo order emails #231 - Automator Codes & Woo – PHP error related when an invalid product ID is passed #229 - User Registration – Remove extra white spaces in the registration fields #234 - View Codes – Improved redemption count #262 **Under the hood:** - Licensing – Allow plugin to be pre-activated by defining `UNCANNY_CODES_LICENSE_KEY` in `wp-config.php` #256 - Licensing endpoint updated #255 - License moved under Settings #255 ### 4.3.0.1 \[2023-11-09\] **Fixed:** - Gravity Forms – Code field showing incorrect error message #222 - Blocks – Removed `lodash` dependency for WordPress v6.4+ #224 --- ### 4.3 \[2023-10-19\] **New Feature:** - Replace, Cancel and Delete individual codes #213 **Updated:** - Uncanny Automator – Creating an order via an Uncanny Automator action now correctly assigns relevant codes #212 - Improved PHP 8.2 compatibility #210 **Fixed:** - Fluent Forms with Codes field – Not mapping a user to the group on registration #206 - Theme My Login – Settings not working #200 **Developers:** - Registration Form – Added WP Filter `ulc_registration_min_password_length` to set minlegth to a larger number #198 - Added WP filter `uncanny_codes_htaccess_folder_protection` to disable .htaccess protection for codes folder #196 --- ### 4.2.1 \[2023-04-14\] **Added:** - View codes – add “Order ID” column and show the associated Woo order for Automator codes that were sold #183 - Purchased Codes – WordPress filter `ulc_wc_email_codes_table_position_order_table` added to either show purchased codes before or after order details #179 - Added `ulc_codes_csv_filename` filter to change Codes CSV file name #168 **Updated:** - Change logic to load static assets on fewer pages #171 **Fixed:** - WooCommerce – Edit Product – jQuery Dependency issue #176 - Codes – Invalid Code not showing custom message #165 - Gravity Forms – Code redemption field not working when create a new user feed is added #187 - Automator 1-click installer nonce validation #173 --- ### 4.2.0.1 \[2022-11-17\] **Fixed:** - CSV filename sanitization #152 - Fix DB query issue related to unique code process #149 **Internal:** - Add in plugin notifications #154 --- ### 4.2 \[2022-09-01\] **Added:** - Ability to cancel codes: Upload and cancel codes via CSV #109 **Fixed:** - Added SQL condition to filter out non-zero user ids #145 --- ### 4.1.1 \[2022-08-11\] **Added:** - Gravity Forms – Code field can now be populated dynamically with a parameter in query string #140 **Developers:** - New filter: `ulc_capability` to override Codes menu permission in /wp-admin #142 - New action: `ulc_codes_group_generated` when a new code batch is created #135 --- ### [4.1](https://www.uncannyowl.com/uncanny-codes-form-integrations-and-redemption-updates/) \[2022-07-05\] **Added:** - Allow users to redeem the same code multiple times #104 - Fluent Forms – Add support for code redemption #123 - Forminator – Add support for code redemption #122 **Updated:** - Automator type codes – `ulc_code_max_usage` filter added to override coupon max usage #126 - Gravity Forms – `ulc_redeem_code_for_current_logged_in_user` filter added to optionally not redeem code when Uncanny Code field is in registration form #114 - Code redemption shortcode – Hook switched from `init` to `wp_loaded` #110 - Improved PHP 8.1+ compatibility #103 **Fixed:** - Uncanny Codes Woo product – 2x quantity of codes issued on order with multiple payment attempts #128 - View Codes – Total codes are now listed reliably #112 --- ### 4.0.4 \[2021-11-19\] **Updated:** - Changes/fixes to ticket submission data **Fixed:** - Fatal error on failed remote get #95 - Gravity Forms – Code redemption for existing users now works more reliably #96 - Divi – Add to Cart button is no longer shown above the product when using the Divi Woo Add to Cart component #92 - WooCommerce – Uncanny Codes are only sent when the associated order is Processing or Completed, not On Hold #90 - PHP notice: `block_categories` deprecated --- ### 4.0.3 \[2021-10-04\] **Fixed:** - “To use this code, enter it on the checkout page and complete your purchase.” message showing up incorrectly on code redemption in some situations #85 - Codes for Uncanny Automator product type now respects “Never show quantity remaining in stock” setting at Settings > Product > Inventory #83 - Code redemption appearing multiple times on some sites #80 --- ### 4.0.2 \[2021-04-07\] **Updated:** - Code group names can now be longer than 30 characters #59 **Fixed:** - Email: Uncanny Codes table is no longer added for all orders #58 --- ### 4.0.1 \[2021-03-22\] **Added:** - Cancel codes when related order is refunded **Updated:** - date() changed to date\_i18n() to accommodate translated dates - Styling updates - Migration of users now handled by cron - Code quality improvements **Fixed:** - PHP Warning: register\_rest\_route cannot have a slash in namespace - Paged query string when viewing code group causing unexpected issue - Unexpected code redemption data loss - select2 JavaScript conflict on some wp-admin pages - Invalid default value for ‘Date and time’ CURRENT\_TIMESTAMP mySQL error in some environments --- ### 4.0 \[2021-03-16\] **Added:** - Support for redeeming specific code batches using Uncanny Automator (Requires Automator 2.11.1 or later) - Support for selling codes via WooCommerce – New product type “Codes for Uncanny Automator” - Support for tracking available code inventory in WooCommerce - Support for code redemption via WP Forms - Support for code redemption via Formidable Forms - Names for code batches for easier assignments in WooCommerce and Automator - A shortcode attribute to check whether or not a code is valid before redeeming it **Updated:** - Code generation interface completely redesigned to be more intuitive - View codes page columns updated and layout streamlined - LearnDash plugin no longer required --- ### 3.2 \[2020-07-29\] - Added: Ability to specify character types to be included in code (lowercase letters, uppercase letters, numbers) - Updated: Code generation form reorganized to improve UX - Updated: Leading/trailing spaces are now removed from codes entered on the native registration form and manually entered codes - Updated: Added redirect attribute to \[uo\_user\_redeem\_code\] - Updated: Set list-style-type:none on \[uo\_user\_redeem\_code\] form field --- ### 3.1.2 \[2020-05-08\] - Fixed: Field labels missing on registration form --- ### 3.1.1 - Added: Filter to increase/decrease maximum character length for manually generated codes: ulc\_manual\_code\_length - Added: Action after a code is redeemed: ulc\_user\_redeemed\_code - Updated: Converted code field in database to text from varchar(30) to support longer codes - Updated: Improved string localization - Updated: Reordered wp-admin menu entries - Updated: Replaced “No coupon found” with “No codes found” on View codes page - Fixed: Removed “Dash Separation” field from Modify Codes screen --- ### 3.1 - Added: Ability to manually enter custom codes - Added: Ability to edit associated course(s)/groups(s), expiration date and uses per code of previously created codes - Added: Visual editor for “Successfully redeemed” message, to make it easier to provide users with next steps after successful code redemption - Added: Terms and conditions checkbox option for built-in registration form - Added: Filter for characters included in auto-generated codes: ulc\_code\_characters - Updated: Randomly generated codes now include lowercase letters - Updated: Clicking “Generate Codes” with no course or group selected now shows an error message - Updated: Tweaked some default error messages for grammar/style - Fixed: “Enter Coupon Code” placeholder and Redeem button strings are now translatable - Fixed: SQL warning on installation on some sites --- ### 3.0.4 - Updated: EDD updater class - Fixed: Issue introduced in 3.0.3 where codes were not being processed on checkout - Fixed: PHP Warning when LearnDash is not active --- ### 3.0.3 - Added: Automatic template overrides! Override any file in the /src/templates folder by copying it into /uncanny-codes/ in your child theme - Updated: Improved performance - Updated: No longer loading MooTools and SimpleModal frameworks when not necessary (improves compatibility with other plugins and themes) - Fixed: Field labels on WooCommerce checkout not appearing --- ### 3.0.2 - Fixed: Class name conflict with Uncanny LearnDash Groups plugin --- ### 3.0.1 - Added: Redeemed date column to CSV export of enrollment codes - Added: Enrollment Code field type for Gravity Forms – field can now be placed anywhere in the form - Added: Confirmation dialog when deleting codes - Added: Duplicate checking when generating codes - Updated: Search for a specific enrollment code now returns the group the code is in if the search is done from the code group page - Fixed: Support for Theme My Login 6.x restored - Fixed: Link to submit support ticket added when active license detected - Fixed: Undefined index notice on View Codes page --- ### 3.0 - Added: Support for code expiry dates - Added: Ability to search by code text - Added: Basic Gutenberg block support - Added: Support for Theme My Login 7.x - Added: Support for Gravity Forms User Verification feature - Added: Uncanny 3.0 plugin architecture (tabs for Help, License Activation, etc.) - Updated: Improved translation support - Updated: Improved multisite compatibility - Fixed: Typo in registration form success message - Fixed: “Require LearnDash Code” checkbox not showing up on WooCommerce products --- ### 2.0 - Added: .pot file for translations - Updated: Design of back-end pages - Updated: Styling of the included registration form - Fixed: Error on save of Gravity Forms settings if fields are empty --- ### 1.0.5 - Updated: Generated codes no longer include similar characters (e.g. i,l,0,o, etc.) --- ### 1.0.4 - Added: \[uo\_code\_registration\] now accepts the following parameters: redirect, code\_optional, auto\_login, role. Visit the knowledge base for details: - Updated: Registration form shortcode \[uo\_code\_registration\] now ignores “Anyone can register” setting in WordPress general settings --- ### 1.0.3 - Updated: Added support for Theme My Login registration forms with option to make Registration Code a required field --- ### 1.0.2 - Fixed: Settings page not saving when GravityForms User Add On is not active - Fixed: Database query for potential failure on some servers --- ### 1.0.1 - Fixed: switch\_to\_locale() 500 server error on stock user registration form - Fixed: Settings page if Gravity Forms User Registration Add-on is not active - Removed: Default button CSS on stock user registration form --- ### 1.0 - Initial release **Article Categories:** Uncanny Redemption Codes --- ### [Tin Canny Uploader](https://www.uncannyowl.com/knowledge-base/storyline-captivate-uploader/) **Published:** September 9, 2017 **Author:** yuehchin **Content:** ### Overview The Tin Canny Uploader is the tool that will allow you to upload your xAPI and SCORM modules to your LearnDash lesson or topic page. The Uploader is integrated with the both the Classic Editor and Gutenberg so you can quickly attach an e-learning module as part of your content creation workflow. ### Tin Canny Uploader and Gutenberg Block Editor To upload and embed your module using Gutenberg block editor, follow these steps: 1. On your LearnDash lesson or topic edit page, click the “+” icon to add a new block. 2. When the block selector appears, search and select the Tin Canny Content block. 3. After the block is added, you have 2 options\*: - “Upload” 1. Click Upload. 2. Find and select your module ZIP file from your computer and click “Open”. 3. The module will upload, register and the content block will embed on your page. - “Select from Library” 1. Search and/or select a module that has already been uploaded to your site. 2. The content block will embed on your page. 4. After you embed the content block, you will be able to select your display option from the side menu\*\*. - You have 3 options: 1. iFrame 2. Lightbox 3. New tab 5. After selecting your display option, save your page and the module will display in the front end. \*In step 3, if you are selecting the “Upload” option, depending on the size of your ZIP file, you can check the option “Upload entire zip file” in the side menu. This option provide a must faster upload experience. \*\* When using the block editor, you can change your display option at any time without needing to re-upload your module. [![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Select-Tin-Canny-Block.png "Select Tin Canny Block - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2025/09/Select-Tin-Canny-Block.png)Add the Tin Canny Content block[![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Upload-or-Select-from-library.png "Upload or Select from library - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2025/09/Upload-or-Select-from-library.png)Choose either Upload or Select from Library[![](https://www.uncannyowl.com/wp-content/uploads/2025/09/use-zip-uploader.png "use zip uploader - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2025/09/use-zip-uploader.png)Use the ZIP uploader for faster upload times if applicable[![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Select-from-Library.png "Select from Library - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2025/09/Select-from-Library.png)Find and select your module from the Manage Content library[![](https://www.uncannyowl.com/wp-content/uploads/2025/09/Tin-Canny-Content-Block.png "Tin Canny Content Block - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2025/09/Tin-Canny-Content-Block.png)A module embedded via Tin Canny Content block### Tin Canny Uploader and the Classic Editor To upload and embed your module using the Classic editor, follow these steps: 1. On your LearnDash lesson or topic edit page, click the “Add Tin Canny Media” button. 2. A modal box will open and give you 2 options: - “Upload File” 1. Click the button labelled “Click to Upload” (before you click this button, you can also enable the option “Upload entire zip file” below). 2. Find and select your module ZIP file from your computer and click “Open”. 3. When the module finished uploading, you will have to select a display option. You have 3 options: 1. iFrame 2. Lightbox 3. New tab 4. After you select the display option, click “Insert Into Post”. 5. The module be added as a shortcode in the Classic Editor - “Content Library” 1. Search and/or select a module that has already been uploaded to your site and click the “Show” button. 2. You will have to select a display option. You have 3 options: 1. iFrame 2. Lightbox 3. New tab 3. After you select the display option, click “Insert Into Post”. 4. The module be added as a shortcode in the Classic Editor 3. After selecting your display option, save your page and the module will display in the front end. [![](https://www.uncannyowl.com/wp-content/uploads/2025/09/add-tin-canny-media-button.png "add tin canny media button - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2025/09/add-tin-canny-media-button.png)Click the Add Tin Canny Media button[![](https://www.uncannyowl.com/wp-content/uploads/2025/09/upload-file-zip-option.png "upload file - zip option - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2025/09/upload-file-zip-option.png)Choose Upload File or Content Library and dont forget the ZIP upload option[![](https://www.uncannyowl.com/wp-content/uploads/2025/09/select-file-from-content-library.png "select file from content library - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2025/09/select-file-from-content-library.png)Select an uploaded module from your Manage Content library[![](https://www.uncannyowl.com/wp-content/uploads/2025/09/embed-options-after-uploading-or-selecting-module.png "embed options after uploading or selecting module - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2025/09/embed-options-after-uploading-or-selecting-module.png)After you upload your module or select it from the library you will need to select the display option[![](https://www.uncannyowl.com/wp-content/uploads/2025/09/tin-canny-content-embedded-as-shortcode.png "tin canny content embedded as shortcode - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2025/09/tin-canny-content-embedded-as-shortcode.png)Your module will display as shortcode### Elementor/WP Bakery Page Builder/Other Editors If you are using a pagebuilder such as Elementor or WP Bakery Page Builder, look for a “text” module and add that to the page. The editor in the text module should display the Add Tin Canny Media button (see above), which you can use to insert your content. **Important:** Upload zip files published directly from your authoring tool only. All modules must be uploaded through our upload tool, as it modifies some javascript files in the modules to ensure that statements are tracked properly. Please note that file names must contain fewer than 100 characters and should not contain any special characters. ### Tin Can/xAPI Data In order to capture Tin Can data, your Storyline/Rise, Captivate, or iSpring module must have been published to xAPI or SCORM (1.2 or 2004). The module will still work if it was published to web but you won’t be able to capture Tin Can data. We recommend publishing to xAPI if the option is available, as in some situations it offers performance advantages over SCORM tracking. ### Very large files If for any reason the zip file is too big to upload inside WordPress (this would typically include files over 100 MB), this workaround is available but should *only* be performed for large files: 1. Publish the zip file as you normally would. 2. Extract the contents of the zip file. (Don’t use a Mac for this, as it can add hidden files that break the upload process.) 3. Move the big media files elsewhere and remember the folder they were in. 4. Zip the files back up so the structure is the same (minus the large files; just make sure the XML file is still in the root). 5. Upload the zip file through the Tin Canny uploader as before. if there’s an error, maybe it wasn’t zipped back up again properly. 6. On the lesson/topic edit page, note the identifier in the shortcode. You’ll see an snc one. 7. Connect to the site by FTP. Navigate to /wp-content/uploads/uncanny-snc/. 8. Find the # corresponding with the shortcode in step 6 and go into it. 9. Upload the large files to wherever they’re supposed to be. ### Single Page Courses Out of the box, Tin Canny modules should not be use on LearnDash course post types, especially if there are no lessons attached to the course. LearnDash relies on lesson completions to track progress and trigger course completion. If you also have [Toolkit Pro](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) and the [Single Page Courses module](https://www.uncannyowl.com/knowledge-base/single-page-courses/) is enabled, versions 3.6 of Tin Canny and later do offer support and make uploading modules at the course level for microlearning possible. Make sure you follow the same [Mark Complete](https://www.uncannyowl.com/knowledge-base/tin-canny-learndash-mark-complete/) rules as you do for lessons and topics, and to protect content we suggest hiding the module to non-students with the [LearnDash student shortcode](https://www.learndash.com/support/docs/core/shortcodes-blocks/#learndash_student_student). ### Multisite If you use Tin Canny in a multisite network, it is possible to broadcast Tin Canny modules to other network sites using the Broadcast plugin from Plainview Plugins along with their LearnDash addon. See for more information. **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Install the Tin Canny Reporting Plugin](https://www.uncannyowl.com/knowledge-base/tincanny-installation-setup/) **Published:** September 2, 2017 **Author:** yuehchin **Content:** ### Installation Installing the plugin can’t be more straightforward. After you purchase and download the plugin, you can simply sign into your WordPress site as an admin and navigate to **Plugins > Add New**. To install the plugin, click **Upload Plugin** to start the process. After installation, you will be directed to the License Activation page to enter your license key and activate the plugin. ### Setup The plugin has four report views (for Course, User, Tin Can and xAPI Quiz Report) and a **Settings** tab. [![Tin Canny Settings page](https://www.uncannyowl.com/wp-content/uploads/2025/09/Tin-Can-and-SCORM-settings.png "Tin Can and SCORM settings - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2025/09/Tin-Can-and-SCORM-settings.png) There are three optional controls on the Settings page under the heading Tin Can/SCORM: - Capture Tin Can and SCORM data: Keep the default setting Yes unless you are certain you won’t incorporate H5P, Storyline, Captivate, or iSpring content in any of your courses. If you select No (to not capture Tin Can data), the Tin Can Report tab will be removed and so will the Tin Can activity menu on the User Report. In addition, no Tin Can data will be reported on the Dashboard or Course Report. All other LearnDash reporting will still be available and functioning as expected. - [Protect SCORM/Tin Can modules:](https://www.uncannyowl.com/knowledge-base/protecting-sharing-content-tin-canny/) This option can prevent modules from being viewed by users who are not signed to your site. You can set protection at a global level (as shown above) and also override the global setting at a lesson or topic level. - SCORM Driver Compatibility: Depending on the authoring tool used, you may be required to change the default “Async” SCORM Driver compatibility to “Sync”. For most scenarios, this option will stay on the default “Async” setting. You can also set global options for the Mark Complete button behaviour. The options include: - Always Enabled - Disabled until complete - Hidden until complete - Hidden and autocomplete - Hidden and autoadvance The Reset Tin Can Data button allows you to clear all existing Tin Can statements in the Tin Can Report. This feature would be helpful if you need to reset test data. Note all historical data will be removed; this action cannot be undone. **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Change or Reset Your Password](https://www.uncannyowl.com/knowledge-base/change-or-reset-your-password/) **Published:** August 19, 2025 **Author:** Ken **Content:** If you’ve lost your password or need to change it, follow these steps: 1. Go to 2. Click Forgot Password? 3. Enter your username or email address and click Recover Account. 4. If you provided the correct information, you’ll receive an email with instructions to reset your password. If you need to access the account of someone who previously purchased a plugin but has since left your company or is no longer affiliated with your organization and you do not have access to their email, you will need to reach out to our support to request access to their account. Please provide the following information: - The name and email address of the person who purchased the license - The reason you require access to their account - The product license key [Click here](https://www.uncannyowl.com/contact-us-2/) and choose *Other* to contact our team. **Article Categories:** Your Account --- ### [Generating or Adding New Codes](https://www.uncannyowl.com/knowledge-base/generating-new-codes/) **Published:** November 24, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to generate codes to enable users to self-enroll into LearnDash courses and groups. **Content:** ### Generate codes Creating a code batch is the very first step of the process of using codes. Once codes are generated, you can distribute, sell and control how they’re used. To create a new batch of codes, navigate to **Uncanny Codes > Generate codes** as an administrator. The onscreen wizard will walk you through the code generation process. ### Name your code batch When multiple codes are generated with the same characters (e.g. 10 codes that can be redeemed for access to a LearnDash course), a “batch” of that group of codes is set up. Beginning with [Uncanny Codes 4.0](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/), all code batches must be named. The name makes it easier to identify code batches when setting up WooCommerce products and [Uncanny Automator recipes](https://automatorplugin.com/knowledge-base/creating-a-recipe/). [![Name a batch of Uncanny Codes](https://www.uncannyowl.com/wp-content/uploads/2016/11/Name_a_code_batch.png "Name_a_code_batch - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/11/Name_a_code_batch.png) The name is a required field and must be filled in before you can generate codes. Use something that will be easy for you to recognize; it’s often helpful to figure out an appropriate naming convention before generating any codes. Names are unique and cannot be changed once codes are generated. ### Code type There are 2 types of codes available in Uncanny Codes: Uncanny Automator and LearnDash. For all code redemption types *except* LearnDash courses and groups, choose Uncanny Automator. [![Uncanny Code Types](https://www.uncannyowl.com/wp-content/uploads/2016/11/Uncanny_Code_Types.png "Uncanny_Code_Types - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/11/Uncanny_Code_Types.png) If you choose [Uncanny Automator](https://wordpress.org/plugins/uncanny-automator/) and don’t have it installed, you will have the option to install the free version automatically. This step is required before you can generate codes for use in Automator recipes. Uncanny Automator allows code redemption to be linked to any of the Actions for plugins and apps listed [here](https://automatorplugin.com/all-triggers-and-actions/), enabling code redemption to be linked to actions like adding a CRM tag, adding the user to a membership level, registering the user in a webinar, etc. **If you plan to sell codes with WooCommerce, choose Uncanny Automator.** For more information about setting up Automator recipes for generated codes, see [this article](https://www.uncannyowl.com/knowledge-base/connect-codes-to-uncanny-automator/). LearnDash code types are very straightforward; they add the user who redeems the code to courses or groups in LearnDash. ### LearnDash code settings LearnDash code batches have additional settings that don’t apply to Automator codes. These settings allow mapping to LearnDash courses or groups right from the generation page *and* they define additional behaviours for ecommerce scenarios. [![LearnDash code settings for Uncanny Codes](https://www.uncannyowl.com/wp-content/uploads/2016/11/LearnDash_code_settings_for_Uncanny_Codes.png "LearnDash_code_settings_for_Uncanny_Codes - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/11/LearnDash_code_settings_for_Uncanny_Codes.png) These are the additional settings for LearnDash codes: - **Enroll users into courses or groups:** Codes can be generated for either LearnDash courses **OR** LearnDash groups. Once a selection is made, a list of available courses or groups is displayed. Select one or more courses or groups; users redeeming the generated code will be added to these courses or groups. - **LearnDash code type** - *Default* is the appropriate selection in most cases. - *Paid* codes are used with WooCommerce to indicate that the associated code has been paid for previously; when redeemed as part of a purchase that includes a product that requires a LearnDash code (see [this article](https://www.uncannyowl.com/knowledge-base/using-codes-woocommerce/)), the price of the associated product is reduced to $0. - *Unpaid* codes are also tied to WooCommerce transactions but charge the user the full amount. ### Code settings [![Uncanny Codes settings](https://www.uncannyowl.com/wp-content/uploads/2016/11/Code_settings.png "Code_settings - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/11/Code_settings.png) - **Number of uses per code:** Defines how many times a code can be redeemed. For situations where a code is only redeemed by one user, this should be “1”. For codes that will be shared among a group of users (such as a classroom or business department), this may be much higher. It’s not always practical to distribute individual codes, so this field allows control over how much a code can be shared. **Important: If you plan to sell codes with WooCommerce, this value must be set to “1”**. - **Expiry date/time** (optional): If codes should expire, enter the expiry date and time. Once the options above are set, codes can be automatically generated, or entered manually. ### Auto-generate codes [![Autogenerate Uncanny Codes](https://www.uncannyowl.com/wp-content/uploads/2016/11/Auto-generate_Uncanny_Codes.png "Auto-generate_Uncanny_Codes - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/11/Auto-generate_Uncanny_Codes.png) Begin by choosing *Auto-generate codes* under **Generation method**. Then fill out the remaining fields: - **Number of unique codes**: The number of unique codes to generate. This is how many codes the system will create when the **Save Changes** button is clicked. We recommend keeping this number under 10,000 and using separate batches if you need over 10,000. - **Number of characters**: The number of characters to include in each code. We recommend no fewer than 8 characters and no more than 50. - **Type of characters**: Check the type of characters you want included in each code. - **Dash separation**: Divides the code into sections with hyphens to make them easier to read. They hyphens are not included in the Number of characters. - **Prefix/Suffix** (optional): Setting a *Prefix* or *Suffix* can help to identify codes to users or to brand the codes. Once generated, the batch of codes is added to the **View Codes** page of the plugin. ### Manually entering codes Custom codes can be entered instead of auto-generating codes. To do this, select *Manually enter codes* under **Generation method**. Doing this replaces the *Number of unique codes*, *Number of characters*, *Dash separation*, *Prefix* and *Suffix* fields above with a single textarea labeled *Enter one code per line*. Select the appropriate options and enter your custom codes one per line. Codes support letters, numbers and hyphens. **Article Categories:** Uncanny Redemption Codes --- ### [Download your plugins and get your license keys](https://www.uncannyowl.com/knowledge-base/how-to-download-your-plugins-and-get-your-license-keys/) **Published:** August 19, 2025 **Author:** Ken **Content:** ### How to download your plugins There are a couple of ways to download any plugins you have purchased: - When you purchase an Uncanny Owl plugin or All Access Pass, you will receive a confirmation email containing links to download the plugin(s) you purchased. The subject line of this email is “Your Uncanny Owl Purchase”. - If those links have expired, you can download your plugins from the *Downloads* page under *My Account*. To do this: - [Log in](https://www.uncannyowl.com/login) to your account. - Go to the [Downloads](https://www.uncannyowl.com/my-account/downloads/) page. - Find the plugin you wish to download and click the associated link(s). For instructions on installing your plugin, consult the appropriate article: - [Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/knowledge-base/install-the-uncanny-toolkit-pro-for-learndash/) - [Tin Canny Reporting for LearnDash](https://www.uncannyowl.com/knowledge-base/tincanny-installation-setup/) - [Uncanny Groups for LearnDash](https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-plugin-setup/) - [Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/) - [Uncanny Continuing Education Credits](https://www.uncannyowl.com/knowledge-base/setup-continuing-education-credits-plugin/) ### How to get your license keys There are a couple of ways to view the license keys for any plugins you have purchased: - When you purchase an Uncanny Owl plugin or All Access Pass, you will receive a confirmation email containing the licence keys for the the plugin(s) you purchased. (The All Access Pass includes all 5 of our premium plugins, but a single license key that will work with all 5.) The subject line of this email is “Your Uncanny Owl Purchase”. - You can also view your licenses from the *Plugin licenses* page under *My Account*. To do this: - [Log in](https://www.uncannyowl.com/login) to your account. - Go to the [Plugin licenses](https://www.uncannyowl.com/my-account/licenses/) page. - Copy the license key you’re looking for and paste it into the license field on your plugin’s *Settings* page, then click *Activate license*. **Article Categories:** Your Account --- ### [Request a Refund](https://www.uncannyowl.com/knowledge-base/request-a-refund/) **Published:** August 19, 2025 **Author:** Ken **Content:** If you feel that an Uncanny Owl plugin isn’t quite what your site needs, we can help you determine whether you are eligible for a refund and how to request one. ### Determining if You’re Eligible for a Refund Uncanny Owl is proud to offer a 100% no-risk guarantee. If you purchase any Uncanny Owl plugin and decide within the first 14 days that it isn’t a good fit, we’ll provide you with a full refund. Once this period is up, you can’t get a refund, but you can still [cancel your subscription](https://www.uncannyowl.com/knowledge-base/manage-your-subscription/#cancelling-your-subscription) or [downgrade your license](https://www.uncannyowl.com/knowledge-base/upgrade-or-downgrade-your-license/#downgrade-your-license). Additionally, our money back guarantee only applies to new purchases, not renewals. (You will receive a reminder 2 weeks before your subscription renews, so be sure to cancel prior to your renewal date if you don’t want to renew.) ### Requesting a Refund If you’d like to receive a refund within our 14-day no-risk guarantee window, please [**open a support request**](https://www.uncannyowl.com/my-account/submit-a-request/) from your account area. Our team will respond as soon as possible to keep you updated on the status of your refund. **Note**: Of course, we don’t want to see you go. We’d love to be able to help you build the site experience you’ve envisioned. If our support team can help in any way, or if there are specific features you’d like to see, please feel free to let us know in your message. If you have any other questions about your subscription, please [get in touch with our support team](https://www.uncannyowl.com/my-account/submit-a-request/) and we’ll be happy to help! **Article Categories:** Your Account --- ### [Upgrade or Downgrade Your License](https://www.uncannyowl.com/knowledge-base/upgrade-or-downgrade-your-license/) **Published:** August 19, 2025 **Author:** Ken **Content:** ### Upgrade your license If you want to upgrade your current license: - to increase the number of activations by upgrading to a Business or Agency license, or - to switch to the [All Access Pass](https://www.uncannyowl.com/all-access-pass/) Follow these steps: 1. [Log in](https://www.uncannyowl.com/login) to your account. 2. Go to the [Plugin licenses](https://www.uncannyowl.com/my-account/licenses/) page. 3. Find the license you would like to upgrade and click *View Upgrades*. The cost of the upgrade is the difference between the price of your current license and the price of the license you would like to upgrade to. **Note that upgrading your license does not change your subscription renewal date.** ### Downgrade your license If you’re looking to downgrade your license to a lower number of sites, or from an All Access Pass to one or more single plugin licenses, you will need to cancel your current subscription. (If you’re within 14 days of your purchase, you can request a refund instead.) After this, you can purchase the license you want to switch to. **Article Categories:** Your Account --- ### [Transfer Your Plugin License to Another Domain](https://www.uncannyowl.com/knowledge-base/transfer-your-plugin-license-to-another-domain/) **Published:** August 19, 2025 **Author:** Ken **Content:** If you are using a plugin on one website and want to move it to a different site, your plugin license will need to activated on the new site’s domain. This also applies if you are moving a site that was under development on a staging URL to a live URL. There are two ways to deactivate your plugin license: From your WordPress site’s admin menu, or from the [Plugin licenses page](https://www.uncannyowl.com/my-account/licenses/) in your Account area. ### Deactivating your license from your WordPress site - To deactivate your license on your WordPress site, log in to your WordPress site with an Administrator-level account. - Go to *Automator > Settings* - Click *Deactivate License* at the bottom of the page. Your license is now deactivated and can be reactivated on another site. ### Deactivating your license from the Plugin licenses page 1. [Log in](https://www.uncannyowl.com/login) to your account. 2. Go to the [Plugin licenses](https://www.uncannyowl.com/my-account/licenses/) page. 3. Find the license you would like to deactivate and click *Manage Sites*. Find the URL of the site you wish to deactivate and click *Deactivate Site*. Your license is now deactivated and can be reactivated on another site. **Article Categories:** Your Account --- ### [Change the Email Address Associated With Your Account](https://www.uncannyowl.com/knowledge-base/change-the-email-address-associated-with-your-account/) **Published:** August 19, 2025 **Author:** Ken **Content:** If you’ve changed your email address and would like to update it in your account, follow these steps: 1. [Log in](https://www.uncannyowl.com/login) to your account. 2. Go to [My Profile](https://www.uncannyowl.com/my-account/change-password/). 3. Under *Primary Email Address*, enter your new email address. 4. Click *Save Changes*. Our system maintains a list of previous email addresses to make it easier for us to trace previous transactions and correspondence with you. If you would like to delete your old email address, simply hover over it and click *Remove* (If you don’t see the *Alternate email addresses* field, try refreshing the page). **Article Categories:** Your Account --- ### [Generate an Invoice For Your Purchase](https://www.uncannyowl.com/knowledge-base/generate-an-invoice-for-your-purchase/) **Published:** August 19, 2025 **Author:** Ken **Content:** If you require a downloadable invoice for your purchase, you can generate one from your Purchases & Subscriptions page. Follow these steps: 1. [Log in](https://www.uncannyowl.com/login) to your account. 2. Go to [Purchases & Subscriptions](https://www.uncannyowl.com/my-account/invoices/). 3. Find the purchase for which you require an invoice and click View Invoice. You’ll see options to print the invoice or download the invoice as a PDF. **Article Categories:** Your Account --- ### [Manage Your Subscription](https://www.uncannyowl.com/knowledge-base/manage-your-subscription/) **Published:** August 19, 2025 **Author:** Ken **Content:** ### License vs. subscription A plugin license is distinct from a plugin subscription. While an active plugin license provides you with updates and access to our support team, a subscription refers to an automatic recurring annual payment to renew your license (and keep it active). ### Renewing your license When you purchase a plugin from us, a subscription is automatically created to ensure your license is renewed automatically and you don’t miss out on updates or support while you are using the product. The license will automatically be renewed one year after your initial purchase, and your original method of payment will be charged the renewal amount. ### Cancelling your subscription If you wish to cancel your subscription to any of our products, you can easily do so through the *Purchases and Subscriptions* page. Here are the steps to cancel: 1. [Log in](https://www.uncannyowl.com/login) to your account. 2. Go to [Purchases & Subscriptions](https://www.uncannyowl.com/my-account/invoices/). 3. Find the subscription you wish to cancel, and click *Cancel*. You may be asked a few questions so we can better understand why you are cancelling your subscription and how we can improve our product/service. 4. Confirm the cancellation. Your subscription will be cancelled immediately, but your plugin license will continue to be validuntil its expiration date (typically, your subscription renewal date). After subscription cancellation, you can confirm that your license is still active by visiting the [Plugin licenses](https://www.uncannyowl.com/my-account/licenses/) page. ### Reactivating a cancelled subscription If you cancelled your subscription but wish to reactivate it, follow these steps: 1. [Log in](https://www.uncannyowl.com/login) to your account. 2. Go to [Purchases & Subscriptions](https://www.uncannyowl.com/my-account/invoices/). 3. Find the cancelled subscription you wish to reactivate and click *Reactivate*. Note that if the license associated with the subscription is expired, your payment method will be charged immediately and your license reactivated. If it has not yet expired, your payment method will not be charged until the subscription renewal date. **Article Categories:** Your Account --- ### [Renew Your License](https://www.uncannyowl.com/knowledge-base/renew-your-license/) **Published:** August 19, 2025 **Author:** Ken **Content:** All purchases create an annual recurring subscription, to ensure you have uninterrupted access to updates and support while you are using the product. If at some point you canceled your subscription and your license subsequently expired, you can renew your subscription to reactivate your license. To renew an expired license, follow these steps: 1. [Log in](https://www.uncannyowl.com/login) to your account. 2. Go to [Plugin licenses](https://www.uncannyowl.com/my-account/licenses/). 3. Find the license you would like to renew and click *Renew License*. 4. Complete checkout and your license key will be reactivated. You will then have a subscription for the reactivated license. You can manage your subscription from the [Purchases & Subscriptions](https://www.uncannyowl.com/my-account/invoices/) page. **Article Categories:** Your Account --- ### [Set up Uncanny Redemption Codes for WordPress](https://www.uncannyowl.com/knowledge-base/set-up-uncanny-codes-for-wordpress/) **Published:** November 23, 2016 **Author:** Ryan Moore **Excerpt:** Learn how to install the Uncanny LearnDash Enrollment Codes plugin. **Content:** ### Overview For a brief introduction to Uncanny Redemption Codes and what you can do with it, we invite you to watch the overview video below. ### Installation After you purchase and download the plugin, you can simply sign into your WordPress site as an admin and navigate to **Plugins > Add New**. To install the plugin, click **Upload Plugin** to start the process. After installation and activation, you will be directed to the License Activation page to enter your license key and activate the plugin. The license key is included in the purchase email and is also available from within your [Uncanny Owl account](https://www.uncannyowl.com/my-account/licenses/) on this site. ### Settings The [Uncanny Redemption Codes](https://www.uncannyowl.com/downloads/uncanny-learndash-codes/) settings page can be found under **Uncanny Codes > Settings** in /wp-admin/ on your website. The Settings page includes controls for LearnDash group behaviours, text for messages, WooCommerce autocompletion and database cleanup. [![LearnDash Group settings for Uncanny Codes](https://www.uncannyowl.com/wp-content/uploads/2016/11/LearnDash_Group_settings_for_Uncanny_Codes.png "LearnDash_Group_settings_for_Uncanny_Codes - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/11/LearnDash_Group_settings_for_Uncanny_Codes.png) The first option on the Settings page controls what happens when learners who are already in a LearnDash Group enter a new group-based code. If the box is checked, the user remains in any existing LearnDash Groups and is also added to any new groups associated with the code. If the box is unchecked, the user is *removed from all other LearnDash Groups* and then added to the new group. Be very careful with this selection, as there is no easy way to restore group access if this is left unchecked unintentionally. Most sites should leave this box checked. **Important:** Unchecking this box means users can’t redeem codes that are mapped to multiple groups; only the first group will be added. We strongly recommend leaving this box checked. [![Custom messages for Uncanny Codes](https://www.uncannyowl.com/wp-content/uploads/2016/11/Custom_messages_for_Uncanny_Codes.png "Custom_messages_for_Uncanny_Codes - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/11/Custom_messages_for_Uncanny_Codes.png) Uncanny Redemption Codes allows an administrator to set what text should be displayed to users when codes are redeemed or there’s an issue redeeming codes. Any code-related strings not shown here can still be easily modified with a translation plugin. [![Terms & Conditions for Uncanny Codes](https://www.uncannyowl.com/wp-content/uploads/2016/11/Terms___Conditions_for_Uncanny_Codes.png "Terms___Conditions_for_Uncanny_Codes - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/11/Terms___Conditions_for_Uncanny_Codes.png) The Terms & Conditions section applies to the [built-in registration shortcode](https://www.uncannyowl.com/knowledge-base/using-codes-custom-registration-form/) only. If you use that shortcode and text is populated in this field, a checkbox is added to the registration form that requires users to review and accept terms and conditions before they can register and redeem the code. [![Autocomplete WooCommerce orders with Uncanny Codes](https://www.uncannyowl.com/wp-content/uploads/2016/11/WooCommerce_autocomplete_orders_for_Uncanny_Codes.png "WooCommerce_autocomplete_orders_for_Uncanny_Codes - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/11/WooCommerce_autocomplete_orders_for_Uncanny_Codes.png) Enable this option to automatically change the status of orders the include Uncanny Codes products to Completed. This only applies if you are selling Uncanny Redemption Codes products in a WooCommerce store. [![Reset Uncanny Codes data](https://www.uncannyowl.com/wp-content/uploads/2016/11/Reset_Uncanny_Codes_data.png "Reset_Uncanny_Codes_data - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2016/11/Reset_Uncanny_Codes_data.png) Use the Reset and Delete buttons to remove Uncanny Redemption Codes data and/or tables. The Delete option is particularly useful if you plan to no longer use the Uncanny Redemption Codes plugin. **Article Categories:** Uncanny Redemption Codes --- ### [Submit a support request](https://www.uncannyowl.com/knowledge-base/submit-a-support-request/) **Published:** April 19, 2021 **Author:** Ken **Content:** ### Support for Uncanny Toolkit for LearnDash (Free version) We provide limited, generic (i.e. not site specific) support for the Uncanny LearnDash Toolkit directly through the [WordPress plugin directory page](https://wordpress.org/support/plugin/uncanny-learndash-toolkit). We’ll do our best to provide general support there if you do run into any issues. ### Support for premium Uncanny Owl plugins To submit a support ticket, log into the *[My Account](https://www.uncannyowl.com/my-account/)* portal and click [*New support request*](https://www.uncannyowl.com/my-account/submit-a-request/) to create a support ticket. ![](https://www.uncannyowl.com/wp-content/uploads/2021/04/new-support-request.png "new-support-request - Uncanny Owl") Alternatively, to submit a support request from any of the Uncanny Owl premium plugins, look for the Help page in the /wp-admin menu. At the bottom of that page, click the *I can’t find the answer to my question* link. ![WordPress admin sidebar with Uncanny Toolkit selected and a Help menu item highlighted; a blue underlined link reads 'I can't find the answer to my question.' at the bottom of the panel.](https://www.uncannyowl.com/wp-content/uploads/2021/04/plugin-support-link-1030x500.png "plugin-support-link - Uncanny Owl") This link (optionally) sends some additional information about your site to help us find a solution to your problem more quickly. **If you don’t see this link, check that your plugin license is activated**. **Article Categories:** Existing Customers --- ### [Continuing Education Credits – Changelog](https://www.uncannyowl.com/knowledge-base/continuing-education-credits-changelog/) **Published:** August 16, 2017 **Author:** Anthony Lucic **Excerpt:** Detailed descriptions of the changes in each release of Uncanny Continuing Education Credits. **Content:** ### 5.0 \[2024-10-28\] **New Feature:** - CEUs / credits editable now #174 **Updated:** - Continuing Education Report – New enhanced front-end report #242 - Continuing Education Report – Added Excel Export option #218 - Continuing Education Report – Configuration settings for Gutenberg Block #241 - Continuing Education Report – New filters for columns and data #243 - Continuing Education Report – New setting to include data from child groups in a group hierarchy #240 --- ### 4.2.0.2 \[2024-09-25\] **Fixed:** - Fixed an issue where course data was not displayed when the “Enable Custom CEUs Rows” setting was enabled in Toolkit Pro under rare circumstances #235 - Licensing – Added an additional validation to ensure licensing calls only run when explicitly requested #229 --- ### 4.2.0.1 \[2024-09-11\] **Update:** - Archived quiz results – Incorrect question count and percentages with third-party plugin overrides in a specific situation #219 **Fixed:** - Archived transcript – Status column incorrectly displays date, causing archived courses to be excluded from filter #212 - Toolkit transcript – Use unique timestamp and course ID keys to prevent duplicate CEU data with archived records #214 - Licensing call – Creating a loop in a specific scenario #223 --- ### 4.2 \[2024-07-11\] **Addition:** - Licensing – Allow plugin to be pre-activated by defining `UNCANNY_CEUS_LICENSE_KEY` in `wp-config.php` #205 **Updated:** - Optionally show archive CEU course data in Uncanny Toolkit Pro’s User Transcript #200 - Quiz Question Analysis report – WP filters `uo_tincanny_reporting_do_ceu_override` & `uo_tincanny_reporting_skip_ceu_override_quiz_ids` #198 **Fix:** - CEU Earned Shortcode – Returning empty string if the CEUs earned is 0 #195 **Internal:** - Hide other plugin notices on CEU pages #202 - Move license to Settings page #205 --- ### 4.1.0.1 \[2023-11-09\] **Fixed:** - Credit Report – Ludicrous mode – PHP notice when no records are generated #190 - Blocks – Removed `lodash` dependency for WordPress v6.4+ #190 - Blocks – Available Credits & Credits Remaining – PHP Error when LearnDash is not active #d083 --- ### 4.1 \[2023-11-08\] **Updated:** - Credit Report – New performance options for better experience #122 - Credit Report – New Settings section to set report defaults #122 - Credit Report – Add “Reset” button to reset dropdown values #185 **Fixed:** - Course records not migrating properly for Historical Records #182 - Credit Report – Dates are now displayed using LearnDash date/time display function #172 - Credit Report – CSV Export – Some uppercase email addresses are broken #168 - Credit Report – Multisite not showing users specific to the current site #163 - Deficiency Report – Required CEUs column displays no value when LearnDash is not activated #157 - User profile – Hide “Archived quiz results” if it’s empty #150 - Credit Report – Report showing UTC timestamp #147 **Internal:** - Improved PHP 8.2 compatibility #184 - “Try Automator” menu entry renamed to “Automation” #175 - Fix vulnerability in Automator’s 1-click installer #153 - Database upgrades #122 - Award Certificate – WordPress filters `uo_group_leader_mail_headers`, `uo_admin_mail_headers` and `uo_user_mail_headers` to allow mail header overrides (BCC etc) #158 --- ### 4.0 \[2022-11-17\] **New Feature:** - Historical data – CEU now keep historical records even if a course is reset #101 - Tin Canny Reporting – Quiz Question Analysis Report – Support for historical quiz completions **Updated:** - `[uo_ceu_available]` shortcode – Course ID validation added #120 - Multi-Course certificate: Certificate link are now stored in the database #91 **Fixed:** - Course Report – CSV export not populating columns #124 - Course Report – Incorrect time being displayed #116 - PHP 8.1 Deprecation: `preg_split()` : Passing null to parameter #3 ($limit) of type int is deprecated #127 **Under the hood:** - Historical data – Record new quiz results in archive #101 - Historical Data – Copy existing records in historical tables #105 - Historical Data – Add “Generate historical quiz records” section under Generate Records tab #104 - Edit profile – Show historical quiz completion records #102 - In-plugin notifications system #129 - Uncanny Automator 1-click installer #39 - Multiple do\_action hooks #114 - Fix core-js preventing webpack from generating the bundles #106 - CEU licensing – Licensing page updated #38 --- ### 3.3.4 \[2022-03-23\] **Fixed:** - Credit report – CSV export exposes hidden timestamp #85 - View Certificate – PHP error on some environments #87 --- ### 3.3.3 \[2022-03-03\] **Updated:** - Improved appearance of deficiency report when no rollover date is set - Improved PHP 8 compatibility #57 **Fixed:** - Front-end assets sassdash and sass-svg cause core-js to freeze during compilation #73, #65 - `PHP error: Uncaught Error: Call to a member function exists()` in `award-certificate.php #70` - `PHP notice: Undefined index: highest_group_credit_required #64` - `PHP notice: add_submenu_page was called incorrectly #35` --- ### 3.3.2 \[2021-11-19\] **Updated:** - Changes/fixes to ticket submission data **Fixed:** - Fatal error on remote get #58 --- ### 3.3.1 \[2021-10-04\] **Updated:** - Optimized query performance #47 **Fixed:** - PHP warning – block\_categories deprecated #55 - PHP error on quiz completion in some situations #43 - Multi-course CEU certificate not sent in some situations #36 - Certificates awarded by Uncanny CEUs now linked properly in Uncanny Toolkit for LearnDash certificate widget module #33 - PHP error – Class ‘uncanny\_ceu\\stdClass’ not found on some sites #21 --- ### 3.3 \[2021-04-01\] **Updated:** - Added compatibility with LearnDash Certificate Builder plugin #13 - Credit report now loads all records by default #9 **Fixed:** - PHP notice: Deprecated: Non-static method ceu\_value\_meta\_box\_callback() should not be called statically #19 - Credit display issue on Learner Transcript (Uncanny Toolkit Pro) when the user has no LearnDash course completions #1 --- ### 3.2.1 \[2021-02-10\] **Added:** - Support for manual entries where credit value = 0 - Support for display of custom CEUs in Learner Transcript module of Uncanny Toolkit Pro (requires Uncanny Toolkit Pro 3.7 or later) **Fixed:** - PHP Fatal error: Uncaught Error: Call to undefined function uncanny\_ceu\\learndash\_get\_users\_group\_ids() when LearnDash is not active - PHP Notice: missing required permission\_callback argument --- ### 3.2 \[2021-01-13\] **Added:** - New system to generate credit and completion records for historical LearnDash course completions **Updated:** - Removed hyperlinks from custom titles in Credit Report - Only show courses that have assigned credits when adding manual credits **Fixed:** - Allow support for decimals when adding custom credits - Times in Credit Report match WordPress time instead of server time - Several text domains corrected for translatable strings - Last names incorrectly truncated in Credit Report export - Replace some references to “CEUs” with the plural CEU label from the plugin Settings page --- ### 3.1 \[2020-12-17\] **Added:** - Ability to add custom credits for users from the Credit Report - Ability to delete credits from the Credit Report - Ability to trigger multi-course and multi-credit certificates from custom credits **Updated:** - Improved performance of user selection in Credit and Deficiency Reports - Text domain of internal string **Fixed:** - Better support for PDF rendering on sites with LearnDash 3.2.0+ - WordPress 5.5+ compatibility related to REST API routes without a permission\_callback - Earned credits showing properly in the Dashboard module of Toolkit Pro --- ### 3.0.7 \[2020-10-28\] - Added: Hook for Uncanny Automator integration --- ### 3.0.6 \[2020-07-27\] - Fixed: PHP Notice: register\_rest\_route was called incorrectly in WordPress 5.4.2 and newer --- ### 3.0.5 \[2020-03-19\] - Updated: EDD updater class - Updated: Reduced the delay before CEUs are awarded after course completion to 10 seconds - Updated: Courses completed by an admin via the edit user page now awards CEUs - Fixed: CEU certificates not being emailed due to TCPDF folder location change in LearnDash - Fixed: WordPress Notice – add\_submenu\_page was called incorrectly - Fixed: PHP notices and warnings displayed in Query Monitor plugin --- ### 3.0.4 - Added: Support for LearnDash 3.1 --- ### 3.0.3 - Fixed: Name appearing twice in CSV exported from course and deficiency reports --- ### 3.0.2 - Updated: Added email column to Course and Deficiency Report CSV export - Fixed: Date column in CSV export now formatted correctly - Fixed: Credit values are no longer rounded on Learner Transcript (Learner Transcript requires Uncanny LearnDash Toolkit Pro) --- ### 3.0.1 - Added: Total row for CEUs column in Learner Transcript (Uncanny Toolkit Pro) - Fixed: Credit Rollover Date no longer accepts invalid date values - Fixed: Date filters on reports now properly sync’d with stored completion dates --- ### 3.0 - Added: Basic Gutenberg block support - Added: Uncanny 3.0 plugin architecture (tabs for Help, License Activation, etc.) - Updated: Visual design and filters of all admin reports - Updated: Visual design of front-end report (\[uo\_ceu\_report\]) - Updated: Course completion time is now recorded from learndash\_course\_completed action - Updated: Support for optional CEU column in Learner Transcript module of Uncanny LearnDash Toolkit Pro - Updated: Improved support for differences between WordPress and server timezones - Updated: Improved support for plugin translation - Fixed: Visibility of \_\_sleep method for PHP 7 compatibility - Fixed: CEUs not properly included in “CEUs Earned Since Rollover” section on user profile page - Fixed: Logic for calculating credits in current rollover period --- ### 2.0 - Added: Utilized uo\_course\_completion\_time from Pro toolkit to save same time across multiple modules - Added: Column for course CEUs earned in the Learner Transcript module of Uncanny LearnDash Toolkit Pro (requires Uncanny LearnDash Toolkit Pro plugin) - Updated: Settings page design - Updated: Moved Certificate Email Settings to Settings page - Updated: Changed from current\_time(‘timestamp’) to time() for consistency - Fixed: CSS conflict with Events Calendar Tickets - Fixed: CEU certificate rendering issues --- ### 1.1.1 - Update: Plugin now reports dates and times exclusively in the WordPress site time zone --- ### 1.1 - New Feature: Added Required Credits for users and groups - New Feature: Added Required Credit shortcodes: \[uo\_ceu\_days\_remaining\] and \[uo\_ceu\_credits\_remaining\] - New Feature: Added Required Credit Deficiency Report - New Feature: Added Required Credit email reminders #### 1.0 - Initial Release **Article Categories:** Uncanny Continuing Education Credits --- ### [Connecting codes to Uncanny Automator](https://www.uncannyowl.com/knowledge-base/connect-codes-to-uncanny-automator/) **Published:** March 16, 2021 **Author:** Ryan Moore **Content:** ### Setting up Uncanny Automator [Uncanny Automator](https://wordpress.org/plugins/uncanny-automator/) is an optional, free plugin for Uncanny Codes that is *highly* recommended because it unlocks a huge number of code redemption options. If Automator isn’t installed, Uncanny Codes will prompt you to install it automatically if you attempt to generate Automator code types. To install it yourself, just navigate to **Plugins > Add New** as an administrator and search for “Uncanny Automator”. Install it and activate it to unlock Automator code types and recipes. [![Install Uncanny Automator](https://www.uncannyowl.com/wp-content/uploads/2021/03/Install_Uncanny_Automator.png "Install_Uncanny_Automator - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/03/Install_Uncanny_Automator.png) ### Creating an Automator recipe for code redemption When you create an Uncanny Codes batch that uses the Automator code type, the system will automatically direct you into a new recipe when you generate the codes. You can also create a new recipe from scratch that triggers actions when a code from a particular batch is redeemed. In both cases, the key to linking code redemptions from a batch with specific actions is this logged-in trigger: - **A user redeems a code from a batch** [![Redeem a code from a batch](https://www.uncannyowl.com/wp-content/uploads/2021/03/Redeem_a_code_from_a_batch.png "Redeem_a_code_from_a_batch - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/03/Redeem_a_code_from_a_batch.png) Make sure you choose the correct code batch from the drop-down list and don’t forget to name your recipe with something meaningful and identifiable (as you will likely have many different recipes). Once the trigger is set up, add the behaviours that you want to have happen in the *Actions* box. You can use any integrations that you want from the list, even choose multiple actions. Maybe you want code redemption to enroll a user in a LearnDash course and add the user to a social group in BuddyBoss. After choosing your actions, make sure to switch them to *Live* status and take the recipe live too. For more information about creating recipes, see . ### Using Uncanny Automator Pro with Uncanny Codes Using the premium [Uncanny Automator Pro](https://automatorplugin.com/pricing/) plugin with Codes is optional and unlocks even more redemption possibilities. If you do use Pro, please note that the “A user redeems a code from a batch” trigger is only available for Logged-in recipe types. You must choose when creating a new recipe to see the correct trigger. **Article Categories:** Uncanny Redemption Codes --- ### [Tin Canny Reporting - Technical Requirements](https://www.uncannyowl.com/knowledge-base/tin-canny-reporting-technical-requirements/) **Published:** December 13, 2017 **Author:** Ken **Content:** ### End-user requirements An up-to-date, modern browser such as: - Google Chrome - Mozilla Firefox - Microsoft Edge - MacOS Safari Internet Explorer is not supported. ### Permalinks For Tin Canny to work properly the Permalink settings on your site (under Settings > Permalinks as an admin) cannot be set to Plain. Any other setting should work, but if you’re having trouble capturing data and errors are reported, double-check your permalink settings. ### Hosting requirements Minimum requirements are: - PHP 7.4+ - WordPress 5.4 - LearnDash 3.6+ - 256MB of memory allocated to WordPress We recommend the following for optimal performance: - PHP 8.0+ - A WordPress-optimized host such as [WP Engine](https://www.uncannyowl.com/share/wpengine) or [Pressidium](https://www.uncannyowl.com/share/pressidium) - Additional WordPress memory (some times may require 512 MB or more to report on large data sets) **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Frequently Asked Questions](https://www.uncannyowl.com/knowledge-base/frequently-asked-questions/) **Published:** September 3, 2017 **Author:** yuehchin **Content:** ### What are the minimum requirements for running Tin Canny LearnDash Reporting? Tin Canny requires PHP 7.4 or higher as well as the latest version of LearnDash. It is a heavier plugin and with large records sets you may require more than 256 MB of memory be allocated to WordPress. ### On the Tin Canny Reporting page, I see a loading icon but nothing loads. First, turn off debug in **wp-config.php** by changing: `define('WP_DEBUG', true);` To: `define('WP_DEBUG', false);` If the report page still doesn’t load after turning off debug, add the following to wp-config.php: `ini_set('log_errors','On');ini_set('display_errors','Off');ini_set('error_reporting', E_ALL );define('WP_DEBUG', false);define('WP_DEBUG_LOG', true);define('WP_DEBUG_DISPLAY', false);` ### Can I track eLearning content hosted on Amazon S3 or other offsite storage? The LRS installed with the Tin Canny Reporting plugin is local to your WordPress site. It cannot store statements sent from eLearning modules hosted externally or offloaded to another service, including Amazon S3. You need to upload Tin Can modules directly to your WordPress/LearnDash site and modules must be stored on the WordPress install. ### Why do I see a blank screen where my module should be? We usually see this happen when SSL is configured incorrectly. If your site is secure, and all of your URLs in the front end begin with https://, make sure that the URLs for the site under **Settings > General** in /wp-admin/ also have https:// at the beginning. If they don’t, the URLs must be corrected. It can also help to check the javascript console (**View > Developer > Javascript Console** in Chrome) to look for errors. ### Why aren’t statements in the Tin Can report tracked? There are a number of things that could cause this. No data will be tracked if the site is protected with an .htaccess (sitewide) password or if the user completing activities is not signed in. Anything that globally restricts access in some way or disables the REST API could also prevent proper use of Tin Canny. If you’re using H5P modules, make sure you don’t have the H5P xAPI plugin installed. It will block communications with our Tin Canny endpoint. Also note that not every H5P module type sends xAPI/Tin Can statements; if you’re unsure, try visiting , go into the content type you’re using, and click the xAPI Coverage tab at the top. If there’s nothing there, the module may not send statements. ### Why do I see 403 errors? Similar to the tracking issues above, anything that could disrupt communications with the virtual Tin Canny LRS endpoint that we create can result in 403 errors. If you use Sucuri or another security/firewall plugin, you will need to whitelist the plugin in its settings. Maintenance plugins or anything else that restricts or redirects access on a sitewide basis is also likely to cause problems. ### Does Tin Canny LearnDash Reporting work with all SCORM and xAPI content? The plugin has been written for and tested extensively with the authoring software listed on . Although SCORM and xAPI are eLearning standards, different authoring applications do work a little differently in terms of when they send statements and how progress and completion are tracked. Our support is limited to authoring software that we know for certain would work. ### Why are the time columns blank in my Course report? Tin Canny cannot track course time on its own; we rely on the [Simple Course Timer](https://www.uncannyowl.com/knowledge-base/simple-course-timer/) module in the [Pro addon](https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/) for the Uncanny LearnDash Toolkit. We include those columns to make it easier to see data collected with that plugin. Also note that time will only be tracked from the time the module is enabled. ### I cloned my site and now users can’t access Tin Canny content. What happened? This can happen in some situations where .htaccess files are included in a clone. To restore access to Tin Canny content, follow these steps: 1. Turn the setting *Protect SCORM/Tin Can modules* off 2. Click *Save Changes* 3. Turn the setting *Protect SCORM/Tin Can modules* on 4. Click *Save Changes* This will regenerate .htaccess files that are configured for the cloned site. **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Tin Can Lesson/Topic Completion Tracking](https://www.uncannyowl.com/knowledge-base/tin-canny-learndash-mark-complete/) **Published:** September 11, 2017 **Author:** yuehchin **Content:** ### Integration with LearnDash Mark Complete The [Tin Canny LearnDash Reporting](/tin-can-lrs-learndash-report-toolkit) plugin offers 5 options for integration with the LearnDash Mark Complete button that appears in Lessons and Topics: - **Always Enabled:** Mark Complete button is always enabled. The learner can click the button to complete the lesson or topic at any time. - **Disabled until complete:** Mark Complete button is disabled until the completion condition has been satisfied. The button is visible, but not clickable until the module has been completed. Most themes will show the disabled button in a different color (typically grey), but on some themes, the disabled button will look exactly like the enabled button. On these themes, CSS can be used to style the disabled button, or one of the other options can be used (e.g. hidden until complete). - **Hidden until complete:** Mark Complete button is hidden until the completion condition has been met. Once the completion condition has been met, the button becomes visible. - **Hidden and autocomplete:** Mark Complete button is hidden and the lesson/topic is automatically marked complete when the completion condition has been met. With this option, you will need to provide a way for the user to progress to the next lesson or topic when the module has been completed, as there is no button for them to click. - **Hidden and autoadvance:** Mark Complete button is hidden, the lesson/topic is automatically marked complete and the learner is automatically advanced to the next lesson or topic when the completion condition has been met. **Notes**: If LearnDash cannot identify a “next” lesson or topic, the current page will be reloaded. If the lesson/topic is already complete, the user will not be autoadvanced. The global setting that controls the Mark Complete button can be overridden at the lesson or topic level by changing the value of Restrict Mark Complete from “Use Global Setting” to a specific option. ![](https://www.uncannyowl.com/wp-content/uploads/2018/04/tinCanny_restrict_mark_complete.png "tinCanny_restrict_mark_complete - Uncanny Owl") If you use Toolkit Pro with the [Single Page Courses module](https://www.uncannyowl.com/knowledge-base/single-page-courses/) active, please note that these options are also available at the course level. See [this article](https://www.uncannyowl.com/knowledge-base/storyline-captivate-uploader/#Single_Page_Courses) for more information. ### Completion Condition The default completion condition is “completed”, “passed”, or “answered”. You can further control when the Mark Complete button is enabled by specifying a different completion condition on individual lesson or topic pages. For example, for a Tin Can module that contains a quiz at the end, you may want to limit the Completion Condition to just “passed”. ![](https://www.uncannyowl.com/wp-content/uploads/2018/04/tinCanny_completion.png "tinCanny_completion - Uncanny Owl") The Completion Condition field accepts 3 types of values: 1. A verb, like “completed” or “passed”. 2. A score, captured in this format: “result > 60”. In that example, the Mark Complete button/behaviour will be unlocked when a score of over 60 is recorded. 3. A combination of target (a.k.a slide in your uploaded module) and verb, in this format: uotarget TARGET\_NAME::VERB. If a slide name is “Slide 2” and the expected verb for that slide is “Experienced”, and you want the combination to satisfy the Completion Condition, enter “uotarget Slide 2::experienced”. What’s most important is that the Completion Condition match whatever you see in the Tin Can report when you want completion to be available for the LearnDash lesson or topic. If you see a “Completed” verb in the Tin Can report and that’s the completion indicator, enter “Completed” in the Completion Condition field. If there are multiple Tin Can modules on a lesson/topic page, the Mark Complete button condition is satisfied when any modules have been completed. For H5P modules, the Mark Complete button gets enabled when *any* module on the page has been completed (the H5P module must pass xAPI statements for this functionality to work; not all H5P content types do this). **Note:** - The completion of a LearnDash lesson/topic and that of a Tin Can module are independent of each other. How completion should be triggered in an e-learning module published from Storyline, Captivate, and iSpring is configured in the Publish settings in those programs. (The following example is from Storyline.) Articulate Rise and H5P don’t give the user these tracking options. [![storyline_publish_tracking](https://www.uncannyowl.com/wp-content/uploads/2017/01/storyline_publish_tracking.png "storyline_publish_tracking - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/01/storyline_publish_tracking.png) ### Troubleshooting Mark Complete Issues It’s unfortunately common for many of our users to experience issues with control over the Mark Complete button. Problems tend to occur in at least one of these areas: 1. **Access to the Tin Canny endpoint**. H5P and uploaded modules must have unrestricted access to send anonymous communications to our the virtual endpoint that Tin Canny creates on your site. Maintenance plugins (and other plugins that redirect users across the site), security plugins, proxies (like Cloudflare) and similar tools can block the access that’s needed for your modules to pass data to Tin Canny. 2. **Stored verbs and other data are different than expected**. Different authoring tools send different statements. If you set up a Mark Complete restriction on a “Completed” verb, but your module doesn’t send that verb, the Mark Complete button will never unlock. 3. **Javascript conflicts**. These are less common, but in some cases other plugins may interfere and prevent the Mark Complete button from unlocking. Here are some important steps to try when investigating Mark Complete unlock errors: 1. Understand your data. Open 2 windows, one showing the *Tin Can* report and the other your module. As you go through the module, continually refresh the Tin Can report to see understand what statements are triggered when. Also make sure the completion condition you want to use is actually recorded properly. 2. Start with simple conditions. Don’t jump right into something like “result>80”. Start with a single verb that you know is being passed. 3. Make sure you test with a regular user, not an admin or someone that completed the module previously, and that the user is signed in and enrolled in the course. 4. Clone to a Staging environment and disable other plugins (except LearnDash and Tin Canny). This can help to rule out a conflict. Try to see if things work as expected in that environment. 5. Check the browser console on the module page by choosing **View > Developer > Javascript Console** in Chrome. Is anything in red? Are the warnings anything that can be resolved or things that might indicate a probably that would affect Tin Canny? Note here that if you see 403 errors it indicates a permissioning issue, and 500 errors often have associated entries in the web server error log that should be investigated. If you continue experiencing issues that can’t be resolved, reach out to our support team for assistance. **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Authoring Tools Supported by Tin Canny](https://www.uncannyowl.com/knowledge-base/authoring-tools-supported/) **Published:** September 4, 2017 **Author:** yuehchin **Content:** ### Tin Canny Reporting – Version 4.0 and up Starting with Tin Canny 4.0, we will provide support for **almost all standards-compliant SCORM and xAPI/Tin Can modules**. This includes dispatch files, but not all authoring tools that publish dispatch have full support for resume (and in some cases tracking) behaviours in Tin Canny. Multi-SCO modules are currently not supported. A good test for compatibility is trying the module on [SCORM Cloud](https://cloud.scorm.com/sc/guest/SignInForm), but in some cases, due to WordPress architecture and behaviour, we cannot guarantee support for all authoring tools. Tin Canny testing is done primarily against Storyline, iSpring, Rise, Captivate and H5P. ### Tin Canny Reporting – Versions earlier than 4.0 Earlier versions of Tin Canny only support **tracking of Tin Can (xAPI) and SCORM statements from e-learning modules authored with Storyline 2/3/360, Articulate Rise, Adobe Captivate 9/2017/2019, iSpring 8/9, and H5P.** See the following support matrix for details about pre-4.0 authoring tool support: \[table id=7 /\] Note if you try to upload a zip file created by a tool **not** SCORM or xAPI compliant, you’ll see a warning that xAPI/SCORM statements sent by the module will not be recorded and you’ll be prompted to select the .html file in the zip that will launch the content. 1 Articulate Rise modules will only send a Completed or Passed/Failed verb if they are displayed via Lightbox or a new window and upon closing the lightbox/window. When adding Rise modules, you should avoid using iFrame as the display method (at least if SCORM is being used; xAPI modules from recent Rise versions may work). Alternatively, you can override Completion Condition on the lesson or topic edit page by specifying other verbs such as “attempted” or “experienced” to trigger the Mark Complete button. 2 iSpring 8 modules will unfortunately fail in Chrome with versions 80 and higher. iSpring cannot patch older modules and is therefore requiring the course authors republish them with iSpring 9 for proper tracking with Chrome 80 and higher. 3 iSpring modules whose completion is based on viewing of slides will only send a Passed verb if the module is displayed via Lightbox or a new window and upon closing the lightbox/window. When adding iSpring modules, you should avoid using iFrame as the display method. Alternatively, you can override Completion Condition on the lesson or topic edit page by specifying other verbs such as “attempted” or “experienced” to trigger the Mark Complete button. **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Cancelling Codes](https://www.uncannyowl.com/knowledge-base/cancelling-codes/) **Published:** September 1, 2022 **Author:** Ken **Content:** With the ability to generate hundreds or thousands of codes for use by businesses and organizations, the ability to cancel codes within a batch helps when managing situations such as partial refunds or the need to invalidate codes after limited registration thresholds have been met. To prepare for code cancellation, you’ll need to create a CSV containing the codes to be cancelled in a column with the heading “code”. You can upload a file in the same format as the file generated when you download a code batch. Uncanny Codes will ignore the other columns: ![](https://www.uncannyowl.com/wp-content/uploads/2022/09/cancel-codes.png "cancel-codes - Uncanny Owl") Once you have the .csv, go to **Uncanny Codes > Cancel codes** and upload the .csv: ![](https://www.uncannyowl.com/wp-content/uploads/2022/09/wordpress-codes.png "wordpress-codes - Uncanny Owl") Once you’ve uploaded the .csv, you’ll see a confirmation of the codes that were cancelled: ![](https://www.uncannyowl.com/wp-content/uploads/2022/09/cancelled-codes-confirmation.png "cancelled-codes-confirmation - Uncanny Owl") The code batch page will also indicate the codes that have been cancelled: ![](https://www.uncannyowl.com/wp-content/uploads/2022/09/uncanny-codes.png "uncanny-codes - Uncanny Owl") Codes that have been cancelled can no longer be redeemed by users. Upon redemption, they will see an error message indicating the code has been cancelled: ![](https://www.uncannyowl.com/wp-content/uploads/2022/09/cancelled-codes-message.png "cancelled-codes-message - Uncanny Owl") **Article Categories:** Uncanny Redemption Codes --- ### [LearnDash Quiz Question Analysis Report](https://www.uncannyowl.com/knowledge-base/learndash-quiz-question-analysis-report/) **Published:** March 31, 2022 **Author:** Ryan Moore **Content:** The LearnDash Quiz Question Analysis report is a front end report for Administrator and Group Leader roles that allows easy review of selections for multiple choice questions. To use the report, add this shortcode to a page in WordPress: ``` [uo_question_report] ``` When viewed by a user, the report looks like the screenshot below. [![LearnDash Quiz Question Analysis Report](https://www.uncannyowl.com/wp-content/uploads/2022/03/LearnDash_Quiz_Question_Analysis.png "LearnDash_Quiz_Question_Analysis - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2022/03/LearnDash_Quiz_Question_Analysis.png) This is a very powerful report for analyzing question quality and performance, but there are several things users should keep in mind when using the report: 1. Administrators can see results for all quizzes and users. Group Leaders see quizzes associated with courses in their groups and for users in their groups only. 2. Records are output for LearnDash “single choice” (a.k.a. multiple choice) question types only. The report will also only work when there are 2 to 5 possible answers to a question. If there are fewer than 5 answers for all questions, fewer columns will be output. 3. Percentages are colour coded to make it easy to review results at a glance. If a correct answer has a percentage of students answers in the 90-100% range, it will be solid green. If it’s 0-10% (suggesting the question is too hard because few people choose the correct answer), it’s dark red. The shade of green or red varies for percentages between the extremes, and for distractors, the colours are reversed. 4. The average time to answer each question is output in seconds. 5. HTML (this includes images) is stripped from the “Question” column. This is done primarily to make sure there are no significantly layout issues in the report. Because the report can include a lot of columns if there are several distractors for questions, sites may fine it useful to extend the report beyond the normal page body area. If that would be useful to your site, you can use the following CSS as a model for making the report wider than the page normally allows: ``` /** * Tin Canny - [uotc-group-report] * Creates a full-width report */ #uotc-group-report .uotc-question-report__table { position: relative; } #uotc-question-report_wrapper { width: calc(100vw - 60px); transform: translateX(-50%); left: 50%; background: #fff; } ``` **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Template Overrides](https://www.uncannyowl.com/knowledge-base/template-overrides/) **Published:** April 22, 2019 **Author:** Ken **Content:** Uncanny Codes 3.0.3 and later allows developers to edit template files in an upgrade-safe way using overrides. Copy the template file into a directory within your theme named /uncanny-codes/, keeping the same file and folder structure but removing the /templates/ subdirectory. For example, to override the Codes registration form, copy: wp-content/plugins/uncanny-learndash-codes/src/templates/frontend-user-registration-form.php to wp-content/themes/yourtheme/uncanny-codes/frontend-user-registration-form.php The copied file will now override the default. Warning: Do not edit these files within the the Uncanny Codes plugin itself, as they are overwritten during the upgrade process and any customizations will be lost. Customizations should only be attempted by experienced developers, as we cannot provide support for custom code. **Article Categories:** Uncanny Redemption Codes --- ### [User Report](https://www.uncannyowl.com/knowledge-base/user-report/) **Published:** September 6, 2017 **Author:** yuehchin **Content:** ### Overview The User Report in the [Tin Canny LearnDash Reporting](/tin-can-lrs-learndash-report-toolkit) plugin lets you monitor the progress that your learners make in courses they are enrolled in. When the User Report first loads, it shows you a list of all users in the system\*. You can search for a particular individual by his/her name or email address. You can also sort the list by a column heading (for example, the Display Name as in the image shown). \* Group Leaders will see consolidated user data of their assigned groups. If a Group Leader is assigned to multiple groups, they will see all data together in the User Report. [![user report](https://www.uncannyowl.com/wp-content/uploads/2019/05/user-report.png "user report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/05/user-report.png) ### Drill-Down User Report Clicking on the name or email address of a user will take you to a list of courses that the user is enrolled in as well as their overall progress in those courses. [![Drill down user report](https://www.uncannyowl.com/wp-content/uploads/2019/05/drill-down-user-report3.png "drill down user report3 - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/05/drill-down-user-report3.png) You can click anywhere in a row in the course list table to see the user’s progress in that particular course, including their overall performance and detailed activities of lessons, topics, quizzes, assignments, and Tin Can. [![user progress report](https://www.uncannyowl.com/wp-content/uploads/2019/05/user-progress.png "user progress - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/05/user-progress.png) ### User details To change the user columns that are shown in the User reports, visit the **Tin Canny > Settings** page and look for the *User identifier(s)* section. Check or uncheck the columns you want displayed in User reports. [![User settings in Tin Canny reports](https://www.uncannyowl.com/wp-content/uploads/2021/02/User_settings_in_Tin_Canny_Reports.png "User_settings_in_Tin_Canny_Reports - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/02/User_settings_in_Tin_Canny_Reports.png) ### Sort options Sorting is available for all columns but is turned off by default. To enable sorting, visit **Tin Canny > Settings** and turn on the *Enable Sorting by % Complete* option. **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Generate Historical LearnDash Course Credits](https://www.uncannyowl.com/knowledge-base/generate-learndash-course-credits/) **Published:** January 13, 2021 **Author:** Ryan Moore **Content:** Version 3.2 of the [Uncanny Continuing Education Credits plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) adds the ability to generate missing credit records. This means that students who completed LearnDash courses before installing of the plugin and/or before credits were assigned to the course can have a permanent record of the completion stored and a credit value assigned. [![Generate Continuing Education Credits for LearnDash](https://www.uncannyowl.com/wp-content/uploads/2021/01/Generate_Continuing_Education_Credits_for_LearnDash.png "Generate_Continuing_Education_Credits_for_LearnDash - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2021/01/Generate_Continuing_Education_Credits_for_LearnDash.png) To generate historical completion records, perform the following: 1. Edit a LearnDash course in/wp-admin/ and make sure it has a credit value assigned. 2. Navigate to **Uncanny CEUs > Generate CEUs** as in the screenshot above (this may have different text depending on what you call credits in our plugin). 3. Choose a course from the drop-down list. 4. Click the **Add missing records** button to generate missing credits and completion records. Please note the following when using this tool: - Credits are only awarded for students that have a LearnDash completion record but no credits for that completion. It will *not* modify CEU values for existing users that already have credits assigned. In other words, if a course had a credit value of 2.0 assigned, a user completed the course and earned 2 credits, then you change the value to 3.0 and run the *Generate CEUs* function, the student will continue to have 2.0 earned credits, *not* 3.0. - Only courses with a credit value greater than 0 can be awarded credits. If you don’t see a course in the drop-down list, make sure it has credits assigned. - The batch generation of credits does not consider course and group enrollment. This means that if the user has a historical completion but no credit, we will award credits even if the user no longer has access to the course. **Article Categories:** Uncanny Continuing Education Credits --- ### [xAPI Quiz Report](https://www.uncannyowl.com/knowledge-base/xapi-quiz-report/) **Published:** September 7, 2017 **Author:** Ken **Content:** ### Overview The xAPI Quiz Report captures individual quiz question responses from xAPI content. It is part of the [Tin Canny LearnDash Reporting](/tin-can-lrs-learndash-report-toolkit) plugin that we developed to support the use of eLearning authoring tools like Articulate Storyline and Rise, Adobe Captivate, and iSpring with LearnDash. In this report, you will see the learning records resulting from users’ interactions this support xAPI content created with these tools. These records are stored in a Learning Record Store (LRS) entirely native to your WordPress site. All you need to do is publish your file using the xAPI standard, and use the [Tin Canny Uploader](https://www.uncannyowl.com/knowledge-base/storyline-captivate-uploader/) to add it to a lesson or topic associated with a course. **Important**: Tin Canny only tracks and reports on the data you see in the xAPI Quiz Report columns. \* See [the full list of authoring tools supported by Tin Canny](https://www.uncannyowl.com/knowledge-base/authoring-tools-supported/) ### Report Filters Let’s take a look at the xAPI Quiz Report view. [![](https://www.uncannyowl.com/wp-content/uploads/2019/05/LearnDash_xAPI_Quiz_Report.png "LearnDash_xAPI_Quiz_Report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/05/LearnDash_xAPI_Quiz_Report.png) The report view includes many filtering options\* for you to narrow in on data you are interested to see. For example, you may want to view all the learning records related to a particular Storyline module. You may want to check all the activities that took place within a certain time period. Or you may want to find out whether or when a particular user completed the module. Please note that to use the Module filter, you must filter by Course first. In other words, choose a course from the drop-down, run the search again, and then the Module selections will be available. \* Note that group leaders will only see data of their assigned groups. ### Column Selection Use the Screen Options button in the top right corner of the screen to show or hide additional columns from the table. ### Export to CSV For a large course, you can potentially be looking at hundreds of thousands of records. The Export to CSV button lets you download the filtered result as a CSV file so you can do further analysis in Microsoft Excel or statistical programs. **Article Categories:** Tin Canny Reporting for LearnDash --- ### [Required Credits](https://www.uncannyowl.com/knowledge-base/required-credits/) **Published:** August 4, 2017 **Author:** Ryan Moore **Excerpt:** Learn how you can set and manage required credits per user or per LearnDash group. **Content:** ### Overview In version 1.1 of the [Uncanny Continuing Education Credits plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) we introduced the concept of “required credits”. Building on the rollover date that’s in the plugin, new functionality offers a way to set targets for learners that have annual training requirements. Credit thresholds can be set for both individual users and groups, and we added a simple way to handle multiple credit thresholds for users. For example, let’s suppose that John Smith has an individual requirement of 50 course credits in a year. John is also a member of Group A, which has a credit requirement of 40, and Group B, which has a credit requirement of 75. Of the 3, Group B requires the most credits, so that’s how many John must earn for the year. Tracking users against continuing education credit requirements is easy. Several shortcodes/blocks are included to make it easy for learners to plan their training in the front end; email reminders can be sent out reminding users of their credit requirements; and a deficiency report has been added to the plugin so administrators can see at a glance who has not yet fulfilled their training requirements. ### Setting Credit Requirements [![](https://www.uncannyowl.com/wp-content/uploads/2017/08/individual_required_credits.png "individual_required_credits - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/08/individual_required_credits.png)Before this functionality can be used, a rollover date must be set in the plugin settings and required credits at the user and/or group level must be set. *Please note that required credits can only be set if a rollover date is set first.* To set an individual requirement, simply edit the user’s profile. Look for the Required field as shown on the right (“CEUs” would be replaced by your plural credit label). Enter a number in the field and save the user’s profile to set the annual required credit threshold. (The Group field to the right is read-only in the user’s profile because it simply looks up the user’s highest required credits based on his or her group membership). [![](https://www.uncannyowl.com/wp-content/uploads/2017/08/required_ceus_group.png "required_ceus_group - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/08/required_ceus_group.png)To set group requirements, edit the LearnDash Group for which you want to set a required number of credits. In the top right area of the edit page, you should see a field where you can set the required credit value. Enter a number and save the group to set the threshold for all users in that group. ### Shortcodes/Blocks Two shortcodes/blocks are included in the Uncanny Continuing Education Credits plugin for LearnDash to specifically to help with tracking training requirements. ``` [uo_ceu_days_remaining] ``` Block Name: **Days Remaining** This shortcode/block outputs the number of days that remain until the rollover date. Learners can reference this value so they know how much time they have until all of their credits must be earned. ``` [uo_ceu_credits_remaining user_id="id"] ``` Block Name: **Credits Remaining** This shortcode/block shows users how many credits they need to earn before the rollover date. If no user\_id is specified, the shortcode/block will show the value for the current user. As a reminder, the number of credits shown is the *highest* of a user’s associated individual and group credit requirements. Note that neither shortcode/block can return a negative value. On the rollover date, the number of days remaining always resets. And if a user has earned more than his or her required credits, they have 0 credits remaining. A credit excess is not shown to users. ### Email Reminders Included in the Continuing Education Credits plugin is an easy way to remind users about their outstanding credit requirements. By turning on email reminders, users will automatically receive an email X days before the rollover date to remind them about what they’ve earned and what they still need to earn. The number of days before the rollover date, the email subject line and the email body can all be customized. [![](https://www.uncannyowl.com/wp-content/uploads/2019/01/learndash-ceu-reminder-email-446x500.png "learndash-ceu-reminder-email - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/01/learndash-ceu-reminder-email.png) The screenshot to the right lists all available fields that can be used in the email subject and body. Here’s a summary: \[table id=18 /\] **Very Important** Setting an email reminder will *send all emails at the same time*. That means that if 1,000 users in your system have outstanding credit requirements, 1,000 emails will go out. This level of email volume can significantly impact sites on less robust hosting (potentially even taking them down) and really isn’t recommended on any host. Instead, please consider using a third party transaction email service if you want to send out email reminders. SparkPost, SendGrid, Mandrill and Amazon SES are all popular options. We strongly recommend you check the number of emails that will go out before they are sent (so check the deficiency report a few days before the notification date) and have something in place to ensure the emails will be delivered reliably. ### Deficiency Report To make monitoring progress against required credits easier for administrators, the [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) plugin includes a Deficiency Report. In it, you can search by user, group or against all users to list who hasn’t yet completed their training requirements. Note that users who have completed their required credits (or have no required credits) *will not be listed*. Anyone in this report has a gap between earned and required credits. [![Deficiency report](https://www.uncannyowl.com/wp-content/uploads/2019/03/deficiency-report.png "deficiency-report - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/03/deficiency-report.png) **Article Categories:** Uncanny Continuing Education Credits --- ### [Set Up the Uncanny Continuing Education Credits Plugin](https://www.uncannyowl.com/knowledge-base/setup-continuing-education-credits-plugin/) **Published:** July 20, 2017 **Author:** Ryan Moore **Excerpt:** Learn how to set up the Uncanny Continuing Education Credits plugin for LearnDash. **Content:** ### Installation As with all of our plugins, installing is really easy (but please make sure your site is running PHP 5.6 or higher first). After you [purchase and download the plugin](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/), you can simply sign into your WordPress site as an admin and navigate to **Plugins > Add New**. To install the plugin, click **Upload Plugin** to start the process. After installation, you will be directed to the License Activation page to enter your license key and activate the plugin. ### Setup Once enabled, the plugin adds an **Uncanny CEUs** menu for administrators in /wp-admin/. There are 4 settings pages in this plugin:[![](https://www.uncannyowl.com/wp-content/uploads/2019/01/uncanny-ceu-menu.png "uncanny-ceu-menu - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2019/01/uncanny-ceu-menu.png) 1. **Settings** allows you to change the label for credits you award. Use CEUs, Credits, PDUs, or whatever else is appropriate for your organization. We recommend keeping this value short. You can also set the rollover date here. 2. **License Activation** is where the license key can be added for automatic plugin updates. 3. **Course Report** is the back end report for administrators that provides a complete breakdown of credits earned, with filters for date range and LearnDash Group plus a CSV export function. 4. **Email Settings** is used to turn on new triggers for awarding certifications by credits earned and completing course combinations. Email content for sending certificate PDF files is also set here. ### Rollover Dates An important concept in the Settings is the Rollover Date, mentioned above. This can be used by sites offering training that must be completed on an annual basis, especially for compliance programs and internal training. When a rollover date is set, it’s used on user profile pages and in shortcodes to capture how many credits have been completed for the current period. When the calendar date is reached, the credit values for rollover calculations are reset. In future we may use this date to track credit requirements against credits earned and issue email notifications when users have earned insufficient credits for the year. ### Credit Permanence Once credits are earned a permanent record is maintained outside of LearnDash records. That means that if you change courses, change credit values or perform any other changes at the course level the continuing education credits are not affected. This helps to ensure learners are never surprised by credit changes. When credits are earned we store *course name, credits* and *date.* Please note that once credits are earned they cannot be modified (without editing the records in the database directly). We created the plugin this way to make sure learners don’t have discrepancies between their expectations and changes by administrators in the system. If for some reason the permanent records for a user need to be reset, you can do so with the following SQL commands. Please ensure you take a site backup before attempting to execute any of these commands. **Reset credits for a single user: Change 1 to whatever the user’s id is** DELETE FROM `wp\_usermeta` WHERE user\_id = 1 AND (meta\_key LIKE ‘ceu\_earned\_%’ OR meta\_key LIKE ‘ceu\_date\_%’ OR meta\_key LIKE ‘ceu\_title\_%’ OR meta\_key LIKE ‘ceu\_course\_%’) **Reset credits for all users:** DELETE FROM `wp\_usermeta` WHERE meta\_key LIKE ‘ceu\_earned\_%’ OR meta\_key LIKE ‘ceu\_date\_%’ OR meta\_key LIKE ‘ceu\_title\_%’ OR meta\_key LIKE ‘ceu\_course\_%’ **Article Categories:** Uncanny Continuing Education Credits --- ### [Adding Credits to Courses](https://www.uncannyowl.com/knowledge-base/adding-course-credits/) **Published:** July 21, 2017 **Author:** Ryan Moore **Excerpt:** Learn how to assign continuing education credits/hours/units to your LearnDash courses. **Content:** ### Overview [![Add credits to courses](https://www.uncannyowl.com/wp-content/uploads/2017/07/course_edit_credits.png "course_edit_credits - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/07/course_edit_credits.png)To add credit values to courses, simply edit one of your LearnDash courses with the [Uncanny Continuing Education Credits](https://www.uncannyowl.com/downloads/uncanny-continuing-education-credits/) plugin active. The plugin will add a new metabox to the upper right of the edit page where you can define a credit value. (The specific title for this widget will change depending on how you have labelled your credits in the plugin settings.) Enter a value between 0.01 and 99.99 (up to 2 decimal places are allowed) and that’s how many credits will be awarded for completing the course. That’s all there is to it! Credits can be awarded for course completions only. Lessons, topics, and other post types aren’t applicable for earning credits. ### Note *Please note* that credits are only awarded for courses completed after the plugin is activated and credits assigned for the course. The plugin only looks at the course currently completed when it assigns credit values. **Article Categories:** Uncanny Continuing Education Credits --- ### [WooCommerce Shortcodes](https://www.uncannyowl.com/knowledge-base/woocommerce-shortcodes/) **Published:** March 30, 2017 **Author:** Ryan Moore **Content:** \[table id=8 /\] ### Sorting Products In the following shortcodes, you can use the “orderby” attribute to order products by **menu\_order**, **title**, **date**, **rand**, **id**: - \[recent\_products\] - \[featured\_products\] - \[products\] - \[product\_category\] - \[sale\_products\] - \[top\_rated\_products\] - \[product\_attribute\] - \[related\_products\] For example: ``` [products skus="c01, c02, c03" orderby="date" order="desc"] ``` --- ### [BadgeOS Shortcodes](https://www.uncannyowl.com/knowledge-base/badgeos-shortcodes/) **Published:** March 30, 2017 **Author:** Ryan Moore **Content:** ### Achievements List ``` [badgeos_achievements_list] ``` Use this shortcode to generate a list of achievements of any type on any page. **Available parameters:** - “type” — Which Achievement Types to list. Default: all. (Use the Achievement Type’s slug as the type.) - “limit” — the number of achievements to display per page. Default: 10. - “show\_filter” — Display the filter menu options above the list. (Accepts: true, false) Default: true - “show\_search” — Display the search form above the list. (Accepts: true, false) Default: true **Example:** \[badgeos\_achievements\_list type=badges limit=15\] ### Single Achievement ``` [badgeos_achievement] ``` Use this shortcode to embed a single achievement on any post or page. This is a great tool if you want to display a specific achievement (including its title, badge image, and excerpt, along with a link to the full achievement) on any page. **Required parameter:** “id” — The ID of the achievement to display. **Example:** \[badgeos\_achievement id=12\] ### Submission Box ``` [badgeos_submission] ``` Use this shortcode to add a submission box on any page that is tied to a specific achievement. When the submission is accepted, the achievement is earned. This is a great way to create a call to action on any post or page on your site that invites submissions. (The achievement specified must be set to require a Submission by the user.) **Required parameter:** “id” — The ID of the achievement to be awarded when the submission is accepted. **Example:** \[badgeos\_submission achievement\_id=35\] ### Nomination Box ``` [badgeos_nomination] ``` Use this shortcode to add a nomination box on any page that is tied to a specific achievement. When the nomination is accepted, the achievement is earned. This is a great way to create a call to action on any post or page on your site that invites nominations of fellow members of your site. (The achievement specified must be set to be awarded by Nomination.) **Required parameter:** “id” — The ID of the achievement to be awarded when the nomination is accepted. **Example:** \[badgeos\_nomination achievement\_id=35\] ### Submissions List ``` [badgeos_submissions] ``` Use this shortcode to place a list of pending, accepted and/or denied achievement Submissions on any page. The shortcode is role dependent. If a user has BadgeOS review privileges to review incoming BadgeOS Submissions, the listing will include all user Submissions and the ability to accept or deny. It the current user does not have the ability to review Submissions, they will instead see just their own Submissions. In this way, this shortcode lets you essentially set up an inbox/outbox on the front-end of your site so users and reviewers alike can track progress for achievements requiring interaction between site admin and site members. **Available parameters:** - “limit” — Number of submissions to display per page. Default: 10 - “status” — Which Approval Status type to show on initial page load. (Accepts: all, pending, auto-approved, approved, denied) Default: all - “show\_filter” — Display the filter select input. (Accepts: true, false) Default: true - “show\_search” — Display the search form. (Accepts: true, false) Default: true - “show\_attachments” — Display attachments connected to the submission. (Accepts: true, false) Default: true - “show\_comments” — Display comments associated with the submission. Default: true **Example:** \[badgeos\_submissions status=pending limit=15\] ### Nominations List ``` [badgeos_nominations] ``` Use this shortcode to place a list of pending, accepted and/or denied achievement Nominations on any page. The shortcode is role dependent. If a user has BadgeOS review privileges to review incoming BadgeOS Nominations, the listing will include all user Nominations and the ability to accept or deny. It the current user does not have the ability to review Nominations, they will instead see just their own Nominations. **Available parameters:** - “limit” — Number of nominations to display per page. Default: 10 - “status” — Which Approval Status type to show on initial page load. (Accepts: all, pending, approved, denied) Default: all - “show\_filter” — Display the filter select input. (Accepts: true, false) Default: true - “show\_search” — Display the search form. (Accepts: true, false) Default: true **Example:** \[badgeos\_nominations show\_search=false limit=20\] --- ### [bbPress Shortcodes](https://www.uncannyowl.com/knowledge-base/bbpress-shortcodes/) **Published:** April 26, 2018 **Author:** Ryan Moore **Content:** \[table id=9 /\] --- ### [Form Shortcodes](https://www.uncannyowl.com/knowledge-base/form-shortcodes/) **Published:** July 5, 2017 **Author:** Ryan Moore **Content:** Form shortcodes can be used on any post or page on your WordPress site. **Example:** ``` [gravityform id="1" title="false" description="false" ajax="true" tabindex="49"] ``` **id** (required): The ID of the form to be embedded **title:** Whether or not to display the form title (default: “true”) **description:** Whether or not to display the form description (default: “true”) **ajax:** Whether or not to use AJAX to submit the form **tabindex:** The starting tab index for the fields of this form ### Conditional Shortcodes Use conditional shortcodes \[gravityforms\]\[/gravityforms\] to add conditions in the message of your Admin and User Notification emails as well as the Confirmation Message that is displayed when a form is submitted. **Example 1:** ``` [gravityforms action="conditional" merge_tag="{Number:1}" condition="greater_than" value="3"] Content you would like to conditionally display. [/gravityforms] ``` **action** (required): Must be set to “conditional” as in the example above. **merge\_tag** (required): The form merge tag whose value you are executing the conditional logic for. You can get the correct merge tag for the form data you would like to use using the insert merge tag drop down. **condition** (required): The type of condition used to determine success. Available conditions are: is, isnot, greater\_than, less\_than, contains, starts\_with, ends\_with. **value** (required): The value that the condition must equal in order for the condition to be met and the content displayed. **Example 2:** ``` [gravityforms action="conditional" merge_tag="{Number:1}" condition="greater_than" value="10"] This content would be displayed if the value of field id 1 is greater than 10. [/gravityforms] ``` **Example 3:** ``` [gravityforms action="conditional" merge_tag="{Country:5}" condition="is" value="United States"] This content would be displayed if the value of field id 5 is United States. [/gravityforms] ``` **Example 4:** ``` [gravityforms action="conditional" merge_tag="{Country:5}" condition="isnot" value=""] This content would be displayed if no value exists for field id 5. [/gravityforms] ``` --- ### [Learndash Shortcodes](https://www.uncannyowl.com/knowledge-base/learndash-shortcodes/) **Published:** March 22, 2017 **Author:** Ryan Moore **Content:** ### Introduction This list of shortcodes was created for users of our [Uncanny LP](https://uncannylp.com/) LearnDash system to provide easy access to available LearnDash shortcodes. While other LearnDash users can use the shortcodes listed in the *Course* and *Certificate* sections, please note that all shortcodes in the *Group Shortcodes* section require our [Uncanny LearnDash Groups plugin](https://www.uncannyowl.com/downloads/uncanny-learndash-groups/) on sites that are not using our LP product. ### Course Shortcodes \[table id=13 /\] ### Group Shortcodes \[table id=14 /\] ### Certificate Shortcodes \[table id=15 /\] **Article Categories:** Existing Customers --- ### [Making eLearning Modules Responsive in iFrame](https://www.uncannyowl.com/knowledge-base/responsive-modules-iframe/) **Published:** September 10, 2017 **Author:** yuehchin **Content:** When you choose to embed your eLearning module in an iFrame, you have the option to set its width and height in the upload dialogue. The default width is 100%, and default height is 600px. [![tincanny_uploader_iframe_size](https://www.uncannyowl.com/wp-content/uploads/2017/05/tincanny_uploader_iframe_size.png "tincanny_uploader_iframe_size - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/05/tincanny_uploader_iframe_size.png) Since the size of your learner’s browser window varies, your eLearning module should resize accordingly to take up 100% width of available space. However, the height remains fixed and content will be vertically centered in the iFrame. As a result, you may see additional space above and below the module on smaller screens or mobile devices. Because each authoring tool (Storyline, Captivate, and iSpring) supported by Tin Canny has its unique way of defining layout elements in the published module, at this time there isn’t a workable solution we can implement that will work consistently with all authoring tools. The following CSS fixes can be added manually to your site to address the layout issue you may experience when trying to display eLearning modules in iFrame. ### Custom CSS for Storyline 2 and Storyline 360 Modules Before you publish your Storyline module, in Browser Settings make sure the Player size is set to “Scale player to fill browser window”. [![tincanny_storyline_player_properties](https://www.uncannyowl.com/wp-content/uploads/2017/05/tincanny_storyline_player_properties.png "tincanny_storyline_player_properties - Uncanny Owl")](https://www.uncannyowl.com/wp-content/uploads/2017/05/tincanny_storyline_player_properties.png) After you upload and choose to insert your module in an iFrame, you should see a shortcode similar to the following: `[vc_snc embed_type="iframe" item_id="1" item_name="Lesson 1" width="100%" height="600px" frameborder="0" src="https://yourdomain.com/wp-content/uploads/uncanny-snc/1/story.html"]` Remove the width and height attributes, and wrap the shortcode in a
like the following: `[vc_snc embed_type="iframe" item_id="1" item_name="Lesson 1" frameborder="0" src="https://yourdomain.com/wp-content/uploads/uncanny-snc/1/story.html"]` Note that the value of padding-bottom should be equal to your module’s **(height/width)\*100** To calculate the aspect ratio of your published module, you need to know your story size, plus [any additional width and height added to the player features](https://community.articulate.com/series/4/articles/choosing-a-story-size-in-articulate-storyline-2#player). For example, a chromeless player that is 720 pixels x 540 pixels will have 20 pixels added to the player frame. So the value of padding-bottom will be (560/740) \* 100 = 75.7 You also need to add the following CSS for the div and iframe: `.iframe-ratio {width: 100%;height: 0;position: relative; }` `.iframe-ratio iframe {width: 100%;height: 100%;position: absolute; }` With these changes, your published Storyline module should scale proportionally in different browser sizes. ### Custom CSS for Captivate 9 Modules The above guidelines for Storyline also work for Captivate. The key is to find out the width and height of your published Captivate module, taking into consideration any additional pixels added by the player features. ### Custom CSS for iSpring 8 Modules The above guidelines for Storyline also work for iSpring. The key is to find out the width and height of your published iSpring module, taking into consideration any additional pixels added by the player features. **Article Categories:** Tin Canny Reporting for LearnDash --- ## Categories ### [Uncategorized](https://www.uncannyowl.com/category/uncategorized/) --- ### [Lean Startup](https://www.uncannyowl.com/category/lean-startup/) --- ### [Learning](https://www.uncannyowl.com/category/learning/) --- ### [Marketing](https://www.uncannyowl.com/category/marketing/) --- ### [News](https://www.uncannyowl.com/category/news/) --- ### [WordPress Book](https://www.uncannyowl.com/category/book/) --- ### [eLearning](https://www.uncannyowl.com/category/elearning/) --- ### [Best Practices](https://www.uncannyowl.com/category/best-practices/) --- ### [Tin Can](https://www.uncannyowl.com/category/tin-can/) --- ### [LearnDash](https://www.uncannyowl.com/category/learndash/) --- ### [Uncanny LearnDash Toolkit](https://www.uncannyowl.com/category/uncanny-learndash-toolkit/) --- ### [Continuing Education](https://www.uncannyowl.com/category/continuing-education/) --- ### [Uncanny LP](https://www.uncannyowl.com/category/uncanny-lp/) --- ### [Uncanny Automator](https://www.uncannyowl.com/category/uncanny-automator/) --- ### [Uncanny Groups](https://www.uncannyowl.com/category/uncanny-groups/) --- ## Tags ### [lean startup](https://www.uncannyowl.com/tag/lean-startup-2/) --- ### [minimum viable product](https://www.uncannyowl.com/tag/minimum-viable-product/) --- ### [mvp](https://www.uncannyowl.com/tag/mvp/) --- ## Download Categories ### [LearnDash Add-ons](https://www.uncannyowl.com/downloads/category/learndash-add-ons/) --- ### [Consulting](https://www.uncannyowl.com/downloads/category/consulting/) --- ### [Uncanny Learning Platform](https://www.uncannyowl.com/downloads/category/uncanny-learning-platform/) --- ## PayPal IPN Types ### [Completed](https://www.uncannyowl.com/paypal_ipn/completed/) --- ### [Refunded](https://www.uncannyowl.com/paypal_ipn/refunded/) --- ### [Pending](https://www.uncannyowl.com/paypal_ipn/pending/) --- ### [Reversed](https://www.uncannyowl.com/paypal_ipn/reversed/) --- ## Article Categories ### [Uncanny Toolkit for LearnDash](https://www.uncannyowl.com/article-categories/uncanny-learndash-toolkit/) --- ### [Existing Customers](https://www.uncannyowl.com/article-categories/existing-clients/) --- ### [Uncanny Toolkit Pro for LearnDash](https://www.uncannyowl.com/article-categories/uncanny-toolkit-pro/) --- ### [Tin Canny Reporting for LearnDash](https://www.uncannyowl.com/article-categories/tin-canny-learndash-reporting/) --- ### [Uncanny Redemption Codes](https://www.uncannyowl.com/article-categories/uncanny-learndash-code/) --- ### [Uncanny Continuing Education Credits](https://www.uncannyowl.com/article-categories/uncanny-ceus-learndash/) --- ### [Uncanny Groups for LearnDash](https://www.uncannyowl.com/article-categories/uncanny-learndash-groups/) --- ### [Your Account](https://www.uncannyowl.com/article-categories/your-account/) --- ## Hook Types ### [action](https://www.uncannyowl.com/hooks/type/action/) --- ### [filter](https://www.uncannyowl.com/hooks/type/filter/) --- ## Integrations ### [core](https://www.uncannyowl.com/hooks/integration/core/) --- ### [Fluent Forms](https://www.uncannyowl.com/hooks/integration/fluent-forms/) --- ### [Forminator](https://www.uncannyowl.com/hooks/integration/forminator/) --- ### [gravity-forms](https://www.uncannyowl.com/hooks/integration/gravity-forms/) --- ### [Woocommerce](https://www.uncannyowl.com/hooks/integration/woocommerce/) --- ## Plugins ### [uncanny-continuing-education-credits](https://www.uncannyowl.com/hooks/plugin/uncanny-continuing-education-credits/) --- ### [tin-canny-learndash-reporting](https://www.uncannyowl.com/hooks/plugin/tin-canny-learndash-reporting/) --- ### [uncanny-toolkit-pro](https://www.uncannyowl.com/hooks/plugin/uncanny-toolkit-pro/) --- ### [uncanny-learndash-toolkit](https://www.uncannyowl.com/hooks/plugin/uncanny-learndash-toolkit/) --- ### [uncanny-learndash-groups](https://www.uncannyowl.com/hooks/plugin/uncanny-learndash-groups/) --- ### [Uncanny Redemption Codes](https://www.uncannyowl.com/hooks/plugin/uncanny-learndash-codes/) ---