Complete Guide: Feature Request Form → CRM Note + PM Slack + Sheets Log with n8n

You ship a feature request form because customers keep asking for things and you keep losing track of them. Then the real problem starts: a Typeform submission lands in an inbox nobody owns, your prod

Complete Guide: Feature Request Form → CRM Note + PM Slack + Sheets Log with n8n

You ship a feature request form because customers keep asking for things and you keep losing track of them. Then the real problem starts: a Typeform submission lands in an inbox nobody owns, your product manager finds out three weeks late, sales has no idea a churning account begged for the exact feature you were about to build, and there is no durable record anyone can query. The request existed for a moment and then evaporated. Multiply that by fifty submissions a month and you are running product on vibes.

The fix is not another meeting or a Notion database someone has to remember to update. It is a single n8n workflow that catches every submission the instant it happens and fans it out to the four places it needs to live: your CRM, your PM's Slack channel, a permanent spreadsheet log, and the customer's own inbox. Below is exactly how to build it, node by node, plus the configuration details that trip people up.

The Problem: Feature Requests Die in Transit

A feature request is one of the highest-signal events in your entire funnel. Someone cared enough to stop and type. But that signal has to reach several teams at once to be useful, and each team needs it in a different system:

  • Product needs it in a real-time channel so it can be triaged before it goes cold.
  • Sales and Success need it attached to the customer's CRM record, so the next conversation with that account has context.
  • The business needs a flat, permanent log — a spreadsheet you can pivot, count, and sort by theme to spot the request that fifteen people made.
  • The customer needs a confirmation, so they know a human (or a well-built robot) received it and did not drop it into a void.

Do this by hand and you get partial coverage on a good day. Someone forwards the email to Slack but forgets the CRM. The spreadsheet is updated for two weeks and then abandoned. The customer never hears back. The information exists but it is scattered and stale, which is functionally the same as not having it.

The Solution: One Trigger, Four Destinations

This template listens for a Typeform submission and executes four actions in parallel, deterministically, every single time. No human in the loop, no forgotten step. The flow:

Typeform Trigger → HubSpot (create note) → Slack (post to PM channel) → Google Sheets (append row) → Email/Typeform confirmation to customer.

Because n8n runs the branches off one trigger, all four destinations get the same clean payload — the request text, the customer's email, the account name, a timestamp, and any priority or category fields you collected. One source of truth, four synchronized copies, delivered in under two seconds. The customer gets a reply while they still have the tab open.

Step-by-Step Setup in n8n

Here is the build. Each node maps to a stage of the fan-out.

1. Typeform Trigger node. Add the Typeform Trigger node and authenticate with your Typeform personal access token (Settings → Personal tokens). Select the feature request form. n8n registers a webhook with Typeform automatically, so submissions push in real time — you do not poll. Make sure your form collects, at minimum, an email field, the request itself, and ideally a hidden field passing the account or company name. In the trigger output, each answer arrives keyed by its field ref, so rename your Typeform fields to something stable before you build downstream expressions.

2. Set node (normalize the payload). Drop a Set (Edit Fields) node right after the trigger. Typeform's raw output is nested and ref-keyed, which is painful to reference four times downstream. Map the messy input into clean fields once: email, request, company, submitted_at. Use expressions like {{ $json.answers.find(a => a.field.ref === 'request').text }}. Now every following node reads {{ $json.email }} instead of re-parsing the nested blob.

3. HubSpot node (attach the note). Add the HubSpot node, resource Contact or Engagement. The clean pattern: search for the contact by email, then create a Note engagement associated with that contact ID. Set the note body to something like Feature request: {{ $json.request }} — submitted {{ $json.submitted_at }}. Authenticate with a HubSpot private app token that has crm.objects.contacts write scope. If the contact does not exist, branch to create it first — an IF node on the search result handles this cleanly.

4. Slack node (ping the PM channel). Add the Slack node, resource Message, operation Post. Point it at your #product-requests channel. Build a readable message with Block Kit or a simple markdown string: :bulb: *New feature request* from {{ $json.company }}\n>{{ $json.request }}\nReply from: {{ $json.email }}. Authenticate via a Slack app with chat:write scope. This is the node that actually changes behavior — a request in Slack gets triaged; a request in a spreadsheet gets ignored.

5. Google Sheets node (the permanent log). Add the Google Sheets node, operation Append Row. Point it at a sheet with columns for timestamp, email, company, request, and a blank status column your team fills in later. Map each column to the normalized fields. This is your queryable archive — the thing you sort by theme once a quarter to decide the roadmap.

6. Send Email node (confirm to the customer). Finish with the Send Email node (SMTP) or a Gmail node. Address it to {{ $json.email }}, subject "We got your request," body echoing back what they asked for so they trust it landed. Closing the loop with the customer is the step most teams skip, and it is the cheapest goodwill you will ever generate.

Wire nodes 3 through 6 so they run off the Set node's output. Save, activate the workflow, and submit a test entry through the live Typeform to confirm all four destinations fire.

Benefits: Why This Compounds

Once live, this workflow pays off in ways a manual process never will:

  • Zero leakage. Every request is captured the moment it exists. Nothing depends on someone remembering to log it.
  • Context follows the customer. The next time sales opens that HubSpot record, the feature ask is right there — no archaeology required.
  • Roadmap by evidence. The Sheets log turns anecdotes into counts. "We should build X" becomes "eleven accounts requested X this quarter, three of them enterprise."
  • Faster response = higher trust. An instant confirmation email makes a two-person startup feel like a company that has its act together.
  • It scales to zero marginal effort. Ten requests or ten thousand, the workflow does not get tired or forgetful.

Common Pitfalls to Avoid

Not normalizing the Typeform payload first. If you skip the Set node and reference the raw nested answers in all four downstream nodes, you will maintain four fragile expressions. Change one form field and everything breaks. Normalize once, reference cleanly everywhere.

No error handling on the HubSpot search. The most common failure is a submission from someone not yet in your CRM. Without an IF branch to create the contact, that execution errors and — depending on your settings — may halt the whole workflow. Configure an Error Trigger workflow or set the HubSpot node to "Continue On Fail" so a missing contact never blocks the Slack ping and the Sheets log.

Leaking secrets in node parameters. Always use n8n's Credentials store for tokens, never paste them inline into an HTTP or Set node. Rotate the HubSpot and Slack tokens on a schedule.

Silent Slack rate limits. If a marketing push floods the form, Slack may throttle. Add a small Wait node or batch notifications if you expect bursts, so no message is dropped.

Treating the confirmation email as optional. Teams cut this to save ten minutes of setup and then wonder why customers re-submit the same request three times. The confirmation is not a nicety — it prevents duplicate noise and signals reliability.

Build this once and feature requests stop being a leak in your product process and start being the structured input stream they were always supposed to be. The whole thing takes an afternoon in n8n — or a few minutes if you start from a template that already has every node wired.

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 →