{"id":337788,"date":"2026-07-24T17:01:17","date_gmt":"2026-07-24T17:01:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/remindpress\/"},"modified":"2026-07-25T08:32:56","modified_gmt":"2026-07-25T08:32:56","slug":"notifycrew","status":"publish","type":"plugin","link":"https:\/\/co.wordpress.org\/plugins\/notifycrew\/","author":13893458,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.0.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"NotifyCrew - Team reminders for Slack","header_author":"Aditya","header_description":"Schedule and deliver team reminders to Slack with automatic retry, Google-authenticated frontend portal, and team management.","assets_banners_color":"425178","last_updated":"2026-07-25 08:32:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/ethicaladitya\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":64,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"ethicaladitya","date":"2026-07-25 07:26:39"},"1.1.0":{"tag":"1.1.0","author":"ethicaladitya","date":"2026-07-25 08:32:56"}},"upgrade_notice":{"1.1.0":"<p>Adds recurring reminders. Existing one-time reminders are unaffected.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3621729,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3622164,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3622164,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3622170,"resolution":"1","location":"assets","locale":"","width":1280,"height":548},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3622170,"resolution":"2","location":"assets","locale":"","width":1280,"height":565},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3622170,"resolution":"3","location":"assets","locale":"","width":1280,"height":420},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3622170,"resolution":"4","location":"assets","locale":"","width":1280,"height":453}},"screenshots":{"1":"Before NotifyCrew: reminders scattered across DMs, channels, and forgotten spreadsheets. After: every reminder lives in one place, sorted by team and status, with delivery history at a glance.","2":"Creating a reminder takes seconds. Pick a team, write what needs to happen, and choose a preset like \"In 4 hours\" \u2014 no date picker required.","3":"Every team gets its own Slack channel and mention rules. Engineering posts to #eng-standup with @channel. Design posts to #design. No crossover, no noise.","4":"Slack credentials encrypted with libsodium. Google OAuth for the optional team portal. Every setting in one screen."}},"plugin_section":[],"plugin_tags":[4906,11131,4685,3565,32608],"plugin_category":[58],"plugin_contributors":[265162],"plugin_business_model":[],"class_list":["post-337788","plugin","type-plugin","status-publish","hentry","plugin_tags-notifications","plugin_tags-reminders","plugin_tags-scheduler","plugin_tags-slack","plugin_tags-slack-integration","plugin_category-user-management","plugin_contributors-ethicaladitya","plugin_committers-ethicaladitya"],"banners":{"banner":"https:\/\/ps.w.org\/notifycrew\/assets\/banner-772x250.png?rev=3622164","banner_2x":"https:\/\/ps.w.org\/notifycrew\/assets\/banner-1544x500.png?rev=3622164","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/notifycrew\/assets\/icon-256x256.png?rev=3621729","icon_2x":"https:\/\/ps.w.org\/notifycrew\/assets\/icon-256x256.png?rev=3621729","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/notifycrew\/assets\/screenshot-1.png?rev=3622170","caption":"Before NotifyCrew: reminders scattered across DMs, channels, and forgotten spreadsheets. After: every reminder lives in one place, sorted by team and status, with delivery history at a glance."},{"src":"https:\/\/ps.w.org\/notifycrew\/assets\/screenshot-2.png?rev=3622170","caption":"Creating a reminder takes seconds. Pick a team, write what needs to happen, and choose a preset like \"In 4 hours\" \u2014 no date picker required."},{"src":"https:\/\/ps.w.org\/notifycrew\/assets\/screenshot-3.png?rev=3622170","caption":"Every team gets its own Slack channel and mention rules. Engineering posts to #eng-standup with @channel. Design posts to #design. No crossover, no noise."},{"src":"https:\/\/ps.w.org\/notifycrew\/assets\/screenshot-4.png?rev=3622170","caption":"Slack credentials encrypted with libsodium. Google OAuth for the optional team portal. Every setting in one screen."}],"raw_content":"<!--section=description-->\n<p>Your team already lives in Slack. Your deadlines live somewhere else: a spreadsheet, a calendar nobody opens, or someone's memory.<\/p>\n\n<p>NotifyCrew closes that gap. Schedule a reminder in WordPress, pick the team it belongs to, and NotifyCrew posts it to that team's Slack channel at the right moment. No Zapier account, no monthly per-seat fee, no third-party service holding your data. Your WordPress site talks to Slack directly.<\/p>\n\n<h4>Why teams choose NotifyCrew<\/h4>\n\n<ul>\n<li><strong>No per-seat pricing.<\/strong> It is a WordPress plugin. Add as many teams and members as you want.<\/li>\n<li><strong>No middleman service.<\/strong> Reminders go straight from your site to Slack. Nothing is routed through anyone else's server.<\/li>\n<li><strong>Your Slack credentials stay encrypted.<\/strong> Webhook URLs and bot tokens are encrypted at rest with libsodium, not stored as plain text in the options table.<\/li>\n<li><strong>Delivery you can trust.<\/strong> If Slack is down or your token expires, NotifyCrew retries automatically and tells you when something is wrong instead of failing silently.<\/li>\n<li><strong>Your team does not need WordPress accounts.<\/strong> Members can be added by email address alone and still manage their own reminders through the optional portal.<\/li>\n<\/ul>\n\n<h4>What you can do<\/h4>\n\n<ul>\n<li><strong>Send reminders to Slack on a schedule.<\/strong> Pick a date and time, or use a one-click preset like \"In 4 hours\" or \"In 48 hours\".<\/li>\n<li><strong>Give every team its own channel.<\/strong> The design team posts to <code>#design<\/code>, engineering posts to <code>#eng-standup<\/code>. A global fallback channel covers teams without one.<\/li>\n<li><strong>Ping the right people.<\/strong> Add <code>@channel<\/code> or <code>@here<\/code> per team so urgent reminders actually get seen.<\/li>\n<li><strong>Recover from failures automatically.<\/strong> Failed deliveries retry with exponential backoff, and you get an email plus an admin notice when a reminder keeps failing.<\/li>\n<li><strong>Send rich, readable messages.<\/strong> Reminders arrive as Slack Block Kit messages with a header, the scheduled time, a task or ticket link, who submitted it, and any notes.<\/li>\n<li><strong>Let your team file their own reminders.<\/strong> Drop a shortcode on any page for a Google-authenticated portal, restricted to the email domains you allow.<\/li>\n<li><strong>Set it and forget it.<\/strong> Make any reminder repeat daily, weekly, or monthly. NotifyCrew auto-creates the next occurrence so standups, deadlines, and check-ins keep running.<\/li>\n<li><strong>Keep a full audit trail.<\/strong> Every reminder event is logged with a timestamp, so you can always answer \"was this actually sent?\"<\/li>\n<li><strong>Uninstall cleanly, or not at all.<\/strong> Your data is never deleted unless you explicitly opt in under Settings.<\/li>\n<\/ul>\n\n<h4>Common uses<\/h4>\n\n<ul>\n<li>Daily stand-up and scrum reminders for engineering teams<\/li>\n<li>Deploy windows, release freezes, and on-call handoffs<\/li>\n<li>Invoice, payroll, and compliance deadlines<\/li>\n<li>Content and social publishing schedules<\/li>\n<li>Client check-ins and recurring agency deliverables<\/li>\n<li>Nudges for anything your team keeps forgetting<\/li>\n<\/ul>\n\n<h4>Let your team schedule their own reminders<\/h4>\n\n<p>Most reminder plugins stop at the WordPress admin, which means everything routes through whoever has an admin login.<\/p>\n\n<p>NotifyCrew ships an optional frontend portal instead. Add <code>[ncrw_frontend_reminder_form]<\/code> to any page and your team signs in with Google, sees only the teams they belong to, and creates or edits their own reminders. No WordPress account required. Restrict access to your company's email domains so nothing else gets through.<\/p>\n\n<p>Prefer read-only? <code>[ncrw_upcoming_reminders]<\/code> shows what is coming up, with filters and sorting, and nothing editable.<\/p>\n\n<p>Building your own frontend? NotifyCrew exposes REST endpoints under <code>ncrw\/v1<\/code> so you can run the portal on any stack and keep WordPress as the backend. See the FAQ.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 5.8 or higher<\/li>\n<li>PHP 7.4 or higher, with the sodium extension (bundled with PHP 7.2 and later)<\/li>\n<li>A Slack workspace, plus either an Incoming Webhook URL or a Bot Token with the <code>chat:write<\/code> scope<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the following third-party services:<\/p>\n\n<p><strong>Slack API (chat.postMessage)<\/strong><\/p>\n\n<p>This service delivers team reminders to Slack channels. It is activated every time a scheduled reminder is due or manually retried.<\/p>\n\n<p>Data sent: team name, reminder title, task\/ticket link, submitter email address, reminder notes, and timestamp.\nThis service is provided by Slack Technologies: <a href=\"https:\/\/slack.com\/terms-of-service\">terms of service<\/a>, <a href=\"https:\/\/slack.com\/trust\/privacy\/privacy-policy\">privacy policy<\/a>.<\/p>\n\n<p><strong>Google OAuth \/ Sign-In<\/strong><\/p>\n\n<p>This service authenticates users on the optional frontend reminder portal and view-only portal. It is activated when a user loads a portal page or submits a reminder form.<\/p>\n\n<p>Data sent: Google ID token (for identity verification only).\nThis service is provided by Google LLC: <a href=\"https:\/\/policies.google.com\/terms\">terms of service<\/a>, <a href=\"https:\/\/policies.google.com\/privacy\">privacy policy<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin. A <strong>Reminders<\/strong> menu appears in your admin sidebar.<\/li>\n<li>Go to <strong>Reminders &gt; Settings<\/strong>, choose Incoming Webhook or Bot Token, and paste your Slack credentials. They are encrypted before they are saved.<\/li>\n<li>Go to <strong>Reminders &gt; Teams<\/strong> and create a team. Add members by picking WordPress users or by typing email addresses.<\/li>\n<li>Optionally give the team its own Slack channel, a mention tag, and quick-schedule presets.<\/li>\n<li>Go to <strong>Reminders &gt; Add Reminder<\/strong> and schedule your first one.<\/li>\n<\/ol>\n\n<h4>Setting up the team portal (optional)<\/h4>\n\n<ol>\n<li>In <strong>Reminders &gt; Settings<\/strong>, enable <strong>Frontend Reminder Intake<\/strong>.<\/li>\n<li>Add your <strong>Google OAuth Client ID<\/strong>, created at <a href=\"https:\/\/console.cloud.google.com\/apis\/credentials\">Google Cloud Console<\/a>.<\/li>\n<li>Set <strong>Allowed Email Domains<\/strong>, for example <code>yourcompany.com<\/code>.<\/li>\n<li>Add <code>[ncrw_frontend_reminder_form]<\/code> to a page. For a read-only view, use <code>[ncrw_upcoming_reminders]<\/code> instead.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20notifycrew%20free%3F\"><h3>Is NotifyCrew free?<\/h3><\/dt>\n<dd><p>Yes. It is fully functional, GPL licensed, with no paid tier, no locked features, and no upsells.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20paid%20slack%20plan%3F\"><h3>Do I need a paid Slack plan?<\/h3><\/dt>\n<dd><p>No. Incoming Webhooks and Bot Tokens both work on Slack's free plan.<\/p><\/dd>\n<dt id=\"do%20my%20team%20members%20need%20wordpress%20accounts%3F\"><h3>Do my team members need WordPress accounts?<\/h3><\/dt>\n<dd><p>No. Members can be added by email address alone. If you enable the frontend portal, they sign in with Google and manage their own reminders without ever touching wp-admin.<\/p><\/dd>\n<dt id=\"can%20reminders%20repeat%20automatically%3F\"><h3>Can reminders repeat automatically?<\/h3><\/dt>\n<dd><p>Yes. Set any reminder to repeat daily, weekly, monthly, or on a custom interval. Choose how long to repeat \u2014 forever, after a set number of times, or until a specific date. When a recurring reminder fires, NotifyCrew auto-creates the next occurrence so you never have to set it up again.<\/p><\/dd>\n<dt id=\"how%20does%20the%20retry%20logic%20work%3F\"><h3>How does the retry logic work?<\/h3><\/dt>\n<dd><p>If a Slack delivery fails, NotifyCrew reschedules it with exponential backoff: 2 minutes after the first failure, then 4, then 8, then 16. After the fifth attempt it stops retrying and marks the reminder Completed so it cannot loop forever. You can also trigger a manual retry from the Reminders list at any time.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20deliveries%20keep%20failing%3F\"><h3>What happens when deliveries keep failing?<\/h3><\/dt>\n<dd><p>From the second failure onward, the site admin gets an email with the reminder title, the error Slack returned, and links back to the Reminders and Settings pages. A warning notice also appears in the admin area while failures are recent, and the latest error is shown inline next to the reminder's attempt count.<\/p><\/dd>\n<dt id=\"my%20reminders%20are%20not%20sending%20on%20time.%20what%20should%20i%20check%3F\"><h3>My reminders are not sending on time. What should I check?<\/h3><\/dt>\n<dd><p>NotifyCrew runs on WP-Cron, which only fires when someone visits your site. On low-traffic sites, reminders can be late. Disable WP-Cron and use a real server cron job hitting <code>wp-cron.php<\/code> every five minutes for reliable delivery. Also confirm your Slack credentials are still valid under <strong>Reminders &gt; Settings<\/strong>.<\/p><\/dd>\n<dt id=\"which%20slack%20authentication%20mode%20should%20i%20use%3F\"><h3>Which Slack authentication mode should I use?<\/h3><\/dt>\n<dd><p>Use an <strong>Incoming Webhook<\/strong> for the fastest setup when all reminders go to one channel. Use a <strong>Bot Token<\/strong> with the <code>chat:write<\/code> scope if you want per-team channels. You can switch modes at any time.<\/p><\/dd>\n<dt id=\"is%20my%20data%20deleted%20when%20i%20deactivate%20the%20plugin%3F\"><h3>Is my data deleted when I deactivate the plugin?<\/h3><\/dt>\n<dd><p>No. Deactivation only clears the cron schedule. Your reminders, teams, logs, and settings are preserved. Data is removed only when you delete the plugin, and only if you enabled <strong>Data Cleanup<\/strong> in Settings first.<\/p><\/dd>\n<dt id=\"what%20does%20the%20plugin%20store%20in%20my%20database%3F\"><h3>What does the plugin store in my database?<\/h3><\/dt>\n<dd><p>Four tables prefixed <code>ncrw_<\/code>: teams, team memberships, reminders, and an audit log of reminder events.<\/p><\/dd>\n<dt id=\"can%20i%20build%20my%20own%20frontend%3F\"><h3>Can I build my own frontend?<\/h3><\/dt>\n<dd><p>Yes. The <code>ncrw\/v1\/portal\/bootstrap<\/code> and <code>ncrw\/v1\/portal\/reminder<\/code> endpoints accept an API key in the <code>X-NCRW-API-Key<\/code> header along with a Google ID token, so you can run a decoupled frontend on any stack. Additional endpoints under <code>ncrw\/v1<\/code> cover listing reminders, triggering processing, and queuing retries for logged-in users.<\/p><\/dd>\n<dt id=\"is%20notifycrew%20translation%20ready%3F\"><h3>Is NotifyCrew translation ready?<\/h3><\/dt>\n<dd><p>Yes. Every user-facing string uses WordPress i18n functions with the <code>notifycrew<\/code> text domain, and a <code>.pot<\/code> file is included.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: Recurring reminders \u2014 daily, weekly, monthly, and custom intervals<\/li>\n<li>New: End conditions \u2014 stop after N occurrences or on a specific date<\/li>\n<li>Improved: Auto-reschedule creates the next occurrence when a recurring reminder fires<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release of NotifyCrew.<\/li>\n<\/ul>","raw_excerpt":"Schedule team reminders in WordPress and send them to Slack automatically, with per-team channels, automatic retry, and an optional team portal.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/337788","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=337788"}],"author":[{"embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ethicaladitya"}],"wp:attachment":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=337788"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=337788"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=337788"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=337788"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=337788"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=337788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}