WooCommerce - Google Sheets Sync
Đồng bộ đơn hàng WooCommerce sang Google Sheets tự động theo real-time hoặc theo lịch
by EchBay Team · github.com/itvn9online/echbay-wc-gsheet-sync · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/itvn9online/echbay-wc-gsheet-sync/archive/refs/heads/main.zipReadme
WooCommerce - Google Sheets Sync Plugin
Plugin WordPress giúp đồng bộ đơn hàng WooCommerce sang Google Sheets theo 2 chế độ:
- Đồng bộ ngay lập tức (real-time) ngay sau khi đơn hàng được khởi tạo.
- Đồng bộ theo lịch trình (WP-Cron), bất kể trạng thái đơn, miễn là chưa đồng bộ.
Tài liệu này dùng làm kế hoạch kỹ thuật + định hướng phát triển cho plugin.
1. Mục tiêu
- Tự động đồng bộ dữ liệu đơn hàng WooCommerce sang Google Sheets
- Cho phép quản trị viên cấu hình linh hoạt
- Hoạt động ổn định với số lượng đơn lớn
- Dễ mở rộng (mapping field, nhiều sheet, retry, log)
2. Phạm vi chức năng
2.1. Hỗ trợ WooCommerce
- Đơn hàng (Orders)
- Khách hàng
- Sản phẩm trong đơn
- Tổng tiền, phí ship, coupon, trạng thái đơn
2.2. Google Sheets
- Ghi dữ liệu vào Google Spreadsheet
- Tự động tạo header (nếu chưa có)
- Append dòng mới hoặc update theo Order ID
3. Các tính năng chính
3.1. Kết nối Google API (OAuth2)
- Kết nối Google bằng OAuth2
- Lưu Access Token & Refresh Token
- Tự động refresh token khi hết hạn
Scopes sử dụng:
https://www.googleapis.com/auth/spreadsheets
https://www.googleapis.com/auth/drive.file
3.2. Chế độ đồng bộ
A. Đồng bộ ngay lập tức (Real-time)
-
Trigger khi:
- Tạo đơn hàng mới
- Thay đổi trạng thái đơn (tùy chọn, mặc định là OFF)
-
Hook sử dụng:
woocommerce_new_orderwoocommerce_update_order
Luồng xử lý:
Woo Event - Prepare Data - Push to Google Sheets
B. Đồng bộ theo lịch (Scheduled Sync)
- Dựa trên WP-Cron
- Tùy chọn lịch chạy:
- 5 phút
- 15 phút
- 30 phút
- 1 giờ
- Hàng ngày
Luồng xử lý:
Cron Trigger - Get Unsynced Orders - Push - Mark as Synced
3.3. Mapping dữ liệu
Cho phép ánh xạ dữ liệu WooCommerce - Google Sheets:
| WooCommerce Field | Google Sheet Column |
|---|---|
| Order ID | order_id |
| Order Date | order_date |
| Status | status |
| Customer Name | customer_name |
| Phone | phone |
| Total | total |
| Payment Method | payment_method |
- Có thể mở rộng thêm custom field / meta
- Lưu mapping bằng
wp_options
3.4. Quản lý Google Sheet
- Nhập Spreadsheet ID
- Chọn Sheet Tab (worksheet)
- Tùy chọn:
- Append row
- Update row theo Order ID
3.5. Logging & Error Handling
-
Lưu log đồng bộ:
- Thời gian
- Order ID
- Trạng thái
- Message lỗi (nếu có)
-
Retry khi lỗi:
- Timeout
- Google API error
4. Giao diện quản trị (Admin UI)
4.1. Menu Plugin
WooCommerce
└─ Sync to Google Sheets
├─ Google API Settings
├─ Sync Settings
├─ Field Mapping
└─ Sync Logs
4.2. Google API Settings
- Connect / Disconnect Google Account
- Hiển thị trạng thái kết nối
- Nhập Spreadsheet ID
- Nhập Sheet Name
4.3. Sync Settings
-
Chọn chế độ đồng bộ:
- Real-time
- Scheduled
-
Chọn chu kỳ cron
-
Chọn trạng thái đơn cần sync (pending, processing, completed...)
4.4. Logs
Bảng log: | Time | Order ID | Mode | Status | Message |
5. Kiến trúc plugin
5.1. Cấu trúc thư mục
echbay-wc-gsheet-sync/
├─ echbay-wc-gsheet-sync.php (File chính của plugin)
├─ README.md (Tài liệu này)
├─ includes/
│ ├─ class-admin.php (Quản lý admin UI)
│ ├─ class-google-client.php (Xử lý Google API, OAuth2)
│ ├─ class-order-mapper.php (Map dữ liệu WooCommerce sang Sheets)
│ ├─ class-sync-realtime.php (Đồng bộ real-time)
│ ├─ class-sync-cron.php (Đồng bộ theo lịch)
│ └─ class-logger.php (Ghi log)
├─ assets/
│ ├─ css/
│ │ └─ admin.css (CSS cho trang admin)
│ └─ js/
│ └─ admin.js (JS cho trang admin)
├─ languages/ (Thư mục đa ngôn ngữ - tùy chọn)
6. Cron & Performance
6.1. Custom Cron Schedule
- Tạo custom cron interval tùy chỉnh
- Hook:
cron_schedules
6.2. Batch Processing
- Giới hạn: Sync tối đa 20-50 đơn mỗi lần chạy cron
- Tránh timeout và quá tải API
- Sử dụng pagination khi query orders
6.3. Tránh trùng lặp
- Lưu meta
_gsheet_synced=1khi đã sync - Lưu meta
_gsheet_synced_time= timestamp - Cho phép retry khi cần (xóa meta để sync lại)
6.4. Cache & Optimization
- Cache Google token
- Batch API calls khi có thể
- Sử dụng transients cho dữ liệu tạm
7. Bảo mật
7.1. Quyền truy cập
- Check quyền
manage_woocommercecho tất cả trang admin - Chỉ admin mới được cấu hình plugin
7.2. Form Security
- Sử dụng
wp_nonce_field()vàwp_verify_nonce()cho tất cả form - Validate và sanitize mọi input
7.3. API Credentials
- KHÔNG expose access token ra frontend
- Lưu credentials trong
wp_optionsvới tên có prefix_(private) - Sử dụng
wp_remote_post()thay vì CURL trực tiếp
7.4. Google OAuth Setup
Bước 1: Tạo Google Cloud Project
- Truy cập https://console.cloud.google.com
- Tạo project mới
- Enable Google Sheets API
- Tạo OAuth 2.0 Client ID (Web Application)
- Thêm Redirect URI:
https://your-site.com/wp-admin/admin.php?page=wc-gsheet-sync-oauth-callback
Bước 2: Copy Client ID & Client Secret vào plugin settings
8. Kế hoạch phát triển (Roadmap)
Phase 1 (MVP)
- Sync đơn hàng
- OAuth2 Google
- Real-time + Cron
- Basic mapping
Phase 2
- Sync sản phẩm
- Multi-sheet
- Filter nâng cao
Phase 3 (PRO)
- Webhook Google
- Backfill dữ liệu cũ
- Dashboard thống kê
9. Yêu cầu hệ thống
- WordPress: >= 6.0
- WooCommerce: >= 7.0
- PHP: >= 8.0
- PHP Extensions: cURL, JSON
- Google Cloud Project: Với Sheets API được bật
- OAuth 2.0 Credentials: Client ID & Client Secret từ Google Console
10. Ví dụ dữ liệu sync
10.1. Ví dụ dòng dữ liệu trong Google Sheets
| order_id | order_date | status | customer_name | phone | total | payment_method | |
|---|---|---|---|---|---|---|---|
| 1001 | 2026-01-24 10:30:00 | processing | Nguyễn Văn A | a@example.com | 0909123456 | 500000 | cod |
| 1002 | 2026-01-24 11:15:00 | completed | Trần Thị B | b@example.com | 0908234567 | 750000 | bank_transfer |
10.2. Meta keys sử dụng
_gsheet_synced: Giá trị1= đã sync, chưa có = chưa sync_gsheet_synced_time: Timestamp lần sync cuối_gsheet_sync_error: Message lỗi nếu sync thất bại
11. Ghi chú kỹ thuật
11.1. Code Standards
- Plugin không sử dụng thư viện bên ngoài ở frontend
- Sử dụng WordPress Coding Standards
- Comment code bằng tiếng Việt cho dễ hiểu
11.2. Google API
- Có thể dùng REST API trực tiếp (
wp_remote_post) - Hoặc sử dụng Google PHP Client (nếu cần tính năng phức tạp)
- Ưu tiên REST API để giảm dependency
11.3. Database
- Không tạo custom table
- Sử dụng
post_metacho order data - Sử dụng
wp_optionscho settings - Có thể dùng transients cho cache ngắn hạn
11.4. Nguyên tắc phát triển
- Code dễ đọc, dễ bảo trì
- Dễ mở rộng thêm tính năng
- Tuân thủ hướng dẫn trong
.github/copilot-instructions.md - Nhớ tăng version khi sửa CSS/JS để clear cache
12. API Endpoints (Nếu cần)
Có thể tạo REST API endpoints cho các tác vụ:
POST /wp-json/wc-gsheet/v1/sync-order/{order_id}- Sync thủ công 1 đơnPOST /wp-json/wc-gsheet/v1/sync-all- Sync tất cả đơn chưa syncGET /wp-json/wc-gsheet/v1/status- Kiểm tra trạng thái kết nối
Author: Internal Dev Team
License: GPLv2 hoặc cao hơn
Version: 1.0.0 (MVP)