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

News about the ActivityPub plugin for WordPress.

26 posts
620 followers

Blog

  • 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

  • 5.9.0 – Easier Onboarding for Your Fediverse Experience

    Getting started with ActivityPub on WordPress just got a lot easier. A new guided onboarding experience is now part of the plugin, designed to help you configure key settings and understand how your site connects to the Fediverse—from the moment you activate it.

    Screenshot that shows the onboarding checklist.

    Whether you’re new to ActivityPub or just setting things up again, the onboarding flow helps you make informed choices around visibility, content formatting, and profile setup. It’s built to give you confidence that your content is reaching the right audiences in the right way.

    Screenshot that shows the new help tabs.

    Tailored for You

    The plugin now adapts its behavior based on the caching plugins you have installed. You’ll also find clearer guidance if you’re using Surge, and an option to fine-tune how your content is tailored for browsers versus Fediverse services.

    We’ve moved profile-related settings out of the welcome page and into new dashboard widgets, so they’re easier to find and update. And to make the learning curve smoother, the Help tab now includes a section explaining how ActivityPub works on the users page.

    Media, Previews, and Performance

    Beyond onboarding, this release adds support for audio and video attachments in ActivityPub embeds and previews. Posts shared to the Fediverse can now include up to four images, and you can choose how many to include on a per-post basis. Editor previews have also been improved—they now show media even if the post hasn’t been published yet.

    Screenshot that shows the preview feature.

    For performance, author profiles now return a smaller set of extra fields (up to 20) to avoid bloated responses, and invalid items in the Outbox are skipped gracefully instead of causing errors.

    Designed to Grow With You

    This update also brings better mobile support for settings pages, improved documentation, and more robust error handling for things like missing or misformatted Outbox requests. And for developers, several filters and hooks have been updated or deprecated to make future work smoother and more predictable.

    If you’ve been curious about joining the Fediverse or connecting your blog in a more structured way, now’s a great time to try it. Just activate the plugin and let the onboarding guide you through the rest.

    Tried the new onboarding? Let us know how it worked for you and what you’d like to see improved.

    Full Changelog

    Added

    • ActivityPub embeds now support audios, videos, and up to 4 images.
    • Added a check to make sure we only attempt to embed activity objects, when processing fallback embeds.
    • Add setting to enable or disable how content is tailored for browsers and Fediverse services.
    • Adjusted the plugin’s default behavior based on the caching plugins installed.
    • A guided onboarding flow after plugin activation to help users make key setup decisions and understand Fediverse concepts.
    • Author profiles will cap the amount of extra fields they return to 20, to avoid response size errors in clients.
    • Fediverse Preview in the Editor now also supports video and audio attachments.
    • Guidance for configuring Surge to support ActivityPub caching.
    • Help tab section explaining ActivityPub capabilities on the users page.
    • Profile sections have been moved from the Welcome page to new Dashboard widgets for easier access.
    • The ActivityPub blog news feed to WordPress dashboard.
    • The Outbox now skips invalid items instead of trying to process them for output and encountering an error.

    Changed

    • Batch processing jobs can now be scheduled with individual hooks.
    • Better error handling when other servers request Outbox items in the wrong format, and 404 pages now show correctly.
    • Fediverse Previews in the Block Editor now show media items, even if the post has not been published yet.
    • Hide interaction buttons in emails when the Classic Editor is used.
    • Improve compatibility with third-party caching plugins by sending a Vary header.
    • Much more comprehensive plugin documentation in the Help tab of ActivityPub Settings.
    • NodeInfo endpoint response now correctly formats localPosts values.
    • Reactions block heading now uses Core’s heading block with all its customization options.
    • Settings pages are now more mobile-friendly with more space and easier scrolling.
    • The number of images shared to the Fediverse can now be chosen on a per-post basis.
    • Updated default max attachment count to four, creating better-looking gallery grids for posts with 4 or more images.
    • Use a dedicated hook for the “Dismiss Welcome Page Welcome” link.
    • Use FEP-c180 schema for error responses.
    • Use Audio and Video type for Attachments, instead of the very generic Document type.

    Deprecated

    • Deprecated rest_activitypub_outbox_query filter in favor of activitypub_rest_outbox_query. Deprecated activitypub_outbox_post action in favor of activitypub_rest_outbox_post.

    Fixed

    • Broken avatars in the Reactions and Follower block are now replaced with the default avatar.
    • Email notifications for interactions with Brid.gy actors no longer trigger PHP Warnings.
    • Improved support for users from more Fediverse platforms in email notifications.
    • Improved the handling of Shares and Boosts.
    • Issue preventing “Receive reblogs (boosts)” setting from being properly saved.
    • Mention emails will no longer be sent for reply Activities.
    • Prevent accidental follower removal by resetting errors properly.
    • Properly remove retries schedules, with the invalidation of an Outbox-Item.
    • The blog profile can no longer be queried when the blog actor option is disabled.

    Downloads

  • Your Site, Your Rules: Filtering Fediverse Activity

    When running a WordPress site with the ActivityPub plugin, you’re not just managing a website—you’re also operating a node in the Fediverse. This means you need effective tools to block unwanted activities, users, servers, and content from other instances across the network.

    How Blocking Works in ActivityPub for WordPress

    The ActivityPub plugin takes a pragmatic approach to blocking unwanted content by building on WordPress’s existing “Disallowed Comment Keys” feature. While this leverages familiar comment filtering tools, it may be less immediately obvious than the dedicated blocking interfaces found in some other Fediverse applications.

    The Disallowed Comment Keys System

    At its core, WordPress has long had a built-in system to filter comments based on specific keywords or domains. The ActivityPub plugin builds on this system to also block incoming Fediverse activities.

    When an activity arrives at your WordPress site’s inbox, the plugin runs it through the same filtering mechanism used for regular WordPress comments. This means that if you’ve configured WordPress to block certain domains or keywords in comments, those same rules will apply to incoming ActivityPub activities like follows, likes, or replies.

    Where to Find and Configure Blocking Settings

    The blocking settings aren’t located within the ActivityPub plugin’s own settings page. Instead, they’re accessed through WordPress’s standard Discussion Settings:

    1. Navigate to Settings → Discussion in your WordPress admin panel.
    2. Scroll down to the Disallowed Comment Keys section.
    3. Add domains, keywords, or IP addresses you want to block, one per line.

    For example, to block a problematic Fediverse server, you would add its domain (like bad-instance.com) to the disallowed comment keys list.

    The ActivityPub settings page also links to this under Settings → ActivityPub → Settings tab, where the “Blocklist” section points you to the same Disallowed Comment Keys setting.

    Tracking Blocked Activities

    When the plugin blocks an incoming activity, it logs relevant details to your PHP error logs. This typically includes information about the actor (user) who sent the activity, helping you monitor and refine your blocking strategy over time.

    Best Practices for Blocking

    When managing your WordPress site as a Fediverse node:

    1. Be specific: Block particular profiles or domains instead of using broad keyword filters. Precision helps avoid false positives.
    2. Review your logs: Periodically check your PHP error logs to understand what’s being blocked.
    3. Adjust as needed: Refine your blocking strategy based on the patterns you observe.

    Unlike centralized social networks, the Fediverse gives you direct control over what appears on your site. Your blocklist is a reflection of your site’s values and the kind of interactions you want to support.

  • From Toot to Post: Mastodon Migration Made Easy

    If you’ve been posting on Mastodon and want to bring those posts into your WordPress site, the new importer makes that possible. It’s a beta feature, but it already handles the basics well—and helps you keep more of your content in one place.

    Keep What You Create

    Social platforms can come and go—or just change in ways you didn’t expect. Maybe your Mastodon server shuts down, or the people running it move on. When that happens, it’s easy to lose your old posts and the history you’ve built up.

    The Mastodon importer helps you take control by bringing your posts into your WordPress site, where you own the content and can decide how it’s stored, shared, and presented. You’re not just copying things over—you’re giving your content a more permanent home.

    Getting Started

    The import process is user-friendly and follows a clear workflow:

    1. Log into your Mastodon account and go to Preferences > Import and Export.
    2. Request your archive and download the ZIP file when it’s ready.
    3. Open the WordPress Mastodon Importer and upload your file.
    4. Choose an author for your imported posts and decide whether to include media files or just the text.

    Once uploaded, you can assign imported posts to a specific author and choose whether to include image attachments with your posts or just import the text content.

    The importer processes your posts from the Mastodon outbox.json file, filtering to include only public posts while skipping boosts. Each post maintains its original publication date, content, and media. If your posts include images, video, or audio, the importer brings those in too and adds them to the post automatically.

    Your Posts, Rebuilt

    The importer transforms your Mastodon content into a rich block editor experience. Your posts convert into proper paragraph blocks while maintaining their original formatting. Images are organized into gallery blocks with captions intact, while videos and audio files transform into their respective media blocks for optimal playback.

    Hashtags from your Mastodon posts are converted to WordPress tags, preserving your content’s organizational structure and discoverability.

    When a post is part of a conversation, the importer adds a reply block at the beginning of your post that embeds the original post you were responding to. This keeps the conversation flow clear and provides context for your response.

    All these blocks remain fully editable after import, so you can tweak layouts or adjust media presentation as needed.

    For classic editor users, the importer keeps things simple with standard shortcodes for media. It’s not as fancy as the block version, but it should work reliably with your existing setup.

    It’s a Beta—Your Feedback Counts

    The Mastodon importer is still in beta, and there’s more work ahead—especially when it comes to large archives and better handling of replies. We’ve followed WordPress importer best practices, but real-world use is where things really get tested.

    Tried the importer? Let us know how it went—what worked, what didn’t, and what you’d love to see next. Your feedback helps shape where we take it from here.

  • V5.8.0 – If it’s on the Fediverse, you can embed it.

    This update introduces two exciting improvements: brand-new email templates and personalized notification settings.

    Emails now deliver much richer content—mentions and direct messages include the full post, and the refreshed design feels modern and refined. Additionally, new follower notifications feature a profile card, making it easier to see who’s interacting with your content.

    We’ve made several improvements around Embeds and Importing: Fediverse content embedding now has fallback support, so even if native oEmbed responses are unavailable, embeds will appear consistently. The Mastodon importer has also been significantly enhanced—it now imports all media types, supports user blocks, and automatically embeds replies in imported conversations, making transitions smoother and content richer.

    For Email Notifications, you’ll now receive alerts whenever someone mentions you in the Fediverse. Direct message notification emails have been upgraded with embedded message previews, and follower notification emails received a visual refresh with helpful meta details included.

    We’ve also refined User Interactions and Moderation by integrating WordPress’s disallowed list to prevent unwanted ActivityPub interactions. Notification preferences have become user-specific, allowing more personalized control over alerts and interactions.

    Additionally, we’ve improved Compatibility and Stability, including better support for Multisite Language Switcher, resolving PHP warnings during Mastodon import processes, enhancing user context handling in Global-Inbox actions, and ensuring reply links and popup modals are properly translated for logged-out visitors.

    Full Changelog

    Added

    • An option to receive notification emails when an Actor was mentioned in the Fediverse.
    • Enable direct linking to Help Tabs.
    • Fallback embed support for Fediverse content that lacks native oEmbed responses.
    • Support for all media types in the Mastodon Importer.

    Changed

    • Added WordPress disallowed list filtering to block unwanted ActivityPub interactions.
    • Mastodon imports now support blocks, with automatic reply embedding for conversations.
    • Tested and compatible with the latest version of WordPress.
    • Updated design of new follower notification email and added meta information.
    • Update DM email notification to include an embed display of the DM.
    • Updated notification settings to be user-specific for more personalization.

    Fixed

    • Add support for Multisite Language Switcher
    • Better check for an empty headers array key in the Signature class.
    • Include user context in Global-Inbox actions.
    • No more PHP warning when Mastodon Apps run out of posts to process.
    • Reply links and popup modals are now properly translated for logged-out visitors.

    Downloads