Google Sheets and Slack workflows in n8n for marketers
Build n8n workflows with Google Sheets and Slack: append or update rows, alert channels, and approve actions inside Slack before they run.
Google Sheets and Slack are where most marketing teams already work, so they're the best place to start automating. Use Sheets as a simple input or log, Slack for alerts and approvals, and keep both safe to re-run.
- Use Append or Update Row with a key column so re-runs don't duplicate data.
- Aggregate before posting to Slack, or you'll send one message per item.
- Slack's Send and Wait for Response operation can pause a workflow for approval.
- Post approvals to private channels; the approver list controls who can click, not who can see.
Checked 4 November 2026 (CET) against n8n documentation and the n8n pricing page. n8n ships updates often and node options, plan limits and prices change, so confirm in your own instance and on the pricing page. "Our view" marks MentionX opinion. Ledgerline is a fictional company used for illustration.
01Why start with Sheets and Slack?
Because the risk is low and the payoff is visible. A workflow that tidies a sheet or posts a useful Slack message saves time from the first week, and the whole team can see it working. These two tools also make good scaffolding for later workflows: Sheets as a log of what happened, Slack as the place a human checks before anything goes out.
02How should you connect Google Sheets?
Create a Google credential in n8n following the n8n Google credentials docs. Use an account that owns or has access to the sheets you need. For team workflows, a shared service account or a team Google account is better than one person's login, so the workflow doesn't break when that person leaves.
Design your sheets for automation:
- One header row, with simple names such as
email,status,updated_at. - A key column that identifies each row, such as email or URL.
- A status column the workflow can update, such as
new,processed,error. - No merged cells or totals in the data range.
03How should you post to Slack?
The Slack node can send messages, update them, add reactions and more. For marketing alerts, a few rules make messages useful rather than noisy:
- One message per run, not per item. Aggregate first.
- Lead with the decision. "3 enterprise demo requests need a rep" beats a raw dump.
- Link to the source, such as the CRM record or the sheet row.
- Use threads for detail, keeping the channel scannable.
- Pick channels carefully. A noisy channel trains people to ignore it.
04Approvals: the most useful Slack pattern
Approvals let a human check AI output or a risky action before it happens. Typical marketing uses:
- Approve an AI-drafted social post before it's queued.
- Approve adding a list of event leads to a nurture sequence.
- Approve a budget-change recommendation before anyone edits Google Ads.
Our view: any workflow that sends something external or changes customer data should start with an approval step. Remove it later, once you have weeks of evidence that the output is reliable.
05Google Sheets operations at a glance
According to the n8n Google Sheets node docs, the node supports:
| Level | Operations |
|---|---|
| Document | Create, Delete a spreadsheet |
| Sheet within document | Append or Update Row, Append Row, Clear, Create, Delete, Delete Rows or Columns, Get Row(s), Update Row |
Append or Update Row is the one to remember. It adds a row, or updates the existing one if a matching key exists. That makes workflows safe to re-run: the same lead won't be added twice if you match on email.
06Slack approvals: how they work
The n8n docs on Slack approvals describe the Message > Send and Wait for Response operation with Response Type set to Approval. The workflow pauses until someone clicks Approve or Decline, then resumes.
Two ways to run it:
| Link buttons (default) | Approvals in Slack | |
|---|---|---|
| Where the decision happens | Opens an n8n page in the browser | One click inside Slack |
| Who can respond | Anyone with the link | Only the approvers you list |
| Output | approved and respondedAt | Also who responded, plus channel and message |
Approvals in Slack need your n8n instance reachable from Slack over public HTTPS, a Slack app with Interactivity turned on and the request URL pointing at your instance's /webhook-waiting-slack path, and the app's signing secret in the n8n Slack credential. Without the signing secret, the buttons render but clicks don't resume the workflow. Add the users:read and users:read.email scopes if you want the responder's email in the output.
One warning from the docs: the approver list controls who can respond, not who can see the request. Post sensitive approvals to a private channel or a direct message.
07Sheets patterns that avoid trouble
| Problem | Pattern |
|---|---|
| Duplicate rows on reruns | Append or Update Row, matched on a unique column such as email or ID |
| Columns renamed by colleagues | Protect header rows; map by column name, not position |
| Large sheets slow down | Archive old rows monthly, or move state to a data table |
| Several workflows write at once | Give each workflow its own tab |
| Formulas break | Write raw values to one tab; calculate in another |
08Slack patterns that people don't mute
- Post to the right channel. One channel per audience, not one for everything.
- Lead with the action. "3 leads need routing" beats "Workflow completed".
- Link, don't paste. A short message and a link to the sheet or record.
- Thread follow-ups. Reply in a thread to keep channels readable.
- Quiet hours. Schedule non-urgent digests for working hours in your timezone.
Slack approvals (Send and Wait for Response) need Slack's Interactivity set up with n8n's waiting webhook URL, as lesson 5 explained. Test approve and decline paths before relying on them.
09Worked example: Ledgerline's event lead approval
Ledgerline is a fictional accounts-payable software company. Details are illustrative.
After a trade show, Ledgerline's events manager pasted 140 badge scans into a sheet. Previously, all of them went straight into a nurture sequence, including competitors and students.
The team built the approval workflow above, but batched it: one Slack approval per 20 leads, with names and companies listed in the message. The events manager approved or declined each batch in a private channel. Declined batches were reviewed row by row in the sheet.
The approval output recorded who approved each batch, which helped when a sales rep later asked why a contact had been added.
Walkthrough
- Create a sheet called "Event leads" with columns: email, name, company, event, status, approved_by.
- Workflow trigger: Google Sheets Trigger on row added (or a Schedule Trigger plus Get Row(s) filtered on status = new).
- Slack node: Send and Wait for Response, Approval type, to a private channel. Message: "Add {{ $json.name }} ({{ $json.company }}) to the nurture list?"
- IF node on
approved. - True branch: Google Sheets Update Row (match on email) setting status to
approvedand approved_by to the responder's name. Then add to the nurture list in your email tool. - False branch: Update Row with status
declined. - Test with two fake rows, approve one and decline one.
10Try it yourself
Build a "weekly wins" workflow: every Friday at 15:00, read a Google Sheet where the team logs wins, aggregate this week's rows, and post one Slack message. Then add an approval step so the marketing lead approves the message before it goes to the company-wide channel.
11Quick quiz
1. Which Sheets operation prevents duplicate rows when re-running?
Answer: Append or Update Row, matched on a key column.
2. What must be in the Slack credential for in-Slack approvals to work?
Answer: The Slack app's signing secret, in the Signature Secret field.
3. Does the approver list hide the message from others?
Answer: No. It controls who can respond, not who can see. Use a private channel or DM.
12What should you check before the next lesson?
- Your sheets have a key and a status column.
- Slack messages are aggregated.
- An approval step protects anything external.
Next: CRM workflows with HubSpot. Or return to the n8n for Marketers track.
13Common questions
Can n8n read a sheet shared with me but owned by someone else? Yes, if the Google credential's account has access to that sheet.
Does Slack approval work on a local n8n? Not in-Slack approvals; Slack needs to reach your instance over public HTTPS.
Is Google Sheets a good database? For small volumes. For dedupe markers and state, n8n data tables are often better (lesson 13).
Questions people ask
3 answersCan n8n read a sheet shared with me but owned by someone else?
+
Yes, if the Google credential's account has access to that sheet.
Does Slack approval work on a local n8n?
+
Not in-Slack approvals; Slack needs to reach your instance over public HTTPS.
Is Google Sheets a good database?
+
For small volumes. For dedupe markers and state, n8n data tables are often better (lesson 13).
Sources
- n8n Docs, Google Sheets nodedocs.n8n.io
- n8n Docs, Slack approvalsdocs.n8n.io
- n8n Docs, Slack nodedocs.n8n.io
- n8n Docs, Work with nodesdocs.n8n.io
- All accessed 4 Nov 2026.