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.
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.
| Việc | Thao tác của node Google Sheets |
|---|---|
| Thêm khách mới, nếu có rồi thì cập nhật | Append or Update Row |
| Chỉ thêm dòng cuối, không kiểm tra trùng | Append 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ú |
|---|---|
sdt | Cột khoá, đã chuẩn hoá (chỉ chữ số, bắt đầu bằng 0) |
ho_ten, email | Chỉ trường thật sự cần cho tư vấn |
nguon | Form web, TikTok, Facebook, giới thiệu… |
trang_thai | Danh sách cố định: Mới, Đang tư vấn, Đã mua, Tạm dừng, Từ chối |
nguoi_phu_trach | Tên Sale |
dong_y | Khách đồng ý nhận tư vấn bằng cách nào, lúc nào |
lien_he_cuoi, cap_nhat_luc | Phục vụ nhắc lịch, bám đuổi đúng khung |
- Dòng 1 là tiêu đề: n8n coi dòng đầu là tên cột. Không gộp ô, không để dòng trống giữa bảng.
- Đặt tên cột không dấu, không đổi tuỳ tiện: đổi tên cột sau khi cấu hình là lỗi hay gặp nhất.
- Mỗi thông tin chỉ sửa ở một chỗ. Đây cũng là bài học Aduca rút ra khi dựng Second Brain: giá, chính sách, kịch bản chỉ có một nguồn sự thật, mọi kênh đọc chung.
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ối | Dùng khi | Lưu ý |
|---|---|---|
| Managed OAuth2 | n8n Cloud | Đăng nhập Google là xong; bản tự cài không có |
| OAuth2 tự tạo | n8n tự cài | n8n khuyên dùng vì phổ biến và dễ cài; cẩn thận chế độ Testing |
| Service Account | Má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:
- 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.
- Cấu hình OAuth consent screen: chọn User type, tên miền được phép.
- 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.
- Dán Client ID, Client Secret vào credential n8n, bấm Sign in with Google, lưu. Client Secret chỉ nằm ở đây.
- Google giới hạn 100 refresh token cho mỗi tài khoản trên mỗi client ID; tạo thêm thì token cũ nhất mất hiệu lực. Đừng kết nối đi kết nối lại một tài khoản ở quá nhiều credential.
- Service Account: copy
client_emailvàprivate_keytừ tệp JSON vào credential rồi xoá tệp khỏi máy. Tài khoản dịch vụ tạo sau 15/04/2025 không truy cập được "My Drive", chỉ dùng được Shared drive.
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 đó:
# 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ạ- Chọn trang tính theo From list, By URL, By ID (
spreadsheetIdtrong đường dẫn) hoặc By Name. - Map Automatically chỉ chạy đúng khi tên trường đầu vào trùng tên cột; nếu không, chọn Map Each Column Manually.
- Handling extra fields mặc định là Insert in New Column(s): một trường lạ sẽ tạo cột mới. Chọn Ignore Them hoặc Error để giữ cấu trúc bảng.
- Tuỳ chọn Use Append nhanh hơn, nhưng bảng có ô trống thì dữ liệu có thể bị lệch.
- Không ghi đè cột Sale tự điền (ghi chú, trạng thái): chỉ map những cột workflow phụ trách.
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.
Nguồn: n8n – Update Row
Bước 5: Tra cứu khách
- Get Row(s) → Filters: chọn cột
sdt, giá trị lấy từ tin nhắn hoặc form. - Mặc định node chỉ trả dòng khớp đầu tiên. Muốn lấy hết, vào Options → When Filter Has Multiple Matches → Return All Matches.
- Nối If phía sau: không có dòng nào thì đi nhánh "khách mới", có thì đi nhánh "khách cũ".
- Cho AI Agent dùng Google Sheets làm công cụ tra cứu: chỉ cấp thao tác đọc, chỉ trang tính cần thiết, và nhớ rằng mọi dòng agent đọc được đều có thể đi vào câu trả lời.
Nguồn: n8n – Get Row(s)
Giới hạn của Google Sheets API
| Giới hạn (theo Google) | Mức |
|---|---|
| Đọc | 300 request/phút/project; 60 request/phút/người dùng/project |
| Ghi | 300 request/phút/project; 60 request/phút/người dùng/project |
| Vượt mức | Lỗi 429 Too many requests; hạn mức nạp lại mỗi phút |
| Kích thước | Nên giữ mỗi request ≤ 2 MB; xử lý quá 180 giây thì hết thời gian chờ |
| Tệp | Tố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
| 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úc | Data 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 đổi | Postgres, MySQL, Supabase |
| Muốn giao diện bảng cho đội nhưng dữ liệu có cấu trúc chặt | Airtable, Baserow, NocoDB (có node trong n8n) |
- Data tables lưu ngay trong n8n, hợp với lượng dữ liệu nhẹ tới vừa; mặc định tổng 200 MiB mỗi instance (bản tự cài đổi bằng
N8N_DATA_TABLES_MAX_SIZE_BYTES), tới 80% có cảnh báo, vượt thì lỗi thêm hoặc sửa. - Mặc định mọi thành viên project xem được Data tables; node Code không truy cập trực tiếp được.
- Database cần người quản trị, sao lưu và phân quyền riêng; đừng chuyển chỉ vì "cho chuyên nghiệp".
Nguồn: n8n – Data tables · n8n – Data Table node · n8n – Postgres
Kiểm tra đã chạy đúng
- Gửi cùng một khách hai lần với số viết khác nhau (
090 1…và+8490 1…): bảng chỉ có một dòng. - Đổi trạng thái bằng Update Row: đúng dòng đổi, các cột Sale tự điền giữ nguyên.
- Get Row(s) với số có hai dòng khớp trả đủ hai dòng khi bật Return All Matches.
- Sau 8 ngày, credential vẫn chạy (đã tránh chế độ Testing).
- Workflow lỗi được báo về Telegram qua error workflow, xem giám sát lỗi.
Lỗi thường gặp
| Hiện tượng | Cách xử lý |
|---|---|
| Credential báo lỗi sau khoảng một tuần | OAuth 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ên | Chọ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ảng | Handling extra fields đang là Insert in New Column(s): đổi sang Ignore Them |
| Lỗi 429 | Bật Retry On Fail, chia lô, giảm tần suất chạy |
| Service Account không mở được tệp | Chư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ỗi | Dữ 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
- Client Secret, khoá Service Account chỉ nằm trong Credentials của n8n; không dán vào ô tính, ghi chú workflow hay nhóm chat.
- Chia sẻ trang tính theo email, đúng quyền; không bật "Bất kỳ ai có đường liên kết".
- Chỉ lưu dữ liệu cần cho tư vấn và ghi lại sự đồng ý của khách, theo Luật Bảo vệ dữ liệu cá nhân 91/2025/QH15.
- Bảng khách là đầu vào cho tin nhắn chăm sóc: mọi nhánh gửi tin cần kiểm tra trạng thái đồng ý, xem bám đuổi khách đúng chính sách.
- Phần quy định trong bài là tóm tắt để vận hành, không phải tư vấn pháp lý.
Nguồn: n8n – Credentials
Bắt đầu từ đâu?
- 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.
- 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.
- 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
- n8n · AI Agentn8n là gì? Tự động hoá quy trình kết hợp AI cho doanh nghiệpn8n là gì: công cụ tự động hoá quy trình nối Facebook, Google Sheets, Telegram, CRM thành workflow, chèn được bước AI. Cloud hay tự cài, giấy phép, giới hạn.
- n8n · AI AgentLàm chatbot Facebook Messenger bằng n8n: webhook, chữ ký, Send API, cửa sổ 24 giờLàm chatbot Facebook Messenger bằng n8n: xác minh webhook, kiểm chữ ký X-Hub-Signature-256, trả 200 trong 5 giây, gửi qua Send API, cửa sổ 24 giờ, App Review.
- n8n · AI Agentn8n Cloud hay tự cài: chi phí, gói và giấy phép cần biếtn8n Cloud hay tự cài: bảng gói Cloud bằng EUR theo lượt chạy, bản Community miễn phí và chi phí thật khi tự cài, giấy phép fair-code, chọn theo 5 tình huống.
- n8n · AI AgentKết nối Zalo OA với n8n: webhook 2 giây, token 25 giờ, tin Tư vấn miễn phí 48 giờKết nối Zalo OA với n8n từng bước: webhook trả 200 trong 2 giây, làm mới access token 25 giờ, gửi tin Tư vấn qua API, khung 48 giờ miễn phí và giới hạn 7 ngày.
Xem tất cả tài liệu hướng dẫn →
Đă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.
Nguồn tham khảo
- n8n Docs – Google Sheets
- n8n Docs – Google Sheets: Sheet operations
- n8n Docs – Google Sheets: lỗi thường gặp
- n8n Docs – Google credentials
- n8n Docs – Google OAuth2 generic
- n8n Docs – Google Service Account
- Google – Using OAuth 2.0 (refresh token expiration)
- Google Cloud – Manage App Audience
- Google – Sheets API usage limits
- n8n Docs – Data tables
Lịch sử cập nhật
- 21/10/2026 — Bản đầu.
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.