The Data Import Tool allows you to bulk import data from spreadsheets (Excel, Google Sheets, etc.) into Football Leagues. Instead of manually creating entities one by one, you can paste hundreds of rows and import them in seconds.
Import types supported:
- Entities: Players, Clubs, Stadiums, Staff, Referees
- Matches: Games (insert new), Games (update existing)
- Match Events: Lineups, Goals, Substitutes, Cards
Video Tutorial
Watch this step-by-step guide:
How to Use
Step 1: Access the Import Tool
Go to Settings & Tools → Data Import
Step 2: Select Import Type
Click the import type links at the top to switch between:
players|stadiums|clubs|staff|refereesgames (insert)|games (update)goals|lineups|substitutes|cards
Step 3: Choose Import Mode
For entity pages (Players, Clubs, Staff, Stadiums, Referees), toggle between:
| Mode | Purpose | Required Field |
|---|---|---|
| Insert | Create new records | Name field |
| Update | Modify existing records | ID or External ID |
For match event pages (Goals, Cards, Substitutes, Lineups), toggle between:
| Mode | Purpose |
|---|---|
| Replace | Clear existing data for the match, then import new |
| Append | Add to existing data (keep current records) |
Step 4: Configure Columns (Optional)
Click “Change Import Columns” to:
- Reorder columns by dragging
- Show/hide columns using the eye icon
- Click “Apply New Settings” to save
Your column preferences are saved per import type.
Step 5: Paste Data
- Prepare your data in Excel, Google Sheets, or any spreadsheet
- Select and copy the rows (without headers)
- Click in the first cell of the import table
- Paste (Ctrl+V / Cmd+V)
Tip
The table auto-expands when pasting more rows than available.
Step 6: Import
For entity pages:
- Click “Save Data” to start import
For match event pages:
- Click “Preview Import” to see grouped data by match
- Review the preview table showing valid/invalid counts
- Click “Import Data” to execute
Step 7: Review Results
After import, each row shows its status:
- success (green) – Imported successfully
- error (red) – Failed with error message
Use “Clear Success” to remove successful rows and re-attempt failed ones.
Import Types Reference
Entity Imports (Insert/Update)
Players
| Column | Required | Notes |
|---|---|---|
| Player Name | Insert | Display name |
| Short Name | No | Abbreviated name |
| Full Name | No | Legal/official name |
| Position | No | Dropdown: Goalkeeper, Defender, Midfielder, Forward |
| Current Club | No | Dropdown of existing clubs |
| Date of Birth | No | Format: YYYY-MM-DD |
| Nationality | No | Dropdown of countries |
| Height (cm) | No | Numeric |
| Weight (kg) | No | Numeric |
| Player ID | Update | Internal WordPress ID |
| Player External ID | Both | Your custom identifier |
| Custom Fields | No | cf__fieldname format |
Clubs
| Column | Required | Notes |
|---|---|---|
| Club Title | Insert | Team name |
| Abbreviation | No | Short code (e.g., MUN, LIV) |
| City | No | Home city |
| Country | No | Dropdown of countries |
| National Team | No | yes/no |
| Club ID | Update | Internal WordPress ID |
| Club External ID | Both | Your custom identifier |
Stadiums
| Column | Required | Notes |
|---|---|---|
| Stadium Title | Insert | Venue name |
| City | No | Location city |
| Address | No | Full address |
| Capacity | No | Number of seats |
| Surface | No | Grass, Artificial, etc. |
| Opened | No | Year opened |
| Stadium ID | Update | Internal WordPress ID |
| Stadium External ID | Both | Your custom identifier |
Staff
| Column | Required | Notes |
|---|---|---|
| Staff Name | Insert | Full name |
| Job Title | No | Coach, Manager, etc. |
| Current Club | No | Dropdown of existing clubs |
| Date of Birth | No | Format: YYYY-MM-DD |
| Nationality | No | Dropdown of countries |
| Staff ID | Update | Internal WordPress ID |
| Staff External ID | Both | Your custom identifier |
Referees
| Column | Required | Notes |
|---|---|---|
| Referee Name | Insert | Full name |
| Job Title | No | Main referee, Assistant, etc. |
| Date of Birth | No | Format: YYYY-MM-DD |
| Nationality | No | Dropdown of countries |
| Referee ID | Update | Internal WordPress ID |
| Referee External ID | Both | Your custom identifier |
Match Imports
Games (Insert)
Create new matches. Important: Competition must exist with teams assigned before importing.
| Column | Required | Notes |
|---|---|---|
| Competition ID | Yes | ID of target competition |
| Round ID | Yes | Round number in competition |
| Club Home ID | Yes | Home team ID |
| Club Away ID | Yes | Away team ID |
| Kickoff | No | Format: YYYY-MM-DD HH:MM |
| Finished | No | yes/no |
| home_goals | No | Final score (home) |
| away_goals | No | Final score (away) |
| Matchweek | No | Matchweek number |
| Stadium ID | No | Venue ID |
| Attendance | No | Number of spectators |
| Referee ID | No | Main referee ID |
| Match External ID | No | Your custom identifier |
Note
You can use External IDs for clubs/stadium/referee instead of internal IDs.
Games (Update)
Update existing matches. Requires Match ID or External ID.
| Column | Required | Notes |
|---|---|---|
| Match ID | One required | Internal WordPress ID |
| Match External ID | One required | Your custom identifier |
| Kickoff | No | Format: YYYY-MM-DD HH:MM |
| Finished | No | yes/no |
| home_goals | No | Update final score |
| away_goals | No | Update final score |
Match Event Imports
Important
All match events need a Match ID or Match External ID.
Lineups
| Column | Required | Notes |
|---|---|---|
| Match ID | Yes* | Match identifier |
| Player ID | Yes* | Player identifier |
| Club ID | Yes* | Player’s team in this match |
| Starting XI | No | yes/no (starter or substitute) |
| Number | No | Jersey number for this match |
| Is Captain | No | yes/no |
*Can use External IDs instead: Match External ID, Player External ID, Club External ID
Goals
| Column | Required | Notes |
|---|---|---|
| Match ID | Yes* | Match identifier |
| Player ID | Yes* | Goalscorer identifier |
| Club ID | Yes* | Scoring team |
| Minute | No | Goal minute |
| Minute Additional | No | Stoppage time |
| Own Goal | No | yes/no |
| From Penalty | No | yes/no |
| Assistant ID | No | Assist provider |
Substitutes
| Column | Required | Notes |
|---|---|---|
| Match ID | Yes* | Match identifier |
| Player ID | Yes* | Player coming IN |
| Player Out ID | Yes* | Player going OUT |
| Club ID | Yes* | Team making substitution |
| Minute | No | Substitution minute |
| Minute Additional | No | Stoppage time |
Cards
| Column | Required | Notes |
|---|---|---|
| Match ID | Yes* | Match identifier |
| Player ID | Yes* | Player receiving card |
| Club ID | Yes* | Player’s team |
| Minute | No | Card minute |
| Card Type | Yes | y (yellow), r (red), yr (second yellow) |
Tips & Best Practices
Data Preparation
- Match column order – Reorder your spreadsheet columns to match the import tool
- No headers – Don’t include column headers when pasting
- Use External IDs – Assign your own identifiers for easier updates later
- Date format – Always use YYYY-MM-DD (ISO format)
- Dropdown values – Check valid options before importing
Import Order
When setting up from scratch, import in this order:
- Stadiums (optional)
- Clubs
- Players
- Staff, Referees
- Create competitions manually (assign clubs to groups)
- Games (insert)
- Lineups, Goals, Cards, Substitutes
Handling Errors
| Error | Cause | Solution |
|---|---|---|
| “Name is required” | Missing entity name | Add name to required column |
| “ID or External ID required” | Update mode needs identifier | Add ID column or switch to Insert |
| “Club ID required” | Missing team reference | Add Club ID column |
| Invalid dropdown value | Value not in list | Check valid options (orange highlight) |
Keyboard Shortcuts
| Key | Action |
|---|---|
Tab / Shift+Tab | Navigate between cells |
| Arrow keys | Move around grid |
Enter | Start editing current cell |
| Type any character | Start editing with that character |
Esc | Cancel editing |
Ctrl+V | Paste data |

