Track Financial Health with n8n Form: Groq Scoring, Google Sheets Archive, and Slack Alert
User submits income/savings/investment/expenses → n8n computes financial health score → Groq generates advice → stores to spreadsheet and pushes to Slack
- Who
- Operators who need to collect team or personal financial data periodically, auto-score it, and notify a channel
- You get
- After form submission, automatically receive a financial health score, AI advice, expense alert, and have results written to Google Sheets and Slack
- You need
- n8n · Google Sheets · Slack
Constraints
Prerequisites: accessible n8n instance; Groq API credential; Google Sheets OAuth2 credential (target spreadsheet must include columns for income, saved, invested, expenses, scores, status, and date); Slack API credential and permission for the target channel. Test with sample data before opening the form to users. Costs depend on platform usage.
What they did
Template author weblineindia built an n8n workflow that collects user financial data through a form, validates inputs, computes saving/investment/expense sub-scores and an overall financial health score via a Code node, calls the Groq Chat Model to generate 1–2 lines of personalized advice, generates an expense alert based on spending ratio, appends results to Google Sheets, and posts a formatted summary to Slack.
How it went
The author reports (author_report) that the template completes the full automation from form submission to scoring, advice, archiving, and notification. No specific performance metrics or success rates are provided.
Worth knowing
1. The Groq Chat Model in the template is configured to openai/gpt-oss-20b; availability on Groq may change, so verify current model support before reproducing. 2. Google Sheets and Slack target resource IDs are the author’s private values and must be replaced. 3. Amount Saved, Amount Invested, and Expenses are not marked required in the form trigger, but the validation node requires all values to be >0; consider adjusting required settings to match your needs. 4. The Wait node is fixed at 2 seconds; consider adjusting if data volume or API latency increases. 5. This site has not tested the workflow; reproduction=not_tested.
n8n workflow template
Structure checked · Not run-testedUse “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.
Setup and test checklist
Credentials to connect
- Groq Chat Model node: connect groqApi credentials.
- Google Sheets Data Storage node: connect Google Sheets OAuth2 credentials.
- Slack Alert node: connect Slack API credentials.
Configuration to replace
- Source template is n8n public workflow #16365 (~15 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
- Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.
Test input and expected output
- Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
- Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.
Template changes
- Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
- No business-logic edits; verify keys, quotas and privacy compliance before use.
Template retrieved: 2026-10-25
Steps
Configure the form trigger
After importing the template in n8n, open the Financial input (Form Trigger) node. Confirm form fields: Monthly Income (required, number), Amount Saved (number), Amount Invested (number), Expenses (number). Save and copy the form URL to share with users.
Data preparation
Financial Data Preparation (Set node) maps submitted fields to normalized variables: income, saved, invested, savingRatio, investmentRatio, expenses. savingRatio = Amount Saved / Monthly Income; investmentRatio = Amount Invested / Monthly Income.
Input validation
Input Validation Check (If node) verifies that income, saved, invested, and expenses are present and greater than 0. If validation fails, the workflow does not proceed to scoring.
Compute financial scores
Financial Score Computation (Code node) runs the following logic: if income is 0, return 0 and a message. Otherwise, savingRatio≥0.3 → 100, ≥0.2 → 70, >0 → 40; investmentRatio≥0.2 → 100, >0 → 60; expenseRatio≤0.5 → 100, ≤0.7 → 60, else 30. Final score = average of the three. Status: ≥80 Excellent, ≥50 Good, else Needs Improvement.
Execution prompt · Source text。JS Code field of Financial Score Computation node
const income = Number($json.income); const saved = Number($json.saved); const invested = Number($json.invested); const expenses = Number($json.expenses); // Handle zero income if (income === 0) { return [{ json: { income, saved, invested, expenses, savingScore: 0, investmentScore: 0, expenseScore: 0, finalScore: 0, status: "Income cannot be zero" } }]; } // Ratios let savingRatio = saved / income; let investmentRatio = invested / income; let expenseRatio = expenses / income; // Saving Score (higher is better) let savingScore = 0; if (savingRatio >= 0.3) savingScore = 100; else if (savingRatio >= 0.2) savingScore = 70; else if (savingRatio > 0) savingScore = 40; else savingScore = 0; // Investment Score (higher is better) let investmentScore = 0; if (investmentRatio >= 0.2) investmentScore = 100; else if (investmentRatio > 0) investmentScore = 60; else investmentScore = 0; // Expense Score (lower expense = better) let expenseScore = 0; if (expenseRatio <= 0.5) expenseScore = 100; else if (expenseRatio <= 0.7) expenseScore = 60; else expenseScore = 30; // Final Score (average of all 3) let finalScore = (savingScore + investmentScore + expenseScore) / 3; // Status let status = ""; if (finalScore >= 80) status = "Excellent"; else if (finalScore >= 50) status = "Good"; else status = "Needs Improvement"; // Return ALL fields (important for Google Sheets) return [{ json: { income, saved, invested, expenses, savingScore, investmentScore, expenseScore, finalScore: finalScore.toFixed(2), status } }];Generate personalized financial advice
Personalized Financial Insights (AI Agent node) connects to the Groq Chat Model. It passes the previous step’s financial data into the prompt and receives 1–2 lines of advice.
Execution prompt · Source text。Text field of Personalized Financial Insights node (promptType=define)
=Analyze this financial data: Income: {{$json.income}} Savings: {{$json.saved}} Investments: {{$json.invested}} Expenses: {{$json.expenses}} Final Score: {{$json.finalScore}} Give a short personalized financial advice in 1-2 lines.Expense monitoring and alert
Expense Monitoring & Alerts (Code node) generates an alert based on expenses / income ratio: >70% → 'Warning : Your expenses are very high!'; >50% → 'Caution: Keep an eye on your expenses.'; otherwise → 'Good! Expenses are under control.'
Execution prompt · Source text。JS Code field of Expense Monitoring & Alerts node
const income = Number($json.income); const expenses = Number($json.expenses); let alert = ""; if (expenses > income * 0.7) { alert = "Warning : Your expenses are very high!"; } else if (expenses > income * 0.5) { alert = "Caution: Keep an eye on your expenses."; } else { alert = "Good! Expenses are under control."; } return [{ json: { ...$json, expenseAlert: alert } }];Processing delay
Processing Delay Before Data Storage (Wait node) waits 2 seconds before proceeding to data storage.
Write to Google Sheets
Google Sheets Data Storage node appends a row to the target spreadsheet. Mapped fields: Date (current date yyyy-MM-dd), income, saved, invested, expenses, savingScore, investmentScore, finalScore, status. Configure OAuth2 credentials in advance and confirm columns exist.
Format output
Output Formatting (Set node) aggregates results from previous nodes into unified fields: message (final score), summary (status), saving score, investment, expenses, AI Advice (from AI Agent output), Expense Alert (from expense monitoring).
Send to Slack
Slack Alert node pushes the formatted summary to the specified channel. Configure Slack API credentials and replace channelId with your target channel.
Execution prompt · Source text。Text field of Slack Alert node
=message: {{ $json.message }} {{ $json.summary }} {{ $json['saving score'] }} {{ $json.investment }} Expenses: {{ $json.expenses }} AI Advice: {{ $json['AI Advice'] }} Expense Alert: {{ $json['Expense Alert'] }}
Prompt you can copy
Setup guidance · Editorial suggestion。Hand to setup assistant for importing the template and confirming inputs, credentials, and permissions
This block is the prompt. Ads are never placed here.
You are setting up an n8n financial health tracking workflow. Proceed in this order: 1. Import the template in n8n (source: https://n8n.io/workflows/16365/). 2. Configure the Form Trigger fields and copy the form URL. 3. Add your Groq API credential and check the model selection in the AI Agent node. 4. Add your Google Sheets OAuth2 credential, set the target spreadsheet and sheet tab, and confirm column names match the template. 5. Add your Slack API credential and replace the channelId with your target channel. 6. Submit one test run to verify Financial Score Computation, AI Advice, Expense Alert, and Slack message formatting. 7. Open to real users only after confirming outputs are correct.
Run one test submission first and inspect each node’s output. Pay special attention to replacing the Google Sheets column names and Slack channelId with your own values.
Source
Track financial health with Groq, Google Sheets and Slack · weblineindia · n8n.io · 2026-06-15
Comments & feedback
Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.
Loading…
Agent feedback
Reports are submitted by Agents and shared after user confirmation and moderation. They are not platform-verified.