Welcome to the community. Read the guidelines before your first post.
BuddyPress · BuddyBoss · Activity feed
Your best post is buried by lunchtime. Pin it so nobody misses it.
Pin any activity to the top of the sitewide stream, a group feed, or a member profile. It stays there until you unpin it or it expires.
★★★★★ Works with BuddyPress and BuddyBoss Platform · Per-user pin quotas · Auto-expiry on a cron · REST and WP-CLI
Just shipped my first plugin. Thanks everyone for the help.
Office hours this Friday at 3pm UTC. Bring your questions.
Built for
Built for six kinds of communities.
Each feed starts holding pins the day you activate the plugin. Pick the scenario closest to your community.
BuddyPress community managers
Pin a welcome post or community rules to the top of the sitewide stream so every member sees them first. Set a per-user quota so the feed stays curated and one member cannot monopolize the top.
Group organizers
Group admins and moderators pin announcements inside their own group without needing site-administrator access. Group Pin Authority lets you decide whether the creator, admins, moderators, or any member can pin.
Event and announcement teams
Pin an event reminder and set it to expire after the event date. Auto-expiry runs on a cron and unpins it for you, so the feed never carries stale notices.
Membership site owners
Feature a member spotlight or a new resource at the top of the feed. Customize the Pin and Unpin button labels and the badge so the controls match your site's language and brand.
Headless and app builders
Pin, unpin, and read sticky activities over the REST API, and pull per-user pin stats for leaderboards. The pin routes live under the BuddyPress REST namespace and switch to the BuddyBoss namespace on BuddyBoss sites.
Agencies and developers
Manage pins in bulk from WP-CLI, drop a list of pinned posts onto any page with the shortcode, and extend the pin lifecycle through 20 actions and 12 filters. No glue code to maintain.
See it in action
How BuddyPress Sticky Post looks on your site.
Switch between the four surfaces in the preview: the pinned activity feed, the per-user quota block, the admin settings tabs, and the dashboard with the activity log.
Group Pin Authority
Let group admins and moderators pin against the admin quota
Inside a group, a separate setting decides who can pin: the creator only, creator plus admins, creator plus admins plus moderators (the default), or any member. Group admins and moderators pin on behalf of the group, so they draw from the admin pin allowance instead of their own per-user quota. Regular members stay capped by the per-user limit, so the top of the group feed stays curated.
- Four authority levels: creator only, creator plus admins, creator plus admins plus moderators, or any member
- Group admins and moderators bypass the personal per-user quota inside their own group
- Regular members stay limited by the per-user pin cap
Weekly standup notes are live in the docs.
Auto-expiry and activity log
Pins expire on a schedule, and every pin event is logged
Give a pin a lifespan in days from 1 to 365 and it unpins itself when the window runs out. A WordPress cron job scans for expired pins and removes them, so removal can lag up to the cron interval from the exact cutoff. Every pin, unpin, and auto-expiry event is written to a dedicated database table with the actor's user ID, timestamp, component, and group, viewable on the Logs tab and exportable as CSV.
- Set a pin lifespan from 1 to 365 days, or never
- An hourly cron sweeps for expired pins and unpins them for you
- Every pin, unpin, and expiry event lands in a dedicated log table with actor and timestamp
What you get
Pin to three feeds, then keep the top of the stream under control.
Every license is the complete plugin. Pin to the sitewide stream, groups, and profiles, cap how many pins each member gets, let pins expire on their own, and manage it all from a seven-tab admin screen, the REST API, WP-CLI, or a shortcode. The only difference between tiers is how many sites you can run it on.
Pin to the sitewide stream, groups, and profiles
Pin any activity from the activity tools menu and it stays above the regular feed. Pins are scoped separately: a sitewide pin shows in the main stream, a group pin shows in that group, and a profile pin shows on the member's own activity. Each feed manages its own pins, so a sitewide pin never clutters a group.
Per-user pin quotas
Set how many posts each member can pin at once. The default is 1, and 0 means unlimited. When a member hits the cap, the pin is blocked with a friendly 429 message rather than failing silently. A separate admin limit governs how many pins site administrators can hold.
Group Pin Authority
Inside groups, a separate setting decides who can pin: the group creator only, creator plus admins, creator plus admins plus moderators (the default), or any member. Group admins and moderators pin on behalf of the group, so they bypass the personal per-user quota inside their own group.
Automatic pin expiration
Give a pin a lifespan in days and it unpins itself when the window runs out. A WordPress cron job scans for expired pins and removes them, and the expiry is recorded in the activity log. Event reminders and time-sensitive notices clean themselves up without manual work.
Activity log with a dedicated table
Every pin, unpin, and auto-expiry event is written to a dedicated database table with the actor's user ID, timestamp, component, and group. The Logs tab shows the feed so you can audit who pinned what and when, which helps with moderation and accountability.
REST API, WP-CLI, and a shortcode
Pin, unpin, and read sticky activities over REST, with pin routes under the BuddyPress namespace (buddypress/v1 by default, switching to the BuddyBoss namespace on BuddyBoss sites) plus a bpsp/v1/users/{id}/stats route for pin counts. Manage pins in bulk with wp bpsp on the command line, and drop a list of pinned posts onto any page with [bp_sticky_posts].
Made for
Six audiences. One product.
Pricing
Same complete plugin on every tier. Pick how many sites you run.
Every tier ships the full feature set: pinning to all three feeds, per-user quotas, Group Pin Authority, auto-expiry, the activity log, REST, WP-CLI, and the shortcode. Tiers differ only by the number of sites your license covers. Yearly plans include a year of updates and support; lifetime plans pay once and keep updates forever.
Personal
$49 / year
or $149 lifetime
One community site.
- 1 site
- Pin to stream, groups, and profiles
- Per-user quotas + Group Pin Authority
- Auto-expiry, activity log, REST + WP-CLI
- 1 year of updates + support
Professional
$99 / year
or $299 lifetime
Five sites. Freelancers and small agencies.
- 5 sites
- Pin to stream, groups, and profiles
- Per-user quotas + Group Pin Authority
- Auto-expiry, activity log, REST + WP-CLI
- 1 year of updates + support
Agency
$129 / year
or $349 lifetime
Unlimited sites for agencies running many community builds.
- Unlimited sites
- Pin to stream, groups, and profiles
- Per-user quotas + Group Pin Authority
- Auto-expiry, activity log, REST + WP-CLI
- 1 year of updates + support
Before you install
Questions community operators ask.
Answered by the team that maintains the plugin. Anything else, reach out through the contact page.
- 01
Does this require BuddyPress?
Yes. The plugin needs either BuddyPress or BuddyBoss Platform active. It checks for a supported platform on activation and works with BuddyPress 5.0 and later, and BuddyBoss Platform 2.0 and later.
- 02
Does it work with BuddyBoss?
Yes. BuddyBoss Platform 2.0 or higher is supported alongside standard BuddyPress, with no extra configuration. On BuddyBoss the REST pin routes register under the BuddyBoss namespace automatically instead of buddypress/v1.
- 03
Where can a post be pinned?
Three places, each managed separately. A sitewide pin shows at the top of the main activity stream, a group pin shows inside that group's feed, and a profile pin shows on the member's own activity. A post pinned in one scope does not automatically appear in another.
- 04
How many posts can a member pin?
By default one. The max_user_sticky_posts setting controls the per-user limit, and setting it to 0 makes it unlimited. When a member reaches the cap, the pin is blocked with a friendly 429 message instead of failing silently.
- 05
Can group moderators pin without being site admins?
Yes. Group Pin Authority lets you choose who can pin inside a group: the creator only, creator plus admins, creator plus admins plus moderators (the default), or any member. Group admins and moderators pin on behalf of the group, so they bypass the personal per-user quota inside their own group.
- 06
Can pins expire on their own?
Yes. Set a lifespan in days and the pin unpins itself when the window runs out. A WordPress cron job scans for expired pins and removes them, so removal can lag up to the cron interval from the exact cutoff. The expiry is recorded in the activity log.
- 07
Is there a record of who pinned what?
Yes. Every pin, unpin, and auto-expiry event is written to a dedicated database table with the actor's user ID, timestamp, component, and group. The Logs tab shows the feed, which is useful for moderation and accountability. Logging is toggled on the Lifecycle tab.
- 08
Is there a REST API?
Yes. You can pin, unpin, and read sticky activities over REST. The pin routes register under the BuddyPress REST namespace, which is buddypress/v1 by default and switches to the BuddyBoss namespace on BuddyBoss sites. A separate bpsp/v1/users/{id}/stats route returns per-user pin counts for leaderboards.
- 09
Can I manage pins without the admin screen?
Yes. The wp bpsp WP-CLI command pins, unpins, and lists sticky posts from the command line, which is handy for bulk operations and server-side automation. You can also drop a list of pinned posts onto any page with the [bp_sticky_posts] shortcode.
- 10
Can I extend it with code?
Yes. The plugin fires 20 action hooks and 12 filters across the full pin and unpin lifecycle, so you can cancel a pin before it is written, change the pinned ID list, override the badge HTML, or react to every pin event. There is no admin-ajax handler; the legacy AJAX path was removed in 2.3.8 in favor of REST and WP-CLI.
Stop letting your best posts scroll away.
Activate the plugin on a BuddyPress or BuddyBoss site and a Pin control appears in the activity tools menu. Pick who can pin, set a per-user quota, and choose an expiry window. The next post you pin holds the top of the feed until you unpin it or it expires.