## Introduction
In a fast-paced marketing department, ensuring content is thoroughly reviewed before launch is critical to avoid errors, misalignment, or missed deadlines. Manual follow-ups for content reviews often cause delays and last-minute scrambles, negatively impacting campaign effectiveness. This article provides a detailed, technical walkthrough on building an automation workflow using n8n — an open-source workflow automation tool — to send scheduled reminder notifications about upcoming content reviews. This workflow benefits marketing managers, content creators, reviewers, and operations specialists by standardizing and streamlining the review cycle.
## Why Automate Content Review Reminders?
– **Problem:** Manual coordination of content review deadlines leads to inconsistent follow-ups and overlooked reviews.
– **Who benefits:** Marketing teams, content creators, project managers, and reviewers get timely nudges, reducing errors and enabling on-time launches.
## Tools and Services Integrated
– **n8n:** Automation platform to orchestrate the workflow.
– **Google Sheets:** Central repository storing content pieces, review deadlines, and reviewer data.
– **Slack:** Communication channel where reminders are sent to reviewers.
– **Gmail (Optional):** Email reminders for additional reach.
## Workflow Overview: From Trigger to Reminder
1. Scheduled Trigger runs the workflow daily to check for upcoming review deadlines.
2. Google Sheets node retrieves the content review schedule.
3. Function node filters content pieces with review due dates approaching (e.g., 2 days ahead).
4. Loop (SplitInBatches) node processes each content item individually.
5. Slack node sends reminders to the assigned reviewers.
6. (Optional) Gmail node sends email reminders.
## Step-by-Step Technical Tutorial
### Prerequisites
– An n8n instance (self-hosted or cloud).
– Google account with a Sheet containing the review schedule.
– Slack workspace with API token and channels/users for messaging.
– (Optional) Gmail account connected in n8n.
### Step 1: Set Up Google Sheet Structure
Create a Google Sheet named “Content Review Schedule” with columns:
– `ContentTitle`: The content piece title.
– `Reviewer`: Email or Slack username of the reviewer.
– `ReviewDeadline`: Date the content review is due (YYYY-MM-DD format).
– `Status`: e.g., “Pending”, “Reviewed”.
Populate with some example data to test.
### Step 2: Create Scheduled Trigger in n8n
– Add a **Cron node** configured to run daily at 9 AM.
– This starts the workflow by querying for content needing review reminders.
### Step 3: Google Sheets Node to Read Data
– Add a **Google Sheets node** configured with OAuth credentials.
– Set it to read rows from the “Content Review Schedule” sheet.
– Output all rows to process.
### Step 4: Filter Content with Upcoming Deadlines
Add a **Function node** after Google Sheets to filter content requiring a reminder:
“`javascript
const today = new Date();
const upcomingReviewDate = new Date(today);
upcomingReviewDate.setDate(today.getDate() + 2); // 2 days ahead
return items.filter(item => {
const reviewDate = new Date(item.json.ReviewDeadline);
const status = item.json.Status.toLowerCase();
// Include only if review is due in 2 days and status is pending
return reviewDate.toDateString() === upcomingReviewDate.toDateString() && status === ‘pending’;
});
“`
### Step 5: Process Each Content Item Individually
– Add a **SplitInBatches node** to process one content item at a time.
– This prevents rate limits from Slack or Gmail.
### Step 6: Send Slack Reminder
– Add a **Slack node** configured with your Slack API credentials.
– Use the “Post message” operation.
– Map the message to include content title and deadline, for example:
“`
Reminder: The content “{{$json.ContentTitle}}” is scheduled for review by {{$json.ReviewDeadline}}. Please complete your review promptly.
“`
– Set the channel or user to `{{$json.Reviewer}}` (assuming Slack user ID or valid username).
### Step 7 (Optional): Send Email Reminder via Gmail
– Insert a **Gmail node** after Slack.
– Configure with OAuth credentials.
– Compose email subject and body with content details.
– Set recipient to `{{$json.Reviewer}}`.
### Step 8: End Workflow and Test
– Connect all nodes sequentially.
– Run the workflow manually to verify it pulls correct entries and sends reminders.
– Ensure Slack messages or emails arrive as expected.
## Common Errors and How to Fix Them
– **Authentication errors:** Ensure OAuth tokens for Google Sheets, Slack, and Gmail are valid and have appropriate scopes.
– **Date format mismatches:** Confirm `ReviewDeadline` is stored consistently as ‘YYYY-MM-DD’ in Google Sheets.
– **Slack user/channel not found:** Use Slack user IDs or test with static known channels first.
– **Rate limiting:** Use SplitInBatches to process reminders in small batches to avoid API limits.
– **Empty results:** Confirm your filter logic matches dates correctly; use console logs in Function node for debugging.
## Making the Workflow More Robust and Scalable
– **Multiple reminders:** Add conditions to send reminders 7 days, 2 days, and 1 day before deadlines.
– **Handle status changes:** Add a trigger for Google Sheets changes to immediately notify on status updates.
– **Dynamic reviewers:** Integrate with your CRM or team directory to update reviewer info automatically.
– **Use databases:** For larger teams, consider replacing Google Sheets with a database like Airtable or PostgreSQL.
– **Error handling:** Use n8n’s error workflow capabilities to alert admins if a node fails.
## Summary
This detailed automation reduces the manual overhead of tracking content reviews, ensuring marketing teams stay apprised of impending deadlines through timely Slack and email reminders. Using n8n integrates seamlessly with Google Sheets for data management and Slack for communication. Adapting and scaling this workflow is straightforward by extending reminder timeframes or connecting additional systems.
## Bonus Tip
To improve adoption, create a Slack slash command that allows reviewers to mark content reviews as “Completed” directly in Slack, updating the status column in Google Sheets via n8n. This creates a two-way interactive workflow and further streamlines your content launch pipeline.