ActivityPub for WordPress

ActivityPub for WordPress's avatar
ActivityPub for WordPress
npub1sm6h...vq28
News about the ActivityPub plugin for WordPress. Powered by: WordPress Plugin: https://wordpress.org/plugins/activitypub/ Code: https://github.com/Automattic/wordpress-activitypub
With 2025 behind us, this post looks back at the roadmap we set out last year, what we worked on, and what shipped along the way. It reviews progress across core areas like moderation, following, and the experimental Reader, and highlights additional work that emerged throughout the year as we look ahead to 2026.
In June, we published our **[2025 roadmap: Building the Future of WordPress Federation]( )**, outlining the areas we wanted to focus on for the rest of the year. As we step into 2026, it’s time to look back at how the roadmap held up and what we shipped in 2025.## 2025 at a Glance2025 turned out to be an ambitious and, at times, challenging timeline. Even so, we were able to make meaningful progress across most of the areas we set out to work on. Over the course of the year, we introduced the **Following feature**, significantly expanded **moderation tooling**, refined **actor handling**, and improved the reliability and performance of core federation workflows. Along the way, we also shipped a **first experimental draft of the Reader**, offering an early look at what reading the Fediverse inside WordPress could become. Not everything on the roadmap was completed, but we’re happy with how much we were able to achieve and with the foundations that are now in place for what comes next.## RoadmapBelow is a review of the roadmap topics we outlined for 2025, what we worked on, and what remains open.### Followers / Following ✅Work in 2025 expanded ActivityPub beyond followers by **introducing the Following feature**, allowing WordPress sites and users to actively follow accounts on the Fediverse. Alongside this, we improved the reliability and performance of **both follower and following lists**, including better synchronization across instances and faster resolution and display of large collections. This work also laid the foundation for later features, such as the experimental Reader. **Related release posts:**<li><a href="https://activitypub.blog/2025/11/12/7-6-0-command-sync-go/">7.6.0 — Command, Sync &amp;&nbsp;Go</a></li><li><a href="https://activitypub.blog/2025/12/04/7-7-0-extra-quotable/">7.7.0 — Extra&nbsp;Quotable</a></li><li><a href="https://activitypub.blog/2025/12/17/7-8-0-happy-holidays/">7.8.0 – Happy Holiday</a></li>### Actors ✅ We continued refining how local and remote actors are represented and resolved. Internal refactors reduced special-case handling and improved consistency and performance across actor resolution, including follower, following, and block lists. This work primarily affected internal behavior rather than user-facing UI. **Related release posts:**<li><a href="https://activitypub.blog/2025/11/12/7-6-0-command-sync-go/">7.6.0 — Command, Sync &amp;&nbsp;Go</a></li><li><a href="https://activitypub.blog/2025/12/04/7-7-0-extra-quotable/">7.7.0 — Extra&nbsp;Quotable</a></li>### Moderation ✅ In 2025, ActivityPub-specific moderation was significantly expanded. Site-wide and personal blocking now cover **domains, keywords, and individual actors**, with consistent checks applied to incoming activities. We added **blocklist subscriptions** with scheduled syncing and **bulk domain imports**, including support for community-maintained lists such as the **IFTAS DNI list**. Moderation handling was also refined with improved reject behavior for quote interactions. **Related release posts:**<li><a href="https://activitypub.blog/2025/11/12/7-6-0-command-sync-go/">7.6.0 — Command, Sync &amp;&nbsp;Go</a></li><li><a href="https://activitypub.blog/2025/12/04/7-7-0-extra-quotable/">7.7.0 — Extra&nbsp;Quotable</a></li><li><a href="https://activitypub.blog/2025/12/17/7-8-0-happy-holidays/">7.8.0 – Happy&nbsp;Holidays</a></li>### Reader 🧪 An experimental Reader UI was introduced behind a feature flag. When enabled, it adds a “Social Web” area to the dashboard where posts and shares from followed accounts can be read inside WordPress. The feature is disabled by default and explicitly marked as experimental. **Related release posts:**<li><a href="https://activitypub.blog/2025/12/17/7-8-0-happy-holidays/">7.8.0 – Happy&nbsp;Holidays</a></li>### Direct Messages ⏸️ Direct Messages were not implemented in 2025. This remains an open roadmap topic for future consideration once related foundations mature further.### Fully Delete Profiles ✅ Deletion semantics were improved to better support explicit federated cleanup. Delete activities are now sent when WordPress users are removed, and deletion-related handling was aligned across activity processing. A CLI-based self-destruct command was introduced to allow site owners to explicitly remove their site’s federated presence. **Related release posts:**<li><a href="https://activitypub.blog/2025/08/28/7-3-0-ctrl-fed-delete/">7.3.0 – Ctrl+Fed+Delete</a></li>### Client-to-Server API ⏸️ Client-to-Server API support was not implemented in 2025. No user-facing features shipped under this topic.## Beyond the RoadmapWhile the roadmap helped guide our focus in 2025, not everything that shipped was planned from the start. Some features emerged from day-to-day usage, feedback, and practical needs that became clearer over time. A few of those are worth highlighting.### QuotesSupport for quote interactions improved significantly over the year. We refined detection and handling of quoted replies and links, added proper handling for quote comments, and improved how quote permissions are revoked when quoted content is deleted. This made quoted interactions more reliable and consistent across instances. **Related release posts:**<li><a href="https://activitypub.blog/2025/12/04/7-7-0-extra-quotable/">7.7.0 — Extra&nbsp;Quotable</a></li><li><a href="https://activitypub.blog/2025/12/17/7-8-0-happy-holidays/">7.8.0 – Happy&nbsp;Holidays</a></li> **Onboarding** We also improved onboarding for new users by adding clearer guidance and better defaults after plugin activation. This helped reduce friction for sites federating for the first time and made initial setup more approachable. **Related release posts:**<li><a href="https://activitypub.blog/2025/06/24/what-we-shipped-so-far-in-2025/">What we shipped so far in&nbsp;2025</a></li><li><a href="https://activitypub.blog/2025/11/12/7-6-0-command-sync-go/">7.6.0 — Command, Sync &amp;&nbsp;Go</a></li> **Extra Fields UI** While not originally planned as a roadmap item, work on Extra Fields resulted in a more flexible and user-friendly UI. New blocks and layout options made it easier to display federated profile data in different formats, allowing themes to choose how much structured information to surface. **Related release posts:**<li><a href="https://activitypub.blog/2025/12/04/7-7-0-extra-quotable/">7.7.0 — Extra&nbsp;Quotable</a></li>## Wrapping upLooking back, 2025 was a year of steady progress. We focused on the foundations we set out to improve, shipped meaningful features along the way, and left room for unplanned work that addressed real needs as they came up. **Now we’d love to hear from you**: What was your favorite feature this year? What are you most excited about and what do you still miss or hope to see next? Your feedback has shaped this project throughout 2025, and it continues to guide where we go from here. We’re already working on our **2026 timeline**, and your ideas, experiences, and questions are an important part of that process. Thanks for being part of the journey and see you on the Fediverse.
As the year wraps up, ActivityPub 7.8.0 lands with stronger moderation tools, more flexible reactions, and a small surprise. Subscribe to shared blocklists with automatic updates and bulk-import domain blocks. Reactions now support a clean, avatar-free summary view. Plus, curious users can preview the new experimental Social Web Reader inside WordPress admin.
As the year winds down, we’ve wrapped up a release that brings better moderation tools, a new way to display reactions, and a small surprise, just in time for the holidays.## Stronger Tools for ModerationModeration can be hard work, especially on the Fediverse, where conversations flow in from all directions. This release introduces new tools that help you stay in control with less manual effort. You can now **subscribe to shared blocklists** and let the plugin keep them up to date automatically. Subscribed lists are synced on a weekly cadence, so changes made upstream are reflected on your site without you having to lift a finger. On top of that, we’ve added a **bulk domain blocklist importer**. You can upload a CSV or plain text file, including Mastodon-style exports, and quickly add large numbers of domains at once. To make it even easier to get started, the importer includes a one-click option for the popular community-maintained [IFTAS DNI list]( ) ([@about.iftas.org]( )). Together, these features make moderation more scalable and less stressful, so you can spend more time engaging and less time firefighting.## Reactions, Your WayReactions are a big part of how conversations feel alive on the Fediverse, and now you have more control over how they appear on your site. The **Fediverse Reactions block** gained a new **Summary** display style. Instead of showing a facepile of avatars, this option presents reactions as clean, inline counters for comments, likes, boosts, and replies. It’s a great fit for minimal layouts, feeds, or sites where avatars are disabled. You can switch between the classic facepile and the new summary style directly in the block settings. And if avatars are turned off in discussion settings, the block automatically falls back to the summary view.## A Sneak Peek at the Reader (Experimental)One more thing, for the curious among you, there’s now an early preview of the **ActivityPub Reader**, hidden behind a feature flag in the Advanced settings tab. If you don’t see it yet, open Screen Options at the top right of the ActivityPub settings page, check “Advanced Settings,” and save. That reveals the Advanced tab where you can enable the Reader. When enabled, this adds a new **“Social Web”** submenu to your Dashboard menu item. An place where you can read posts and shares from accounts you follow, turning your WordPress admin into a lightweight Fediverse reader. Because this is still very much a work in progress, the Reader is **disabled by default** and clearly marked as experimental. The UI, behavior, and feature set will change significantly in future releases as we explore what a great native Fediverse reading experience inside WordPress could look like. If you enjoy testing new ideas, we’d **love to hear your feedback**, whether it’s bug reports, rough edges you’ve noticed, or ideas about what this Reader should become. Early input helps shape where this goes next, so feel free to share your thoughts in whatever form works best for you.## Changelog### Added[]( )<li>Add blocklist subscriptions for automatic weekly synchronization of remote blocklists.</li><li>Add compact display style to Reactions block that hides avatars.</li><li>Add domain blocklist importer for bulk importing blocked domains.</li><li>Add image optimization for imported attachments (resize to 1200px max, convert to WebP).</li><li>Add local caching for remote actor avatars.</li><li>Add relay mode to forward public activities to all followers.</li><li>Add scheduled cleanup for remote posts, preserving posts with local user interactions.</li><li>Add site health check to warn when DISABLE_WP_CRON may impact ActivityPub functionality.</li><li>Add Social Web Reader for browsing ActivityPub content directly in WordPress admin.</li><li>Delete remote posts on plugin uninstall.</li><li>Mastodon importer now imports self-replies as comments, preserving thread structure.</li>### Changed[]( )<li>Cache expensive operations in Post transformer to improve performance.</li><li>Improve performance and reliability of @-mention detection.</li><li>Reduce federated content size by removing unnecessary HTML attributes.</li><li>Skip downloading video and audio attachments, embedding remote URLs directly to avoid storage limits.</li><li>Use stable term_id-based IDs for Term transformer to ensure federation consistency.</li><li>Wrap blocked domains and keywords tables in collapsible details element.</li>### Fixed[]( )<li>Respect WordPress “show avatars” setting for remote actor avatars. </li><li>Ensure NodeInfo accurately represents site administrators to the Fediverse.</li><li>Fediverse Followers block now works correctly when the “Hide Social Graph” privacy option is enabled.</li><li>Fix NodeInfo documents to comply with schema specification.</li><li>Follow Me block button-only style now respects width settings from the inner Button block.</li><li>Preserve whitespace inside preformatted elements when federating content.</li>## Downloads<li>WordPress.org:&nbsp;<a href="https://downloads.wordpress.org/plugin/activitypub.7.8.0.zip" target="_blank" rel="noreferrer noopener">activitypub.7.8.0.zip</a></li><li>GitHub:&nbsp;<a href="https://github.com/Automattic/wordpress-activitypub/releases/tag/7.8.0" target="_blank" rel="noreferrer noopener">tag/7.8.0</a></li>## Holiday ThanksA special thank-you to everyone who joined us during the recent **[office hours]( )** — for the questions, the thoughtful feedback, and the great conversations about where ActivityPub for WordPress should go next. Talking directly with you helps shape these releases more than any roadmap ever could. **See you in 2026 — and happy holidays!**
We’re back with a fresh release, and this one makes following and sharing smoother than ever—plus gives you more control over how your posts can be quoted.
We’re back with a fresh release, and this one makes following and sharing smoother than ever—plus gives you more control over how your posts can be quoted.<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12"><path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path></svg>## A New Way to Follow (For Now)Starting today, users on WordPress.com sites and self-hosted sites connected through Jetpack can see the posts of accounts they follow **directly in their WordPress.com Reader timeline**. The Following UI has been around for a little while, yet hidden, and with this release it will be **enabled by default** for these sites. When you follow an account, ActivityPub checks for a discoverable RSS feed. If one exists, it’s automatically added to your Reader timeline so new posts appear alongside everything else you already follow. Unfollowing works the same way—the feed disappears when you remove the account. And if you’d like to view the feed for an account you’ve followed, just hover over it in the list table and click **View Feed**. Think of this as a **bridge**: a simple way to read the posts of accounts you follow today, while we continue building a full, first-class ActivityPub reading experience for tomorrow. There are a couple of details to keep in mind. Removing a subscription directly in the Reader won’t update your site’s Following list, and interactions are limited to what RSS allows, which means sharing and reposting rather than the full range of ActivityPub features. Running a self-hosted site without Jetpack? You can still [enable the Following UI manually]( )—it just won’t connect with the Reader.## Quote Post ControlsWe’ve also added support for Mastodon’s **quote post** feature—and given you an easy way to control how others can quote your content. When writing in the Block Editor, you’ll now see a sidebar setting that lets you decide whether everyone can quote your post, only your followers can, or if quoting is reserved for you alone. Once published, Mastodon and other compatible platforms will honor your choice automatically. No extra setup needed—just write, choose, and publish with confidence.## Full Changelog### Added<li>Added a setting to control who can quote your posts.</li><li>Added support for QuoteRequest activities (FEP-044f), enabling proper handling, validation, and policy-based acceptance or rejection of quote requests.</li><li>Add upgrade routine to enable ActivityPub feeds in WordPress.com Reader</li><li>Add Yoast SEO integration for author archives site health check.</li><li>Improved interaction policies with clearer defaults and better Mastodon compatibility.</li><li>New site health check warns if active Captcha plugins may block ActivityPub comments.</li><li>Sync following meta to enable RSS feed subscriptions for ActivityPub actors in WordPress.com Reader</li><li>You can now follow people and see their updates right in the WordPress.com Reader when using Jetpack or WordPress.com.</li>### Changed<li>Added support for fetching actors by account identifiers and improved reliability of actor retrieval.</li><li>Clarify error messages in account modal to specify full profile URL format.</li><li>Improved checks to better identify public Activities.</li><li>Improved compatibility by making the ‘implements’ field always use multiple entries.</li><li>Improved recipient handling for clarity and improved visibility handling of activities.</li><li>Remote reply blocks now sync account info across all blocks on the same page</li><li>Standardized notification handling with new hooks for better extensibility and consistency.</li><li>Updated sync allowlist to add support for Jetpack notifications of likes and reposts.</li>### Fixed<li>Fixed an issue where post metadata in the block editor was missing or failed to update.</li><li>Fix Flag activity object list processing to preserve URL arrays</li><li>Fix PHP warning in bulk edit scenario when post_author is missing from $_REQUEST</li><li>Posts now only fall back to the blog user when blog mode is enabled and no valid author exists, ensuring content negotiation only runs if an Actor is available.</li>## Downloads<li>WordPress.org:&nbsp;<a href="https://downloads.wordpress.org/plugin/activitypub.7.5.0.zip" target="_blank" rel="noreferrer noopener">activitypub.7.5.0.zip</a></li><li>GitHub:&nbsp;<a href="https://github.com/Automattic/wordpress-activitypub/releases/tag/7.5.0" target="_blank" rel="noreferrer noopener">tag/7.5.0</a></li>## Thank you!Thanks to everyone who contributed code, tested, offered feedback, or lent support along the way. Update to 7.5.0 today and follow, share, and quote to your heart’s content!
Running a community in the Fediverse means balancing openness with safety. Every year, <a rel="mention" class="u-url mention" href="https://mastodon.iftas.org/@iftas">@iftas</a> takes the pulse of administrators, moderators, and community managers with their Annual Needs Assessment. This survey helps identify what’s working, where support is needed, and which tools can make a difference for those keeping decentralized spaces safe. The 2025 survey is now open Take part in the IFTAS Needs Assessment (5–10 minutes). Take the survey now (If you […]
Running a community in the Fediverse means balancing openness with safety. Every year, @npub1y2r2...kvzk takes the pulse of administrators, moderators, and community managers with their **Annual Needs Assessment**. This survey helps identify what’s working, where support is needed, and which tools can make a difference for those keeping decentralized spaces safe. **The 2025 survey is now open** Take part in the [IFTAS Needs Assessment]( ) (5–10 minutes). [Take the survey now]( ) (If you haven’t seen them before, you can also take a look at [last year’s report](📄.pdf )) Last year’s responses represented moderators of over **4.3 million accounts** across ActivityPub platforms. With WordPress now the **largest group of federating instances**, it’s especially important for our community of hosts, site admins, and moderators to be heard.## Moderation in WordPress: From Site-Wide to Personal ControlsWe recently introduced a major update to the [ActivityPub plugin for WordPress]( ): **personalized and site-wide moderation tools**.<li><strong>Site administrators</strong> can now set domain, keyword, and actor-level blocks that protect the entire site.</li><li><strong>Individual users</strong> can fine-tune their own experience with personal blocks, managed directly from their profiles.</li><li>Content is checked against both global and personal rules—so moderation works at every level.</li> These improvements directly address needs raised in previous IFTAS surveys, making moderation more discoverable, flexible, and effective for WordPress communities in the Fediverse.## Your Input Matters[IFTAS]( ) uses the Needs Assessment to guide **tools, policies, and advocacy** that reflect the real-world challenges of moderators—especially those in under-resourced communities. The more representative the responses, the stronger the outcomes for everyone. If you’re running a federating WordPress site, please consider:<li>Filling out the survey yourself.</li><li>Sharing it with other admins, moderators, and community organizers.</li><li>Reminding folks that it’s anonymous, quick, and impactful.</li> [Take the 2025 Fediverse Needs Assessment]( ) Together, we can keep building a safer, healthier Fediverse—one that reflects the needs of its communities.
Say hello to smoother moderation and a proper goodbye to old accounts. ActivityPub for WordPress 7.3.0 lets you block, filter, and even fully delete your presence from the Fediverse—site-wide or user-by-user. Whether you’re cleaning house or just want more control, this update makes managing your Fediverse footprint easier than ever.
Ready for a smoother ride on the Fediverse? ActivityPub for WordPress 7.3.0 is here to make your experience friendlier and more flexible than ever. Whether you’re keeping out unwanted guests, bringing stray conversations home, or just tidying up your digital footprint, this release puts powerful new tools right at your fingertips. Let’s take a look at what’s new!## **Personalized & Site-Wide Moderation**With this release, Moderation tools are easier to discover and manage, thanks to a revamped two-tiered system that empowers both site admins and individual users with greater control over their Fediverse experience. Now, site administrators can set up site-wide blocks—covering domains, keywords, and even specific actors—right from the Settings screen or the new Blocked Actors table. These tools work together to keep out unwanted content and spammy actors for everyone on your site. But we didn’t stop there! Every user can fine-tune their own experience. Head to your Profile to add personal domain and keyword blocks, or visit the new Blocked Actors submenu under Users to manage who can interact with you. Blocking someone is easier than ever—just paste their profile ID or webfinger, or use the handy new “Block” link right from your Followers list.<li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img loading="lazy" width="3020" height="1984" alt="Followers table in WordPress with options to delete, block, or follow back ActivityPub followers." class="wp-block-jetpack-slideshow_image wp-image-1739" data-id="1739" data-aspect-ratio="3020 / 1984" src="https://activitypub.blog/wp-content/uploads/2025/08/followers-block-action.png"><figcaption class="wp-block-jetpack-slideshow_caption gallery-caption">Followers List With Block Option</figcaption></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img loading="lazy" width="3020" height="1984" alt="Confirmation screen in WordPress for blocking an ActivityPub account, including options for site-wide blocking." class="wp-block-jetpack-slideshow_image wp-image-1738" data-id="1738" data-aspect-ratio="3020 / 1984" src="https://activitypub.blog/wp-content/uploads/2025/08/followers-block-confirmation.png"><figcaption class="wp-block-jetpack-slideshow_caption gallery-caption">Block Account Confirmation</figcaption></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img loading="lazy" width="3020" height="1984" alt="Followers page in WordPress showing an empty list and a notification that an account has been blocked." class="wp-block-jetpack-slideshow_image wp-image-1737" data-id="1737" data-aspect-ratio="3020 / 1984" src="https://activitypub.blog/wp-content/uploads/2025/08/followers-block-success.png"><figcaption class="wp-block-jetpack-slideshow_caption gallery-caption">Followers After Blocking</figcaption></figure></li> Whenever new ActivityPub content comes in, the plugin checks it against both global and personal blocks. Domains are matched not just to the sender, but also to the activity and object IDs. Keywords are scanned throughout the content, summaries, and even actor names. Site-wide rules always run first, followed by your personal settings—so you’re protected at every level. (For the blog actor, only site-wide blocks apply.) For backwards compatibility, the classic comment disallow list is still supported, ensuring your existing moderation rules continue to work seamlessly.## Saying Goodbye, the Right WaySometimes, a clean break is necessary. Whether you’re retiring a blog, removing a user, or handling old content, this release makes sure your presence in the Fediverse can be removed gracefully and consistently. We’ve added a **self-destruct feature** for sites that want to step away entirely. With a single CLI command (wp activitypub self_destruct), WordPress will send out **Delete activities to all followers**. Built-in progress tracking and admin notifications let you know when the process has finished, so you can be sure your Fediverse footprint is fully cleared. User deletion is now handled with the same care. When a user is removed from WordPress, a corresponding Delete activity is sent to their followers, ensuring that connections across the network are properly closed.## Bring the Conversation to YouSometimes a reply you care about doesn’t make it all the way to your Inbox. Maybe it was posted on a remote server with finicky delivery, or slipped past the usual flow of ActivityPub. With this release, you don’t have to miss out. Now you can search for any remote URL directly. If the **comment** is already in your database, you’ll be taken straight to the matching comment thread on your blog post. If not, the plugin will fetch and import the **remote reply to that post**, so you can fold scattered conversations back into your site seamlessly. This means you’re no longer limited to what arrives automatically. If you’ve got a link to a discussion happening elsewhere in the Fediverse, you can pull it right into your own comment threads and keep the context intact.## A Persistent Inbox for Better DebuggingFediverse interactions can get complex, and sometimes you need deeper insight into what’s really happening under the hood. That’s where the new **persistent inbox** comes in. When enabled in **Advanced Settings**, the plugin now logs all incoming **Create** or **Update** activities. Instead of vanishing once processed, these entries are collected in a dedicated **Inbox Collection**—giving you a complete trail to reference when debugging.## Full Changelog### Added<li>Add actor blocking functionality with list table interface for managing blocked users and site-wide blocks.</li><li>Add code coverage reporting to GitHub Actions PHPUnit workflow with dedicated coverage job using Xdebug.</li><li>Add comprehensive blocking and moderation system for ActivityPub with user-specific and site-wide controls for actors, domains, and keywords.</li><li>Add comprehensive unit tests for Followers and Following table classes with proper ActivityPub icon object handling.</li><li>Added link and explanation for the existing Starter Kit importer on the help tab of the Following pages.</li><li>Adds a self-destruct feature to remove a blog from the Fediverse by sending Delete activities to followers.</li><li>Adds a User Interface to select accounts during Starter Kit import.</li><li>Adds support for importing Starter Kits from a link (URL).</li><li>Adds support for searching (remote) URLs similar to Mastodon, redirecting to existing replies or importing them if missing.</li><li>Adds support for sending Delete activities when a user is removed.</li><li>Adds support for Starter Kit collections in the ActivityPub API.</li><li>A global Inbox handler and persistence layer to log incoming Create and Update requests for debugging and verifying Activity handling.</li><li>Follower lists now include the option to block individual accounts.</li><li>Improved handling of deleted content with a new unified system for better tracking and compatibility.</li><li>Moderation now checks blocked keywords across all language variants of the content, summary and name fields.</li><li>When activated or deactivated network-wide, the plugin now refreshes rewrite rules across all sites.</li>### Changed<li>Add default avatars for actors without icons in admin tables.</li><li>Added support for list of Actor IDs in Starter Kits.</li><li>Improve Following class documentation and optimize count methods for better performance.</li><li>Refactor actor blocking with unified API for better maintainability.</li>### Fixed<li>Blocks relying on user selectors no longer error due to a race condition when fetching users.</li><li>Fix duplicate HTML IDs and missing form labels in modal blocks.</li><li>Fix malformed ActivityPub handles for users with email-based logins (e.g., from Site Kit Google authentication).</li><li>Fix PHP 8.4 deprecation warnings by preventing null values from being passed to WordPress core functions.</li><li>Improves handling of author URLs by converting them to a proper format.</li><li>Improves REST responses by skipping invalid actors in Followers and Following controllers.</li><li>More reliable Actor checks during the follow process.</li><li>Prevents Application users from being followed.</li><li>Proper implementation of FEP 844e.</li><li>Switches ActivityPub summaries to plain text for better compatibility.</li>## Downloads<li>WordPress.org:&nbsp;<a href="https://downloads.wordpress.org/plugin/activitypub.7.3.0.zip">activitypub.7.3.0.zip</a></li><li>GitHub:&nbsp;<a href="https://github.com/Automattic/wordpress-activitypub/releases/tag/7.3.0">tag/7.3.0</a></li>## Thank you!Big thanks to everyone who contributed code, shared feedback, tested, or encouraged us along the way! Together, we’re making the fediverse more connected—one release at a time. ❤️ We’ve just rolled out version 7.3.0—try it out and let us know what you think! image
<p>We&#8217;ve improved ActivityPub support in WordPress to make fediverse sharing smoother and more engaging—images in comments that use img tags from your media library are now properly attached, so followers on other platforms see them inline. You’ll also notice easier following: see who you already follow and follow others back with one click. Multibyte text like Greek or Japanese is now handled more reliably in post summaries.</p>
We’ve rolled out an update that makes sharing content to the fediverse via ActivityPub even better—especially when it comes to images in comments. Now, when you include an HTML &lt;img&gt; tag that points to a file in your WordPress media library, that image is bundled as a proper attachment in the ActivityStreams payload. This means your followers on other platforms will see both your comment and its image, making conversations more vivid and engaging. To protect your privacy and security, only images hosted in your own WordPress media library are supported. Images from external sources are intentionally skipped.## Smoother Following, Better InteractionsIf you’ve turned on the “Following User Interface” feature in the advanced settings, you’ll see a few nice improvements. The followers list now shows whether you’re already following someone—and if not, you can follow them back with just one click. We’ve also made it easier to follow people from other sites. When you click “Follow” on someone else’s blog, you’ll now be taken to your own site to complete it. It keeps things simple and familiar, even when you start following someone from another site.## Better Support for Multibyte TextFinally, we’ve improved how multibyte characters (like those in Greek and other non-Latin scripts) are handled when generating post summaries for the fediverse. We’ve replaced byte-based string functions with multibyte-safe alternatives and reordered text processing steps to avoid errors.## Full Changelog### Added[]( )<li>Add image attachment support to federated comments – HTML images in comment content now include proper ActivityStreams attachment fields.</li><li>Link to the following internal dialog for remote interactions, if the feature is enabled.</li><li>The followers list now shows follow status and allows quick follow-back actions.</li><li>Trigger Actor updates on (un)setting a post as sticky.</li><li>You can now use <code>OrderedCollection</code>s as starter packs — just drop in the output from a Follower or Following endpoint.</li>### Changed[]( )<li>Ensure that tests run in production-like conditions, avoiding interference from local development tools.</li><li>Moved HTTP request signing to a filter instead of calling it directly.</li>### Fixed[]( )<li>Allow non-administrator users to use Follow Me and Followers blocks.</li><li>Correct linking from followers to the following list.</li><li>Fix avatar rendering for followers with missing icon property.</li><li>Fix multibyte character corruption in post summaries, preventing Greek and other non-ASCII text from being garbled during text processing.</li><li>Informational Fediverse blocks are no longer rendered when posts get added to the Outbox.</li>## Downloads<li>WordPress.org: <a href="https://downloads.wordpress.org/plugin/activitypub.7.2.0.zip">activitypub.7.2.0.zip</a></li><li>GitHub: <a href="https://github.com/Automattic/wordpress-activitypub/releases/tag/7.2.0">tag/7.2.0</a></li>## Thank you!Huge thanks to everyone who shared code, gave feedback, tested, or simply cheered us on! Together, we’re building a more connected fediverse, one release at a time. ❤️ We’ve just released version 7.2.0, give it a spin and let us know what you think!
<p>This release introduces a redesigned Followers table that’s easier to navigate and customize—hide columns, change how many entries you see, or remove followers directly. Migrations are now simpler: just paste in a WebFinger ID or profile URL, and the plugin takes care of the rest. We’ve also fixed an issue where old, unfederated posts could be mistakenly re-sent—those will now stay quiet unless they’re recent. Plus, lots of behind-the-scenes improvements for a smoother experience.</p>
This release is mostly made up of behind-the-scenes improvements, but one update you’ll notice right away is the refreshed Followers table. It now looks and feels much more like the standard WordPress admin tables: you can customize it with screen options to hide columns or change how many followers are shown per page, and you can now delete individual followers using inline action links. We also polished the layout by increasing information density and improving the readability of date columns. We’ve made migrations easier to kick off by automatically resolving account aliases and saving their ID form. That means you can now paste in WebFinger IDs, profile URLs, etc. and the plugin handles the rest, as long as it resolves to an ActivityPub profile. This release also fixes a long-time annoyance: unfederated posts (like those published before the plugin was activated or imported later) will no longer be sent out to followers just because they were updated. For now, we use a simple cutoff for posts older than a month, which should cover the majority of those cases.## Coming Soon: Following Others!Most of the work that went into this release is still invisible, hiding behind a feature flag in Advanced Settings (you can find it by opening Screen Options in the ActivityPub settings screen). There’s really no functionality around it yet, beyond following accounts from other instances, as we have yet to start processing incoming posts and adding the ability to interact with them. But if you just can’t wait to show your appreciation for other accounts by following them, go wild! Behind the same feature flag, we’ve also added initial beta support for Fediverse Starter Kits. This lets new users follow a set of recommended accounts from a predefined list, following [the format proposed]( ) by @npub1q3uc...r5gz for Pixelfed. For now, only Actor objects are supporteded, but we’re hoping to expand that over time.## Full Changelog### Added<li>Added a first version of the Follow form, allowing users to follow other Actors by username or profile link.</li><li>Added initial support for Fediverse Starter Kits, allowing users to follow recommended accounts from a predefined list.</li><li>Ensure that all schedulers are registered during every plugin update.</li><li>Followers and Following list tables now support Columns and Pagination screen options.</li><li>The featured tags endpoint is now available again for all profiles, showing the most frequently used tags by each user.</li><li>The <code>following</code> endpoint now returns the actual list of users being followed.</li>### Changed<li>Follower tables now look closer to what other tables in WordPress look like.</li><li>Improved Account-Aliases handling by internally normalizing input formats.</li><li>Minor performance improvement when querying posts of various types, by avoiding double queries.</li><li>Set older unfederated posts to local visibility by default.</li><li>Step counts for the Welcome checklist now only take into account steps that are added in the Welcome class.</li><li>Table actions are now faster by using the Custom Post Type ID instead of the remote user URI, thanks to the unified Actor Model.</li><li>The following tables now more closely match the appearance of other WordPress tables and can be filtered by status.</li>### Fixed<li>Ensure correct visibility handling for <code>Undo</code> and <code>Follow</code> requests</li><li>Ensure that the Actor-ID is always a URL.</li><li>Fixed a bug in how follow requests were accepted to ensure they work correctly.</li><li>Fixed an issue where the number of followers shown didn’t always match the actual follower list.</li><li>Fixed a PHP error that prevented the Follower overview from loading.</li><li>Fixed missing avatar class so that CSS styles are correctly applied to ActivityPub avatars on the Dashboard.</li><li>Fixed potential errors when unrelated requests get caught in double-knocking callback.</li><li>Improved WebFinger fallback to better guess usernames from profile links.</li><li>Prevent WordPress from loading all admin notices twice on ActivityPub settings pages.</li><li>Removed follower dates to avoid confusion, as they may not have accurately reflected the actual follow time.</li><li>Stop purging Follow activities from the Outbox to allow proper Unfollow (Undo) handling.</li>## Downloads<li>WordPress.org: <a href="https://downloads.wordpress.org/plugin/activitypub.7.1.0.zip">activitypub.7.1.0.zip</a></li><li>GitHub: <a href="https://github.com/Automattic/wordpress-activitypub/releases/tag/7.1.0">tag/7.1.0</a></li>## Thank you!Big thanks to everyone who contributed code, feedback, testing, or encouragement—this community helps make the fediverse more connected with every release. ❤️ Update to 7.1.0, try it out, and tell us what you think! image
<p>Just when you thought things were settling down… boom 💥 — the ActivityPub plugin gets another big upgrade. Say hello to version 7.0.0, a release packed with new features, polish, and under-the-hood improvements to help your WordPress site federate smoother, smarter, and more securely than ever.</p> <p>Let’s dive into what’s new.</p> <p>Following the Fediverse</p> <p>We’ve added the initial building blocks for Following support — both sending and managing follow requests for remote actors. […]</p>
Just when you thought things were settling down… boom 💥 — the ActivityPub plugin gets another big upgrade. Say hello to **version 7.0.0**, a release packed with new features, polish, and under-the-hood improvements to help your WordPress site federate smoother, smarter, and more securely than ever. Let’s dive into what’s new.## Following the FediverseWe’ve added the **initial building blocks for Following support** — both sending and managing follow requests for remote actors. It’s not in the UI just yet (we’re rolling it out carefully), but that’s not far away. A big step toward richer, two-way federation. We’ll work with developers of third-party plugins — including those behind **[Friends]( )** and **[Event Bridge]( )** — to migrate their custom follow implementations to this new core feature. This collaboration helps ensure a consistent, reliable follow experience across the ecosystem. **This foundational support for following is also the first step toward a full-featured reader experience right inside WordPress** — something we’re excited to keep building toward.## Refined SignatureThis release brings **support for RFC-9421-style HTTP signatures**, both incoming and (optionally) outgoing. That’s a mouthful, but it basically means supporting the latest standard in how we verify and send activities — including a fallback to good old Draft Cavage when needed. Check out the blog post to learn more: [HTTP Signature Upgrades Coming Soon]( ) ## Full Changelog### Added<li>Added basic support for handling remote rejections of follow requests.</li><li>Added basic support for RFC-9421 style signatures for incoming activities.</li><li>Added initial Following support for Actors, hidden for now until plugins add support.</li><li>Added missing “Advanced Settings” details to Site Health debug information.</li><li>Added option to auto-approve reactions like likes and reposts.</li><li>Added support for namespaced attributes and the dcterms:subject field (FEP-b2b8), as a first step toward phasing out summary-based content warnings.</li><li>Added support for the WP Rest Cache plugin to help with caching REST API responses.</li><li>Documented support for FEP-844e.</li><li>Optional support for RFC-9421 style signatures for outgoing activities, including retry with Draft-Cavage-style signature.</li><li>Reactions block now supports customizing colors, borders, box-shadows, and typography.</li><li>Support for sending follow requests to remote actors is now in place, including outbox delivery and status updates—UI integration will follow later.</li>### Changed<li>Comment feeds now show only comments by default, with a new <code>type</code> filter (e.g., <code>like</code>, <code>all</code>) to customize which reactions appear.</li><li>Consistent naming of Blog user in Block settings.</li><li>hs2019 signatures for incoming REST API requests now have their algorithm determined based on their public key.</li><li>Likes, comments, and reposts from the Fediverse now require either a name or <code>preferredUsername</code> to be set when the Discussion option <code>require_name_email</code> is set to true. It falls back to “Anonymous”, if not.</li><li>Management of public/private keys for Actors now lives in the Actors collection, in preparation for Signature improvements down the line.</li><li>Notification emails for new reactions received from the Fediverse now link to the moderation page instead of the edit page, preventing errors and making comment management smoother.</li><li>Plugins now have full control over which Settings tabs are shown in Settings &gt; Activitypub.</li><li>Reworked follower structure to simplify handling and enable reuse for following mechanism.</li><li>Screen options in the Activitypub settings page are now filterable.</li><li>Setting the blog identifier to empty will no longer trigger an error message about it being the same as an existing user name.</li><li>Step completion tracking in the Welcome tab now even works when the number of steps gets reduced.</li><li>The image attachment setting is no longer saved to the database if it matches the default value.</li><li>The welcome page now links to the correct profile when Blog Only mode was selected in the profile mode step.</li><li>Unified retrieval of comment avatars and re-used core filters to give access to third-part plugins.</li>### Fixed<li>Allow interaction redirect URLs that contain an ampersand.</li><li>Comments received from the Fediverse no longer show an Edit link in the comment list, despite not being editable.</li><li>Fixed an issue where links to remote likes and boosts could open raw JSON instead of a proper page.</li><li>Fixed a potential error when getting an Activitypub ID based on a user ID.</li><li>HTTP signatures using the hs2019 algorithm now get accepted without error.</li><li>Improved compatibility with older follower data.</li><li>Inbox requests that are missing an <code>algorithm</code> parameter in their signature no longer create a PHP warning.</li><li>Interaction attempts that pass a webfinger ID instead of a URL will work again.</li><li>Names containing HTML entities now get displayed correctly in the Reactions block’s list of users.</li><li>Prevent storage of empty or default post meta values.</li><li>The amount of avatars shown in the Reactions block no longer depends on the amount of likes, but is comment type agnostic.</li><li>The command-line interface extension, accidentally removed in a recent cleanup, has been restored.</li><li>The image attachment setting now correctly respects a value of 0, instead of falling back to the default.</li><li>The Welcome screen now loads with proper styling when shown as a fallback.</li><li>Using categories as hashtags has been removed to prevent conflicts with tags of the same name.</li><li>When verifying signatures on incoming requests, the digest header now gets checked as expected.</li>## Downloads<li>WordPress.org: <a href="https://downloads.wordpress.org/plugin/activitypub.7.0.0.zip">https://downloads.wordpress.org/plugin/activitypub.7.0.0.zip</a></li><li>GitHub: <a href="https://github.com/Automattic/wordpress-activitypub/releases/tag/7.0.0">https://github.com/Automattic/wordpress-activitypub/releases/tag/7.0.0</a></li>## Thank you!Huge thanks to everyone who contributed code, feedback, tests, or moral support. This community makes the fediverse feel a little more federated with every release. ❤️ Update now, test things out, and let us know how 7.0.0 works for you! image
<p>Alongside our upcoming plans, we’ve already shipped several important features in recent releases. Here are some highlights of what’s now available in the ActivityPub plugin.</p> <p>Onboarding</p> <p>We’ve added an onboarding flow after plugin activation to help guide new users through key decisions — such as selecting the Actor Mode.</p> <p>It’s also a great opportunity to explain Fediverse concepts for users who are new to them.</p> <p>More details:</p> <p>👉 5.9.0 — Easier onboarding for your Fediverse […]</p>
[Alongside our upcoming plans]( ), we’ve already shipped several important features in recent releases. Here are some highlights of what’s now available in the ActivityPub plugin.## OnboardingWe’ve added an **onboarding flow** after plugin activation to help guide new users through key decisions — such as selecting the Actor Mode. It’s also a great opportunity to explain Fediverse concepts for users who are new to them. More details: 👉 [5.9.0 — Easier onboarding for your Fediverse experience]( )## MoveThe **Move Activity** is used by Mastodon to migrate accounts to different servers — and can also be used for **domain or username changes**. In the WordPress ecosystem, one of the main motivations for implementing Move was to support **changing the domain of a WordPress blog** — a common scenario for WordPress site owners. We’ve built a **solid foundation** in the plugin to both **send and receive Move Activities**. However, because Move is **not yet widely adopted** across the Fediverse, we’ve decided to **pause further work** on this feature until there is broader ecosystem support. Account migration remains a crucial capability for a healthier, more portable social web. If you’re interested in the broader context and challenges around this, we recommend watching [Cory Doctorow’s keynote from the June FediForum]( ): We’ll revisit this as the standard matures and more servers implement consistent handling of Move. More details: 👉 [GitHub — Move Milestone]( )## OutboxEarlier versions of the plugin supported only the federation of **custom post types**, sending all messages in one bulk. That approach works up to about **1000 followers**, but does not support retries, logging, or error handling. To support larger blogs or news sites — we needed a more robust system. We now have mechanisms to:<li>Federate activities to <strong>more than 1000 followers</strong>.</li><li>Use a <strong>staggered delivery system</strong> that prioritizes servers.</li><li>Provide a <strong>stable and scalable</strong> architecture.</li><li>Support <strong>retries and error reporting</strong>.</li> This improved Outbox system also makes it easier for **third-party plugin developers** to **federate their own content types** in a reliable and scalable way. More details: 👉 [GitHub — Outbox Milestone]( )## ChangelogsThese are just the major milestones. If you’re interested in everything we ship, be sure to subscribe or follow the blog — we publish detailed [changelog posts]( ) with every new plugin release, listing all new features and improvements. As always, we welcome your **feedback and ideas** — they help shape the future of the ActivityPub plugin and the growing WordPress Fediverse community! 🚀
<p>We’re excited to share this roadmap — there’s a lot happening with the ActivityPub plugin, and we can’t wait to show you what’s coming next.</p> <p>We often refer to this roadmap in GitHub issues and discussions, but until now, we haven’t published a full roadmap post — nor a formal changelog. This post is a first step toward keeping the community more informed about what’s planned and what’s coming up next.</p> <p>Our goal for this year is to finalize the full ActivityPub experience […]</p>
We’re excited to share this roadmap — there’s a lot happening with the ActivityPub plugin, and we can’t wait to show you what’s coming next. We often refer to this roadmap in GitHub issues and discussions, but until now, we haven’t published a full roadmap post — nor a formal changelog. This post is a first step toward keeping the community more informed about what’s planned and what’s coming up next. Our **goal for this year** is to **finalize the full ActivityPub experience** — so that WordPress can be used as a **first-class citizen of the Fediverse**. This means enabling not only publishing to the network, but also following, reading, interacting, and moderating — all in a seamless way that feels natural for WordPress users. This roadmap is not set in stone — priorities may shift based on community feedback, WordPress updates, or changes in the wider Fediverse. But it should give you a good sense of where we’re going.## Followers/FollowingThis is what we’re currently working on. [You can follow the progress on GitHub]( ). Right now, the plugin supports only **Followers**. It doesn’t yet offer a way for your site to follow others in the Fediverse. But with new initiatives like the **“Reader Experience,”** this will need to change. To support true two-way relationships — both Followers and Following — we need a database model that can clearly represent both types of connections. The current system, which relies on GUIDs to track remote actors, wasn’t designed for this. At the moment, it can store a remote actor as a follower of your site, but it doesn’t easily support the ability for your site to follow them back. Implementing Following cleanly will require rethinking how this data is stored and connected.## ActorsThis ties into a broader challenge with how the plugin currently models **actors** — both local users on your site and remote users from other Fediverse servers. Today, the plugin uses **virtual users** to represent these actors. This was a practical choice early on to get federation working without rewriting how WordPress manages users. But as the plugin grows — especially with features like Following and the Reader Experience — this approach is creating friction. Virtual users don’t behave exactly like regular WordPress users, so each time we add new features, we end up writing special workarounds. Over time, this adds complexity and makes the system harder to maintain. Moving toward a more unified model for actors — one that integrates more naturally with WordPress’s existing structures — will keep the plugin flexible and reliable.## ModerationCurrently, the plugin relies on WordPress’s built-in “Disallowed Comment Keys” system to filter unwanted content at the inbox endpoint — before any ActivityPub request is processed. This mechanism allows you to block activities based on keywords or domains, using the same rules you’d apply to comments. However, this approach is fairly blunt: it’s a simple keyword filter, not a nuanced moderation tool. This limitation will become more important as the plugin expands — for example, when adding support for image-based comments or richer media interactions. Building a dedicated filtering mechanism is an important step toward giving site owners **fine-grained moderation tools** that are tailored to the unique challenges of federated content. More details: 👉 [GitHub — Question: How does this plugin interact with moderation and trust & safety on the fediverse?]( )## ReaderA full **Reader experience** is one of our long-term goals — it’s the final big feature needed to give WordPress sites a complete **ActivityPub/Fediverse experience**. Today, the plugin lets others follow your site, but there’s no built-in way for you to **subscribe to and read content from others** — in other words, there’s no “timeline” yet inside WordPress. We plan to start with a simple, flexible approach: focusing first on **storing remote posts** in a way that’s compatible with tools like the **WordPress.com Reader** or third-party plugins like **[Friends]( )** or the **[Event Bridge for ActivityPub]( )**. Once this foundation is in place, we’ll iterate on direct support — making it possible for site owners and users to follow and read Fediverse posts right inside WordPress.## Direct MessagesAs part of this evolution toward a full Reader experience, we’re also exploring support for **Direct Messages**. This is a frequently requested feature and an important part of richer Fediverse interactions. We plan to start with an initial implementation that enables private messaging — and then build on it as we learn from real-world use.## Fully delete profilesOne key principle of the **GDPR** is the “right to be forgotten.” Currently, the plugin supports **remote deletions**, but does not trigger Delete Activities for local user actions. The challenge is that WordPress operates differently from most federated social networks. Users might expect Delete Activities for certain actions that could have major consequences — for example, deactivating the plugin. But deactivating a plugin is also a common troubleshooting step in WordPress. To address this, we first need to define different use cases and guide users on how to trigger Delete Activities appropriately. More details: 👉 [GitHub — User Delete Milestone]( )## Client-to-Server API (exploration)In addition to the way servers communicate with each other across the Fediverse, **ActivityPub also defines a “Client-to-Server” API**. This API is mainly designed to allow **apps and clients** (such as mobile apps) to publish content to a Fediverse server. In the future, this could open up interesting possibilities for WordPress — for example, allowing WordPress to act as a **bridge** or **proxy**, making it easier to bring in and federate content from other tools or platforms. At this stage, we’re exploring and evaluating this based on community interest and potential use cases.## Staying InformedWe’ll continue to keep you informed about the progress of this roadmap. For each new release, we’ll publish posts highlighting the latest features and improvements. For larger projects — like the Reader experience or expanded moderation tools — we’ll also share **regular updates** so you can follow along as the work evolves. As always, we welcome your **feedback and ideas** — they help shape the future of the ActivityPub plugin and the growing WordPress Fediverse community! 🚀 image