{"id":76,"date":"2026-10-02T19:59:59","date_gmt":"2026-10-02T18:59:59","guid":{"rendered":"https:\/\/sripuwath.com\/index.php\/2026\/10\/02\/akismet-akismet-now-supports-drupal-12\/"},"modified":"2026-10-02T19:59:59","modified_gmt":"2026-10-02T18:59:59","slug":"akismet-akismet-now-supports-drupal-12","status":"publish","type":"post","link":"https:\/\/sripuwath.com\/index.php\/2026\/10\/02\/akismet-akismet-now-supports-drupal-12\/","title":{"rendered":"Akismet: Akismet Now Supports Drupal 12"},"content":{"rendered":"<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"wp-image-285145\" height=\"537\" src=\"https:\/\/akismet.com\/wp-content\/uploads\/2026\/09\/ad12-2.png?w=1024\" width=\"1024\" \/><\/figure>\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.drupal.org\/project\/akismet_antispam\/releases\/1.1.0\">Version 1.1.0<\/a> of the <a href=\"https:\/\/www.drupal.org\/project\/akismet_antispam\">official Akismet Drupal module<\/a> is out with support for Drupal 12. If you\u2019re planning your move to 12, spam protection won\u2019t hold you back. Here are the highlights.<\/p>\n<h2 class=\"wp-block-heading\">Drupal 12 from day one<\/h2>\n<p class=\"wp-block-paragraph\">The module now runs on Drupal 10.3+, 11 and 12. On Drupal 12, Akismet checks comments and user registrations as soon as you install it, since both live in core. Contact forms, webforms, and the Key module will be supported as soon as they\u2019re ready for D12.<\/p>\n<h2 class=\"wp-block-heading\">What else is new in 1.1.0<\/h2>\n<h3 class=\"wp-block-heading\">Better spam scoring<\/h3>\n<p class=\"wp-block-paragraph\">Every check now gives Akismet a fuller picture of each submission. The module\u2019s bot detection watches how someone fills out a form: how long they take, how they type, and how they scroll, click or tap. In 1.1.0, all of those signals feed straight into Akismet\u2019s spam scoring. With more context, Akismet can better tell a real person from a bot, so you should see more spam caught and fewer real messages flagged by mistake.<\/p>\n<h3 class=\"wp-block-heading\">Better GDPR export<\/h3>\n<p class=\"wp-block-paragraph\"><code>drush akismet:gdpr-export<\/code> now takes <code>--format=json<\/code> (or <code>csv<\/code> and <code>yaml<\/code>) and returns the full stored record for each match, including the original submission. That makes subject access requests easier to answer completely.<\/p>\n<p class=\"wp-block-paragraph\">The export also withholds the moderator\u2019s identity, as GDPR Article 15(4) allows.<\/p>\n<h3 class=\"wp-block-heading\">Clearer warnings about your stored API key<\/h3>\n<p class=\"wp-block-paragraph\">The status report now warns you about a leftover copy in yoursettings and stays visible until you deal with it. A new <strong>Delete stored API key<\/strong> form removes it in one step. You\u2019ll find the link on the settings page and in the status report.<\/p>\n<h2 class=\"wp-block-heading\">Coming from the community module?<\/h2>\n<p class=\"wp-block-paragraph\">Before the official module, some Drupal sites used the community-maintained <a href=\"https:\/\/www.drupal.org\/project\/akismet\">Akismet module<\/a> (<code>drupal\/akismet<\/code>). That project is no longer maintained. If you\u2019re still running it on Drupal 10.3 or later, 1.1.0 can take over your install in place. Your API key, connection timeout and protection settings carry over, and the update prints a report of everything it migrated, changed or dropped. Our <a href=\"https:\/\/www.drupal.org\/docs\/extending-drupal\/contributed-modules\/contributed-module-documentation\/akismet-anti-spam\/migrating-from-the-community-akismet-module\">migration guide on drupal.org<\/a> walks through the process.<\/p>\n<h2 class=\"wp-block-heading\">Get started<\/h2>\n<p class=\"wp-block-paragraph\">You\u2019ll need an Akismet API key. Grab one from our <a href=\"https:\/\/akismet.com\/pricing\/\">pricing page<\/a>. It\u2019s free for personal sites.<\/p>\n<p class=\"wp-block-paragraph\">For a new install:<\/p>\n<div class=\"wp-block-code has-background\">\n<div class=\"cm-editor\">\n<div class=\"cm-scroller\">\n<pre>\n<code><div class=\"cm-line\">composer require drupal\/akismet_antispam<\/div><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"wp-block-paragraph\">If you\u2019re already on 1.0, update the module along with the Akismet PHP SDK it depends on, then run the database updates:<\/p>\n<div class=\"wp-block-code has-background\">\n<div class=\"cm-editor\">\n<div class=\"cm-scroller\">\n<pre>\n<code><div class=\"cm-line\">composer update drupal\/akismet_antispam --with-dependencies<\/div><div class=\"cm-line\">drush updb<\/div><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"wp-block-paragraph\">The module needs Drupal 10.3, 11 or 12 and PHP 8.1 or newer, or the newer PHP your Drupal core requires.<\/p>\n<p class=\"wp-block-paragraph\">Found a bug or have an idea? Tell us in the <a href=\"https:\/\/www.drupal.org\/project\/issues\/akismet_antispam\">issue queue<\/a>.<\/p>\n<p class=\"wp-block-paragraph\">New to the module? Start with our <a href=\"https:\/\/akismet.com\/blog\/introducing-the-official-akismet-drupal-module\/\">introduction to the official Akismet Drupal module<\/a>, or see how it\u2019s built on the <a href=\"https:\/\/akismet.com\/blog\/introducing-the-official-akismet-php-sdk\/\">official Akismet PHP SDK<\/a>.<\/p>\n<p class=\"wp-block-paragraph\">\n<\/p>","protected":false},"excerpt":{"rendered":"<p>Version 1.1.0 of the official Akismet Drupal module is out with support for Drupal 12. If you\u2019re planning your move to 12, spam protection won\u2019t hold you back. Here are [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":77,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-76","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/sripuwath.com\/index.php\/wp-json\/wp\/v2\/posts\/76","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sripuwath.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sripuwath.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sripuwath.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sripuwath.com\/index.php\/wp-json\/wp\/v2\/comments?post=76"}],"version-history":[{"count":0,"href":"https:\/\/sripuwath.com\/index.php\/wp-json\/wp\/v2\/posts\/76\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sripuwath.com\/index.php\/wp-json\/wp\/v2\/media\/77"}],"wp:attachment":[{"href":"https:\/\/sripuwath.com\/index.php\/wp-json\/wp\/v2\/media?parent=76"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sripuwath.com\/index.php\/wp-json\/wp\/v2\/categories?post=76"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sripuwath.com\/index.php\/wp-json\/wp\/v2\/tags?post=76"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}