Thực hành n8n đa kênh · Bài 6

Google Sheets làm CRM với n8n: thêm, cập nhật, tra cứu

Google Sheets là chỗ nhiều đội Sale bắt đầu quản lý khách vì ai cũng mở được. Nối với n8n, bảng tự nhận khách mới, tự cập nhật trạng thái và trả lời tra cứu. Bài này đi từng bước, nói rõ hai cái bẫy hay gặp: kết nối Google tự "chết" sau 7 ngày và giới hạn số lần gọi mỗi phút. Đối chiếu n8n 2.44.4 và tài liệu Google, tháng 10/2026.

Cập nhật 21/10/2026⏱ 9 phút đọcCài đặt & bắt đầuNgười mới → Trung cấp

Ba Sale, một trang tính, và những khách bị gọi hai lần

Một trung tâm đào tạo dùng chung một Google Sheet cho ba nhân viên tư vấn. Lead từ form, từ quảng cáo được dán tay; người này sửa trạng thái, người kia vô tình ghi đè; cùng một khách xuất hiện ba dòng vì số điện thoại lúc có dấu cách, lúc có +84. (Tình huống minh hoạ.)

Bài này biến trang tính đó thành một CRM gọn: n8n thêm khách theo khoá, cập nhật đúng dòng, tra cứu khi cần. Đây là bảng đích cho các bài form website, lead TikTok và nút duyệt trong bot Telegram. Các bước đối chiếu n8n bản 2.44.4 (10/2026).

Google Sheets làm CRM với n8n là gì?

Google Sheets làm CRM với n8n là dùng một trang tính có cấu trúc cố định làm sổ khách hàng, để workflow n8n tự thêm khách mới, cập nhật trạng thái và tra cứu theo một cột khoá bằng node Google Sheets.

Google Sheets làm CRM với n8n: form và lead quảng cáo đưa khách mới vào bảng, nút Telegram của Sale đổi trạng thái, chatbot và Sale tra cứu theo số điện thoại; n8n dùng ba thao tác của node Google Sheets là Append or Update Row để thêm hoặc cập nhật, Update Row để sửa dòng đã có, Get Row(s) để tra cứu; trang tính Khách hàng có dòng 1 là tiêu đề và một cột khoá duy nhất
Hình: Ba thao tác chính khi dùng Google Sheets làm CRM (minh hoạ)
ViệcThao tác của node Google Sheets
Thêm khách mới, nếu có rồi thì cập nhậtAppend or Update Row
Chỉ thêm dòng cuối, không kiểm tra trùngAppend Row
Sửa dòng đã có (trạng thái, người phụ trách)Update Row
Tra cứu khách theo cột và giá trịGet Row(s)

Node còn có Clear, Create, Delete, Delete Rows or Columns và dùng được làm công cụ cho AI Agent.

Nguồn: n8n – Sheet operations · n8n – Google Sheets

Bước 1: Thiết kế bảng trước khi nối

Cột (ví dụ minh hoạ)Ghi chú
sdtCột khoá, đã chuẩn hoá (chỉ chữ số, bắt đầu bằng 0)
ho_ten, emailChỉ trường thật sự cần cho tư vấn
nguonForm web, TikTok, Facebook, giới thiệu…
trang_thaiDanh sách cố định: Mới, Đang tư vấn, Đã mua, Tạm dừng, Từ chối
nguoi_phu_trachTên Sale
dong_yKhách đồng ý nhận tư vấn bằng cách nào, lúc nào
lien_he_cuoi, cap_nhat_lucPhục vụ nhắc lịch, bám đuổi đúng khung

Nguồn: n8n – dòng tiêu đề · n8n – lỗi đổi tên cột

Bước 2: Kết nối Google không "chết" sau 7 ngày

Cách kết nốiDùng khiLưu ý
Managed OAuth2n8n CloudĐăng nhập Google là xong; bản tự cài không có
OAuth2 tự tạon8n tự càin8n khuyên dùng vì phổ biến và dễ cài; cẩn thận chế độ Testing
Service AccountMáy chủ dùng riêng một tài khoản dịch vụPhải chia sẻ trang tính cho email của tài khoản dịch vụ

Với OAuth2 tự tạo, làm theo trang Google OAuth2 generic của n8n:

  1. Vào Google Cloud Console, tạo hoặc chọn project, bật Google Sheets API; tài liệu Service Account của n8n ghi Sheets cần bật kèm Google Drive API, nên bật cả hai.
  2. Cấu hình OAuth consent screen: chọn User type, tên miền được phép.
  3. Tạo OAuth client ID loại Web application. Trong credential của n8n, copy OAuth Redirect URL rồi dán vào Authorized redirect URIs bên Google.
  4. Dán Client ID, Client Secret vào credential n8n, bấm Sign in with Google, lưu. Client Secret chỉ nằm ở đây.
Bẫy 7 ngày: nếu User type là External và Publishing status là Testing, Google cấp refresh token hết hạn sau 7 ngày; chế độ này cũng chỉ cho tối đa 100 test user. Workflow chạy tốt tuần đầu rồi đồng loạt báo lỗi. Cách tạm theo n8n: kết nối lại credential. Cách lâu dài: dùng User type Internal nếu tài khoản thuộc Google Workspace của chính tổ chức, hoặc chuyển ứng dụng sang In production. Khi đó Google có thể hiện cảnh báo "Unverified apps" với phạm vi quyền nhạy cảm và có thể yêu cầu xác minh ứng dụng.

Nguồn: n8n – Google credentials · n8n – OAuth2 generic · Google – refresh token 7 ngày, giới hạn 100 · Google – Manage App Audience · n8n – Service Account

Bước 3: Thêm khách mới, không sinh dòng trùng

Trước node Google Sheets, dùng Edit Fields (Set) chuẩn hoá số điện thoại và đặt tên trường trùng tên cột. Sau đó:

Cấu hình node Google SheetsCopy làm bản đối chiếu khi điền node; thay phần trong <…>
# Node "Google Sheets" – thêm hoặc cập nhật khách (ví dụ minh hoạ)
Resource              : Sheet Within Document
Operation             : Append or Update Row
Document              : By URL → <đường dẫn trang tính>
Sheet                 : From list → Khach_hang
Mapping Column Mode   : Map Each Column Manually
Column to Match On    : sdt
Values to Send        : sdt = {{ $json.sdt }} · ho_ten = {{ $json.ho_ten }} · nguon = {{ $json.nguon }}
                        cap_nhat_luc = {{ $now.toISO() }}
Options → Handling extra fields : Ignore Them   # không để n8n tự thêm cột lạ

Nguồn: n8n – Append or Update Row, Options

Bước 4: Cập nhật trạng thái đúng dòng

Khi Sale bấm nút "Đã gọi" trên Telegram hoặc khách mua hàng, dùng Update Row: Column to Match On = sdt, chỉ gửi các cột cần đổi như trang_thai, nguoi_phu_trach, lien_he_cuoi. Update Row không tạo dòng mới, nên khách lạ không lọt vào bảng qua đường này.

Tài liệu n8n đặt dòng "Column to Match On" dưới mục Append Row, có vẻ là lỗi biên tập; trên thực tế bạn dùng nó cho Append or Update Row và Update Row.

Nguồn: n8n – Update Row

Bước 5: Tra cứu khách

Nguồn: n8n – Get Row(s)

Giới hạn của Google Sheets API

Giới hạn (theo Google)Mức
Đọc300 request/phút/project; 60 request/phút/người dùng/project
Ghi300 request/phút/project; 60 request/phút/người dùng/project
Vượt mứcLỗi 429 Too many requests; hạn mức nạp lại mỗi phút
Kích thướcNên giữ mỗi request ≤ 2 MB; xử lý quá 180 giây thì hết thời gian chờ
TệpTối đa 20 triệu ô hoặc 100MB

Về kỹ thuật, mọi workflow dùng chung một credential đều tính vào hạn mức của cùng một người dùng, nên nhiều workflow chạy dày dễ chạm mức 60/phút. Cách giảm theo tài liệu n8n: bật Retry On Fail với Wait Between Tries; xử lý theo lô bằng Loop Over Items kèm Wait; gom việc ghi thay vì ghi từng dòng rải rác. Google khuyên chờ tăng dần (exponential backoff).

Nguồn: Google – Sheets API limits · Google – giới hạn tệp · n8n – Handle rate limits

Khi nào chuyển sang Data tables hoặc database

Khi nào Google Sheets không còn đủ cho CRM: giới hạn OAuth app chế độ Testing làm refresh token hết hạn sau 7 ngày, Sheets API 60 lượt đọc và 60 lượt ghi mỗi phút mỗi người dùng mỗi project, tệp tối đa 20 triệu ô; hướng chuyển là n8n Data tables mặc định 200 MiB mỗi instance có Upsert, If Row Does Not Exist, hoặc cơ sở dữ liệu Postgres, MySQL, Supabase
Hình: Giới hạn của Sheets và hai hướng chuyển tiếp (minh hoạ)
Dấu hiệu (kinh nghiệm thiết kế, không phải ngưỡng chính thức)Hướng chuyển
Workflow cần lưu dấu đã xử lý, trạng thái chăm sóc, bảng tra cứu nhỏn8n Data tables
Thường xuyên gặp lỗi 429, nhiều workflow cùng ghi một lúcData tables cho phần máy ghi; Sheets chỉ để xem
Cần quan hệ giữa bảng (khách, đơn, lịch hẹn), phân quyền, nhật ký thay đổiPostgres, MySQL, Supabase
Muốn giao diện bảng cho đội nhưng dữ liệu có cấu trúc chặtAirtable, Baserow, NocoDB (có node trong n8n)

Nguồn: n8n – Data tables · n8n – Data Table node · n8n – Postgres

Kiểm tra đã chạy đúng

Lỗi thường gặp

Hiện tượngCách xử lý
Credential báo lỗi sau khoảng một tuầnOAuth app đang ở Testing: kết nối lại, rồi chuyển Internal hoặc In production
Không thấy cột mới đổi tênChọn lại Mapping Column Mode để n8n tải lại tên cột
Xuất hiện cột lạ cuối bảngHandling extra fields đang là Insert in New Column(s): đổi sang Ignore Them
Lỗi 429Bật Retry On Fail, chia lô, giảm tần suất chạy
Service Account không mở được tệpChưa chia sẻ tệp cho email tài khoản dịch vụ, hoặc tệp nằm trong My Drive
Ô chứa danh sách bị lỗiDữ liệu là mảng: tách bằng Split Out hoặc nối thành chuỗi trước khi ghi

Nguồn: n8n – Google Sheets: lỗi thường gặp

An toàn & chính sách

Nguồn: n8n – Credentials

Bắt đầu từ đâu?

  1. Hôm nay: dọn bảng (dòng tiêu đề, cột khoá, chuẩn hoá số), tạo credential không ở chế độ Testing.
  2. Tuần này: nối một nguồn khách bằng Append or Update Row, thêm Update Row từ nút Telegram.
  3. Khi bảng lớn dần: theo dõi lỗi 429 và cân nhắc Data tables cho phần dữ liệu máy ghi.

Bài tiếp theo: gửi email tự động bằng n8n đúng quy định.

Muốn được tư vấn cách áp dụng n8n cho quy trình của doanh nghiệp, bạn có thể đăng ký Tư vấn 1-1 hoặc Coaching 1-1; chi phí báo sau buổi tư vấn.

Đọc tiếp: Email tự động →

Câu hỏi thường gặp

Vì sao workflow Google Sheets cứ khoảng một tuần lại báo lỗi đăng nhập?

Thường do dự án Google Cloud của bạn để User type là External và Publishing status là Testing. Google ghi rõ khi đó refresh token hết hạn sau 7 ngày. Cách tạm là kết nối lại credential trong n8n; cách lâu dài là dùng User type Internal (Google Workspace cùng tổ chức) hoặc chuyển ứng dụng sang In production.

Dùng n8n Cloud có phải tự tạo OAuth app không?

Không bắt buộc. n8n Cloud có Managed OAuth2 cho node Google Sheets và một số node Google khác: bạn chỉ cần đăng nhập Google. Bản tự cài không có tính năng này, phải tự cấu hình OAuth2.

Google Sheets chịu được bao nhiêu khách?

Một tệp Google Sheets tối đa 20 triệu ô. Thường đội bạn sẽ gặp giới hạn khác trước: Sheets API cho 60 lượt đọc và 60 lượt ghi mỗi phút cho mỗi người dùng trong một project, và việc nhiều người cùng sửa tay dễ làm lệch dữ liệu.

Data tables của n8n có thay được Google Sheets không?

Cho phần dữ liệu workflow cần (đánh dấu đã xử lý, trạng thái, bảng tra cứu) thì phù hợp: lưu ngay trong n8n, mặc định tối đa 200 MiB mỗi instance. Nhưng đội Sale không mở Data tables như mở một trang tính, nên nhiều đội giữ Sheets làm bảng xem và để n8n đồng bộ.

Có nên chia sẻ bảng khách bằng đường liên kết công khai cho tiện không?

Không nên. Bảng khách chứa dữ liệu cá nhân; chỉ chia sẻ cho đúng email người cần, đúng quyền xem hoặc sửa.

Tài liệu liên quan

Xem tất cả tài liệu hướng dẫn →

Bước tiếp theo

Đăng ký tư vấn 1:1

Chuyên gia Aduca cùng bạn xem quy trình hiện tại, chọn việc nên giao cho AI Agent trước và cách kiểm soát rủi ro.

Về AducaChuỗi bài do đội ngũ Aduca biên soạn từ kinh nghiệm đào tạo và triển khai AI Agent cho Marketing – Sales. Aduca Academy do Nguyễn Đức – Chủ tịch Aduca Group sáng lập; ông kinh doanh thương mại điện tử từ 2012, chạy quảng cáo Facebook từ 2014 và đào tạo từ 2016. Phần thực hành từng bước nằm trong các thư mục OpenClaw, Hermes Agent, Claude, ChatGPT và n8n, Second Brain.

Nguồn tham khảo

Lịch sử cập nhật

Miễn trừ trách nhiệm

Bài viết thuộc chuỗi kiến thức của Công ty Cổ phần Giáo dục Aduca, chia sẻ miễn phí cho mục đích học tập. Thông tin kỹ thuật đối chiếu với tài liệu chính thức của các dự án và nền tảng tại ngày cập nhật (có ghi nguồn); phần nhận định là quan điểm của Aduca. OpenClaw, Hermes Agent, Claude (thương hiệu của Anthropic), ChatGPT (thương hiệu của OpenAI), n8n (thương hiệu của n8n GmbH), các phần mềm chạy model và các model AI mở (Ollama, LM Studio, Qwen, Gemma, gpt-oss…), Obsidian, Notion, phương pháp Building a Second Brain (Tiago Forte) cùng các phần mềm, dịch vụ nêu trong bài thuộc về chủ sở hữu tương ứng, không thuộc Aduca; Aduca không phải đối tác chính thức của các công ty này. Tính năng, gói và giá có thể thay đổi bất cứ lúc nào – hãy kiểm tra trang chính thức trước khi mua. Kết quả áp dụng phụ thuộc quy trình, dữ liệu và con người của từng doanh nghiệp; bài viết không cam kết doanh thu hay hiệu quả cụ thể. © 2026 Aduca — được trích dẫn khi ghi rõ nguồn aduca.vn.