WordPress Plugins

PublishPress Planner Pro review: bring real editorial workflow to your WordPress newsroom

A walkthrough of PublishPress Planner Pro: the Content Calendar, Content Board (kanban), Content Overview, notifications, editorial comments, custom statuses, and metadata workflows.

PublishPress Planner Pro review: bring real editorial workflow to your WordPress newsroom review on GPL Times

If two or more people write for the same WordPress site, you’ve already discovered the gap. WordPress was built for one person hitting Publish on their own posts. The moment you have an editor reviewing a writer’s draft, a content manager scheduling 30 posts across the next quarter, a freelancer waiting on feedback, or an SEO lead asking when the Q3 piece is going live, you start hacking around WordPress’s missing newsroom features.

The default post list (filterable by author and status) is the only built-in tool you get. There’s no calendar view. No kanban board. No editorial comments separate from public comments. No "this draft is awaiting your review" notifications. No way to define custom statuses like Pitch / In Progress / Ready for Edit / Approved / Scheduled.

PublishPress Planner Pro (from PublishPress, the team that forked the original Edit Flow plugin in 2014) is the WordPress plugin that fills that gap. Editorial calendar, kanban board (Content Board), table view (Content Overview), notifications workflow engine, editorial comments separate from public comments, editorial metadata fields, custom post statuses, and a Slack integration. It’s been the editorial-workflow standard for WordPress newsrooms for nearly a decade, with 35,000+ active installs on the free version and an active Pro tier on top.

This is a walkthrough of every feature, the three views (Calendar / Board / Overview), how notifications work, real-world editorial setups for content teams, and how it compares to CoSchedule and Editorial Calendar.

Quick decision guide: do you need PublishPress Pro?

Use PublishPress Planner Pro if you:

  • Have 2+ writers/editors/contributors and need a shared editorial view
  • Schedule content weeks or months in advance and need a calendar
  • Want to assign a piece to a writer and notify the editor when it’s ready for review
  • Need custom post statuses beyond WP’s defaults (Draft / Pending / Published / Scheduled)
  • Want editorial comments separate from public comments (private team notes)
  • Run multiple post types and need consistent workflow across them

Use Editorial Calendar (free WP.org plugin) instead if you:

  • Only need a basic drag-drop calendar with no notifications/board/comments
  • Don’t pay for Pro features
  • Have a one-person blog

Use CoSchedule instead if you:

  • Need social media scheduling integrated with the editorial calendar
  • Run a multi-channel marketing team (blog + social + email)
  • Have budget for CoSchedule’s monthly subscription ($29-$59/user/month)
  • Are willing to host editorial outside WordPress (CoSchedule is SaaS)

Stick with WordPress’s default post list if you:

  • Are a one-person blogger
  • Don’t schedule content in advance
  • Don’t have an editor-writer review loop

Table of contents

The PublishPress ecosystem (it’s more than one plugin) {#ecosystem}

This is the part that confuses first-time PublishPress users. "PublishPress" isn’t one product, it’s a family of 7 plugins, each handling a different editorial concern:

  • PublishPress Planner (this article) – the editorial calendar, board, overview, notifications, comments, metadata. The flagship.
  • PublishPress Authors – multiple authors on a single post, author archives, guest authors.
  • PublishPress Capabilities – granular permissions per role (who can publish, who can edit other people’s posts).
  • PublishPress Checklists – require certain conditions before publish (e.g. featured image set, word count > 500).
  • PublishPress Permissions – per-post and per-section access control.
  • PublishPress Revisions – workflow for reviewing changes to live posts before they go live.
  • PublishPress Series – link posts into series with navigation.
  • PublishPress Blocks – Gutenberg block enhancements.

Each is a separate plugin sold separately. This walkthrough covers Planner Pro only, but a real newsroom often runs Planner + Authors + Capabilities + Checklists together (a 4-plugin stack).

Free vs Pro: what the Pro tier adds {#free-vs-pro}

Free PublishPress Planner (from WordPress.org):

  • Content Calendar (basic)
  • Content Overview (basic table view)
  • Content Board (basic kanban)
  • Editorial Comments (private team comments on posts)
  • Custom Statuses (replace WP’s default Draft/Pending with your own)
  • Editorial Metadata (custom fields visible to editors)
  • Notifications (basic email when post status changes)

Pro adds:

  • Customize Card Data on Content Board (show whatever post fields you want on cards)
  • Customize Columns on Content Overview
  • Customize Filters across all three views
  • Me Mode (filter to only posts you’re involved with)
  • Print the calendar, board, or overview
  • iCal / Google Calendar subscription feed (subscribe to your editorial calendar in your phone’s calendar app)
  • Slack integration (send notifications to Slack channels, not just email)
  • Reminders (scheduled reminder emails when post date approaches)
  • Notification Workflow Engine (visual builder for complex notification rules)
  • Network notifications (multisite)
  • Premium support

For a 1-2 person blog with simple workflow, free is enough. For 3+ people, the workflow engine and Slack integration justify the Pro tier.

Pricing reality check {#pricing}

PublishPress Planner Pro pricing (annual):

  • 1 site: $129/year
  • 5 sites: $179/year
  • Unlimited: $339/year
  • Lifetime (1 site): $499 one-time
  • Lifetime (unlimited): $999 one-time

Renewal is at full price after year one.

The Pro is also available as part of the PublishPress Bundle, $399/year unlimited sites, includes all 7 PublishPress plugins (Planner + Authors + Capabilities + Checklists + Permissions + Revisions + Series + Blocks). For a real newsroom, the bundle is significantly cheaper than buying each separately.

On the GPL Times store, PublishPress Pro (Planner Pro) is part of the GPL membership. Other PublishPress plugins (Authors Pro, Capabilities Pro, Checklists Pro, etc.) are also available individually as members.

What you lose on the GPL-licensed version: automatic updates and direct support tickets. PublishPress support is genuinely helpful (small responsive team), so that’s a real loss for sites that need handholding.

Step 1: Install and find your way around {#step-1-install}

Install path: WP Admin -> Plugins -> Add New -> Upload Plugin -> upload publishpress-pro.zip -> Activate. The plugin adds a new top-level Planner menu in the admin sidebar with sub-items: Content Calendar, Content Overview, Content Board, Settings.

The default landing page on the Planner menu is the Content Calendar. That’s also where 80% of your time goes.

Step 2: The Content Calendar (your editorial cockpit) {#step-2-calendar}

Click Planner -> Content Calendar.

PublishPress Content Calendar with weekly grid view, Mon-Sun columns, Me Mode and Customize Filters buttons, Period dropdown (5 weeks), Post Status / Author / Post Type filters, Reset Filters, Search box, navigation arrows, Today button, and a sample Hello world! post in a Tue 19 cell

What you’re looking at:

  • Date grid: rows are weeks, columns are days (Monday-Sunday by default). Each cell shows posts scheduled for that date.
  • Period dropdown (top left): how many weeks to show. Default 5. Can do 3-10 weeks.
  • Filters row below: Post Status (Draft / Pending / Published / Scheduled / custom), Author, Post Type. Multi-select.
  • Reset Filters clears all selections.
  • Search box: keyword search across post titles.
  • Me Mode: switch to showing only posts where you’re the author or assigned reviewer. Critical for individual writers who only care about their own queue.
  • Customize Filters: add/remove which filter dropdowns appear.
  • Period: 5 weeks at the bottom: legend.
  • Refresh button (top right): reload data.
  • Arrows (left/right) and Today button: navigate weeks.
  • Click here to subscribe in iCal or Google Calendar: top-right link generates an iCal subscription URL.

Daily cell display: each post is shown with its status icon (checkmark for published, clock for pending, etc.), publish time, and title. Click any post to open a quick-edit modal where you can change title, content, status, date, author without leaving the calendar.

Drag-drop: drag a post from one date to another to reschedule. Pro tip: this is the single feature editors love most.

Click an empty cell: opens a new-post-on-this-date modal. Inline content creation.

This view replaces "open WP admin -> Posts -> filter by date -> look for what’s scheduled" with a single screen that shows you the next month at a glance.

Step 3: The Content Board (kanban-style status flow) {#step-3-board}

Click Planner -> Content Board.

PublishPress Content Board kanban with columns for Draft (0 posts), Pending Review (0), Published (1, showing Hello world! by admin from May 19 2026), Default Date Scheduled (0), and another status. Has Me Mode, Customize Card Data, Customize Filters, Print, Settings buttons, plus filter buttons Date / Post Status / Author / Post Type / Reset Filters and Search / New Post button

The Content Board is a Trello/Asana-style view of your posts grouped by status:

  • Columns: one per post status. Default WP statuses (Draft / Pending Review / Published / Scheduled), plus any custom statuses you defined.
  • Cards: each post is a card showing title, date, author, post type, and Edit / Trash / View actions.
  • Drag-drop: drag a card from one column to another to change its status. The post saves automatically.

Header buttons:

  • Me Mode: filter to only posts where you’re involved (assigned).
  • Customize Card Data (Pro only): pick which post fields appear on the card. Example: add Word Count, Featured Image, Categories, Editorial Comments count.
  • Customize Filters: which filter buttons appear in the toolbar.
  • Print: printer-friendly view of the board (Pro).
  • Settings (gear): per-board settings (column count, default sort).
  • New Post: create directly into the Draft column.

Filter buttons below the header: Date range, Post Status (which columns show), Author, Post Type. Reset Filters clears.

This is the view for editors and content managers. Writers tend to live in the Calendar; editors live in the Board. The Board makes "what’s in my review queue" instantly visible.

Step 4: The Content Overview (sortable table view) {#step-4-overview}

Click Planner -> Content Overview.

PublishPress Content Overview table view with columns Title, Status, Post Type, Author, Post Date, Last Modified. One row showing Hello world! Published Post admin May 19 2026 1 hour ago. Has Me Mode, Customize Columns, Customize Filters, Print, Settings buttons plus Date/Post Status/Revision Status/Author/Post Type/Reset Filters and New Post button

The Content Overview is the most spreadsheet-like view:

  • Sortable columns: Title, Status, Post Type, Author, Post Date, Last Modified (click any header to sort).
  • Customize Columns (Pro): add columns like Categories, Tags, Word Count, Editorial Metadata custom fields, Featured Image.
  • Filters: same as Calendar/Board.
  • Date filter: shows posts in a specific date range.
  • Revision Status filter (Pro): for the PublishPress Revisions plugin integration.

This is the view for spreadsheet-minded people. Some teams prefer this over the calendar. Same data, different presentation. It’s also the best view for bulk operations (select multiple rows, take action).

The right choice between Calendar / Board / Overview is personal. Most teams use Calendar for planning, Board for daily standup, Overview for bulk operations.

Step 5: Configure Settings (post types, statuses, dates, statuses) {#step-5-settings}

Click Planner -> Settings.

PublishPress Settings with top tabs Content Calendar, Content Overview, Content Board, Notifications, Features, Slack, Reminders, License. Content Calendar tab is active showing Post types to show (Posts checked), Show today's date in first row, Enable subscriptions in iCal/Google Calendar (Enabled), Statuses to display publish time (Publish, Scheduled), Posts publish time format (1-12 am/pm), Default publish time, Field for sorting calendar items, Max visible posts per date, Always show complete post titles

The Settings page has 8 top tabs:

Content Calendar tab

  • Post types to show: which WordPress post types appear in the calendar (Posts, Pages, custom post types). Default just Posts.
  • Show today’s date in first row: visual indicator.
  • Enable subscriptions in iCal or Google Calendar: opens a subscription URL for external calendar apps.
  • Allow public access to subscriptions: whether the iCal feed requires login or is public.
  • Statuses to display publish time: for which statuses the time appears on the cell.
  • Posts publish time format: 1-12 am/pm, 01-12 am/pm, or 00-23.
  • Default publish time (Pro): auto-set time when creating posts from the calendar.
  • Field used for sorting calendar items in a day cell: Publishing Time or Post Status.
  • Max visible posts per date: default 4, configurable.
  • Always show complete post titles: vs truncated.

Content Overview tab

Same kind of options but for the table view.

Content Board tab

Configure columns visible by default, and post statuses to include as columns.

Notifications tab

  • Always send to me: include current user in all notifications.
  • Always send to administrator: include admin in all notifications.
  • Default notification channels: Email, Slack (Pro).

Features tab

Toggle on/off plugin modules: Editorial Comments, Editorial Metadata, Custom Statuses, Notifications, User Groups. Granular control over which features are active.

Slack tab (Pro)

Paste a Slack webhook URL. PublishPress will route certain notifications there.

Reminders tab (Pro)

Configure scheduled reminder emails (e.g. "remind me 1 day before this post’s publish date").

License tab

License activation (skip on GPL-licensed version).

Step 6: Build a notification workflow {#step-6-notifications}

The Notifications system is what turns PublishPress from a "view" into a real workflow tool. Click the Notifications link in the sidebar (under Planner) or navigate to Notifications via Settings -> Notifications tab -> Add New Workflow.

PublishPress Notifications workflow list with three default workflows: New Post is created in Draft status, New Post is Published, Existing Post is updated. Columns show Title, When to notify, Filter the content, Who to notify (all set to Site Administrator). Plus Add New Notification button

PublishPress ships three default workflows:

  • New Post is created in Draft status – notifies the admin.
  • New Post is Published – notifies the admin.
  • Existing Post is updated – notifies the admin.

Click any to edit, or click Add New Notification to create from scratch.

The workflow editor has 4 sections:

PublishPress Notification workflow edit page with title New Post is Published, Workflow Settings showing four columns: When to notify (When the content is moved to a new status, Previous status 5 of 7 selected, New status Published, with Before/After triggers), For which content (Post type Post, Category, Taxonomy), Who to notify (Site Administrator, Authors of the content, Users, Roles, Users who selected Notify me for the content), and What to say (Subject psppno_post_title was published, rich text body with content/actor/permalink shortcodes). Right sidebar has Publish status, content shortcode reference, User making changes or comments, and Workflow shortcodes

The four configuration areas:

When to notify?

The trigger. Pick from:

  • When an editorial comment is added
  • When the content is updated (any save)
  • When taxonomy is updated
  • When the content is moved to a new status (the most common)

For "content moved to new status", you pick:

  • Previous status: 5 of 7 selected (the from-states).
  • New status: Published (the to-state).

So "send this notification when a post moves FROM any of the 5 statuses TO Published".

Plus optional Before the selected publish date / After the current publish date modifiers.

For which content?

Filters: which post type, which categories, which taxonomies trigger this workflow. Useful for "only notify when a news post is published, not when a recipe is".

Who to notify?

Recipients:

  • Site Administrator (always).
  • Authors of the content (the post’s author).
  • Users (specific user list).
  • Roles (everyone with Editor role).
  • Users who selected "Notify me" for the content (per-post opt-in).

Multi-select. You can include "Authors of the content" AND "Users with role Editor" simultaneously.

What to say?

The email/Slack content:

  • Subject: [psppno_post_title] was published (with merge tags).
  • Body: rich text with merge tags.

Available merge tags (visible in the right sidebar):

  • Content: [psppno_post] plus fields like title, permalink, date, status, content, excerpt, post type, edit link, author, meta, etc.
  • User making changes or comments: [psppno_actor] with name, login, email, etc.
  • Workflow: [psppno_workflow] with title.
  • Editorial Comment: when triggered by a comment.
  • Receiver: the recipient’s name and email.

The merge tags are how you produce specific, useful notifications instead of generic "Something happened to your content" emails.

Slack integration (Pro): same workflow editor; under Who to notify, pick "Slack channel" with the webhook URL configured in Settings -> Slack tab.

Step 7: Editorial comments and metadata {#step-7-comments}

Two features you’ll touch in every workflow:

Editorial Comments

WordPress’s default comments are public. Editorial Comments are private, team-only comments on posts. They appear in a separate metabox on the post edit screen.

Workflow:

  1. Writer finishes a draft. Clicks "Save Draft".
  2. Editor opens the post in admin.
  3. Editor scrolls to the Editorial Comments metabox below the editor.
  4. Editor leaves a private comment ("Please add a statistic in the third paragraph").
  5. PublishPress sends the writer a notification with the comment text.
  6. Writer addresses the comment, replies.
  7. Comment thread continues until "Resolved".

This is what replaces back-and-forth emails between writers and editors. The full comment history stays with the post.

Editorial Metadata

Custom fields visible only to editors (not in the post content). Examples:

  • Pitch summary (textarea)
  • Estimated word count (number)
  • SEO keyword (text)
  • Featured image source (URL)
  • Slug priority (dropdown High/Medium/Low)
  • Internal review deadline (date picker)

Define fields under Settings -> Editorial Metadata. They appear as a metabox on the post edit screen, visible only to logged-in editors. Available as merge tags in notifications and as columns in Content Overview.

Step 8: Custom statuses, user groups, reminders {#step-8-advanced}

Three more advanced features:

Custom Statuses

WordPress ships 4 statuses: Draft / Pending Review / Published / Scheduled. Add your own under Settings -> Custom Statuses.

Common newsroom statuses to add:

  • Pitch (initial idea, before draft)
  • In Progress (writer working on it)
  • Awaiting Edit (writer done, editor needs to review)
  • Awaiting Approval (editor signed off, awaiting senior approval)
  • Scheduled (ready, just waiting for publish date)
  • Holding (paused indefinitely)
  • Killed (rejected, not publishing)

Each gets a color, an icon, and a sort order. Custom statuses replace Draft/Pending in workflows that need more granularity.

User Groups

Group users by team (Writers, Editors, Junior Editors, SEO Team, Social Team). Notifications can target a group rather than individual users.

Workflow: "When post status moves to Awaiting Edit, notify all members of the Editors group."

Reminders (Pro)

Scheduled reminder emails. Configure under Settings -> Reminders.

Common reminders:

  • "1 day before scheduled publish": remind the author "Your post is going live tomorrow, last chance to review."
  • "3 days after Draft created": remind writer "Your draft hasn’t been updated in 3 days, still on track?"
  • "1 hour after Published": remind editor "Confirm this post is live and visible on the front-end."

Real-world recipes (3 newsroom setups) {#recipes}

Recipe 1: Solo blogger with occasional guest writers

Goal: Stay on top of your own schedule, occasionally accept guest contributions.

Stack: PublishPress Planner Pro only.

Setup:

  1. Custom Statuses: Add Pitch, Awaiting Edit.
  2. Content Calendar: enable Me Mode for daily check-in.
  3. Notifications:
  • When new post is submitted (status = Pending Review) -> notify me.
  • When my own post is moved to Pitch status -> reminder in 7 days.
  1. Editorial Metadata: SEO Keyword (text field), Word Count Target (number).

Time: 30 minutes setup. Daily use: open Content Calendar each morning.

Recipe 2: Small content agency (4-person team)

Goal: 1 Editor + 3 Writers + occasional Guest Contributors. Writers pick from a pitch backlog, write, submit for review, editor approves and publishes.

Stack: PublishPress Planner Pro + PublishPress Capabilities Pro + WP Mail SMTP.

Setup:

  1. Custom Statuses: Pitch, Claimed, In Progress, Awaiting Edit, Approved, Scheduled.
  2. User Groups: Writers (3 users), Editor (1 user).
  3. Notifications:
  • Status changes to Awaiting Edit -> notify the Editor group.
  • Status changes to Claimed by Writer -> notify the Editor "writer X claimed pitch Y".
  • Status changes to Approved -> notify the Writer.
  1. Reminders (Pro):
  • 2 days after Claimed without status change -> remind writer.
  • 1 day before scheduled publish -> remind editor to check the post.
  1. Slack integration: route "Awaiting Edit" notifications to a #content-review Slack channel.
  2. Editorial Metadata: Pitch Notes (textarea), Target Word Count, Audience Persona (dropdown).

Time: A full day to set up. Daily use: Editor lives in Content Board, Writers live in Content Calendar with Me Mode on.

Recipe 3: Multi-author publication (15+ writers, 3 editors, 2 senior editors)

Goal: Magazine-style publication with pitch approval workflow, parallel edits, fact-check approval, senior editor sign-off, then publish.

Stack: PublishPress Planner Pro + PublishPress Capabilities Pro + PublishPress Authors Pro + PublishPress Checklists Pro + Slack + WP Mail SMTP.

Setup:

  1. Custom Statuses: 9 statuses representing each workflow step.
  2. User Groups: Writers, Junior Editors, Senior Editors, Fact Checkers, Social Team.
  3. Capabilities (via Capabilities Pro): only Senior Editors can move status to Published.
  4. Checklists (via Checklists Pro): require Featured Image + Min Word Count + SEO Keyword set + Author Bio attached before status can move to Approved.
  5. Notifications: 15+ workflows for each status transition, routed to Slack channels for each team.
  6. Editorial Metadata: Pitch Source, Target Audience, Editorial Lane, Fact-Check Confirmed, SEO Score.

Time: 1-2 weeks to set up, including testing all the notification rules and onboarding the team.

Performance impact {#performance}

PublishPress Planner Pro is lightweight on the admin side because the calendar/board/overview only render when an editor is viewing them.

Front-end impact: zero. PublishPress doesn’t add any front-end CSS, JS, or hooks. Visitors don’t see anything from PublishPress.

Admin impact:

  • Content Calendar: 100-300ms TTFB on first load, ~50ms after caching.
  • Content Board: similar.
  • Editorial Comments metabox: ~20ms on post edit screen.
  • Notification workflow: ~10ms PHP overhead per status change.

Notification email delivery: PublishPress uses WordPress’s wp_mail(). Pair with WP Mail SMTP for reliable delivery. Without SMTP, notifications often land in spam or never arrive.

Database: PublishPress adds 3-4 custom tables. On a busy site (thousands of status changes per month) the editorial logs grow modestly. The plugin includes a cleanup tool to truncate old logs.

PublishPress Pro vs CoSchedule vs Editorial Calendar {#comparison}

Feature PublishPress Pro CoSchedule Editorial Calendar (free)
Content Calendar Yes Yes Yes (basic)
Content Board (kanban) Yes Yes No
Content Overview (table) Yes Limited No
Custom statuses Yes Yes No
Editorial comments Yes Yes No
Editorial metadata Yes Limited No
Notifications Visual workflow builder Email + Slack No
Reminders Yes (Pro) Yes No
Slack integration Yes (Pro) Yes (more polished) No
Social media scheduling No Yes (core) No
Email marketing scheduling No Yes No
Multi-channel calendar No Yes (blog + social + email) No
User groups Yes Yes No
Hosted (SaaS) vs WP-native WP-native SaaS WP-native
Annual price $129-$339 $29-$59/user/month ($348-$708/user/year) Free

Use PublishPress Pro if you need WordPress-native editorial workflow, value owning your data, and budget is annual not monthly.

Use CoSchedule if you need integrated social media + email marketing on the same calendar as your blog posts, AND have monthly SaaS budget. CoSchedule is significantly more expensive long-term but does multi-channel.

Use free Editorial Calendar if you only need a basic drag-drop calendar with zero workflow features.

12 common gotchas {#gotchas}

  1. Notifications require working email delivery. Install WP Mail SMTP and configure with Mailgun/SendGrid/SES on day one. Otherwise notifications go to spam.

  2. Editorial Comments are NOT the same as WordPress comments. They live in a separate database table. They’re not exposed in REST API by default; no SEO impact; no public visibility.

  3. Custom statuses break some themes. Themes that use if (get_post_status() == 'publish') checks will treat your custom statuses as unpublished. Test custom statuses on a staging site.

  4. The calendar’s iCal subscription URL is permanent and not authenticated by default. Anyone with the URL can view your editorial schedule. Set "Allow public access" to OFF in Settings, then only logged-in users can subscribe.

  5. Pro features require valid license activation. On the direct license, paste in Settings -> License. on the GPL-licensed version, license validation is bypassed but premium support is unavailable.

  6. Slack webhooks expire if you regenerate them in Slack. Update the webhook URL in PublishPress Settings whenever you change it in Slack.

  7. Reminders depend on WP-Cron. If your site has WP-Cron broken (some hosting blocks it), reminders won’t fire. Set up real cron via your host: */5 * * * * wget -q https://yoursite.com/wp-cron.php.

  8. The Notifications log can grow large on busy sites. Tens of thousands of status changes per year = tens of thousands of log rows. Settings has a "Clear log" button.

  9. Content Board cards don’t show all post fields by default. Use Customize Card Data (Pro) to add Word Count, Featured Image, Categories.

  10. Custom Statuses don’t replace WordPress’s built-in Draft/Pending statuses. They sit alongside. Hide built-in ones in Settings -> Custom Statuses by toggling visibility.

  11. The free Editorial Calendar plugin (different product) conflicts with PublishPress Calendar. Deactivate free Editorial Calendar before installing PublishPress.

  12. Drag-drop on the Calendar requires JavaScript and a modern browser. Doesn’t work in IE11. Mobile browsers vary; works on iOS Safari and Android Chrome but quirky on older Android browsers.

Developer reference: hooks and filters {#developer-reference}

PublishPress exposes 80+ hooks. Most useful:

Modify which posts appear in the Calendar

add_filter('pp_calendar_posts_query_args', function($args) {
 // Only show posts that have a "calendar_visible" custom field set to "yes"
 $args['meta_query'] = [
 ['key' => 'calendar_visible', 'value' => 'yes'],
 ];
 return $args;
});

Customize the post title HTML in the Calendar

add_filter('pp_calendar_post_title_html', function($html, $post) {
 $word_count = str_word_count(strip_tags($post->post_content));
 return $html. ' <small>('. $word_count. ' words)</small>';
}, 10, 2);

Add a custom capability check for the Calendar create-post action

add_filter('pp_calendar_create_post_cap', function($cap) {
 return 'edit_others_posts'; // Only senior editors can create from calendar
});

Trigger a side effect when editorial metadata is updated

add_action('pp_editorial_metadata_field_updated', function($field_id, $post_id, $value) {
 if ($field_id === 'seo_keyword' &&!empty($value)) {
 // Sync to your CRM
 wp_remote_post('https://crm.example.com/api/keywords', [
 'body' => json_encode(['post_id' => $post_id, 'keyword' => $value]),
 ]);
 }
}, 10, 3);

Custom notification recipient

add_filter('publishpress_notif_run_workflow_receivers', function($receivers, $workflow, $args) {
 // Add the post's first reviewer (a custom field) to the recipients list
 $reviewer_id = get_post_meta($args['post']->ID, 'first_reviewer', true);
 if ($reviewer_id) {
 $receivers[] = ['user_id' => $reviewer_id];
 }
 return $receivers;
}, 10, 3);

Modify the notification subject programmatically

add_filter('publishpress_notif_run_workflow_subject', function($subject, $workflow, $args) {
 $priority = get_post_meta($args['post']->ID, 'priority', true);
 if ($priority === 'urgent') {
 return '[URGENT] '. $subject;
 }
 return $subject;
}, 10, 3);

Override default post types shown in Content Overview

add_filter('pp_content_overview_filter_values', function($values) {
 $values['post_type'] = ['post', 'page', 'news', 'review']; // include custom CPTs
 return $values;
});

Programmatically log an editorial action

do_action('pp_log_editorial_action', $post_id, 'manual_override', 'Editor approved skip-review workflow');

FAQ {#faq}

Is PublishPress Planner free?
Yes, the free version on WordPress.org includes Content Calendar, Content Board, Overview, basic notifications, editorial comments, custom statuses, and metadata. Pro adds the workflow engine, Slack, reminders, customization options, and premium support.

Can I use PublishPress with WooCommerce?
Yes. Add Product as a post type in Settings -> Content Calendar. WooCommerce orders also appear if you toggle order post types.

Does PublishPress work with Gutenberg / block editor?
Yes. All PublishPress features work in both Classic and Gutenberg. Editorial Comments and Editorial Metadata appear as Gutenberg sidebar panels.

Can PublishPress replace Asana / Trello for content teams?
For content workflow specifically, yes. PublishPress lives inside WordPress so writers don’t context-switch. For broader project management (non-content tasks), use a dedicated tool like Asana with PublishPress for content-specific stuff.

Does PublishPress slow down my admin?
Lightly. Calendar/Board/Overview render only when viewed, adding 100-300ms. The metaboxes on post edit screens add ~20ms. No front-end impact.

Can the team see only their own posts?
Yes. Enable Me Mode in any view. For permission-level filtering (e.g. Writer A can’t see Writer B’s drafts), pair with PublishPress Capabilities Pro.

Does it work on multisite?
Yes. License covers one network as one install. Notifications can be network-wide (Pro).

How do I export the calendar to Google Calendar / Outlook?
Settings -> Content Calendar -> Enable subscriptions. Copy the iCal URL. Paste into Google Calendar -> Add by URL.

Can writers create their own pitches?
Yes. Click on an empty calendar cell to create a new post. With custom statuses set, they can save as "Pitch" status.

Does it support multilingual sites?
Yes, WPML and Polylang are compatible. The calendar shows posts of all languages by default; you can filter.

Can I use PublishPress for non-blog content (videos, podcasts, products)?
Yes. Add any post type to the calendar via Settings. PublishPress is post-type-agnostic.

Will my data export if I uninstall?
Yes, PublishPress data is in standard WordPress tables (wp_pp_*). Use a database export tool to back up before uninstalling.

Can I have different calendars for different teams?
Not natively. You could use the Customize Filters feature to give each team a saved view. For truly separate calendars, run multiple WordPress subsites.

Does PublishPress integrate with Trello / Asana / Notion?
Not natively. You’d need Zapier or custom code via the notification hooks.

Is there a mobile app?
No. PublishPress is web-only. The admin works on mobile browsers but isn’t a native app. The iCal subscription URL is what most editors use on mobile (subscribe in their phone’s Calendar app).

Final thoughts {#final-thoughts}

PublishPress Planner Pro is the WordPress editorial workflow plugin. The combination of Calendar + Board + Overview views, custom statuses, notification workflows, editorial comments, and metadata is what turns WordPress from a one-person-publishes-when-they-want CMS into a real newsroom tool.

It’s not the right plugin if your "team" is just you and you publish on the spot. The free Editorial Calendar plugin is enough for that. It’s not the right plugin if you need integrated social media scheduling, that’s CoSchedule’s territory. And it’s not the right plugin if you’re more comfortable in Notion or Trello and don’t want to move editorial into WordPress.

But for a small-to-medium content team that already lives in WordPress and needs a real workflow, PublishPress is genuinely best-in-class. The free tier is more capable than most paid editorial plugins. The Pro tier adds the workflow engine and Slack/reminders that scale to real newsrooms.

Pair PublishPress Planner Pro with WP Mail SMTP for reliable email delivery (critical), Ultimate Member for guest writer profiles, and a security plugin like Solid Security Pro to protect the increased admin surface area of a multi-user newsroom.