Welcome to the KnowBe4 Knowledge Base!
How can we help?
Browse by topic
Platform
Start here for account setup, user management, reporting, and shared settings across the KnowBe4 Platform.
View articlesProduct Releases
Catch up on the latest features and improvements across the KnowBe4 Platform.
View articlesAIDA
Learn how you can use AI to personalize your security awareness program and enhance human risk management.
View articlesAttack Simulation & Training
Discover how you can enable your employees to make smarter security decisions with training and simulated social engineering.
View articlesEmail & Collaboration Security
Learn how you can identify and respond to reported email threats faster and automate your email incident response plan.
View articlesAgent Security
Discover, monitor, and manage the AI agents your organization uses, so you can catch risky behavior early.
View articlesNeed more help?
More Resources opens in a new window
Can't find what you need? Browse security info, free tools, and other helpful articles.
Explore the Community opens in a new window
Connect with customers, share knowledge, and submit feature requests.
Explore the Academy opens in a new window
Build your skills with self-paced courses that help you get the most from your KnowBe4 Platform.
Recent updates
<% } %>-
<% articles.forEach(function(article) { %>
<% /* Both lookups can miss, and the category one has to be guarded by
the section it reads. sections and categories are fetched as
separate API calls from articles, and all three are
permission-filtered per viewer, so an article can legitimately
arrive whose section is not in the list -- and section['category_id']
on a null section throws. A throw here is not contained: the whole
recent-updates block fails to render, because a micro-template has
no error boundary around a single iteration. A missing category just
drops the badge, which the `if (category)` below already handles. */ %>
<% var section = sections.filter(function(section) { return section.id === article['section_id']; })[0] || null; %>
<% var category = section ? (categories.filter(function(category) { return category.id === section['category_id']; })[0] || null) : null; %>
-
<% if (category) { %>
<% var categoryPosition = category.position; %>
<% var badgeVariant = (categoryPosition >= 3 && categoryPosition < 6) ? categoryPosition - 2 : 0; %>
<%= category.name %>
<% } %>
<%= article.title %>
View article
<% }) %>