Tag: Fediverse

  • 7.3.0 – Ctrl+Fed+Delete

    A cute Wapuu astronaut inside a futuristic space station, sitting at a glowing control desk with holographic message icons floating in front of them. Some messages have a green checkmark for approval, others a red X or trash bin icon for deletion. The Wapuu looks focused, managing which messages can enter from the Fediverse and which should be removed. The background shows the curved windows of the space station with stars and a planet outside, blending sci-fi tech with Wapuu’s cartoon charm.

    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.

    • Followers table in WordPress with options to delete, block, or follow back ActivityPub followers.
    • Confirmation screen in WordPress for blocking an ActivityPub account, including options for site-wide blocking.
    • Followers page in WordPress showing an empty list and a notification that an account has been blocked.

    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 Way

    Sometimes, 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 You

    Sometimes 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 Debugging

    Fediverse 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

    • Add actor blocking functionality with list table interface for managing blocked users and site-wide blocks.
    • Add code coverage reporting to GitHub Actions PHPUnit workflow with dedicated coverage job using Xdebug.
    • Add comprehensive blocking and moderation system for ActivityPub with user-specific and site-wide controls for actors, domains, and keywords.
    • Add comprehensive unit tests for Followers and Following table classes with proper ActivityPub icon object handling.
    • Added link and explanation for the existing Starter Kit importer on the help tab of the Following pages.
    • Adds a self-destruct feature to remove a blog from the Fediverse by sending Delete activities to followers.
    • Adds a User Interface to select accounts during Starter Kit import.
    • Adds support for importing Starter Kits from a link (URL).
    • Adds support for searching (remote) URLs similar to Mastodon, redirecting to existing replies or importing them if missing.
    • Adds support for sending Delete activities when a user is removed.
    • Adds support for Starter Kit collections in the ActivityPub API.
    • A global Inbox handler and persistence layer to log incoming Create and Update requests for debugging and verifying Activity handling.
    • Follower lists now include the option to block individual accounts.
    • Improved handling of deleted content with a new unified system for better tracking and compatibility.
    • Moderation now checks blocked keywords across all language variants of the content, summary and name fields.
    • When activated or deactivated network-wide, the plugin now refreshes rewrite rules across all sites.

    Changed

    • Add default avatars for actors without icons in admin tables.
    • Added support for list of Actor IDs in Starter Kits.
    • Improve Following class documentation and optimize count methods for better performance.
    • Refactor actor blocking with unified API for better maintainability.

    Fixed

    • Blocks relying on user selectors no longer error due to a race condition when fetching users.
    • Fix duplicate HTML IDs and missing form labels in modal blocks.
    • Fix malformed ActivityPub handles for users with email-based logins (e.g., from Site Kit Google authentication).
    • Fix PHP 8.4 deprecation warnings by preventing null values from being passed to WordPress core functions.
    • Improves handling of author URLs by converting them to a proper format.
    • Improves REST responses by skipping invalid actors in Followers and Following controllers.
    • More reliable Actor checks during the follow process.
    • Prevents Application users from being followed.
    • Proper implementation of FEP 844e.
    • Switches ActivityPub summaries to plain text for better compatibility.

    Downloads

    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!

  • Bridging the gap

    The image shows the fediverse Wapuu is building a bridge from the Bluesky Space Station to the Fediverse Space Station.

    The Fediverse is intended to be an interoperable, decentralized social network where users can connect across platforms and tools. In practice, though, the reality is more fragmented.

    According to Wikipedia:

    The majority of Fediverse platforms are based on free and open-source software, and create connections between servers using the ActivityPub protocol.

    Still, networks like Bluesky, Nostr, and Diaspora take their own technical paths toward the same vision, which means the fediverse isn’t fully connected just yet.

    Bridgy Fed

    To help address this gap, Ryan Barrett (@snarfed.org) began developing Bridgy Fed, a tool designed to connect these otherwise separate networks:

    Bridgy Fed connects web sites, the fediverse, and Bluesky. You can use it to make your profile on one visible in another, follow people, see their posts, and reply and like and repost them. Interactions work in both directions as much as possible.

    With even more networks on the list.

    While it’s not a native solution, it does help connect people today—and I really appreciate the perspective of Anuj Ahooja (@quillmatiq), CEO of A New Social, the organization behind Bridgy Fed:

    The future of the open social web is people connecting with people no matter what technology they happen to choose. And if bridges and duct tape is what’s necessary, then we’ll continue building bridges, because it’s connections and community over everything.

    You can easily connect your blog to Bluesky using Bridgy by following a few simple steps.

    Bridge your Blog

    You can connect your blog to Bluesky using any self-hosted WordPress site or a paid WordPress.com plan.

    First, go to the ActivityPub settings and open the Screen Options at the top right. Enable the Advanced Settings checkbox and click Save.

    This will reveal the Advanced tab in the settings, where you’ll find the Following User Interface option. Enable that as well.

    Once this feature is active, you’ll be able to access the Following subpage.

    To follow the Bluesky account, enter bsky.brid.gy@bsky.brid.gy into the input box on the left and click Follow. The account should appear in your list shortly. After a few minutes, your follow request will be accepted, and the account will follow your blog back.

    You can verify the connection by checking your Followers list. From this point on, all your new blog posts will also be published on Bluesky. You’ll receive reactions to your posts and even follow requests from Bluesky users.

    That’s it! All your upcoming posts will also be published on Bluesky, you will receive all reactions to your posts and even follow requests.

    If you ever want to stop the bridge from publishing, simply unfollow the Bridgy account and remove it from your Followers list.

    Happy cross-posting bridging :)

    Be Aware

    Even though following other accounts is now possible, there is currently no way to view their incoming posts. Aside from the specific use case described above, following others doesn’t offer much benefit at this stage. Please be cautious if you think you need to follow more people, as it may increase traffic to your site without a clear purpose.

    We’ll let you know as soon as the full reader experience is implemented and will enable all necessary (currently hidden) features at that time.

    Follow us!

    As a proof of concept, you can now also follow our updates on Bluesky via @activitypub.blog.activitypub.blog.ap.brid.gy‬

  • 7.2.0 – Follow ups

    A Wapuu in a spacesuit, equipped with a tool, repairing a spaceship engine.

    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 <img> 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 Interactions

    If 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.

    Followers list screenshot showing the "Follow Back" button.

    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 Text

    Finally, 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

    • Add image attachment support to federated comments – HTML images in comment content now include proper ActivityStreams attachment fields.
    • Link to the following internal dialog for remote interactions, if the feature is enabled.
    • The followers list now shows follow status and allows quick follow-back actions.
    • Trigger Actor updates on (un)setting a post as sticky.
    • You can now use OrderedCollections as starter packs — just drop in the output from a Follower or Following endpoint.

    Changed

    • Ensure that tests run in production-like conditions, avoiding interference from local development tools.
    • Moved HTTP request signing to a filter instead of calling it directly.

    Fixed

    • Allow non-administrator users to use Follow Me and Followers blocks.
    • Correct linking from followers to the following list.
    • Fix avatar rendering for followers with missing icon property.
    • Fix multibyte character corruption in post summaries, preventing Greek and other non-ASCII text from being garbled during text processing.
    • Informational Fediverse blocks are no longer rendered when posts get added to the Outbox.

    Downloads

    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!

  • 7.1.0 — Polishing Tables

    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 @dansup for Pixelfed. For now, only Actor objects are supporteded, but we’re hoping to expand that over time.

    Full Changelog

    Added

    • Added a first version of the Follow form, allowing users to follow other Actors by username or profile link.
    • Added initial support for Fediverse Starter Kits, allowing users to follow recommended accounts from a predefined list.
    • Ensure that all schedulers are registered during every plugin update.
    • Followers and Following list tables now support Columns and Pagination screen options.
    • The featured tags endpoint is now available again for all profiles, showing the most frequently used tags by each user.
    • The following endpoint now returns the actual list of users being followed.

    Changed

    • Follower tables now look closer to what other tables in WordPress look like.
    • Improved Account-Aliases handling by internally normalizing input formats.
    • Minor performance improvement when querying posts of various types, by avoiding double queries.
    • Set older unfederated posts to local visibility by default.
    • Step counts for the Welcome checklist now only take into account steps that are added in the Welcome class.
    • Table actions are now faster by using the Custom Post Type ID instead of the remote user URI, thanks to the unified Actor Model.
    • The following tables now more closely match the appearance of other WordPress tables and can be filtered by status.

    Fixed

    • Ensure correct visibility handling for Undo and Follow requests
    • Ensure that the Actor-ID is always a URL.
    • Fixed a bug in how follow requests were accepted to ensure they work correctly.
    • Fixed an issue where the number of followers shown didn’t always match the actual follower list.
    • Fixed a PHP error that prevented the Follower overview from loading.
    • Fixed missing avatar class so that CSS styles are correctly applied to ActivityPub avatars on the Dashboard.
    • Fixed potential errors when unrelated requests get caught in double-knocking callback.
    • Improved WebFinger fallback to better guess usernames from profile links.
    • Prevent WordPress from loading all admin notices twice on ActivityPub settings pages.
    • Removed follower dates to avoid confusion, as they may not have accurately reflected the actual follow time.
    • Stop purging Follow activities from the Outbox to allow proper Unfollow (Undo) handling.

    Downloads

    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!

  • 7.0.0 – I will follow you!

    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 Fediverse

    We’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.

    Wapuu that "follows" a Mastodon, Pixelfed and Ghost mascot.

    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 Signature

    This 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

    • Added basic support for handling remote rejections of follow requests.
    • Added basic support for RFC-9421 style signatures for incoming activities.
    • Added initial Following support for Actors, hidden for now until plugins add support.
    • Added missing “Advanced Settings” details to Site Health debug information.
    • Added option to auto-approve reactions like likes and reposts.
    • Added support for namespaced attributes and the dcterms:subject field (FEP-b2b8), as a first step toward phasing out summary-based content warnings.
    • Added support for the WP Rest Cache plugin to help with caching REST API responses.
    • Documented support for FEP-844e.
    • Optional support for RFC-9421 style signatures for outgoing activities, including retry with Draft-Cavage-style signature.
    • Reactions block now supports customizing colors, borders, box-shadows, and typography.
    • Support for sending follow requests to remote actors is now in place, including outbox delivery and status updates—UI integration will follow later.

    Changed

    • Comment feeds now show only comments by default, with a new type filter (e.g., like, all) to customize which reactions appear.
    • Consistent naming of Blog user in Block settings.
    • hs2019 signatures for incoming REST API requests now have their algorithm determined based on their public key.
    • Likes, comments, and reposts from the Fediverse now require either a name or preferredUsername to be set when the Discussion option require_name_email is set to true. It falls back to “Anonymous”, if not.
    • Management of public/private keys for Actors now lives in the Actors collection, in preparation for Signature improvements down the line.
    • 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.
    • Plugins now have full control over which Settings tabs are shown in Settings > Activitypub.
    • Reworked follower structure to simplify handling and enable reuse for following mechanism.
    • Screen options in the Activitypub settings page are now filterable.
    • Setting the blog identifier to empty will no longer trigger an error message about it being the same as an existing user name.
    • Step completion tracking in the Welcome tab now even works when the number of steps gets reduced.
    • The image attachment setting is no longer saved to the database if it matches the default value.
    • The welcome page now links to the correct profile when Blog Only mode was selected in the profile mode step.
    • Unified retrieval of comment avatars and re-used core filters to give access to third-part plugins.

    Fixed

    • Allow interaction redirect URLs that contain an ampersand.
    • Comments received from the Fediverse no longer show an Edit link in the comment list, despite not being editable.
    • Fixed an issue where links to remote likes and boosts could open raw JSON instead of a proper page.
    • Fixed a potential error when getting an Activitypub ID based on a user ID.
    • HTTP signatures using the hs2019 algorithm now get accepted without error.
    • Improved compatibility with older follower data.
    • Inbox requests that are missing an algorithm parameter in their signature no longer create a PHP warning.
    • Interaction attempts that pass a webfinger ID instead of a URL will work again.
    • Names containing HTML entities now get displayed correctly in the Reactions block’s list of users.
    • Prevent storage of empty or default post meta values.
    • The amount of avatars shown in the Reactions block no longer depends on the amount of likes, but is comment type agnostic.
    • The command-line interface extension, accidentally removed in a recent cleanup, has been restored.
    • The image attachment setting now correctly respects a value of 0, instead of falling back to the default.
    • The Welcome screen now loads with proper styling when shown as a fallback.
    • Using categories as hashtags has been removed to prevent conflicts with tags of the same name.
    • When verifying signatures on incoming requests, the digest header now gets checked as expected.

    Downloads

    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!


  • HTTP Signature Upgrades Coming Soon

    Ever wonder how your site proves it’s really you talking to the rest of the Fediverse? It’s not magic—it’s HTTP signatures, the digital equivalent of a secret handshake. With our next release, we’re making that handshake a lot more universal (and a little less awkward).

    Why HTTP Signatures Matter

    When you interact with the Fediverse, you want to know that the messages you send and receive are genuine. HTTP signatures are the technology that makes this possible. Every time your site sends a message, it includes a digital signature—like sealing an envelope with your personal stamp. This signature proves that your content really came from your account and that no one has tampered with it along the way. As a result, you can trust that your interactions across the network are authentic.

    A Wapuu dressed as a detective holds a sealed envelope marked with an RFC 9421 checkmark, symbolizing secure and verified communication, with a key floating nearby against a starry background.

    A Bit of Background: draft-cavage and RFC 9421

    If you’ve heard about HTTP signatures, you might have come across terms like “draft-cavage” and “RFC 9421.” These are just different versions of the rules for how those digital signatures are created and checked.

    For a long time, most of the Fediverse has used what’s called the draft-cavage-12 specification. Think of this as a set of instructions that people agreed to try out, but that hadn’t been officially finalized. It worked well enough to let sites talk to each other securely, but because it was just a draft, there were sometimes small differences in how different software used it.

    Recently, the community agreed on a final, official version of these rules, called RFC 9421. This is now the standard way to create and verify HTTP signatures. This makes it easier for sites and servers to understand each other and work together, since everyone is following the same process.

    Incoming Support for the New Standard, Out of the Box

    With this update, the plugin will support incoming HTTP signatures that use the new standard right away. There’s nothing extra you need to do. This means that when other servers use the new, official approach for signatures, your site will recognize and accept them. By making support for the new standard easy and automatic, the plugin helps move the Fediverse forward, encouraging more sites to adopt this approach and making connections across the network more reliable.

    Outgoing Requests and the Double Knock Approach

    There’s a new setting for outgoing requests, but for most people, there’s no need to touch it. This option is really for the folks who like to be on the cutting edge and want to start using the new standard for outgoing messages right away. If that sounds like you, here’s how to find it: head to the ActivityPub settings in your dashboard, open “Screen Options” at the top right, and enable “Advanced Settings.” Then, click on the Advanced Settings tab and turn on “Use modern signature format for Fediverse communications.”

    But don’t feel any pressure—leaving this setting off is perfectly fine. The plugin already handles incoming messages with the new standard out of the box, and we’ll automatically enable outgoing support for everyone once the wider Fediverse is ready. For now, this is just an option for early adopters.

    If you do turn it on, the plugin uses what we call the “double knock” approach. It’ll try the new standard first, and if the other server isn’t ready for it, it’ll automatically fall back to the older method. So, you can experiment without worrying about breaking communication with anyone.

    Improved Verification for Existing Signatures

    The plugin also brings improvements to how it handles signatures that use the older method, especially those using the hs2019 algorithm. Now, when a signed message arrives, the plugin fetches the sender’s public key and uses it to determine the correct way to verify the signature, following the specification more closely. This means more reliable verification and fewer errors, making your experience smoother and more predictable.

    Looking Forward

    With this update, the plugin helps move the Fediverse toward a shared standard for signing and verifying messages. By supporting both the new standard and the older method, you’re making it easier for everyone to communicate using the same agreed-upon approach. There’s no change in security, but you’re part of making the network more consistent and helping the community take the next step forward.

    We hope this explanation helps clarify these technical changes. If you have any questions about HTTP signatures or how our plugin interacts with the Fediverse, please don’t hesitate to reach out in the comments below.

  • What we shipped so far in 2025

    A Wapuu holding a Fediverse-Ball while sitting on a spaceship.

    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.


    Onboarding

    We’ve added an onboarding flow after plugin activation to help guide new users through key decisions — such as selecting the Actor Mode.

    A screenshot of the onboarding launchpad.

    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


    Move

    The 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


    Outbox

    Earlier 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:

    • Federate activities to more than 1000 followers.
    • Use a staggered delivery system that prioritizes servers.
    • Provide a stable and scalable architecture.
    • Support retries and error reporting.

    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


    Changelogs

    These 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.

    ActivityPub for WordPress
    ActivityPub for WordPress
    @activitypub.blog@activitypub.blog

    News about the ActivityPub plugin for WordPress.

    24 posts
    560 followers

    As always, we welcome your feedback and ideas — they help shape the future of the ActivityPub plugin and the growing WordPress Fediverse community! 🚀

  • New Look, Faster Blocks in ActivityPub 6.0.0

    In this version of ActivityPub for WordPress, most blocks received a pretty fundamental overhaul of their technical infrastructure, design, and functionality.

    The biggest change is almost invisible—all blocks now use WordPress’ Interactivity API under the hood, shedding a substantial amount of load-heavy scripts. On well-optimized sites, this should lead to noticeably quicker load times and improved web vitals.

    Let’s dive in and look at each block individually.

    Follow Me Block

    After updating, you might glance at your existing Follow Me blocks and think… “Did anything change?” That’s the goal! We’ve worked hard to keep things fully backwards compatible, so nothing should break—or even look too different—unless you want it to.

    ActivityPub for WordPress
    ActivityPub for WordPress
    @activitypub.blog@activitypub.blog

    News about the ActivityPub plugin for WordPress.

    24 posts
    560 followers

    The “Follow” button was updated to use WordPress’ built-in Button block, so all those customization options you already know and love are right there. We also turned “Button Only” into a proper Block Style. You’ll see it right next to the default, complete with a hover preview, making it easy to switch between.

    ActivityPub for WordPress
    ActivityPub for WordPress
    @activitypub.blog@activitypub.blog

    News about the ActivityPub plugin for WordPress.

    24 posts
    560 followers

    And speaking of style: there’s a new Profile style! This transforms the block into something that looks like an author card, complete with a description, header image, and post/follower stats. More social, more visual, still fully customizable. Not into the rounded corners and shadows? No problem—you can tweak those in the Styles tab.

    ActivityPub for WordPress
    ActivityPub for WordPress
    @activitypub.blog@activitypub.blog

    News about the ActivityPub plugin for WordPress.

    24 posts
    560 followers

    But that’s not all! The Modal containing the follow information also received a slight makeover, making it more theme-agnostic in its appearance.

    Followers Block

    For this block we didn’t hold back on updating the design—subtler styling and better theme integration, so it looks at home wherever you drop it. Like we did with the Reactions block in version 5.9.0, we’ve updated the title to use WordPress’ native Heading block. That gives you more control over appearance, while keeping things compatible with existing content.

    This block now benefits from the same Interactivity API improvements and renders server-side on first load, making it feel noticeably faster and more responsive right from the start.

    We also introduced a new Card style here (you might’ve spotted it in the 6.0.0 announcement). It pairs nicely with the Follow Me block’s Profile style—rounded corners and a coordinated look that helps everything feel part of the same family.

    They’ll be more changes to come soon, as we unlock font and background customizations to bring the block up to par with the rest of them.

    Reactions Block

    The Reactions block is a bit of a behind-the-scenes hero. Thanks to block hooks, it can automatically appear at the end of posts—no editor work required. But if you want to place it manually (like we’re doing here), you totally can.

    Beyond receiving the same technical upgrades as the other blocks, this one now displays the actual reactions in the Editor, matching what you see on the frontend—no more stand-in data unless there are no reactions yet. It also includes a few subtle improvements, like rendering an HTML comment when there’s nothing to show (so you’re not left guessing), and displaying more avatars when the block is set to “wide” or “full”-width, making better use of the space.

    Remote Reply

    This one’s a bit niche, but clever: Remote Reply lets logged-out users respond to Fediverse comments directly from your site. It’s not a block you can add in the editor, but it now uses the same lightweight tech as the Follow Me button—so it loads faster and feels smoother.

    If you’ve never seen it in action, you’re not alone—it only appears when certain conditions are met (logged out, looking at a Fediverse-sourced comment, etc.). Here’s a quick demo:


    While most of what ActivityPub does happens quietly behind the scenes, this update puts a little more shine on the parts your visitors can see. The blocks are lighter, more flexible, and a bit more fun to work with.

    As always, we’d love to hear what you think! Every improvement in this release was shaped by feedback from users like you—so keep it coming!

  • Our 2025 Roadmap: Building the Future of WordPress Federation

    A Wapuu in a spacesuit flying through the space holding a ball with the fediverse logo.

    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/Following

    This 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.

    Actors

    This 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.

    Moderation

    Currently, 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?

    Reader

    A 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 Messages

    As 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 profiles

    One 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 Informed

    We’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! 🚀

  • 6.0.0 – New Kids on the Block

    Our latest release brings a lot of improvements — especially to our blocks!

    The Follow Me and Followers blocks now have a fresh design, better interactivity, and broader support for ActivityPub-enabled users.

    A screenshot of the new 'Follow Me' Block!

    The Reactions block and “Reply on the Fediverse” feature also now take advantage of the latest Block Editor features and are built on the Interactivity API for a smoother experience.

    We’ll follow up soon with a deeper dive into the new block features — stay tuned!

    Beyond blocks, publishing new blog posts now reliably sends a Create activity to the Fediverse, so your followers won’t miss a thing. We’ve also improved how hashtags and @-mentions appear when posts federate to Mastodon and other platforms.

    Under the hood, we’ve cleaned up and modernized the codebase — and the plugin now requires WordPress 6.5 to take full advantage of the latest WordPress features.

    Meanwhile, we’re kicking off a major rework of the Followers/Following system. Expect more enhancements to roll out over the next few weeks. Plus, we’ll be publishing a blog post with our roadmap plans in the coming days — exciting things ahead! 🚀

    Full Changelog

    Added

    • Enhanced markup of the “follow me” block, for a better Webmention and IndieWeb support.
    • The actor of the replied-to post is now included in cc or to based on the post’s visibility.

    Changed

    • “Reply on the Fediverse” now uses the Interactivity API for display on the frontend.
    • Bumped minimum required WordPress version to 6.5.
    • Default avatar and error handling for the reactions popover list.
    • Ensured that publishing a new blog post always sends a Create to the Fediverse.
    • Followers block has an updated design, new block variations, and uses the Interactivity API for display on the frontend.
    • Follow Me and Followers blocks can now list any user that is Activitypub-enabled, even if they have the Subscriber role.
    • Likes and Reposts for comments to a post are no longer attributed to the post itself.
    • New system to manage followers and followings more consistently using a unified actor type.
    • Re-enabled HTML support in excerpts and summaries to properly display hashtags and @-replies, now that Mastodon supports it.
    • Refactored to use CSS for effects instead of JavaScript, simplifying the code.
    • Refine the plugin’s handling and storage of remote actor data.
    • The Follow Me block now uses the latest Block Editor technology for display on the frontend.
    • The Reactions block now uses the latest Block Editor technology for display on the frontend.

    Removed

    • Cleaned up the codebase and removed deprecated functions.

    Fixed

    • Added forward compatibility for Editor Controls, fixing deprecated warnings in the Editor.
    • Avoid type mismatch when updating activitypub_content_warning meta values.
    • Default number of attachments now works correctly in block editor.
    • Fixed a bug in Site Health that caused a PHP warning and missing details for the WebFinger check.
    • Fixes a bug in WordPress 6.5 where the plugin settings in the Editor would fail to render, due to a backwards compatibility break.
    • Improved automated setup process for the Surge caching plugin.
    • Improved excerpt handling by removing shortcodes from summaries.

    Downloads