| Chạy | Campaign | Chi tiêu (USD) | Actual rev | D0 rev | D0 ROAS | % Profit | |
|---|---|---|---|---|---|---|---|
| Chạy | Campaign | Chi tiêu (USD) | Actual rev | D0 rev | D0 ROAS | % Profit | |
|---|---|---|---|---|---|---|---|
| Network | Account | Campaign | Chi tiêu | Actual rev | D0 rev | D0 ROAS | % Profit | Lãi / lỗ | Installs | CPI |
|---|---|---|---|---|---|---|---|---|---|---|
| App | Campaign | Chi tiêu | Actual rev | D0 rev | D0 ROAS | % Profit | Lãi / lỗ | Installs | CPI |
|---|---|---|---|---|---|---|---|---|---|
| Account | Campaign | Chi tiêu | Actual rev | D0 rev | D0 ROAS | % Profit | Lãi / lỗ | Cập nhật |
|---|---|---|---|---|---|---|---|---|
| Campaign | Account | Budget | Chi tiêu | Actual rev | D0 rev | D0 ROAS | % Profit | Lãi / lỗ | ROI trong ngày | Installs | CPI |
|---|
Camp mới tạo theo Upgraded Smart+ — TikTok ngừng cho tạo camp App Promotion kiểu cũ qua API từ 01/01/2027. Camp tạo ra mặc định Tắt để bạn duyệt lại trước khi chạy.
Ngân sách đặt ở từng ad group.
Dùng ngân sách campaign (CBO).
Dùng cho file lớn hơn 95MB hoặc video đang nằm trên Google Drive / Dropbox / CDN: dán link tải trực tiếp (https, mở ra là tải được file), TikTok tự lấy về.
Mọi lần TikTok từ chối khi tạo / sửa / tải lên (độ tuổi, quốc gia, vị trí, ngôn ngữ, ngân sách, creative…) được ghi ở đây kèm cấu hình lúc gửi và gợi ý xử lý.
| Thời gian | Tài khoản | Bước | Lỗi TikTok | Cấu hình gửi |
|---|
| Thời gian | Campaign mới | Từ campaign | Tài khoản nguồn → đích | Người tạo | Kết quả |
|---|
Dùng ngân sách campaign (CBO).
Video lớn hơn 95MB hoặc nằm trên Drive / Dropbox / CDN: dán link tải trực tiếp (https), Meta tự lấy về.
| Thời gian | Campaign mới | Từ campaign | Tài khoản nguồn → đích | Người tạo · system user | Kết quả |
|---|
Cập nhật liên tục: mọi lần Meta từ chối (tạo / sửa / tải lên / đọc), đổi system user, system user bị khoá, tài khoản chạm giới hạn API, kiểm tra chưa đạt và tạo camp thất bại — kèm system user đã dùng, cấu hình gửi và gợi ý xử lý. Lỗi mới hiện thông báo góc màn hình kể cả khi đang ở màn khác.
| Thời gian | Tài khoản · system user | Bước | Lỗi Meta | Cấu hình gửi |
|---|
Template = cấu hình ở tab Tạo mới (app, mục tiêu, giá thầu, ngân sách, Page, nội dung, tuổi, vị trí…) — điền ở Tạo mới rồi bấm Lưu làm template.
Mỗi creative 1 campaign · 1 ad set · 1 ad. Mặc định nhắm toàn cầu, mọi ngôn ngữ — đổi vị trí / ngôn ngữ cho từng creative ở bảng bên dưới.
Ký hiệu: {prefix} phần đầu · {creative} tên file creative · {lang} ngôn ngữ · {geo} vị trí (WW / US+CA…) · {n} số thứ tự · {date} ngày (ddmm). Tên trùng tự thêm _2, _3…
| Creative | Ngôn ngữ | Vị trí / đối tượng | Tên campaign | Trạng thái |
|---|
Quyền đi theo app: user dùng được mọi ad account đang có campaign của app đó (hôm nay / hôm qua, theo ghép AppsFlyer) + tài khoản gán tay cho app ở tab "Tài khoản theo app" (tài khoản mới chưa chạy app). Campaign chuyển account thì quyền tự nhảy theo, không cần gán lại.
Quyền user đi theo app: tool tự nhận các ad account đang có campaign của app (hôm qua / hôm nay, theo ghép AppsFlyer). Tài khoản mới chưa chạy app đó thì gán tay ở đây — mọi user được gán app sẽ thấy tài khoản ngay, không cần đợi có campaign.
Số liệu AppsFlyer lấy từ Cohort API, theo từng ad account khi người dùng bấm nút —
không lưu trữ, không chạy nền. Campaign Meta khớp qua grouping af_c_id, và
toàn bộ campaign ID đi trong body POST nên không vướng giới hạn độ dài URL.
Token được mã hoá trước khi lưu và không bao giờ trả về giao diện.
Mỗi 30 phút gửi trạng thái (chi tiêu, D0, ROAS hôm nay, top app) lên kênh Discord. Tạo webhook: Discord → Cài đặt kênh → Tích hợp → Webhook → Sao chép URL.
Múi giờ báo cáo AppsFlyer là số quan trọng nhất ở đây. AppsFlyer chỉ có một múi giờ cho mỗi app, còn mỗi ad account Meta một múi giờ khác nhau. Khai đúng số này thì tool sẽ dựng lại chi tiêu Meta theo từng giờ và cắt đúng 24 giờ thuộc ngày của AppsFlyer, nên % Profit so được. Khai sai thì mọi con số đều lệch.
Độ trễ AppsFlyer: chi tiêu Meta gần như realtime, còn doanh thu AppsFlyer chậm khoảng 1 giờ. Mỗi 30 phút tool lấy chi tiêu Meta rồi chụp doanh thu luỹ kế ngay sau đó; doanh thu từng giờ là chênh lệch giữa các lần chụp. Chi tiêu và doanh thu luôn được cắt cùng một mốc (= lần chụp gần nhất − độ trễ), và mốc này hiện trên thanh công cụ. Thấy giờ cuối vẫn hụt thì tăng lên 2. Số chi tiết chỉ giữ hôm nay và hôm qua, cũ hơn tự xoá.
Mọi thao tác ghi đều được ghi lại: đăng nhập, bật/tắt campaign, sửa budget, thay đổi user và BM. Nhật ký lưu trong database, không mất khi Worker restart.
Kết nối Google Ads: mỗi kết nối là một MCC — qua Tevo API Hub (MCC ID + API key, không cần đăng nhập Google) hoặc qua Google OAuth (Client ID, Client Secret, MCC ID rồi đăng nhập tài khoản Google có quyền vào MCC). Thêm bao nhiêu kết nối cũng được — tool lấy toàn bộ tài khoản con của mọi MCC, số theo giờ (30 phút/lần — giữ trong hạn mức API mức Explorer), cho bật/tắt campaign và sửa budget ngày. Client Secret và quyền truy cập được mã hoá trước khi lưu, không bao giờ trả về giao diện. Google đã bỏ developer token từ 09/2026 — quyền gọi API theo dự án Google Cloud của từng OAuth client.
Nhập tên miền (tool tự thêm /api/public/v1) hoặc cả đường dẫn gốc nếu hub dùng đường dẫn khác, vd https://hub2.example.com/gads/api/public/v1.
MCC khai trong kết nối luôn được lấy. Có thể tick thêm MCC khác mà các tài khoản Google đã đăng nhập thấy được.
Kéo chi tiêu theo giờ của Unity Ads và Mintegral vào chung nhịp 30 phút, ghép doanh thu AppsFlyer theo campaign
(unityads_int theo ID campaign, mintegral_int theo tên offer). Chỉ xem số — bật/tắt, sửa budget làm trên dashboard của network.
Khoá được mã hoá trước khi lưu và không trả lại giao diện. Để trống ô khoá khi sửa thì giữ khoá cũ.
Kết nối TikTok Marketing API: mỗi lần bấm Kết nối, một người (nên là admin Business Center) đăng nhập TikTok và uỷ quyền — tool lấy mọi tài khoản quảng cáo người đó thấy, gồm toàn bộ tài khoản trong mọi Business Center. Kết nối thêm người khác để gộp thêm Business Center. Số theo giờ 30 phút/lần; bật/tắt campaign, sửa budget. Secret và quyền truy cập được mã hoá trước khi lưu.
System user dùng để lên camp Meta — tách riêng với token lấy số ở tab Business Manager. Mỗi BM thêm được nhiều system user; khi một system user bị khoá tạm / hết hạn / chạm giới hạn, tool tự chuyển sang system user khác và ghi vào Nhật ký Meta. Kiểm tra sức khoẻ tự chạy mỗi giờ.
Tạo trong Business Settings → Người dùng → System users → Thêm. Giao tài sản cho từng system user: Tài khoản quảng cáo (Quản lý chiến dịch),
Trang (Tạo quảng cáo), Ứng dụng (Quảng cáo), Tài khoản Instagram (Tạo quảng cáo, nếu chạy IG). Tạo token với quyền ads_management, ads_read, business_management,
pages_show_list, pages_read_engagement, pages_manage_ads, instagram_basic, chọn "Không bao giờ hết hạn".
Token được mã hoá trước khi lưu và không bao giờ trả về giao diện.
| System user | BM | Trạng thái | Ad account | Lượt dùng | Lần cuối |
|---|
Mọi system user cùng một app Meta dùng chung quota cấp app (200 × số người dùng / giờ — Full access không nâng mức này). Tool đo % quota Meta báo về và số lệnh gọi tool đã gửi để ước sức chứa của app, chi phí trung bình 1 thao tác, rồi đề xuất mỗi người làm tối đa bao nhiêu thao tác / giờ. Thao tác = lên 1 camp, tải media, bật / tắt, sửa hàng loạt.
Dùng một service account của Google Cloud để đọc thư mục creative: 1) Tạo project → bật Google Drive API (APIs & Services → Library); 2) IAM & Admin → Service Accounts → Create (không cần gán role); 3) mở service account → Keys → Add key → JSON → tải file; 4) dán nội dung file vào ô dưới → Lưu. Sau đó mỗi thư mục creative: Drive → Chia sẻ → mời email service account (quyền Người xem). Shared drive: thêm email đó làm thành viên. Khoá được mã hoá, không trả về giao diện.
Token (system user hoặc token cá nhân 60 ngày) được mã hoá trước khi ghi vào database và không bao giờ trả về giao diện. Dùng token cá nhân thì để trống ô Business Manager ID. Sửa BM mà để trống ô token thì token cũ giữ nguyên.
Mỗi 30 phút quét mọi ad account Meta đang hoạt động, tìm ad có trạng thái DISAPPROVED (bị từ chối) và xoá
(đặt status = DELETED). Xoá trên Meta không hoàn tác được — nên chạy "Chỉ báo" một lượt để xem danh sách trước.
Mỗi ad tìm thấy / đã xoá được ghi nhật ký bên dưới và gửi lên webhook Discord riêng (không gửi chung kênh AppsFlyer). Token BM cần quyền ads_management.
| Lúc | Account | Ad | Lý do | Kết quả |
|---|
Mỗi 15 phút đọc trạng thái mọi ad account Meta. Tài khoản bị khoá / đang xét → cảnh báo Discord kèm lý do. Tài khoản hoạt động trở lại (kháng về) → tự tắt mọi campaign đang bật trên tài khoản đó (campaign còn bật từ trước khi bị khoá sẽ tiêu tiền ngay khi tài khoản sống lại), bằng system user lên camp, lỗi thì dùng token lấy số; báo Discord kết quả và campaign nào không tắt được. Lần chạy đầu chỉ ghi mốc trạng thái, không báo.
| Tài khoản | Trạng thái | Đổi lúc | Trước đó | Xử lý |
|---|
Mỗi 30 phút, với mọi tài khoản Meta có chi tiêu hôm nay: lấy app (Meta for Developers) của các campaign đang chạy và danh sách app quảng cáo được của tài khoản (token BM). App không còn trong danh sách của mọi tài khoản đang chạy nó là bị vô hiệu — campaign vẫn chạy, vẫn tiêu tiền nhưng không ghi nhận install / sự kiện → cảnh báo Discord gộp theo app (chạy ở tài khoản nào, campaign nào), cảnh báo trên Ads Manager, và (nếu bật) tắt mọi campaign của app đó ở mọi tài khoản bằng quyền BM. App có lại trong danh sách → báo.
| App | Trạng thái | Tài khoản · campaign đang chạy | Đổi lúc | Xử lý |
|---|