Mở đầu — vì sao bài này quan trọng
Ở bài trước bạn đã build zap đầu tiên trên Zapier — nhanh, gọn, thân thiện với người mới. Nhưng khi công việc thật sự phức tạp lên, bạn sẽ nhanh chóng chạm trần: một zap chỉ đi thẳng một mạch từ trigger đến action, và mỗi khi dữ liệu là một danh sách (10 dòng đơn hàng, 20 email, 50 sản phẩm) thì Zapier bắt đầu trở nên vụng về và tốn task. Đây chính là lúc Make.com (tên cũ là Integromat) toả sáng.
Make là công cụ automation mạnh thứ hai mà mọi PM, BA, marketer và founder Việt Nam nên nắm. Điểm khác biệt lớn nhất: Make cho bạn nhìn thấy luồng dữ liệu. Thay vì một danh sách bước dọc như Zapier, Make vẽ ra một sơ đồ (scenario) với các module tròn nối với nhau bằng đường dây. Bạn thấy rõ dữ liệu đi đâu, rẽ nhánh ở đâu, lặp ở đâu. Và quan trọng hơn cả, Make xử lý mảng (array) — thứ mà công việc thật luôn đầy rẫy — một cách tự nhiên qua hai công cụ trứ danh: Iterator và Aggregator.
Bài này không phải để bạn bỏ Zapier. Nó để bạn biết khi nào nên chuyển sang Make, và biết cách tư duy theo kiểu "luồng dữ liệu trực quan" — một kỹ năng sẽ theo bạn suốt sự nghiệp automation.
Khái niệm cốt lõi
Scenario — bức tranh luồng dữ liệu
Trong Make, một quy trình tự động được gọi là scenario (tương đương "zap" bên Zapier). Nhưng thay vì trình bày dạng danh sách, scenario là một canvas — một mặt phẳng để bạn kéo thả các module hình tròn và nối chúng lại. Module đầu tiên bên trái là trigger (kích hoạt), các module tiếp theo là action (hành động).
Cái hay của canvas là bạn đọc được cả quy trình chỉ trong một cái liếc mắt: dữ liệu chảy từ trái sang phải, chỗ nào rẽ hai nhánh, chỗ nào gom lại. Với quy trình 15–20 bước, đây là khác biệt sống còn — bạn sẽ không bao giờ hiểu nổi một zap 20 bước xếp dọc, nhưng một scenario 20 module có sơ đồ thì đọc như đọc bản đồ.
Module, bundle và operation
Ba thuật ngữ bạn phải phân biệt rõ, vì chúng liên quan trực tiếp đến tiền bạc:
- Module: một khối chức năng (ví dụ "Watch new rows in Google Sheets", "Send a message in Slack").
- Bundle: một "gói dữ liệu" chạy qua module. Nếu trigger trả về 5 email mới, đó là 5 bundle.
- Operation: mỗi lần một module xử lý một bundle = 1 operation. Make tính phí theo operation, không phải theo scenario. Đây là điểm khác cốt lõi so với Zapier (vốn tính theo "task").
Router — rẽ nhánh có điều kiện
Router là module tách luồng thành nhiều nhánh song song. Mỗi nhánh có thể gắn một filter (bộ lọc) với điều kiện riêng. Ví dụ: đơn hàng > 5 triệu đi nhánh "báo sếp qua Telegram", đơn hàng ≤ 5 triệu đi nhánh "ghi log âm thầm". Zapier có Paths nhưng giới hạn số nhánh và chỉ có ở gói đắt; Router của Make miễn phí và không giới hạn nhánh.
Iterator — bẻ mảng thành từng phần tử
Đây là ngôi sao đầu tiên. Iterator nhận một mảng (array) và "xé" nó ra thành từng bundle riêng lẻ để các module phía sau xử lý lần lượt.
Hình dung: một webhook gửi về đơn hàng có 8 sản phẩm trong mảng line_items. Bình thường bạn chỉ chạm được sản phẩm đầu tiên. Cho mảng đó qua Iterator, nó biến thành 8 bundle — và mọi module phía sau sẽ chạy 8 lần, mỗi lần cho một sản phẩm. Đây chính là thứ Zapier làm rất tệ (bạn phải dùng "Looping by Zapier" cồng kềnh, giới hạn, và tốn task khủng khiếp).
Aggregator — gom nhiều phần tử thành một
Ngôi sao thứ hai, và là cặp bài trùng của Iterator. Aggregator làm điều ngược lại: gom nhiều bundle thành một. Có nhiều loại:
- Array Aggregator: gom lại thành một mảng.
- Text Aggregator: nối các phần tử thành một chuỗi văn bản (ví dụ gộp 8 dòng sản phẩm thành một đoạn text cho email).
- Numeric Aggregator: cộng/trung bình các số (ví dụ tính tổng tiền 8 sản phẩm).
Data store và error handling
Make còn có Data store (một cơ sở dữ liệu mini ngay trong Make để lưu trạng thái giữa các lần chạy) và cơ chế error handler cho phép gắn nhánh xử lý lỗi (retry, rollback, ignore) vào từng module. Đây là những thứ giúp scenario của bạn "sống sót" trong môi trường thật, khi API bên thứ ba thi thoảng lỗi.
Tình huống thực tế
Ví dụ 1 — Cửa hàng mỹ phẩm online tự động hoá xử lý đơn hàng
Chị Ngọc điều hành một shop mỹ phẩm nhỏ ở TP.HCM, bán qua website và nhận đơn qua form. Mỗi đơn thường có 3–6 sản phẩm. Trước đây chị dùng Zapier để gửi đơn vào Google Sheets, nhưng Zapier chỉ ghi được sản phẩm đầu tiên của mỗi đơn — các sản phẩm còn lại bị mất. Chị phải copy tay, mỗi ngày mất khoảng 90 phút cho 40–50 đơn.
Chuyển sang Make, chị dựng scenario: Webhook nhận đơn → Iterator xé mảng products → module Google Sheets "Add a row" (chạy một lần cho mỗi sản phẩm) → cuối luồng dùng Numeric Aggregator tính tổng tiền đơn → gửi Telegram cho chị. Kết quả: mỗi sản phẩm giờ nằm đúng một dòng riêng trong Sheets, tổng tiền tính tự động, và Telegram báo ngay khi có đơn lớn. Thời gian thủ công từ 90 phút xuống gần như bằng 0.
Bài học: khi dữ liệu của bạn là danh sách lồng trong một bản ghi (sản phẩm trong đơn, người tham dự trong sự kiện, dòng trong hoá đơn), Iterator là công cụ bắt buộc — và đây chính là ranh giới rõ nhất để chọn Make thay Zapier.
Ví dụ 2 — Agency marketing tổng hợp báo cáo tuần từ nhiều nguồn
Một agency ở Hà Nội quản lý fanpage và quảng cáo cho 12 khách hàng. Mỗi thứ Hai, account manager phải gom số liệu từ Facebook, Google Ads và Google Analytics của từng khách, rồi soạn một email tóm tắt. Việc này ngốn của mỗi bạn account khoảng 3 giờ.
Họ dựng scenario Make chạy tự động 8h sáng thứ Hai: lấy danh sách 12 khách từ một Google Sheet → Iterator duyệt từng khách → với mỗi khách gọi API lấy số liệu → dùng Text Aggregator để nối các dòng số liệu thành một đoạn văn bản gọn (kiểu "Khách A: reach 45k, chi phí 3.2tr, CPC 1.8k") → gửi qua module GPT để viết một câu nhận xét ngắn → cuối cùng gửi email cho account. Toàn bộ chạy trong 4 phút, không cần ai động tay.
Bài học: cặp Iterator + Aggregator không chỉ để xử lý một bản ghi, mà để duyệt qua một danh sách nhiều thực thể rồi gom kết quả lại thành một output duy nhất. Đây là khuôn mẫu cho mọi báo cáo định kỳ multi-source.
Ví dụ 3 — Startup SaaS đồng bộ khách hàng có xử lý lỗi
Một startup SaaS ở Singapore đồng bộ khách hàng mới từ Stripe sang cả HubSpot (CRM) lẫn hệ thống nội bộ. Vấn đề: thi thoảng API HubSpot bị rate-limit và trả lỗi 429, khiến bản ghi bị mất mà không ai biết.
Trên Make, họ gắn error handler vào module HubSpot với chiến lược "retry 3 lần, mỗi lần cách 2 phút", và nếu vẫn lỗi thì đẩy bản ghi vào một Data store để xử lý lại sau. Router tách thêm nhánh: khách trả > $500/tháng thì báo ngay cho đội sales qua Slack. Từ khi triển khai, tỉ lệ mất dữ liệu về 0 và đội sales phản hồi khách lớn nhanh hơn hẳn.
Bài học: automation thật không chỉ cần "chạy được lúc mọi thứ ổn", mà cần sống sót khi có lỗi. Error handler + Data store của Make cho bạn mức kiểm soát mà các công cụ no-code khác thường thiếu.
Hướng dẫn từng bước
Ta sẽ dựng lại scenario của Ví dụ 1 (xử lý đơn hàng nhiều sản phẩm) để bạn thực hành khuôn mẫu Iterator → Aggregator.
- Tạo tài khoản và scenario mới. Vào make.com, đăng ký gói Free (1.000 operation/tháng, đủ để học). Bấm Create a new scenario.
- Thêm trigger. Kéo module Webhooks → Custom webhook vào canvas. Bấm Add, đặt tên (ví dụ "don-hang"), Make sinh cho bạn một URL. Copy URL này.
- Gửi dữ liệu mẫu. Dùng một công cụ như Postman hoặc form test để POST một đơn hàng mẫu chứa mảng
products(mỗi phần tử cóname,price,qty) vào URL webhook. Make sẽ "học" cấu trúc dữ liệu — bước này gọi là determine data structure.
- Thêm Iterator. Bấm dấu cộng nối tiếp module webhook, tìm Flow Control → Iterator. Trong ô "Array", chọn
productstừ dữ liệu webhook. Từ đây, mọi module phía sau sẽ chạy một lần cho mỗi sản phẩm.
- Thêm action ghi từng sản phẩm. Nối tiếp Google Sheets → Add a row. Map các cột: tên sản phẩm, giá, số lượng lấy từ output của Iterator (không phải từ webhook gốc). Đây là chỗ người mới hay nhầm.
- Thêm Aggregator để tính tổng. Sau Iterator, thêm Numeric Aggregator, chọn nguồn là Iterator, và đặt công thức tính
price * qtyđể cộng dồn thành tổng đơn. Lưu ý: Aggregator phải trỏ đúng về Iterator làm "source module".
- Thêm thông báo. Nối Telegram → Send a message, soạn nội dung dùng kết quả tổng tiền từ Aggregator: "Đơn mới, tổng {{tong_tien}}đ".
- Chạy thử và lên lịch. Bấm Run once để test với một đơn thật. Khi ổn, bật Scheduling (ví dụ chạy tức thì khi có webhook, hoặc theo lịch). Đừng quên bấm nút bật scenario ở góc dưới.
Lỗi thường gặp & mẹo
- Nhầm nguồn dữ liệu sau Iterator. Sau khi có Iterator, các module phía sau phải map dữ liệu từ output của Iterator, không phải từ trigger gốc. Nếu bạn thấy chỉ sản phẩm đầu tiên được xử lý, gần như chắc chắn bạn đã map nhầm nguồn.
- Aggregator trỏ sai "source module". Aggregator yêu cầu bạn chọn nó gom dữ liệu từ module nào. Chọn sai (ví dụ trỏ về webhook thay vì Iterator) sẽ khiến kết quả gom bị rỗng hoặc chỉ một phần tử.
- Đốt operation vì test nhiều. Mỗi lần "Run once" trên mảng lớn tốn nhiều operation. Khi đang debug, hãy test với dữ liệu mẫu nhỏ (2–3 phần tử) rồi mới chạy full.
- Quên bật scenario. Rất nhiều người dựng xong, test "Run once" thấy chạy, rồi tắt tab — nhưng không bật công tắc scheduling. Scenario chỉ tự chạy khi bạn bật nút ON ở góc dưới trái.
- Không gắn error handler. Với scenario chạy production, hãy chuột phải vào module quan trọng → Add error handler và chọn chiến lược (thường là "Retry" cho lỗi mạng tạm thời). Điều này biến scenario "mong manh" thành "đáng tin cậy".
- Mẹo tối ưu chi phí: gộp nhiều thao tác vào ít module hơn, dùng filter để lọc sớm (loại bỏ bundle không cần trước khi chúng đi qua các module tốn operation), và tắt các scenario test khi không dùng.
- Mẹo đọc luồng: dùng tính năng "note" (ghi chú) dán lên canvas để giải thích từng cụm module — cực kỳ hữu ích khi bàn giao cho đồng nghiệp.
Bài tập thực hành
Bài 1 (cơ bản): Tạo tài khoản Make Free. Dựng scenario với Webhook trigger nhận một mảng 3 tên, cho qua Iterator, và ghi mỗi tên thành một dòng trong Google Sheets. Mục tiêu: hiểu Iterator xé mảng ra sao.
Bài 2 (trung bình): Mở rộng bài 1: thêm Text Aggregator để gom 3 tên thành một chuỗi "A, B, C" và gửi chuỗi đó qua Telegram hoặc email cho chính bạn. Mục tiêu: nắm cặp Iterator → Aggregator.
Bài 3 (nâng cao): Dựng scenario tổng hợp báo cáo: đọc một Google Sheet chứa 5 "khách hàng" (mỗi dòng có tên và một con số doanh thu), dùng Iterator duyệt từng khách, dùng Router tách nhánh (doanh thu > 10tr báo Telegram, còn lại chỉ ghi log), và dùng Numeric Aggregator tính tổng doanh thu cả 5 khách gửi vào cuối. Gắn thêm một error handler "Retry" vào module gửi Telegram. Mục tiêu: kết hợp Iterator, Router, Aggregator và error handling — đúng bộ kỹ năng cốt lõi của Make.
Tóm tắt
Make.com là bước tiến hoá tự nhiên khi automation của bạn vượt khỏi những luồng thẳng đơn giản. Ba điều cần khắc cốt ghi tâm:
- Scenario trực quan cho bạn nhìn thấy toàn bộ luồng dữ liệu, rẽ nhánh và gom lại — vô giá khi quy trình phức tạp.
- Iterator + Aggregator là cặp bài trùng để xử lý mảng: xé danh sách ra xử lý từng phần, rồi gom lại thành một kết quả. Đây là năng lực Zapier yếu nhất và là lý do chính để chọn Make.
- Router, error handler và Data store biến automation từ "chạy được" thành "đáng tin cậy trong môi trường thật".