Loading...
Loading...
Not recommended for regular use
We strongly recommend using the Add Lead page in the CRM instead of importing via Google Sheets. The sheet import has no validation. If column names, advisor names, or data formats do not match exactly, leads will be imported with missing or incorrect information and you will need to fix them manually one by one.
Import leads from your Google Sheet directly into the CRM. The system automatically checks your sheet every 5 minutes and pulls in new or updated leads. This page is only intended for one-time bulk migration when you first start using the system. For day-to-day use, always add leads through the CRM Add Lead page it has proper validation, advisor selection, and does not require manual fixes.
Super admin only
Only super admin accounts can access the sync page and run imports. Regular admins will not see this option in the sidebar.
Open Google Sheets and paste your data in (or use File > Import to upload an Excel or CSV file). The first row must be the column headers exactly as listed below. Each row after that is one lead.
Tip
If you already track leads in Excel, just export as CSV, then import into Google Sheets (File > Import > Upload). Rename your columns to match the names in the table below.
The system looks for these exact column headers in the first row. Extra columns are ignored:
| Column Name | Required | Description |
|---|---|---|
| Lead Name | No | Prospect name. Falls back to email username if empty. |
| Phone | No | Contact number |
| Yes | Rows without an email are skipped. Used to check for duplicates. | |
| Lead Source | No | Where the lead came from (e.g. website, referral, walk-in) |
| Recommended Program | No | Program the lead is interested in |
| Eligibility | No | Entry pathway or APEL status |
| Intake | No | Preferred intake month or year |
| Note | No | Additional notes about the lead |
| Assigned Advisor | No | Advisor name or email. The system tries to match this to an existing advisor in the system. |
Here is how a completed row looks in your sheet:
| Lead Name | Phone | Lead Source | Recommended Program | Eligibility | Intake | Note | Assigned Advisor | |
|---|---|---|---|---|---|---|---|---|
| Ahmad Faiz | 012-3456789 | ahmad@email.com | Website | Master in IT | APEL A | 2026 Q3 | Interested in scholarship | Siti Sarah |
| (empty - uses email name) | 016-9876543 | nurul@email.com | Referral | Diploma in Business | SPM | 2026 Q1 | (empty) | nurul.advisor@email.com |
Note
The second row has no Lead Name, so the system uses the email username (nurul) as the name. The Assigned Advisor column uses the advisor email instead of name.
For the system to read your sheet, you need to share it with the service account email. Click the Share button in your Google Sheet and add this email as an Editor:
If you want to use a different Google Sheet, ask the developer to update the GOOGLE_SHEETS_ID environment variable (you can find the sheet ID in the sheet URL between /d/ and /edit).
Cannot see the Sync button?
Go to Settings in the sidebar and look for the Google Sheets Sync section. Only super admin accounts can access this. If you need access, ask your system administrator.
If your sheet has two rows with the same email address, the system processes rows from top to bottom. The first row creates a new lead. When the second row is processed, the system finds the lead that was just created (by matching the email) and updates it with the data from the second row. This means the last row in the sheet with that email wins and overwrites whatever the earlier row imported. To avoid losing data, make sure each email appears only once in your sheet.
Each sync reads every row in the sheet. The following fields are synced from the sheet to the CRM:
Existing leads are updated with fresh data from the sheet. Fields that are empty in the sheet will overwrite existing values with blank. The sales stage and lead status are always set to their defaults (new_lead / active) on creation, but are not changed on existing records.
You can put the advisor name or email in this column. The system checks in this order:
If no match is found, the row is still imported but without an assigned advisor. Check the sync log for warnings.
Changes not showing?
The system checks your Google Sheet every 5 minutes. If you update the sheet and need to see the changes right away, click Sync Now to pull the latest data immediately instead of waiting for the next automatic check.
Every sync is logged. You can see past runs with their status, how many leads were imported, and any errors that occurred. This helps track when data was last updated and troubleshoot any issues.