How to Set Up Feature Request Form → CRM Note + PM Slack + Sheets Log in n8n

A feature request lands in your inbox — or worse, in a Slack DM to your CTO, a reply to a marketing email, and a support ticket, all at once. Nobody logs it against the account. Product never sees it.

How to Set Up Feature Request Form → CRM Note + PM Slack + Sheets Log in n8n

A feature request lands in your inbox — or worse, in a Slack DM to your CTO, a reply to a marketing email, and a support ticket, all at once. Nobody logs it against the account. Product never sees it. Three weeks later the customer churns and someone asks "did we know they wanted this?" You did. You just had no system to catch it. This workflow fixes that: one Typeform, and every feature request auto-attaches to the CRM record, pings the product channel, archives to a spreadsheet, and confirms back to the customer — before you've read it.

The problem: feature requests die in the gap between tools

Feature requests are the highest-signal, worst-captured data in most SaaS businesses. They tell you exactly what to build next and which accounts care enough to ask — and they almost always arrive through a channel that doesn't talk to your product roadmap.

The failure mode is structural, not lazy. A request comes in through a form or an email. To be useful it needs to live in four places at once: on the customer's CRM record (so sales and success see it on the next call), in a Slack channel (so product reacts while it's fresh), in a durable log (so you can count, sort, and prioritize by frequency), and back with the customer (so they feel heard). Doing that by hand takes five minutes per request and gets skipped under load. So requests scatter: some in a Notion doc, some in someone's memory, most nowhere. You lose the two things that make requests valuable — the link to the account, and the ability to count how many people asked for the same thing.

The manual tax compounds. When a whale asks for SSO, that request needs to reach product with the account's MRR attached, today. When it sits in an unread inbox, you're not just slow — you're blind to your own demand signal.

The solution: one form, four automatic destinations

This n8n workflow turns a single Typeform submission into a fully distributed, logged, and acknowledged request with zero human touch. The flow is a straight fan-out from one trigger:

  • Typeform Trigger fires the instant a customer submits.
  • HubSpot attaches the request as a timestamped note on the contact — so it shows on the account timeline forever.
  • Slack posts a formatted message to your #product or #feature-requests channel with the request and who asked.
  • Google Sheets appends a row to a master log you can pivot, filter, and count.
  • Email/Typeform confirmation replies to the customer that their request was received.

The whole thing runs in under two seconds and never forgets. Product gets the signal live, sales sees it on the record, ops gets a countable log, and the customer gets a reply. Nobody copy-pastes anything.

Step-by-step setup in n8n

Here's how to build it node by node. Budget about 20 minutes for a first-time setup, most of it spent on OAuth credentials.

1. Typeform Trigger node. Add the Typeform Trigger as your entry point. Authenticate with a Typeform personal access token, then select your feature request form from the dropdown. n8n registers the webhook automatically — no manual URL wiring. Make sure your form captures at minimum: customer email, company name, and the request text. Those become the fields you route downstream.

2. Set / Edit Fields node (normalize the payload). Typeform's output is nested by field ID, which is ugly to reference. Drop a Set node right after the trigger and map raw answers to clean names: email, company, request, priority. Use expressions like {{ $json.form_response.answers[0].email }}. Everything downstream now references these tidy fields instead of brittle array indexes.

3. HubSpot node — attach the CRM note. Add a HubSpot node, resource Contact or Engagement. Authenticate via OAuth2 (recommended over API key). Use the Create/Update Contact operation with email as the identifier so an existing contact is matched instead of duplicated, then create an engagement of type Note with the body set to {{ $json.request }}. This pins the request to the timeline of the actual account, not a floating record.

4. Slack node — ping the PM channel. Add a Slack node, operation Send Message, authenticated via OAuth2. Target your #feature-requests channel. Build a readable message with Block Kit or a simple template:

🚀 New feature request from {{ $json.company }}
Request: {{ $json.request }}
From: {{ $json.email }}

Add the requester's email so product can reply directly. If you want triage, use a Slack Block with buttons that write back to your Sheet.

5. Google Sheets node — archive the log. Add a Google Sheets node, operation Append Row, authenticated via OAuth2. Point it at your master log sheet and map columns: Timestamp ({{ $now }}), Company, Email, Request, Priority, Status. This is your countable source of truth — the sheet you pivot to answer "how many accounts asked for X?"

6. Confirmation to the customer. Add a Send Email node (SMTP or Gmail) — or use Typeform's own respondent notification — to reply: "Thanks — your request is logged and with our product team." This closes the loop and dramatically improves the odds the customer submits again.

Wire it as a fan-out. Connect the Set node's single output to HubSpot, Slack, and Sheets in parallel so they run concurrently. In newer n8n you can branch one output to multiple nodes directly; the confirmation email can hang off the end of the chain. Test with n8n's Execute Workflow and a dummy submission, verify all four destinations, then flip the workflow to Active.

The benefits: demand signal you can actually act on

Once this runs, the change is not "slightly less manual work" — it's a new capability you didn't have.

  • Every request is linked to an account. When success runs a renewal call, the customer's open requests are right there on the HubSpot timeline. That's a retention lever, not just tidy data.
  • Product reacts in real time. The Slack ping means high-value requests get eyes within minutes, not at the next planning cycle.
  • You can count demand. The Sheets log turns anecdotes into a ranked backlog. Sort by frequency and you know what to build next — with evidence, not opinion.
  • Customers feel heard. The instant confirmation is a small touch that measurably increases repeat feedback and goodwill.
  • Zero ongoing cost. No SaaS feedback tool subscription — just tools you already pay for, wired together.

Common pitfalls (and how to avoid them)

Duplicate HubSpot contacts. If you create instead of upsert, every request from an existing customer spawns a duplicate. Always use the Create/Update operation keyed on email so the note attaches to the real record.

Brittle Typeform field references. Mapping directly off answers[2] breaks the moment you reorder form questions. Reference answers by field ref or id where possible, and always normalize in a Set node so a form change only requires fixing one place.

OAuth token expiry. Slack, HubSpot, and Google credentials can expire or get revoked. A silent failure means requests vanish. Add an Error Trigger workflow that pings you in Slack when any execution fails — so you find out from an alert, not from a lost deal.

Slack rate limits and formatting. Under a burst of submissions you can hit Slack's rate limit. Keep messages to one per request and avoid @channel spam. If requests are high-volume, batch a daily digest to Sheets instead of one Slack message each.

No validation on empty submissions. Bots and test submits create junk rows and empty notes. Add an IF node after the Set step that checks {{ $json.request }} is non-empty before fanning out, and route the rest to a no-op.

Silent partial failures. Because the branches run in parallel, Slack can succeed while HubSpot fails. Enable Retry On Fail (2–3 attempts) on each external node, and rely on the error workflow to surface anything that still doesn't land. Half-logged is worse than not logged, because you'll trust a record that isn't complete.

Build it once, activate it, and your feature requests stop leaking. Every submission becomes a CRM note, a Slack ping, a logged row, and a happy customer — automatically, forever.

Feature Request Form → CRM Note + PM Slack + Sheets Log
PRONTO PARA USAR

Ja construimos isso pra voce

Nao comece do zero. O Feature Request Form → CRM Note + PM Slack + Sheets Log e um workflow n8n pronto para instalar — conecta suas ferramentas em minutos, sem codigo.

Instalar por $79 →