Biểu mẫu
Form chỉ hỏi điều cần để gọi lại, báo lỗi ngay tại ô sai, và chỉ nhận một lần dù khách bấm hai lần.
Kết nối website với dữ liệu và công cụ doanh nghiệp đang dùng.
ONMATE tích hợp biểu mẫu, CRM, thanh toán hoặc phần mềm vận hành theo nhu cầu. Luồng dữ liệu được kiểm thử về phân quyền, bản ghi trùng và xử lý lỗi để đội ngũ giảm nhập liệu thủ công và dễ theo dõi.
Một đợt tích hợp đi qua nhiều chặng, từ biểu mẫu đến giám sát. Chọn một chặng để xem việc ở đó.
Form chỉ hỏi điều cần để gọi lại, báo lỗi ngay tại ô sai, và chỉ nhận một lần dù khách bấm hai lần.
Mỗi lượt gửi thành một khách trong CRM: ghép trường, chuẩn hóa số điện thoại, nhận ra khách cũ, chia người gọi.
Sự kiện generate_lead chỉ gửi sau khi máy chủ nhận form, kèm nguồn từ utm, và được thử bằng DebugView trước khi xuất bản.
Thông báo thanh toán được kiểm chữ ký, bỏ qua nếu đã xử lý, so số tiền với đơn rồi mới đổi trạng thái.
Đơn sang phần mềm bán hàng kèm khóa riêng, tồn kho về mỗi 15 phút. Lỗi tạm thời thử lại, rồi vào hàng chờ.
Bảng theo dõi 7 ngày, cảnh báo có điều kiện rõ, nhắc thay khóa ở mốc 60 và 30 ngày, báo cáo hằng tuần.
Sáu chặng quay quanh một điểm. Chọn một chặng để đọc chi tiết.
Mỗi phần việc có màn hình làm việc, đầu vào và cách đo riêng.
Chạm vào một thẻ để đổi nội dung bên dưới.
Đang xemForm ngắn, báo lỗi rõBa màn hình: cấu hình trong WordPress, form lúc nhập và gửi xong, yêu cầu trong DevTools.
Bảy trường: họ tên, số điện thoại, email, nhu cầu, ghi chú, đồng ý liên hệ, nguồn khách. Mỗi trường có loại ô và quy tắc riêng.
Số điện thoại đủ 10 chữ số, bắt đầu bằng 0; ô đồng ý phải chọn mới gửi được; nguồn khách là ô ẩn tự điền.
| Nhãn | Loại | Bắt buộc | Quy tắc kiểm tra |
|---|---|---|---|
| Họ và tên | Văn bản | Có | Từ 2 ký tự |
| Số điện thoại | Số điện thoại | Có | 10 chữ số, bắt đầu bằng 01 |
| Không | Đúng dạng tên@miền | ||
| Nhu cầu | Danh sách chọn | Có | 4 lựa chọn có sẵn |
| Ghi chú | Đoạn văn | Không | Tối đa 500 ký tự |
| Đồng ý liên hệ | Hộp chọn | Có | Phải chọn mới gửi được2 |
| Nguồn khách | Ô ẩn | Tự điền | Lấy từ địa chỉ trang (utm)3 |
Ô bẫy chống thư rác đang bật. Form chỉ gửi khi mọi quy tắc trên đạt, và máy chủ kiểm tra lại một lần nữa.
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Trái: ô số điện thoại viền đỏ, nói rõ cần sửa gì; ô khác giữ chữ đã nhập. Phải: xác nhận, giờ gọi lại, mã yêu cầu.
Báo lỗi bằng chữ ngay tại ô, không chỉ đổi màu, như WCAG yêu cầu. Màn xác nhận nói đã nhận và bao giờ gọi lại.
Trang chủ›Quà tân gia›Nhận tư vấn
Khi nhập chưa đúngChưa gửi
Tôi đồng ý để Nhà Thơm liên hệ lại về yêu cầu này.2
Gửi yêu cầuKhi gửi xongĐã nhận
Đã nhận yêu cầu của bạn3Nhà Thơm sẽ gọi lại trong giờ làm việc (8:30 đến 17:30). Mã yêu cầu: NT-1005-0912.
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Yêu cầu POST trả 201 Created sau 212 ms. Dữ liệu gồm thông tin khách, đồng ý liên hệ, utm và submission_id; không có khóa CRM.
Tab Mạng cho thấy form gửi gì, máy chủ trả mã nào. Thấy khóa CRM ở đây là khóa đang lộ; khóa chỉ nằm ở máy chủ.
Dữ liệu yêu cầu2
1{2"name": "Nguyễn Văn An",3"phone": "0900000000",4"need": "qua-tan-gia",5"note": "Khoảng 3 hộp, cần trước 15/10",6"consent": true,7"utm_source": "google",8"utm_medium": "cpc",9"utm_campaign": "qua-tan-gia",10"page": "/qua-tan-gia",11"submission_id": "f-0912-7c1e"12}
Không có khóa của CRM trong yêu cầu này. Khóa nằm ở máy chủ và chỉ máy chủ mới gửi tiếp sang CRM.3
3 yêu cầu · yêu cầu lead hoàn tất sau 212 ms
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tài liệu tham khảo:web.dev: kiểm tra dữ liệu biểu mẫu ↗W3C WCAG 2.2: nhận biết lỗi nhập liệu ↗MDN: mã trạng thái HTTP ↗
Hỏi ít, kiểm tra kỹ, báo lỗi rõ; thử làm sai trước khi bật.
Tài liệu tham khảo:web.dev: kiểm tra dữ liệu biểu mẫu ↗MDN: ô nhập số điện thoại (type=tel) ↗MDN: thuộc tính inputmode ↗MDN: thuộc tính autocomplete ↗
Cần câu khách hay hỏi, người nhận yêu cầu, câu đồng ý đang dùng.
Bảng thiết kế trường: mỗi trường một dòng, ghi loại ô, bắt buộc hay không, quy tắc kiểm tra và trường CRM tương ứng.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Trường | Loại | Bắt buộc | Quy tắc kiểm tra | Trường trong CRM |
| 2 | name | Văn bản | Có | Từ 2 ký tự | Họ và tên |
| 3 | phone | Số điện thoại | Có | 10 chữ số, bắt đầu bằng 01 | Điện thoại (khóa chống trùng) |
| 4 | Không | Đúng dạng tên@miền | |||
| 5 | need | Danh sách chọn | Có | 4 lựa chọn có sẵn | Nhu cầu |
| 6 | note | Đoạn văn | Không | Tối đa 500 ký tự | Ghi chú |
| 7 | consent | Hộp chọn | Có2 | Phải chọn mới gửi được | Đồng ý liên hệ |
| 8 | utm_source, utm_medium | Ô ẩn | Tự điền | Lấy từ địa chỉ trang | Nguồn khách3 |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tài liệu tham khảo:web.dev: kiểm tra dữ liệu biểu mẫu ↗W3C WAI: kiểm tra dữ liệu biểu mẫu ↗W3C WCAG 2.2: nhận biết lỗi nhập liệu ↗OWASP: kiểm tra dữ liệu đầu vào ↗
Trước khi bật, thử 8 tình huống bằng tay, ghi vào bảng. Sửa form thì thử lại.
Ca “Không chọn đồng ý” lần đầu vẫn gửi đi; điền đúng thì không lộ.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | # | Cách thử | Mong đợi | Kết quả thật | Tình trạng |
| 2 | 1 | Gửi đủ thông tin đúng | Báo đã nhận; khách vào CRM trong 1 phút | Đúng như mong đợi | Đạt |
| 3 | 2 | Bỏ trống số điện thoại | Báo lỗi tại ô, không gửi | Đúng như mong đợi | Đạt |
| 4 | 3 | Nhập số điện thoại 9 chữ số | Báo lỗi tại ô, không gửi | Đúng như mong đợi | Đạt |
| 5 | 4 | Không chọn đồng ý liên hệ | Không gửi được | Form vẫn gửi đi1 | Đã sửa 06/102 |
| 6 | 5 | Bấm Gửi hai lần liên tiếp | Chỉ có 1 khách trong CRM3 | Đúng như mong đợi | Đạt |
| 7 | 6 | Gửi lại cùng số điện thoại | Gộp vào khách cũ | Đúng như mong đợi | Đạt |
| 8 | 7 | Tắt mạng rồi bấm Gửi | Báo chưa gửi được, giữ chữ đã nhập | Đúng như mong đợi | Đạt |
| 9 | 8 | Mở bằng điện thoại Android | Hiện bàn phím số ở ô số điện thoại | Đúng như mong đợi | Đạt |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
| Chỉ số | Cho biết | Cần xem lại khi |
|---|---|---|
| Ca gửi đúng | Báo đã nhận, khách vào CRM trong 1 phút | Chỉ thấy thông báo mà không mở CRM |
| Ca làm sai (bỏ trống, thiếu số) | Báo lỗi tại ô và không gửi | Gửi đi rồi mới báo lỗi |
| Ca bấm Gửi hai lần | Chỉ một khách trong CRM | Hai khách trùng nhau |
| Ca tắt mạng | Giữ chữ đã nhập, báo chưa gửi được | Mất hết chữ đã nhập |
Đọc ba cột: cách thử, mong đợi, kết quả thật.
Dòng nào lệch thì sửa, ghi “Đã sửa” kèm ngày. Cả 8 ca đạt mới bật.
Thử cả điện thoại và máy tính: bàn phím và cách báo lỗi khác nhau.
Số trong hình là số mẫu.
Tài liệu tham khảo:web.dev: kiểm tra dữ liệu biểu mẫu ↗W3C WAI: kiểm tra dữ liệu biểu mẫu ↗OWASP: kiểm tra dữ liệu đầu vào ↗
Số trong bảng là số mẫu để minh họa cách đọc, không phải kết quả dự kiến.
Giữ email làm bản sao, nhưng gửi thẳng dữ liệu vào CRM để không ai phải chép tay.
Chặt quy tắc ở ô số điện thoại và báo lỗi ngay tại ô.
Thêm mã lần gửi và vô hiệu nút Gửi trong lúc chờ.
| Chỉ số | Giá trị |
|---|---|
| Thông báo trên trang | Đã nhận yêu cầu |
| Mã trả về trong tab Mạng | 500, máy chủ lỗi |
| Việc cần làm | Sửa lỗi máy chủ và chỉ báo thành công khi nhận 201 |
Thông báo trên trang chưa có nghĩa máy chủ đã nhận.
Mở tab Mạng và xem yêu cầu gửi đi có trả 201 không.
| Chỉ số | Giá trị |
|---|---|
| Khách nhập | 0900 000 000 (số mẫu) |
| Quy tắc hiện tại | Chỉ nhận 10 chữ số liền |
| Việc cần làm | Bỏ khoảng trắng và dấu chấm trước khi kiểm tra |
Quy tắc kiểm tra quá chặt, ví dụ không nhận số có khoảng trắng hoặc dấu chấm.
| Chỉ số | Giá trị |
|---|---|
| Lượt gửi form trong tuần | 12 |
| Khách nhắn tin hỏi trong tuần | 40 |
| Việc cần làm | Thử form trên điện thoại Android và iPhone |
Form có thể lỗi ở một loại điện thoại hoặc trình duyệt mà người làm không dùng.
Tài liệu tham khảo:MDN: ô nhập số điện thoại (type=tel) ↗MDN: thuộc tính inputmode ↗OWASP: kiểm tra dữ liệu đầu vào ↗
Đánh dấu từng mục để xem mức sẵn sàng. Trạng thái chỉ lưu trên trình duyệt của bạn.
Tài liệu tham khảo:W3C WCAG 2.2: nhận biết lỗi nhập liệu ↗OWASP: kiểm tra dữ liệu đầu vào ↗OWASP: quản lý khóa và bí mật ↗
Ba màn hình trong CRM: bảng ghép trường, quy tắc chống trùng, quy tắc chia khách.
Mười trường ghép sang CRM kèm cách chuẩn hóa: số điện thoại dạng +84…, email viết thường. Đã ghép 9 trên 10 trường.
Dòng vàng là trường page chưa ghép: dữ liệu chưa có chỗ đi sẽ bị bỏ rơi lặng lẽ. Hãy ghép vào “Trang gửi”.
Đang bậtĐã ghép 9/10 trườngGửi thử 1 khách
| Trường trên website | Trường trong CRM | Chuẩn hóa | |
|---|---|---|---|
name | → | Họ và tên | Bỏ khoảng trắng thừa |
phone | → | Điện thoại (khóa chống trùng)1 | Đổi 0900… thành +84900… |
email | → | Viết thường | |
need | → | Nhu cầu | qua-tan-gia → Quà tân gia |
note | → | Ghi chú | Giữ nguyên |
utm_source, utm_medium | → | Nguồn khách | Ghép thành “google / cpc”2 |
utm_campaign | → | Chiến dịch | Giữ nguyên |
consent | → | Đồng ý liên hệ | Phải là true |
submission_id | → | Mã lần gửi | Duy nhất, để không tạo trùng |
page | → | Chưa ghép3 | Bỏ qua hoặc ghép vào “Trang gửi” |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Có khách cũ cùng số điện thoại trong 90 ngày không? Tuần 29/09–05/10: 64 lượt gửi, 58 khách mới, 6 lượt gộp.
Lượt gộp không tạo khách mới mà ghi thêm lần liên hệ, báo người phụ trách cũ. Gửi lần hai, ba thường là khách nghiêm túc.
CóKhông tạo khách mới. Ghi thêm một lần liên hệ và báo người phụ trách cũ.
KhôngTạo khách mới và chia người phụ trách.
Tuần 29/09–05/102
Các lần gộp trong tuần
| Ngày | Khách | Khách cũ | Phụ trách | Liên hệ |
|---|---|---|---|---|
| 05/10 | Trần Thu Hà | Khách từ 21/09 | Hà Trang | Lần 2 |
| 04/10 | Phạm Mai | Khách từ 12/08 | Minh Khoa | Lần 33 |
| 03/10 | Lê Quốc Bảo | Khách từ 30/09 | Hà Trang | Lần 2 |
| 02/10 | Đỗ Thanh | Khách từ 17/09 | Hà Trang | Lần 2 |
| 01/10 | Vũ Minh Châu | Khách từ 25/09 | Hà Trang | Lần 2 |
| 30/09 | Ngô Bích | Khách từ 03/09 | Hà Trang | Lần 2 |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Trong giờ chia ngay, ngoài giờ vào hàng chờ đến 8:30. Hà Trang 34 khách, Minh Khoa 30; gọi lần đầu trung vị 18 phút.
Khách mới chia đều 29 và 29. Hà Trang nhiều hơn vì nhận 5 khách gộp (Minh Khoa 1). Giữ người cũ để không gọi trùng.
Quy tắc1
Đã chia tuần 29/09–05/102
Gồm 29 + 29 khách mới và 6 khách gộp (Hà Trang 5, Minh Khoa 1).
Theo dõi hằng tuần3
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tài liệu tham khảo:OWASP: API Security Top 10 ↗MDN: mã trạng thái HTTP ↗
Ghép đúng trường trước, rồi chống trùng, chia khách; thử một khách rồi bật.
Tài liệu tham khảo:OWASP: API Security Top 10 ↗MDN: mã trạng thái HTTP ↗OWASP: phân quyền ↗
Cần quyền tạo khóa API, người nhận khách, các trường CRM đang dùng.
Bảng quy tắc chia khách: mỗi tình huống một dòng, ghi điều kiện, việc làm, người nhận. Khách gửi lại giữ người cũ.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Tình huống | Điều kiện | Việc làm | Người nhận |
| 2 | Khách mới, trong giờ | Thứ Hai đến thứ Bảy, 8:30 đến 17:30 | Chia ngay | Xoay vòng Hà Trang, Minh Khoa |
| 3 | Khách mới, ngoài giờ | Ngoài khung giờ trên | Vào hàng chờ, chia lúc 8:301 | Xoay vòng Hà Trang, Minh Khoa |
| 4 | Khách gửi lại | Cùng số điện thoại trong 90 ngày2 | Ghi thêm lần liên hệ, báo người cũ | Người phụ trách cũ |
| 5 | Số điện thoại sai dạng | CRM trả lỗi 422 | Ghi nhật ký, báo email cho quản trị | Quản trị website |
| 6 | Người phụ trách nghỉ | Được đánh dấu nghỉ trong CRM | Chuyển khách sang người còn lại3 | Người còn lại |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tài liệu tham khảo:OWASP: API Security Top 10 ↗MDN: mã trạng thái HTTP ↗OWASP: quản lý khóa và bí mật ↗
Mỗi tuần đếm: lượt gửi form, khách trong CRM (cả lượt gộp), khách chưa có người phụ trách.
Hai số đầu phải bằng nhau (64 và 64). Lệch là có khách rơi mất.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Chỉ số | Số liệu | Cách đếm | Kết luận |
| 2 | Lượt gửi form | 64 | Trong biểu mẫu WordPress | |
| 3 | Khách trong CRM | 641 | 58 khách mới + 6 gộp vào khách cũ | Khớp |
| 4 | Chưa có người phụ trách | 0 | Lọc trong CRM | Tốt |
| 5 | Khách có nguồn là “không rõ” | 52 | Lọc theo cột Nguồn khách | Cần xem |
| 6 | Gọi lần đầu (trung vị) | 18 phút3 | Từ lúc vào CRM đến cuộc gọi đầu | Đạt, dưới 30 phút |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
| Chỉ số | Cho biết | Cần xem lại khi |
|---|---|---|
| Lượt gửi so với khách trong CRM | Bằng nhau (đã tính cả lượt gộp) | Lệch mà không biết lý do |
| Khách chưa có người phụ trách | 0 | Còn khách chờ chia |
| Khách có nguồn “không rõ” | Ít, và biết link nào thiếu utm | Không ai kiểm tra |
| Gọi lần đầu (trung vị) | Dưới mục tiêu, ví dụ 30 phút | Không có số |
Đọc từ trên xuống: đúng khi hai dòng đầu bằng nhau và dòng chưa có người phụ trách bằng 0.
Hai dòng cuối theo dõi chất lượng.
Dùng trung vị, không dùng trung bình: khách gửi ngoài giờ làm lệch số.
Số trong hình là số mẫu.
Tài liệu tham khảo:OWASP: ghi nhật ký ↗MDN: mã trạng thái HTTP ↗
Số trong bảng là số mẫu để minh họa cách đọc, không phải kết quả dự kiến.
Chuyển sang gửi thẳng từ form vào CRM, giữ bảng tính chạy song song một tuần để đối chiếu.
Bật chống trùng theo số điện thoại đã chuẩn hóa và gộp các bản ghi trùng cũ.
Dùng hàng chờ ngoài giờ để khách được chia đúng lúc bắt đầu làm việc.
| Chỉ số | Giá trị |
|---|---|
| Khách mới tuần này | 64 |
| Chưa có người phụ trách | 3 |
| Việc cần làm | Thêm quy tắc chuyển sang người còn lại khi có người nghỉ |
Quy tắc chia khách không có nhánh cho tình huống này, thường là khách vào đúng lúc người nhận được đánh dấu nghỉ.
| Chỉ số | Giá trị |
|---|---|
| Số website gửi sang | 0900000000 |
| Dạng CRM chờ | +84900000000 |
| Việc cần làm | Chuẩn hóa số trước khi gửi và báo quản trị khi CRM trả 422 |
Dữ liệu gửi sang không đúng dạng CRM chờ, ví dụ số điện thoại chưa chuẩn hóa.
| Chỉ số | Giá trị |
|---|---|
| Lượt gửi form | 64 |
| Khách mới + gộp | 58 + 4 = 62 |
| Việc cần làm | Tìm 2 lượt còn thiếu trong nhật ký gửi và gửi lại |
Có lượt gửi bị mất giữa đường, hoặc lượt gộp chưa được tính vào.
Tài liệu tham khảo:MDN: mã trạng thái HTTP ↗OWASP: API Security Top 10 ↗
Đánh dấu từng mục để xem mức sẵn sàng. Trạng thái chỉ lưu trên trình duyệt của bạn.
Tài liệu tham khảo:OWASP: API Security Top 10 ↗OWASP: quản lý khóa và bí mật ↗OWASP: phân quyền ↗
Ba màn hình: thẻ trong Tag Manager, DebugView của GA4, báo cáo sự kiện chính.
Thẻ gửi generate_lead kèm hai thông số form_id và lead_source lấy từ dataLayer. Trình kích hoạt lead_submitted chỉ chạy sau khi máy chủ trả 201.
Dùng tên chuẩn generate_lead để báo cáo hiểu ngay. Đẩy dataLayer sau khi máy chủ trả 201, không phải lúc bấm nút, tránh khách ảo.
Cấu hình thẻ
Loại thẻGoogle Analytics: Sự kiện GA4
ID đo lườngG-XXXXXXXXXX (mẫu)
Tên sự kiệngenerate_lead1
Thông sốform_id = {{DL – form_id}}lead_source = {{DL – lead_source}}
Trình kích hoạt
LoạiSự kiện tùy chỉnh
Tên sự kiệnlead_submitted2
Kích hoạt khiMọi sự kiện tùy chỉnh trùng tên
Mã trên trang, chạy sau khi máy chủ trả 201:3
1dataLayer.push({ event: 'lead_submitted',2form_id: 'tu-van-qua-tang', lead_source: 'google / cpc' });
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Thiết bị thử gửi lần lượt session_start, page_view, scroll, form_start, form_submit rồi generate_lead lúc 09:12:33 với thông số form_id = tu-van-qua-tang. Sự kiện hiện ngay mà không chờ báo cáo.
DebugView trả lời hai câu hỏi trước khi xuất bản: sự kiện có bắn không và bắn đúng thứ tự không. generate_lead phải xuất hiện đúng một lần, sau form_submit.
generate_lead09:12:33
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tuần 29/09–05/10: 59 sự kiện từ 57 người dùng. Nguồn nhiều nhất: google / cpc 28, trực tiếp 12, zalo / ads 9.
GA4 ít hơn CRM 5 khách vì một số khách tắt theo dõi. GA4 cho biết nguồn và xu hướng, CRM là số khách thật.
Tổng trong tuần1
Theo ngày2
Theo nguồn / phương tiện3
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tài liệu tham khảo:Google Tag Manager: chế độ xem trước ↗Google Analytics: theo dõi sự kiện bằng DebugView ↗Google Analytics: báo cáo form tạo lead ↗
Gửi sau kết quả thật, tên chuẩn, utm nhất quán, thử trước khi xuất bản.
Tài liệu tham khảo:Google Tag Manager: data layer ↗Google Tag Manager: trình kích hoạt sự kiện tùy chỉnh ↗Google Analytics: tham chiếu sự kiện (generate_lead, purchase) ↗Google Analytics: tạo địa chỉ có thông số chiến dịch (UTM) ↗
Cần quyền sửa Tag Manager, quyền xem GA4 và chỗ chèn mã trên website.
Bảng sự kiện: mỗi sự kiện một dòng, ghi tên, khi nào gửi, thông số, có phải sự kiện chính không. purchase kèm transaction_id.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Sự kiện | Khi nào gửi | Thông số đi kèm | Sự kiện chính |
| 2 | form_start | Khách bấm vào ô đầu tiên của form | form_id | Không |
| 3 | form_submit | Khách bấm Gửi, trước khi máy chủ trả lời | form_id | Không |
| 4 | generate_lead | Máy chủ trả 201: khách đã vào CRM1 | form_id, lead_source | Có2 |
| 5 | begin_checkout | Khách vào trang thanh toán | value, items | Không |
| 6 | purchase | Trang cảm ơn, sau khi cổng thanh toán báo thành công | transaction_id, value3 | Có |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tài liệu tham khảo:Google Analytics: sự kiện đề xuất ↗Google Analytics: tham chiếu sự kiện (generate_lead, purchase) ↗Google Tag Manager: data layer ↗
Mỗi tuần đặt cạnh nhau: lượt gửi form, khách trong CRM, sự kiện generate_lead trong GA4. CRM là số thật.
Chênh lệch 5 trên 64 là 7,8%, dưới ngưỡng 15% nên chưa cần sửa.
| A | B | C | |
|---|---|---|---|
| 1 | Nguồn số liệu | Số khách | Ghi chú |
| 2 | Biểu mẫu WordPress | 64 | 61 gửi ngay + 3 sau khi thử lại |
| 3 | CRM Khách hàng | 64 | 58 khách mới + 6 gộp vào khách cũ |
| 4 | Google Analytics (generate_lead) | 591 | Một số khách tắt theo dõi hoặc từ chối cookie |
| 5 | Chênh lệch GA4 so với CRM | −5 (7,8%)2 | Lấy 5 chia cho 64 |
| 6 | Ngưỡng cần xem lại | 15%3 | Trong ngưỡng, không cần sửa |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
| Chỉ số | Cho biết | Cần xem lại khi |
|---|---|---|
| Số khách của GA4 so với CRM | Ít hơn một chút, trong ngưỡng | Cao hơn CRM |
| Tỷ lệ chênh lệch | Dưới ngưỡng đã đặt (ví dụ 15%) | Vượt ngưỡng nhiều tuần liền |
| Nguồn của khách | Có tên rõ: google / cpc, zalo / ads | Phần lớn là (direct) / (none) |
| Sự kiện theo ngày | Ổn định, không ngày nào về 0 | Có ngày về 0 hoặc tăng vọt |
Ba dòng đầu cho biết thẻ chạy đúng không; dòng chênh lệch cho biết có cần kiểm tra.
Vượt ngưỡng thì mở DebugView, gửi khách thử.
Báo cáo GA4 cần thời gian mới ổn định; dùng DebugView để kiểm tra ngay.
Số trong hình là số mẫu.
Tài liệu tham khảo:Google Analytics: theo dõi sự kiện bằng DebugView ↗Google Analytics: sự kiện chính ↗Google Analytics: báo cáo form tạo lead ↗
Số trong bảng là số mẫu để minh họa cách đọc, không phải kết quả dự kiến.
Gắn utm cho từng quảng cáo và gửi generate_lead sau khi nhận khách.
Mở DebugView, gửi một khách thử và xem sự kiện bắn mấy lần, vào lúc nào.
Gửi purchase kèm transaction_id và gắn utm cho đường dẫn quảng cáo.
| Chỉ số | Giá trị |
|---|---|
| Lượt gửi thành công | 52 |
| generate_lead trong GA4 | 71 |
| Việc cần làm | Chuyển dataLayer.push xuống sau khi nhận 201 |
Đoạn dataLayer.push đặt sai chỗ: chạy lúc bấm nút thay vì sau khi máy chủ trả 201.
| Chỉ số | Giá trị |
|---|---|
| Khách trong CRM | 64 |
| generate_lead trong GA4 | 121 |
| Việc cần làm | Gỡ thẻ cũ, chỉ để lại thẻ trong Tag Manager |
Hai thẻ cùng chạy trên một sự kiện, ví dụ một thẻ cũ gắn thẳng trong mã trang.
| Chỉ số | Giá trị |
|---|---|
| Khách google / cpc | 3 |
| Khách (direct) / (none) | 40 |
| Việc cần làm | Kiểm tra link quảng cáo có utm và đường chuyển hướng có giữ lại không |
Địa chỉ quảng cáo thiếu utm, hoặc utm bị mất khi chuyển hướng.
Tài liệu tham khảo:Google Tag Manager: chế độ xem trước ↗Google Analytics: theo dõi sự kiện bằng DebugView ↗Google Analytics: tạo địa chỉ có thông số chiến dịch (UTM) ↗
Đánh dấu từng mục để xem mức sẵn sàng. Trạng thái chỉ lưu trên trình duyệt của bạn.
Tài liệu tham khảo:Google Analytics: sự kiện đề xuất ↗Google Analytics: sự kiện chính ↗Google Tag Manager: chế độ xem trước ↗
Ba màn hình: webhook ở cổng thanh toán, giao dịch trong tuần, ghi chú trên đơn.
Đăng ký 3 sự kiện: payment.succeeded, payment.failed, refund.created. Khóa ký whsec_… chỉ hiện đuôi; mã evt_7Kq2 gửi hai lần, cả hai nhận 200.
Chỉ đăng ký ba sự kiện cần dùng. Cổng gửi lại khi chưa nhận phản hồi, nên nhận ra mã đã xử lý là bắt buộc.
Điểm nhận
Địa chỉhttps://nhathom.example/wp-json/onmate/v1/payment-webhookĐang hoạt động
Sự kiệnpayment.succeededpayment.failedrefund.created1
Khóa kýwhsec_••••••••••••a91fHiệnĐổi khóa2
Lần gửi gần đây
| Giờ | Sự kiện | Mã sự kiện | Phản hồi | Lần gửi |
|---|---|---|---|---|
| 05/10 21:40 | payment.succeeded | evt_7Kq2 | 200 | 1 |
| 05/10 21:40 | payment.succeeded | evt_7Kq2 | 200 | 23 |
| 05/10 18:03 | payment.failed | evt_7Jx9 | 200 | 1 |
| 04/10 15:22 | refund.created | evt_7Gm4 | 200 | 1 |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tuần 29/09–05/10: 23 giao dịch thành công, tổng 19.060.000 đồng. Hoàn tiền 420.000 đồng (đơn #3185), thực nhận 18.640.000 đồng. Giao dịch #3198 thất bại.
Đây là số để đối soát. Giao dịch thất bại không làm đơn thành đã trả; hoàn tiền phải đổi trạng thái đơn tương ứng.
Tuần 29/09–05/101
Giao dịch gần nhất
| Giờ | Mã giao dịch | Đơn | Số tiền | Trạng thái |
|---|---|---|---|---|
| 05/10 21:40 | pay_7Kq2 | #3201 | 1.280.000 ₫ | Thành công |
| 05/10 18:03 | pay_7Jx9 | #3198 | 640.000 ₫ | Thất bại2 |
| 05/10 11:26 | pay_7Hn5 | #3192 | 890.000 ₫ | Thành công |
| 04/10 15:22 | pay_7Gm4 | #3185 | 420.000 ₫ | Hoàn tiền3 |
| 04/10 10:05 | pay_7Fd8 | #3180 | 1.540.000 ₫ | Thành công |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Ghi chú đơn kèm giờ: chữ ký đúng, số tiền khớp, đổi sang “Đang xử lý”. Lần gửi thứ hai của evt_7Kq2 được bỏ qua.
Ghi chú có giờ nên tra được ngay khi khách hỏi. Dòng “bỏ qua” là bằng chứng chống xử lý hai lần.
Sản phẩm
Thanh toán
Đã thanh toánCổng thanh toán (mẫu) · mã giao dịch pay_7Kq2
Ghi chú đơn hàng
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tài liệu tham khảo:Stripe: webhook (nhận sự kiện, xác thực chữ ký, xử lý sự kiện trùng) ↗MDN: idempotent ↗
Kiểm tra trước, xử lý sau, trả lời sớm; chữ ký sai thì không tin.
Tài liệu tham khảo:Stripe: webhook (nhận sự kiện, xác thực chữ ký, xử lý sự kiện trùng) ↗MDN: idempotent ↗OWASP: API Security Top 10 ↗
Cần quyền webhook ở cổng, người nhận cảnh báo. Không gửi khóa ký qua tin nhắn.
Mỗi bước kiểm tra một dòng: kiểm gì, đạt thì sao, không đạt thì làm gì. Thứ tự: chữ ký, mã sự kiện, số tiền.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Bước | Kiểm tra | Nếu đạt | Nếu không đạt |
| 2 | 1. Chữ ký | Chữ ký trong thông báo khớp khóa ký | Đi tiếp | Trả 400, ghi nhật ký, không đổi đơn1 |
| 3 | 2. Mã sự kiện | Mã evt_… chưa từng xử lý | Đi tiếp | Bỏ qua, vẫn trả 2002 |
| 4 | 3. Số tiền | Bằng tổng đơn, đúng loại tiền | Đi tiếp | Giữ đơn ở Chờ thanh toán, báo quản trị3 |
| 5 | 4. Cập nhật đơn | Đổi trạng thái theo loại sự kiện | Chờ thanh toán → Đang xử lý | Ghi nhật ký |
| 6 | 5. Trả lời | Trả mã 2xx trong vài giây | Cổng không gửi lại | Cổng gửi lại nhiều lần |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tài liệu tham khảo:Stripe: webhook (nhận sự kiện, xác thực chữ ký, xử lý sự kiện trùng) ↗MDN: idempotent ↗OWASP: ghi nhật ký ↗
Mỗi tuần đặt số của cổng cạnh số của website. Đúng khi cột Chênh toàn số 0.
Dòng Thực nhận: hai bên đều 18.640.000 đồng (19.060.000 trừ hoàn tiền 420.000).
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Mục | Cổng thanh toán | Website | Chênh |
| 2 | Giao dịch thành công | 23 | 23 (22 đang xử lý hoặc xong + 1 đã hoàn tiền) | 0 |
| 3 | Tổng tiền thành công | 19.060.000 ₫ | 19.060.000 ₫ | 0 |
| 4 | Hoàn tiền | 1 giao dịch · 420.000 ₫ | 1 đơn (#3185) · 420.000 ₫ | 0 |
| 5 | Thực nhận | 18.640.000 ₫1 | 18.640.000 ₫ | 0 |
| 6 | Giao dịch thất bại | 4 | 4 đơn đang chờ thanh toán2 | 0 |
| 7 | Thông báo gửi trùng | 1 (evt_7Kq2) | 1, đã bỏ qua3 | 0 |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
| Chỉ số | Cho biết | Cần xem lại khi |
|---|---|---|
| Giao dịch thành công | Số giao dịch của cổng bằng số của website | Website ít hơn cổng |
| Thực nhận (sau hoàn tiền) | Hai bên cùng một số tiền | Lệch dù chỉ một đơn |
| Giao dịch thất bại | Bằng số đơn đang chờ thanh toán | Có đơn chờ mà cổng không có giao dịch |
| Thông báo gửi trùng | Có ghi và đã bỏ qua đúng số lần | Số lần bỏ qua ít hơn số trùng |
Đọc từ trên xuống: số giao dịch, số tiền, hoàn tiền, thực nhận.
Chênh đều 0 là xong; khác 0 thì lần theo mã sự kiện.
Đối soát cùng khoảng ngày, cùng múi giờ, kẻo giao dịch nửa đêm lệch tuần.
Số trong hình là số mẫu.
Tài liệu tham khảo:Stripe: webhook (nhận sự kiện, xác thực chữ ký, xử lý sự kiện trùng) ↗OWASP: ghi nhật ký ↗
Số trong bảng là số mẫu để minh họa cách đọc, không phải kết quả dự kiến.
Kiểm tra địa chỉ webhook có nhận được thông báo không, rồi sửa chỗ xử lý.
Thêm kiểm tra chữ ký ở đầu và bảng mã sự kiện đã xử lý.
Chuyển sang đối soát hằng tuần để lệch nhỏ được thấy sớm.
| Chỉ số | Giá trị |
|---|---|
| Mã sự kiện | evt_9Hx4 (mẫu) |
| Mã website trả về | 400, chữ ký không khớp |
| Việc cần làm | Kiểm tra khóa ký ở máy chủ có đúng khóa của môi trường đang dùng |
Máy chủ trả lỗi cho thông báo nên cổng ghi là chưa nhận; thường do chữ ký sai khóa hoặc lỗi xử lý.
| Chỉ số | Giá trị |
|---|---|
| Thực nhận ở cổng | 18.640.000 đồng |
| Thực nhận ở website | 19.060.000 đồng |
| Việc cần làm | Đổi đơn #3185 sang hoàn tiền (420.000 đồng) |
Một giao dịch hoàn tiền chưa được website ghi nhận, hoặc đơn bị xử lý hai lần.
| Chỉ số | Giá trị |
|---|---|
| Thông báo nhận được | 2 lần cùng mã evt_7Kq2 |
| Lần xử lý | 2 |
| Việc cần làm | Lưu mã sự kiện và bỏ qua thông báo đã có mã |
Thông báo gửi hai lần và website chưa nhận ra mã đã xử lý.
Tài liệu tham khảo:Stripe: webhook (nhận sự kiện, xác thực chữ ký, xử lý sự kiện trùng) ↗MDN: idempotent ↗OWASP: API Security Top 10 ↗
Đánh dấu từng mục để xem mức sẵn sàng. Trạng thái chỉ lưu trên trình duyệt của bạn.
Tài liệu tham khảo:Stripe: webhook (nhận sự kiện, xác thực chữ ký, xử lý sự kiện trùng) ↗OWASP: API Security Top 10 ↗OWASP: ghi nhật ký ↗
Ba màn hình: sơ đồ luồng dữ liệu, yêu cầu gửi một đơn, hàng chờ trong tuần.
Đơn đi qua hàng chờ, mang khóa riêng; tồn kho về website mỗi 15 phút. Lỗi thì thử lại sau 1, 2, 4 phút.
Mỗi dữ liệu chỉ một bên được sửa nên hai nơi không lệch. Hàng chờ giữ đơn đến khi phần mềm nhận được.
Tồn kho Phần mềm bán hàng gửi số tồn về website mỗi 15 phút. Một chiều: website không sửa tồn kho.2
Khi gửi lỗi Thử lại sau 1, 2, 4 phút. Chưa được thì đơn nằm ở hàng chờ, thử lại mỗi 15 phút và báo người phụ trách khi quá 15 phút.3
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
POST gửi đơn kèm Idempotency-Key: ord-3187. Các lần đầu nhận 503; lần thứ 6 lúc 14:45 thành công (201), cùng một khóa.
Cùng một khóa ở mọi lần thử, nên phản hồi bị mất thì lần sau vẫn không tạo thêm đơn. 503 là lỗi tạm thời.
Các lần thử1
503503503503503201Yêu cầu gửi đi2
1POST /api/v1/orders2Idempotency-Key: ord-31873Authorization: Bearer ••••••••••••45{ "external_id": "NT-3187",6"customer": "Nguyễn Văn An",7"paid": true,8"lines": [ { "sku": "NT-GD-180", "qty": 2 },9{ "sku": "NT-HQ-3", "qty": 1 } ] }
Cùng khóa ord-3187 ở cả 6 lần thử, nên phần mềm bán hàng chỉ tạo một đơn.3
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tuần này 31 đơn sang phần mềm: 29 gửi ngay, 2 gửi sau khi thử lại (#3187, #3194), 0 đơn xử lý tay.
Cột Lần thử cho biết đơn nào chờ lâu. Đơn gửi xong chuyển xanh; chỉ đơn quá 15 phút chưa gửi mới báo người phụ trách.
Tuần 29/09–05/101
Lượt gửi gần nhất
| Đơn | Tạo lúc | Kết quả | Lần thử | Gửi xong |
|---|---|---|---|---|
| #3201 | 05/10 21:40 | Đã gửi | 1 | 21:41 |
| #3199 | 05/10 16:52 | Đã gửi | 1 | 16:52 |
| #3194 | 02/10 14:26 | Gửi sau thử lại2 | 5 | 14:45 |
| #3187 | 02/10 14:12 | Gửi sau thử lại | 63 | 14:45 |
| #3184 | 02/10 11:03 | Đã gửi | 1 | 11:03 |
Hàng chờ trống từ 14:45 ngày 02/10. Không có đơn nào phải gửi lại bằng tay.
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tài liệu tham khảo:MDN: mã 503 Service Unavailable ↗MDN: idempotent ↗AWS Architecture Blog: Exponential Backoff and Jitter ↗
Chọn bên giữ bản gốc, rồi viết cách gửi, thử lại và báo lỗi.
Tài liệu tham khảo:MDN: phương thức HTTP ↗MDN: idempotent ↗MDN: tiêu đề Retry-After ↗MDN: mã 429 Too Many Requests ↗
Cần tài liệu API, khóa API riêng và bảng mã hàng hai bên.
Bản đồ đồng bộ: mỗi loại dữ liệu một dòng, ghi hướng đi, thời điểm, bên giữ bản gốc, cách xử lý khi lỗi.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Dữ liệu | Hướng đi | Khi nào | Bên giữ bản gốc | Khi lỗi |
| 2 | Đơn hàng | Website → Phần mềm bán hàng | Khi đơn sang Đang xử lý | Website | Thử lại 1, 2, 4 phút, rồi vào hàng chờ1 |
| 3 | Tồn kho | Phần mềm bán hàng → Website | Mỗi 15 phút | Phần mềm bán hàng2 | Giữ số cũ, báo khi quá 1 giờ |
| 4 | Thông tin người mua | Website → Phần mềm bán hàng | Cùng lúc với đơn | Website | Cùng cách thử lại như đơn |
| 5 | Hủy đơn, hoàn tiền | Website → Phần mềm bán hàng | Khi đổi trạng thái | Website | Thử lại, dùng khóa riêng3 |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tài liệu tham khảo:OpenAPI: đặc tả mô tả API ↗RFC 9110: ngữ nghĩa HTTP ↗MDN: phương thức HTTP ↗MDN: idempotent ↗
Trước khi bật, thử 8 tình huống, nhất là lúc có sự cố. Cả 8 ca đạt mới bật.
Ca 4 (mã hàng lạ) từng thử lại mãi. Đã sửa: dừng đơn, báo lỗi.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | # | Tình huống | Mong đợi | Kết quả |
| 2 | 1 | Đơn bình thường | Phần mềm có 1 đơn, tồn kho giảm đúng | Đạt |
| 3 | 2 | Phần mềm bán hàng trả 503 | Thử lại 1, 2, 4 phút, vào hàng chờ, có cảnh báo1 | Đạt |
| 4 | 3 | Gửi cùng khóa hai lần | Chỉ có 1 đơn | Đạt |
| 5 | 4 | Mã hàng không có trong phần mềm | Đơn dừng, báo rõ mã hàng, không thử mãi | Đã sửa 06/102 |
| 6 | 5 | Hủy đơn đã gửi | Phần mềm đổi sang Đã hủy, tồn kho hoàn lại | Đạt |
| 7 | 6 | Tồn kho về 0 trong phần mềm | Website hiện Hết hàng trong tối đa 15 phút | Đạt |
| 8 | 7 | Dùng khóa hết hạn | Nhận 401, có cảnh báo, không thử lại3 | Đạt |
| 9 | 8 | Hai khách đặt cùng một giây | Hai đơn riêng, không lẫn nhau | Đạt |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
| Chỉ số | Cho biết | Cần xem lại khi |
|---|---|---|
| Ca đơn bình thường | Phần mềm có đúng 1 đơn, tồn kho giảm đúng | Có đơn nhưng tồn kho không đổi |
| Ca phần mềm trả 503 | Thử lại rồi vào hàng chờ, có cảnh báo | Mất đơn hoặc không ai biết |
| Ca gửi cùng khóa hai lần | Chỉ có 1 đơn | Hai đơn giống nhau |
| Ca dùng khóa hết hạn | Nhận 401, báo ngay, không thử lại | Thử lại mãi làm đầy hàng chờ |
Đọc ba cột: tình huống, mong đợi, kết quả thật.
Dòng lệch thì sửa, ghi “Đã sửa” kèm ngày. Ca 503: tắt kết nối vài phút.
Dùng môi trường thử của phần mềm; chưa có thì dùng đơn thử đánh dấu.
Số trong hình là số mẫu.
Tài liệu tham khảo:MDN: mã 503 Service Unavailable ↗MDN: tiêu đề Retry-After ↗AWS Architecture Blog: Exponential Backoff and Jitter ↗
Số trong bảng là số mẫu để minh họa cách đọc, không phải kết quả dự kiến.
Gửi đơn tự động nhưng giữ email thông báo thêm một tuần để đối chiếu.
Chuyển sang kéo tồn kho một chiều từ phần mềm và khóa việc sửa tồn trên website.
Thêm hàng chờ, khóa riêng cho mỗi đơn và cảnh báo khi đơn quá hạn.
| Chỉ số | Giá trị |
|---|---|
| Đơn trên website | #3187 (1 đơn) |
| Đơn trong phần mềm | 2 đơn |
| Việc cần làm | Gửi kèm Idempotency-Key: ord-3187 ở mọi lần thử |
Đơn được gửi lại khi phản hồi bị mất, nhưng thiếu khóa riêng nên phần mềm tạo thêm đơn.
| Chỉ số | Giá trị |
|---|---|
| Mã trả về | 401 |
| Số đơn trong hàng chờ | 17 |
| Việc cần làm | Thay khóa mới, thử kết nối rồi cho hàng chờ chạy lại |
Khóa API hết hạn hoặc bị thu hồi, nên mọi lần thử đều nhận 401.
| Chỉ số | Giá trị |
|---|---|
| Lần cập nhật cuối | 2 giờ trước |
| Ngưỡng cho phép | 1 giờ |
| Việc cần làm | Kiểm tra lịch kéo tồn kho mỗi 15 phút |
Lần kéo tồn kho gần nhất lỗi nên website giữ số cũ.
Tài liệu tham khảo:MDN: idempotent ↗AWS Architecture Blog: Exponential Backoff and Jitter ↗MDN: mã 503 Service Unavailable ↗
Đánh dấu từng mục để xem mức sẵn sàng. Trạng thái chỉ lưu trên trình duyệt của bạn.
Tài liệu tham khảo:MDN: mã 429 Too Many Requests ↗MDN: tiêu đề Retry-After ↗MDN: idempotent ↗RFC 9110: ngữ nghĩa HTTP ↗
Ba màn hình: bảng theo dõi kết nối, thư cảnh báo sự cố, lịch hết hạn của khóa.
Mỗi kết nối một dòng, biểu đồ 7 ngày: GA4 59 sự kiện, cổng thanh toán 29 thông báo, phần mềm 31 đơn (2 gửi lại).
Thanh vàng chỉ ngay ngày xảy ra sự cố, khỏi mở nhật ký. Mỗi nhãn (Tốt, Trong ngưỡng, Sự cố) theo điều kiện định trước.
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tiêu đề: 1 đơn chưa gửi được sang phần mềm. Thư nêu mã 503 và việc cần làm: đến 15:30 chưa xong thì gọi người phụ trách.
Thư tốt trả lời ba câu: chuyện gì, mức độ ra sao, việc tiếp theo. Chỉ có mã lỗi thì người trực phải tự tra.
Giám sát kết nối <canh-bao@nhathom.example> · 02/10 14:28
| Kết nối | Website → Phần mềm bán hàng |
|---|---|
| Phát hiện | 02/10/2026 14:27, đơn chưa gửi được sau 15 phút |
| Mã trả về | 503 · máy chủ nhận tạm thời không phản hồi2 |
| Đơn đang chờ | #3187 (tạo lúc 14:12) |
| Thử lại tiếp | 14:30, tự động, mỗi 15 phút |
| Việc cần làm | Không gửi lại bằng tay. Nếu đến 15:30 vẫn chưa gửi được, gọi người phụ trách phần mềm bán hàng.3 |
Mở hàng chờ
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Khóa phần mềm bán hàng còn 41 ngày (nhắc 18/09, 18/10); khóa CRM còn 164, khóa cổng thanh toán 165. Kèm 4 bước thay khóa.
Khóa hết hạn là sự cố tránh được: nhắc ở mốc 60 và 30 ngày. Thay khóa: tạo mới, thử, chuyển sang, xóa khóa cũ.
Khóa của phần mềm bán hàng còn 41 ngày. Nhắc lần 1 đã gửi 18/09 (còn 60 ngày), nhắc lần 2 sẽ gửi 18/10 (còn 30 ngày).1
| Kết nối | Loại khóa | Hết hạn | Còn lại | Trạng thái |
|---|---|---|---|---|
| Phần mềm bán hàng | Khóa API | 17/11/2026 | 41 ngày2 | Sắp hết hạn |
| CRM Khách hàng | Khóa API | 20/03/2027 | 164 ngày | Tốt |
| Cổng thanh toán | Khóa ký webhook | Đổi 21/03/2027 | 165 ngày | Tốt |
Thay khóa không gián đoạn3
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tài liệu tham khảo:OWASP: ghi nhật ký ↗MDN: mã trạng thái HTTP ↗
Chọn điều gì là sự cố, báo đúng người, rồi dựng bảng theo dõi.
Tài liệu tham khảo:OWASP: ghi nhật ký ↗OWASP: xử lý lỗi ↗OWASP: quản lý khóa và bí mật ↗
Cần người nhận cảnh báo, kênh nhận, danh sách khóa và ngày hết hạn.
Sổ tay cảnh báo: mỗi cảnh báo một dòng, ghi tên, điều kiện có con số, gửi cho ai, việc cần làm.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Cảnh báo | Điều kiện | Gửi cho | Việc cần làm |
| 2 | Đơn chưa gửi sang phần mềm bán hàng | Quá 15 phút1 | Người phụ trách bán hàng, quản trị | Chờ tự thử lại; quá 1 giờ thì gọi bên phần mềm |
| 3 | Khóa bị từ chối | Mã 401 hoặc 403 | Quản trị | Kiểm tra khóa còn hạn, đổi khóa nếu cần |
| 4 | Chữ ký thanh toán sai | Từ 1 thông báo | Quản trị | Không đổi đơn; kiểm tra khóa ký ở cổng |
| 5 | Số khách GA4 lệch CRM | Trên 15% trong tuần2 | Người làm quảng cáo | Kiểm tra thẻ trong Tag Manager, DebugView |
| 6 | Khóa sắp hết hạn | Còn 60 và 30 ngày3 | Quản trị | Thay khóa theo 4 bước |
| 7 | Tồn kho không cập nhật | Quá 1 giờ | Quản trị | Kiểm tra lịch cập nhật 15 phút |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
Tài liệu tham khảo:OWASP: ghi nhật ký ↗OWASP: quản lý khóa và bí mật ↗OWASP: xử lý lỗi ↗
Mỗi tuần ghi cho từng kết nối: số lượng, lần thử lại, sự cố kèm giờ, đánh giá.
Phần mềm bán hàng: 31 đơn, sự cố 02/10 (14:05–14:40), “Đã xử lý”.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Kết nối | Số lượng trong tuần | Lần thử lại | Sự cố | Đánh giá |
| 2 | Biểu mẫu → CRM | 64 lượt gửi1 | 33 | Không | Tốt |
| 3 | Website → Google Analytics | 59 sự kiện generate_lead | – | Ít hơn CRM 5 (7,8%) | Trong ngưỡng |
| 4 | Cổng thanh toán → Website | 29 thông báo | 0 | 1 thông báo trùng, đã bỏ qua | Tốt |
| 5 | Website → Phần mềm bán hàng | 31 đơn | 2 | 02/10, 14:05 đến 14:402 | Đã xử lý |
| 6 | Phần mềm bán hàng → Website | 672 lần cập nhật tồn kho | 0 | Không | Tốt |
Giao diện và số liệu minh họa cho thương hiệu giả định Nhà Thơm; không phải kết quả của khách hàng.
| Chỉ số | Cho biết | Cần xem lại khi |
|---|---|---|
| Số lượng của từng kết nối | Có con số rõ trong tuần | Chỉ ghi “bình thường” |
| Lần thử lại | Có số, tăng đột biến thì xem lại | Không ai đếm |
| Sự cố | Ghi giờ bắt đầu và kết thúc | Ghi chung chung |
| Đánh giá | Dựa vào điều kiện đã đặt trước | Theo cảm giác |
Đọc theo hàng ngang: kết nối, số lượng, thử lại, sự cố, đánh giá.
Hàng vàng thì đọc phần sự cố; không có hàng vàng là ổn.
Một người đọc bảng giờ cố định mỗi tuần, không thì chỉ là hình thức.
Số trong hình là số mẫu.
Tài liệu tham khảo:OWASP: ghi nhật ký ↗MDN: mã trạng thái HTTP ↗
Số trong bảng là số mẫu để minh họa cách đọc, không phải kết quả dự kiến.
Dựng bảng theo dõi 7 ngày và một cảnh báo cho kết nối quan trọng nhất trước.
Lập danh sách khóa kèm ngày hết hạn và đặt nhắc ở mốc 60 và 30 ngày.
Siết lại điều kiện để chỉ báo khi cần, và thêm việc cần làm vào thư.
| Chỉ số | Giá trị |
|---|---|
| Cảnh báo trong tuần | 14 |
| Cảnh báo được xử lý | 3 |
| Việc cần làm | Gửi cho một người cụ thể và ghi rõ bước tiếp theo |
Thư thiếu việc cần làm hoặc gửi cho hộp thư chung mà không ai nhận.
| Chỉ số | Giá trị |
|---|---|
| Đơn chưa gửi | #3187, 22 phút |
| Điều kiện cảnh báo | Quá 60 phút |
| Việc cần làm | Hạ xuống 15 phút và thử lại bằng đơn thử |
Điều kiện cảnh báo đặt quá cao hoặc chỉ tính lần thử cuối.
| Chỉ số | Giá trị |
|---|---|
| Lần nhắc | Còn 3 ngày |
| Mốc nhắc cần có | 60 và 30 ngày |
| Việc cần làm | Thêm hai mốc nhắc và ghi tên người phụ trách khóa |
Chỉ nhắc một lần quá gần hạn hoặc không có người phụ trách khóa.
Tài liệu tham khảo:OWASP: quản lý khóa và bí mật ↗OWASP: ghi nhật ký ↗
Đánh dấu từng mục để xem mức sẵn sàng. Trạng thái chỉ lưu trên trình duyệt của bạn.
Tài liệu tham khảo:OWASP: ghi nhật ký ↗OWASP: xử lý lỗi ↗OWASP: quản lý khóa và bí mật ↗
Chọn một ô để quay lại đúng phần nội dung ở trên.
Mỗi bước kết thúc bằng một thứ xem được. Bấm một bước để xem việc làm và thứ được bàn giao.
Nguồn, hệ thống nhận, API, quy tắc tiếp nhận.
Bàn giaoSơ đồ luồngKiểu, bắt buộc, chuẩn hóa, khóa gộp.
Bàn giaoBảng ánh xạKhóa riêng cho thử nghiệm.
Bàn giaoKết nối thửThiếu trường, trùng, tạm ngừng, hết hạn khóa.
Bàn giaoBiên bản kiểm thửNhật ký, cảnh báo, đối soát tuần đầu.
Bàn giaoNhật ký tuần đầuTài liệu, người phụ trách khóa, cách xử lý lỗi.
Bàn giaoTài liệu vận hànhTài liệu tham khảo:OWASP: API Security Top 10 ↗MDN: mã trạng thái HTTP ↗
Chọn một chủ đề. Câu trả lời nói rõ cả điều làm được lẫn điều không ai bảo đảm được.
Hệ thống có API hoặc cách nhập tự động. ONMATE đọc tài liệu API trước khi báo phạm vi.
Được, nếu đáp ứng yêu cầu lỗi, trùng và bảo mật; có trường hợp cần viết kết nối riêng.
Có thể, nhưng phức tạp hơn nhiều; thường bắt đầu một chiều và mở rộng sau.
Không nếu thiết kế đúng: bản ghi lưu lại, thử lại và báo người phụ trách.
Chỉ gửi trường cần dùng, lưu ở nơi có phân quyền; nội dung đồng ý và yêu cầu pháp lý do doanh nghiệp duyệt.
Người được giao nhận cảnh báo; có thể gộp vào phạm vi bảo trì.
Tài liệu tham khảo:OWASP: API Security Top 10 ↗
Chỉ cần họ tên và số điện thoại. Các mục còn lại bỏ trống cũng được.
Yêu cầu chưa được gửi. Bạn có thể sao chép nội dung và gửi qua Messenger hoặc kênh liên hệ bên dưới để bắt đầu trao đổi.