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

Đưa lead TikTok về hệ thống bằng n8n

n8n chưa có node TikTok chính thức, nhưng TikTok cho ba đường lấy lead từ Instant Form: tải tệp, gọi API tạo tác vụ tải, hoặc đăng ký webhook. Bài này đi từng bước cả ba cách, khuyên bắt đầu từ cách đơn giản, và dựng lớp chống trùng để mỗi khách chỉ là một dòng. Đối chiếu n8n 2.44.4 và tài liệu TikTok API for Business v1.3, tháng 10/2026.

Cập nhật 21/10/2026⏱ 9 phút đọcCài đặt & bắt đầuTrung cấp

Lead TikTok nằm trong Ads Manager, Sale gọi chậm một ngày

Một cửa hàng chạy quảng cáo TikTok dạng Instant Form. Mỗi sáng, người chạy quảng cáo vào Ads Manager tải tệp lead, dán vào Google Sheet rồi nhắn nhóm Sale. Hôm nào bận, lead nằm đó tới chiều; có hôm dán trùng, hai Sale cùng gọi một khách. (Tình huống minh hoạ.)

Bài này dựng đường đi tự động từ TikTok về bảng khách bằng n8n, kèm báo Sale qua Telegram. Bạn nên đã làm quen n8n qua workflow đầu tiên và có bảng khách như Google Sheets làm CRM. Các bước đối chiếu n8n bản 2.44.4 (10/2026); tên node có thể đổi ở bản sau.

Đưa lead TikTok về hệ thống bằng n8n là gì?

Đưa lead TikTok về hệ thống bằng n8n là dùng workflow lấy lead từ TikTok Lead Generation (tệp tải về, API tác vụ tải lead hoặc webhook LEAD), chuẩn hoá, bỏ bản trùng, ghi vào bảng khách và báo người phụ trách.

Ba cách đưa lead TikTok về n8n: Cách 1 tải tệp CSV trong Ads Manager bằng Download Lead Data, chỉ Admin, lead lưu 90 ngày; Cách 2 API tác vụ tải lead, tạo task, chờ SUCCEED, tải tệp hết hạn sau 10 phút; Cách 3 webhook LEAD gửi ít nhất một lần nên có thể trùng; n8n chuẩn hoá số điện thoại, chống trùng theo khoá, ghi bảng khách và báo Sale qua Telegram
Hình: Ba cách đưa lead TikTok về n8n (minh hoạ)

Danh mục tài liệu n8n không có node TikTok, trang tích hợp TikTok trên n8n.io cũng không tồn tại. Vì vậy cả ba cách đều dựng từ node lõi: Extract From File, HTTP Request, Webhook. Cẩn thận với node cộng đồng mang tên TikTok: đó là mã của bên thứ ba, chạy với toàn quyền trên máy chủ n8n.

Nguồn: n8n – danh mục tài liệu · n8n – HTTP Request

Chọn cách nào: bắt đầu từ tệp hoặc API tác vụ

CáchLead về sau bao lâuCần gìĐiểm cần biết
1. Tải tệp CSVTheo nhịp bạn tải (vd mỗi sáng)Quyền Admin trong Ads ManagerAds Manager chỉ lưu lead 90 ngày
2. API tác vụ tải leadTheo lịch chạy (vd mỗi giờ)App TikTok for Business, token dài hạn, quyền admin tài khoản quảng cáoTệp tải hết hạn sau 10 phút; mỗi lần lấy toàn bộ lead
3. Webhook LEADGần như ngay khi có leadNhư cách 2, cộng URL webhook công khai có HTTPSGửi ít nhất một lần, có thể trùng; định dạng dữ liệu cần tự đọc tài liệu
Lời khuyên: bắt đầu bằng Cách 1 (một tuần) để hiểu cột dữ liệu của form, rồi chuyển sang Cách 2. Chỉ dựng Cách 3 khi bạn đã đọc kỹ tài liệu Subscription của TikTok. Aduca chưa đối chiếu được định dạng dữ liệu và cách xác thực chữ ký của webhook LEAD, nên bài không đưa tên header hay mẫu dữ liệu nào cho phần này.

Nguồn: TikTok – Access leads data · TikTok – Download leads · TikTok – Create a subscription

Chuẩn bị

Nguồn: TikTok – quyền Admin · TikTok – Authentication

Cách 1: tải tệp CSV rồi để n8n nhập giúp

Trong TikTok Ads Manager: Campaigns → chọn quảng cáo Lead Generation → cột Results → Download Lead Data. Lead từ Instant Form và TikTok Direct Messages tự đồng bộ vào Ads Manager và Leads Center; lead thu trên website thì không. Sau đó, thay vì dán tay, cho n8n nhập tệp:

  1. Thêm n8n Form Trigger có một trường kiểu File. Mục Authentication chọn n8n User Auth để chỉ người đã đăng nhập n8n mới mở được form.
  2. Thêm Extract From File, thao tác Extract From CSV; ô Input Binary Field ghi đúng tên trường tệp của form.
  3. Thêm Edit Fields (Set) để đổi tên cột và chuẩn hoá số điện thoại (mẫu bên dưới).
  4. Thêm lớp chống trùng (mục sau), rồi Google Sheets thao tác Append or Update Row.
  5. Kết thúc bằng Telegram → Send Message vào nhóm Sale: "Đã nhập N lead mới".
Biểu thức trong Edit Fields (ví dụ minh hoạ)Copy rồi dán vào từng trường; thay phần trong <…> bằng tên cột thật
# Node "Edit Fields (Set)" – chế độ Manual Mapping, mỗi dòng là một trường
lead_id   = {{ $json["<tên cột mã lead trong tệp>"] }}
ho_ten    = {{ $json["<tên cột họ tên>"] }}
sdt       = {{ String($json["<tên cột SĐT>"]).replace(/\D/g, '').replace(/^84/, '0') }}   # bỏ ký tự lạ, đổi 84 thành 0
nguon     = TikTok – <tên form hoặc chiến dịch>
nhap_luc  = {{ $now.toISO() }}

Vì Ads Manager chỉ giữ lead 90 ngày, đặt lịch nhắc tải ít nhất mỗi tuần, tốt hơn là mỗi ngày.

Nguồn: TikTok – Download Lead Data · n8n – Form Trigger · n8n – Extract From File

Cách 2: API tác vụ tải lead chạy theo lịch

TikTok cho tải lead bất đồng bộ: tạo tác vụ (task) cho một page_id hoặc ad_id, hỏi lại tới khi status = SUCCEED, rồi tải tệp. Kết quả là tệp CSV (tới 10MB) hoặc zip (trên 10MB), thời gian theo UTC+0, và tệp hết hạn sau 10 phút. Chỉ admin tài khoản quảng cáo được tạo và tải.

  1. Schedule TriggerChạy mỗi giờ, múi giờ Asia/Ho_Chi_Minh
  2. HTTP RequestTạo tác vụ tải lead
  3. WaitChờ khoảng 30 giây
  4. HTTP Request + IfHỏi trạng thái; chưa SUCCEED thì quay lại Wait
  5. HTTP RequestTải tệp ngay, Response Format = File
  6. Extract From FileExtract From CSV, rồi chuẩn hoá và chống trùng như Cách 1
Workflow tải lead TikTok bằng API tác vụ (ví dụ minh hoạ).
Cấu hình node HTTP Request (ví dụ minh hoạ)Copy làm bản đối chiếu; thay phần trong <…> theo tài liệu TikTok
# Node "HTTP Request" – tạo tác vụ tải lead (Cách 2)
Method          : <theo trang "Create a lead download task">
URL             : https://business-api.tiktok.com/open_api/v1.3/page/lead/task/
Authentication  : Generic Credential Type → Header Auth
  Name          : Access-Token
  Value         : <long-term access token – chỉ nhập trong Credentials của n8n>
Tham số         : <mã tài khoản quảng cáo>, page_id hoặc ad_id – đúng tên trên trang tài liệu

# Node "HTTP Request" – tải tệp khi status = SUCCEED
URL             : https://business-api.tiktok.com/open_api/v1.3/page/lead/task/download/
Response Format : File   # nhận tệp CSV (≤ 10MB) hoặc zip (> 10MB)

Nguồn: TikTok – Create a lead download task · TikTok – Download leads · n8n – HTTP Request · n8n – Compression · n8n – Pricing

Cách 3: webhook LEAD, chỉ khi đã đọc kỹ tài liệu

TikTok có Subscription API: gửi callback_url, subscription_detail và access_token tới https://business-api.tiktok.com/open_api/v1.3/subscription/subscribe/; loại LEAD báo khi có lead mới. Đăng ký tính theo subscription_id, một page có thể nằm trong nhiều subscription. Ba điều đã kiểm tra:

Phía n8n: dùng node Webhook phương thức POST, callback_url là Production URL (chỉ có hiệu lực sau khi Publish). Đặt Respond = Immediately để trả lời ngay, xử lý sau. Giữ Path ngẫu nhiên mặc định và không chia sẻ URL.

Chưa xác minh: định dạng dữ liệu webhook LEAD và cách TikTok ký xác thực. Một thiết kế thận trọng (gợi ý của Aduca, không phải hướng dẫn chính thức): coi webhook chỉ là tín hiệu "có lead mới", rồi gọi workflow Cách 2 qua Execute Sub-workflow để lấy dữ liệu bằng API có xác thực. Như vậy dù ai đó gọi giả vào URL, bảng khách chỉ nhận dữ liệu từ API của TikTok.

Nguồn: TikTok – Create a subscription · TikTok – Create a test lead · n8n – Webhook

Chống trùng lead: ba lớp, chọn ít nhất hai

Chống trùng lead TikTok trong n8n: lead trùng đến từ webhook gửi lại, tải lại toàn bộ tệp qua API hoặc nhập CSV hai lần; đi qua khoá lead_id hoặc số điện thoại đã chuẩn hoá với ba lớp Remove Duplicates, Append or Update Row và Data table Upsert; bảng khách giữ mỗi lead một dòng, bản trùng bị bỏ, không báo Sale lần hai
Hình: Ba lớp chống trùng lead (minh hoạ)
LớpNode và cài đặtTác dụng
1. Bỏ lead đã thấyRemove Duplicates → Remove Items Processed in Previous Executions, Keep Items Where = Value Is New, Value to Dedupe On = lead_idLead đã qua ở lượt trước bị loại; mặc định nhớ 10.000 giá trị
2. Ghi theo khoáGoogle Sheets → Append or Update Row, Column to Match On = lead_id hoặc sdtCó rồi thì cập nhật, chưa có mới thêm dòng
3. Bảng đánh dấuData Table → If Row Does Not Exist hoặc UpsertGhi dấu đã xử lý, dùng chung nhiều workflow

Nguồn: n8n – Remove Duplicates · n8n – Google Sheets · n8n – Data Table

Báo Sale qua Telegram, đừng để bot tự gọi khách

Gom lead mới của mỗi lượt thành một tin (tên, số đã che bớt, form) gửi vào nhóm Sale; Telegram khuyên nhóm không quá 20 tin mỗi phút. Aduca đang vận hành nguyên tắc tương tự: chatbot trên n8n báo Sale khách nóng qua Telegram, người thật quyết định liên hệ. Thêm nút bấm "Đã nhận" để ghi người phụ trách vào bảng, xem bot Telegram nhận lệnh duyệt.

Nguồn: Telegram Bots FAQ – giới hạn gửi · n8n – Telegram

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

Lỗi thường gặp

Hiện tượngNguyên nhân thường gặpCách xử lý
Tải tệp báo hết hạnQuá 10 phút sau khi tác vụ xongTải ngay sau khi thấy SUCCEED, không đặt Wait dài ở bước này
API báo thiếu quyềnToken không thuộc admin tài khoản quảng cáo, hoặc đã bị thu hồiCấp lại token, cập nhật trong Credentials
Cột trống sau Extract From FileSai tên cột hoặc sai Input Binary FieldMở tệp mẫu, đối chiếu tên cột từng chữ
Bảng vẫn có dòng trùngKhoá khác nhau do số chưa chuẩn hoáChuẩn hoá SĐT trước Remove Duplicates và trước khi ghi
Webhook không nhận gìDùng Test URL hoặc chưa PublishĐăng ký Production URL, Publish workflow

An toàn & chính sách

Nguồn: n8n – Credentials · n8n – Community nodes risks

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

  1. Hôm nay: tải một tệp lead, dựng workflow Cách 1, thử nhập hai lần để kiểm tra chống trùng.
  2. Tuần này: xin token, dựng Cách 2 chạy mỗi giờ, so số lead với Ads Manager.
  3. Khi cần nhanh hơn: đọc tài liệu Subscription, thêm webhook làm tín hiệu cho Cách 2.

Bài tiếp theo: Google Sheets làm CRM: thêm, cập nhật, tra cứu.

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: Google Sheets làm CRM →

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

n8n có node TikTok để lấy lead không?

Tại thời điểm kiểm tra (10/2026), danh mục tài liệu n8n không có node TikTok. Cách làm là dùng các node có sẵn: Extract From File để đọc tệp CSV, HTTP Request để gọi TikTok API for Business và Webhook để nhận thông báo.

Lead TikTok lưu trong Ads Manager bao lâu?

Trang trợ giúp của TikTok ghi Ads Manager chỉ lưu lead 90 ngày, và chỉ người có quyền Admin mới tải và quản lý lead. Vì vậy dù chọn cách nào, hãy đưa lead về bảng khách của bạn đều đặn, đừng để quá hạn.

Vì sao bài không hướng dẫn kiểm tra chữ ký webhook của TikTok?

Vì Aduca chưa đối chiếu được trang tài liệu chi tiết về định dạng dữ liệu và cách xác thực webhook LEAD. Bài chỉ nêu điều đã kiểm tra: TikTok gửi theo kiểu ít nhất một lần nên có thể trùng. Trước khi dùng webhook, hãy đọc tài liệu Subscription của TikTok; nếu chưa rõ, dùng cách tải tệp hoặc API tác vụ.

Lead tải bằng API có cả lead cũ không?

Có. Tác vụ tải lấy toàn bộ lead của một page_id hoặc ad_id, nên mỗi lần chạy sẽ gặp lại lead đã nhập. Lớp chống trùng theo mã lead hoặc số điện thoại đã chuẩn hoá là bắt buộc.

Có nên nhắn tin, gọi điện cho lead ngay khi về bảng không?

Nên liên hệ sớm trong giờ phù hợp, theo đúng nội dung khách đã đăng ký. Với cuộc gọi, tin nhắn SMS, email mang tính quảng cáo, Nghị định 91/2020 yêu cầu đồng ý trước và giới hạn số lần trong 24 giờ; khung giờ bắt buộc áp cho tin nhắn (7h–22h) và cuộc gọi (8h–17h), email nên theo cùng tinh thần. Xem thêm bài bám đuổi khách đúng chính sách.

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.