🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Gmail + Google Sheets: approve LinkedIn posts by reply

Lisa Granqvist Partner Workflow Automation Expert

Your LinkedIn posting process probably isn’t “hard.” It’s just messy. Ideas live in notes, drafts live in docs, approvals happen in DMs, and somehow you still end up rewriting the same post three times.

This Gmail approvals setup hits marketing managers first, honestly, but founders and agency leads feel it too. You get a clean approval loop by email, plus a Google Sheets log that tracks ideas, drafts, and what actually got posted.

Below, you’ll see how the workflow runs end-to-end, what it automates, and what the “reply with a number” approval experience looks like in real life.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Gmail + Google Sheets: approve LinkedIn posts by reply

The Problem: LinkedIn approvals are scattered and slow

Most LinkedIn workflows break in the same place: approval. Someone writes a draft, someone else “sort of” approves it in a chat, and then the final version gets tweaked again right before posting. Now you’ve got no single source of truth, no record of why a post changed, and no reliable cadence. And if you’re managing multiple stakeholders or clients, it gets worse. The mental load is sneaky. You spend your best focus time chasing a simple “yes,” instead of writing better hooks and sharper positioning.

It adds up fast. Here’s where it usually breaks down.

  • You lose about 20 minutes per post just hunting for the latest version.
  • Approvals come back as vague feedback, so the draft turns into endless rewrites.
  • There’s no consistent log of ideas → drafts → posted, which makes “posting consistently” feel like starting over every week.
  • If you miss a window, the post sits in limbo because nobody knows what’s next.

The Solution: Approve posts by replying to Gmail (Sheets tracks everything)

This workflow turns your inbox into a lightweight approval console. You start it in n8n, it generates 10 LinkedIn post ideas tailored to your niche using an AI agent (powered by a Gemini chat model), then logs those ideas into Google Sheets. Next, it emails you the options. You reply with a number to approve your favorite idea. The same loop happens again for drafting: the workflow generates 3 full drafts for the chosen idea, updates the same sheet row, and emails the draft options back to you. Reply with the number you want, and n8n publishes the selected draft to LinkedIn, marks the post as “posted” in Google Sheets, and sends a confirmation email with a preview.

The workflow starts with an internal trigger, then uses AI to create and format ideas and drafts. Gmail replies act as approvals, and Google Sheets becomes the timeline you can trust. Finally, the LinkedIn API publishes the post and closes the loop with a confirmation email.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you publish 4 LinkedIn posts a week. Manually, a typical cycle looks like 30 minutes to brainstorm, about 45 minutes to draft, then another 20 minutes chasing approval and updating “where it’s at” in a sheet or doc. That’s roughly 6 hours a week. With this workflow, you spend maybe 10 minutes giving the AI good context and replying to two emails (one for the idea, one for the draft). The rest runs in the background, and the sheet stays updated automatically.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Gmail to send approvals and capture replies.
  • Google Sheets to track ideas, drafts, and posted status.
  • Google Gemini (API access) (get it from Google AI Studio/Cloud console).
  • LinkedIn API access (enable posting for your account/app).

Skill level: Intermediate. You’ll connect accounts, set permissions, and adjust a few prompts and sheet columns.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

You kick it off with a manual launch (or schedule it). The workflow starts from a manual trigger in n8n, and you can also run it on a schedule if you want a weekly idea batch.

AI generates ideas, then the workflow logs them. An AI agent uses your niche and audience inputs to produce 10 ideas, a short script parses the output, and Google Sheets appends a new row so everything is tied together.

Gmail becomes the approval step. n8n sends you an “ideas” email and waits for a reply. When you respond with a number, the workflow extracts the number, fetches the correct sheet row, and routes to the right stage using a switch (ideas vs drafts).

The chosen draft gets published and tracked. After you pick a draft via email reply, n8n publishes it through the LinkedIn node, marks the same row as posted in Google Sheets, and emails you a confirmation so you’re not guessing.

You can easily modify the prompt and the Google Sheets columns to match your brand voice and reporting needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

This workflow starts with a manual run so you can generate LinkedIn ideas on demand.

  1. Add and open Manual Launch Trigger to keep the start point as a manual execution.
  2. Connect Manual Launch Trigger to Assign Input Fields to follow the execution flow "Manual Launch Trigger" → "Assign Input Fields".

Step 2: Connect Google Sheets

These nodes store ideas, drafts, and posting status in your spreadsheet.

  1. Open Append Ideas Row and set the document to [YOUR_ID] and sheet to Sheet1 (gid=0).
  2. Ensure the column mappings in Append Ideas Row include stage set to "ideas" and correlationId set to {{ $json.correlationId }}.
  3. In Retrieve Sheet Row, set the filter correlationId to {{ $json.correlationId }} to fetch the correct row.
  4. In Update Drafts Row, set stage to "drafts" and map drafts to {{ $json.drafts }} and selectedTopic to {{ $json.selectedTopic }}.
  5. In Mark Posted Row, map linkedinUrn to {{ $json.urn }} and correlationId to {{ $('Retrieve Sheet Row').item.json['correlationId '] }}.
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials in Append Ideas Row, Retrieve Sheet Row, Update Drafts Row, and Mark Posted Row.
⚠️ Common Pitfall: The column name is correlationId with a trailing space in the sheet and expressions. Keep it exactly as shown to avoid mismatches.

Step 3: Set Up the AI Idea and Draft Generation

Two AI agents create ideas and drafts, each backed by a Gemini chat engine.

  1. In Assign Input Fields, set niche to startup founders in SaaS and audience to growth-focused professionals.
  2. Open Idea Strategy Agent and keep the prompt with expressions {{$json.niche}} and {{$json.audience}}.
  3. Open Draft Generation Agent and keep the prompt fields for {{$json.selectedTopic}}, {{$json.audience}}, and {{$json.niche}}.
  4. Confirm Gemini Chat Engine is connected as the language model for Idea Strategy Agent.
  5. Confirm Gemini Chat Engine 2 is connected as the language model for Draft Generation Agent.
  6. Credential Required: Connect your googlePalmApi credentials in Gemini Chat Engine and Gemini Chat Engine 2 (credentials are added to these parent model nodes, not the agent nodes).
The code nodes (Parse Ideas Script, Extract Reply Number, Match Chosen Idea, Format Drafts Script, Select Final Draft) already handle JSON parsing and formatting—no credentials required.

Step 4: Configure Email Delivery and Reply Intake

The workflow emails ideas and drafts, then reads reply emails to select the next step.

  1. In Email Ideas Notice, set sendTo to [YOUR_EMAIL], message to {{ $('Parse Ideas Script').item.json.emailBody }}, and subject to Your 10 LinkedIn Ideas [CID: {{ $json['correlationId '] }}].
  2. In Email Draft Options, set sendTo to [YOUR_EMAIL], message to {{ $('Format Drafts Script').item.json.emailBody }}, and subject to Drafts for "{{$json.selectedTopic}}" [CID: {{ $json['correlationId '] }}].
  3. In Inbox Reply Trigger, keep the filter query to:me subject:"[CID:" is:inbox -category:promotions and set sender to [YOUR_EMAIL].
  4. Credential Required: Connect your gmailOAuth2 credentials in Email Ideas Notice, Inbox Reply Trigger, Email Draft Options, and Send Posting Confirmation.
⚠️ Common Pitfall: Replies must include a number and the [CID: ...] subject tag; otherwise Extract Reply Number returns kind: 'unknown' and downstream steps won’t run.

Step 5: Configure Routing, Publishing, and Status Updates

Replies are routed to draft creation or publishing, and LinkedIn posting updates the sheet and sends confirmation.

  1. In Stage Routing, keep the rules that check stage using expressions like {{ $json.stage }} for "ideas" and "drafts".
  2. Ensure the flow follows "Stage Routing" → "Match Chosen Idea" for ideas and "Stage Routing" → "Select Final Draft" for drafts.
  3. In Publish LinkedIn Post, set text to {{ $json.finalPost }}, postAs to organization, and organization to [YOUR_ID].
  4. Credential Required: Connect your linkedInCommunityManagementOAuth2Api credentials in Publish LinkedIn Post.
  5. In Send Posting Confirmation, verify the subject Posted ✅ “{{ $('Select Final Draft').item.json.selectedTopic }}” [CID: {{ $json['correlationId '] }}] and message preview expression {{($('Select Final Draft').item.json.finalPost).slice(0, 200) }}.
Execution order follows the critical path: Inbox Reply TriggerExtract Reply NumberRetrieve Sheet RowStage Routing → draft or publish path.

Step 6: Test and Activate Your Workflow

Run the workflow end-to-end to confirm ideas, drafts, and publishing work as expected.

  1. Click Execute Workflow on Manual Launch Trigger to generate ideas and verify Email Ideas Notice is sent.
  2. Reply to the ideas email with a number (1–10) and confirm Inbox Reply Trigger fires, Update Drafts Row updates the sheet, and Email Draft Options is sent.
  3. Reply again with a draft number (1–3) and verify Publish LinkedIn Post posts successfully, Mark Posted Row updates the sheet, and Send Posting Confirmation arrives.
  4. When the full flow succeeds, toggle the workflow to Active to use it in production.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Gmail credentials can expire or need specific permissions. If things break, check the connected Gmail account in n8n’s Credentials and confirm the right inbox is authorized first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this Gmail approvals automation?

About 45 minutes if your Gmail, Sheets, and LinkedIn access are ready.

Do I need coding skills to automate Gmail approvals?

No. You will connect accounts and adjust a few fields and prompts.

Is n8n free to use for this Gmail approvals workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Gemini/OpenAI-style API costs, which are usually a few cents per run depending on prompt size.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this Gmail approvals workflow for multiple LinkedIn accounts?

Yes, but you’ll want to separate tracking by account in Google Sheets first. Most people add an “Account” column, then duplicate the LinkedIn publish node for each destination (or route through a Switch based on the sheet value). You can also tweak the “ideas” and “drafts” email templates so the approver knows which brand they’re approving. If you’re managing clients, adding a client name to the email subject line saves headaches later.

Why is my Gmail connection failing in this workflow?

Usually it’s expired OAuth permission or the wrong Google account connected in n8n. Reconnect the Gmail credential, then confirm the workflow is watching the inbox you actually reply from (the Gmail Trigger is picky). If replies aren’t being detected, check threading: reply to the same email thread the workflow sent, not a forwarded copy. Rate limits can also show up if you blast lots of approval emails at once.

How many posts can this Gmail approvals automation handle?

Plenty for a typical small team: think dozens of posts a week without stress. On n8n Cloud, your limit is mostly about monthly executions (Starter handles a few thousand), while self-hosting depends on your server. Each post run uses multiple steps (ideas, drafts, publish), so plan for more than “one execution per post.”

Is this Gmail approvals automation better than using Zapier or Make?

Often, yes. This workflow relies on branching logic (ideas stage vs drafts stage), message parsing, and state tracking in Google Sheets, which is easier to control in n8n without turning it into a spaghetti scenario. Self-hosting is also a big deal if you don’t want your costs to climb as volume grows. Zapier and Make can work, but you may hit limits once you add the “wait for reply, extract a number, route based on stage” behavior. If you’re torn, Talk to an automation expert and you’ll get an honest recommendation.

Once this is running, approvals stop being a bottleneck and start being a quick reply. The workflow handles the repetitive stuff, and your Google Sheet finally tells the truth.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal