Portfolio sample

Small-business automation demo (n8n)

A webhook accepts a customer inquiry, classifies it with keyword rules, appends a row to n8n's built-in data table, and answers with JSON. No credential and no external service are used. The eight rows below are DEMO DATA / 演示数据 from a local n8n 2.43.8 community run.

What it does

A small team can drop this workflow in front of a contact form. Sales questions, support problems, and obvious spam land in different categories, and every accepted call leaves a row that can later move to a spreadsheet.

Flow

POST /webhook/smb-inquiry
        |
        v
Ensure Inquiry Table   Data table create, name smb_inquiries, reuse when present
        |
        v
Classify Inquiry       keyword rules below
        |
        v
Append Inquiry Row     Data table insert
        |
        v
Shape Reply            JSON object category and row
        |
        v
Reply To Webhook

Classification rules

The message is lower-cased. The first matching group wins.

  • spam — casino, crypto, viagra, the phrase "seo backlinks", the word "backlink", or three or more http, https, or www links.
  • sales — price, quote, or order.
  • support — error, broken, refund, or help.
  • general — anything else.

Matching is a substring, so "errors" counts as support and "quotes" counts as sales. Spam is tested before sales and support.

Screenshots

n8n editor canvas showing the inquiry workflow
Editor canvas of the published workflow, after signing in.
n8n executions list and one successful run
Executions list and one successful run. Each node completed.
n8n data table with eight demo inquiry rows
Data table smb_inquiries after the eight demo inquiries. DEMO DATA / 演示数据.

Results

NameEmailCompanyMessageCategoryReceived
DEMO Mara Chen[email protected]Northwind OutfittersPlease send a price quote for 20 seats of the annual plan.sales2026-10-20T02:10:52.563Z
DEMO Luis Ortega[email protected]Fabrikam StudioWe want to place an order for the starter package this week.sales2026-10-20T02:10:52.649Z
DEMO Priya Shah[email protected]Contoso LabsThe export button is broken and shows an error after login.support2026-10-20T02:10:52.725Z
DEMO Owen Blake[email protected]Adventure WorksI need help with a refund for invoice 1042.support2026-10-20T02:10:52.798Z
DEMO Casino Promo[email protected]Lucky FieldsPlay at our casino tonight and claim a welcome bonus.spam2026-10-20T02:10:52.853Z
DEMO Link Farm[email protected]SEO PartnersBuy crypto signals and seo backlinks. See https://example.com/a https://example.com/b https://example.com/cspam2026-10-20T02:10:52.909Z
DEMO Pill Ads[email protected]Health NoiseCheap viagra shipped overnight, no questions asked.spam2026-10-20T02:10:52.968Z
DEMO Nina Park[email protected]Alpine BooksHello, we read the company page and the catalog looks clear.general2026-10-20T02:10:53.022Z

Import

  1. Use n8n community 2.43.x. This file was imported on 2.43.8.
  2. Download workflow.json.
  3. In the workflow list choose Import from File, or run n8n import:workflow --input=workflow.json.
  4. Publish the workflow. On 2.43 the CLI command is n8n publish:workflow --id=WORKFLOW_ID.
  5. POST JSON to /webhook/smb-inquiry with name, email, company, and message. The first call creates the data table smb_inquiries.

Swap in Google Sheets or email

The last storage node is the built-in Data table node so the sample runs with no credential. In production, replace Append Inquiry Row with Google Sheets, operation Append row, and map name, email, company, message, category, and received_at. Add a Gmail or SMTP node on that same success path when someone should be notified. Keep Reply To Webhook last so the caller still receives {category, row}.