Importing from a Spreadsheet
Last updated: August 11, 2026
If your teams already exist in a spreadsheet — a registration export, a league list, an email from a club secretary — you can upload it instead of typing every row by hand. The same applies to the lists a tournament arrives with rather than builds: your pitches and your officials. MyCup reads Excel (.xlsx) and CSV files.
You'll find it in the sidebar under System → Import teams & data, then choose From a file.
Available on Pro and Premium. On Free, the page shows what it does and links to the Plans page.
The short version#
- Open Import teams & data → From a file
- Pick what you're importing: Teams, Players, Staff, Venues, or Referees
- Download the template (empty, ready to fill) or the example (filled in, so you can see what a good row looks like)
- Fill it in
- Click Upload a file, choose your file, check the column matching, and click Import
The import runs in the background with a progress bar. Large files keep working even if you navigate away — you'll get a notification when it finishes.
Teams, players and staff are separate uploads#
Teams creates the teams themselves: name, contacts, description, website, logo.
Players and Staff fill one team's roster. Because a roster belongs to a specific team, you pick that team from a dropdown before uploading — MyCup never guesses which squad a row belongs to from a column in your file, so a player can't quietly land on the wrong team. If your tournament runs more than one division, the picker shows each team's division, so two teams with the same name in different age groups are easy to tell apart.
Upload one roster per team. For a 20-team tournament that's 20 small uploads rather than one giant file, which is deliberate: it means a mistake affects one squad, not all of them.
Two ways in. Either use the team picker here, or open the team itself (Teams & Players → Manage) and use the import button on its Players or Staff tab. Same upload, same template — the team tab just skips the picker because it already knows which team you mean.
Team managers can do it too. If you've enabled the Team Panel, managers see the same import button on their own Players and Staff pages, so a club can upload its own squad instead of emailing you a list to retype.
Venues and referees#
The Venues and Referees tabs work the same way, and exist for the same reason a team import does: a festival organiser turns up with eight pitches across three sites, or an association sends over its list of officials, and neither should have to be retyped before you can open the schedule grid. There's no team picker on either — a venue and an official belong to the tournament, not to a squad.
Both files are one sheet with Name as the only required column. Venues also take a Location and a Description; referees take a Description — a good place for a licence level, since it's what you see when you assign them. Both accept a photo URL, on the same terms as a team logo.
One row per playing area, not per site. This is the mistake that makes a schedule unbuildable. A park with four pitches is four rows that happen to share the same Location, because the scheduler places matches on a playing area — a site listed once can only hold one match at a time.
Opening hours aren't part of the file. A venue's availability is one row per day, with times and slot lengths, so it can't ride along on a sheet that holds one row per venue. Import the venues here, then say when each one is free under Venues → Time slots.
If your sport calls its officials something else — umpires, judges — the tab, the template and the notifications all use that word, the same as the rest of your panel does.
Templates and examples#
Both downloads are offered inside the upload window, and again as buttons on the page.
- Download template — the correct columns, no rows. Start here when you're typing fresh.
- Download example — the same columns with sample rows filled in. Start here when you're not sure what a column expects.
Both are generated for your tournament, so they already include your custom attributes as columns, and the Division column only appears if your tournament actually uses more than one division. Venue and referee templates carry neither — custom attributes apply to teams, players and staff, and neither of those lists is split by division.
Only the Name column is required. Everything else can be left blank.
Matching your columns#
You don't have to match our column names. After you upload, MyCup shows each of its columns next to a dropdown of the columns found in your file, and pre-selects the ones it recognises — including the names used in other MyCup languages, so a Portuguese export maps cleanly.
Check the matches, correct any that are wrong, then click Import. Nothing is saved until you do.
Uploading the same file twice is safe#
Importing a file that contains teams you already have updates them instead of creating duplicates.
Teams are matched by name and division, ignoring capitals, accents and extra spaces — so Sporting CP, sporting cp and Spórting CP are all the same team. Players are matched by name and shirt number, so two players genuinely called Alex Silva stay two players as long as their numbers differ. Staff are matched by name and role, so the same person can be a Coach on one row and a Physio on another. Venues and referees are matched on name alone — there's nothing else to tell two of them apart.
Matching on name matters most for venues, because your matches and time slots point at the venue itself. A duplicate wouldn't merely clutter the list: your schedule would stay on the old row while you edited the new one. Re-uploading a corrected venue list keeps every kick-off and every opening hour where it was. The same holds for referees already appointed to fixtures.
This means a corrected re-upload does what you'd hope: fixed rows update, unchanged rows stay put, and nothing doubles.
What "updates" actually means#
A matching row is merged into the record you already have. It's worth being precise about this, because the three things people expect instead are all wrong:
- It is not replaced. The team isn't deleted and recreated. It keeps the same record, so its players, staff, documents, form responses, its place in your structure and any matches already generated for it all survive the import untouched. (Its division can change, but only if your file names a different one — see below.)
- It is not wiped. Columns you don't map are left exactly as they are. If your file has no Description column, descriptions stay.
- It is not added again. You don't get a second
Sporting CPalongside the first.
What the import writes is the columns your file carries, over the values that were there. Everything else about the team is left alone.
The one thing to watch: a column you do map but leave empty counts as a value you're writing, so it clears that field. See Blank cells clear values below.
Two teams with the same name#
Clubs often enter the same name in more than one age group — La Masia at U11 and La Masia at U13. Those are two separate teams, and the Division column is what keeps them apart. Fill it in on every row and the import always knows which squad you mean.
Here's exactly what each combination does:
| Your row | What's already in the tournament | What happens |
|---|---|---|
La Masia + U11 |
La Masia in U11 |
Updates that team |
La Masia + U13 |
La Masia in U11, and this same file also has the U11 row |
Adds a second team in U13 |
La Masia + U13 |
La Masia in U11, and nothing else in the file mentions it |
Moves the U11 team to U13 |
La Masia, division blank |
La Masia in U11 only |
Updates it, and leaves it in U11 |
La Masia, division blank |
La Masia in both U11 and U13 |
The row is reported as failed — we won't guess |
La Masia + a division you don't have |
anything | The division is ignored; the team imports without one |
The third row is the one to know about: if you upload a file with a single La Masia · U13 row while a La Masia · U11 team already exists, MyCup reads that as you moving the team, because that's the same thing as reassigning divisions after a draw. If you meant to add a second squad, either include both rows in the file, or add the second team by hand.
The last one matters too — the Division column doesn't create divisions. Create your divisions first, then import.
Blank cells clear values#
If you match a column and leave its cell empty, the import clears that field on an existing team. That's intentional — it's the only way to empty a field in bulk — but it catches people out.
So if you only want to fix a batch of contact emails, upload a file with just Name, Division and Contact Email, and set the other columns to Do not import when matching. Columns you don't map are never touched.
Logos and photos#
The Logo URL (or Photo URL) column takes a public web address of an image — https://…. MyCup downloads it, converts it, and attaches it to the team or person.
- The link must be public: something you can open in a private browser window. Links to files in Google Drive, Dropbox or a private intranet won't work.
- Supported: PNG, JPG, WebP. SVG files are not accepted.
- If a link is broken or the image can't be read, the row still imports — it just arrives without a picture, and you can upload one by hand later. A bad image link never costs you the team.
- A team that already has a logo keeps it. Re-importing won't replace a logo you've already set.
Dates#
Date columns (like date of birth) are safest as a real date cell in Excel, which is what our template gives you. If you're typing text, use YYYY-MM-DD — for example 2010-04-03.
Files exported from older versions of MyCup used DD.MM.YYYY, and those still import correctly.
Plan limits#
Imported teams count toward your plan's participant limit exactly like teams you add by hand.
Only rows that add a team spend a slot. Rows that update a team you already have cost nothing, so re-uploading a corrected list of teams you already own works even when you're at your limit.
If a file adds more teams than you have room for, the whole file is rejected and the message tells you how many teams it would add and how many slots remain. We don't import the rows that fit and silently drop the rest — that's the kind of thing you'd only discover weeks later. Either remove rows, or upgrade and upload the same file again.
Venues and referees don't count against anything — no plan caps how many pitches or officials a tournament may have, so those files are only ever limited by the row cap that applies to every upload.
Rosters have their own caps: 50 players and 30 staff per team. Roster uploads count every row against the cap, including rows that only update someone already in the squad — so a full squad can refuse a corrected re-upload. Erring that way is deliberate: it's better to be told a number you can act on than to end up with a squad the rest of MyCup considers over the limit.
Undoing an import#
Uploaded the wrong file? Open Import teams & data → From a file and look at Recent imports at the bottom. Each import has an Undo button for 7 days.
Undo removes what the import added and restores what it changed. Before it runs, it tells you exactly how many records that means.
Undo deliberately leaves some things alone, and says so afterwards:
- Teams already in a match stay. Removing them would break fixtures you've already generated. The same goes for a venue with matches scheduled on it and a referee already appointed to one — undo would leave those fixtures pointing at a pitch or an official that no longer exists.
- Teams that now have players, documents or form responses stay. A team import creates teams empty, so anything on them arrived later — from a roster upload or from you — and undo won't take that with it.
- Venues that now have time slots, or that a division is assigned to, stay for the same reason: a venue import creates a venue with no opening hours and no division pinned to it, so both were set afterwards, by hand. Dropping a division's only venue would be worse than leaving the venue: the restriction wouldn't narrow, it would vanish, and that division's matches would spread across the whole site.
- Records edited since the import stay as you edited them. Your correction wins over the old value.
So a partial undo is a normal, healthy outcome. The notification tells you what was reversed and what was kept.
Once you undo an import, it can't be undone twice, and after 7 days the option disappears along with the stored file.
What happens to your uploaded file#
The file is stored only long enough to process the import, then deleted automatically after 7 days along with the import record. Spreadsheets of participants usually contain personal data — names, dates of birth, contact details — so MyCup doesn't keep them around.
If some rows fail#
Rows are imported independently. If a handful fail validation — a missing name, an unreadable date — the rest still import, and the completion notification links to a file listing exactly which rows failed and why. Fix those rows and upload just them; the successful ones won't duplicate.
Editing teams you already have#
You can export your roster to CSV from Teams & Players, edit it in a spreadsheet, and upload it back here to apply the changes in bulk — handy for fixing a batch of contact emails or reassigning divisions after a draw.
The export carries Name, Division, the three contact columns, and a column for each of your team custom attributes. Those all match on re-import — and because Division is one of them, changing it and re-uploading moves the team rather than adding a copy. If two of your teams share a name, keep both rows in the file so each one keeps its own division (see Two teams with the same name). It doesn't carry description, website or logo columns, so if you need those, start from the import template instead and fill in the names yourself.
Tips#
- Add teams before you build the structure — the structure builder places the teams that exist when you open it.
- If a club sends you a roster in their own format, paste it into our template rather than uploading theirs. Column matching is forgiving, but a template is faster than fixing mismatches.
- Importing from a past MyCup tournament instead of a file? That's Import from a tournament, on the same page under a different source.
Was this page helpful?
Let us know if you found this documentation helpful or if you have suggestions for improvement.