# Mapping your file's columns

> From FilmScorecard Help: https://www.filmscorecard.com/help/mapping-your-columns

Step 2 of the import asks one question: **which column in your file holds
which piece of a submission?** One row per thing FilmScorecard imports, a dropdown
beside it naming the column, and three real values from that column so you can
see what you are choosing.

**Every import answers this screen.** It is not conditional and it is never
skipped — a FilmFreeway export that FilmScorecard recognises from top to bottom
still shows it, already filled in, so you can see what it decided and change
anything that is wrong. Files whose headings FilmScorecard has never seen land on
exactly the same screen with more of it left for you.

**Nothing is written here.** Everything on this screen is a draft until you
press **Continue to categories**, and even then all that is saved is the map
itself — no submissions, no categories, nothing in the season.

## Where it sits

The import is four steps:

1. **Upload** — choose the file.
2. **Map columns** — this screen.
3. **Map categories** — the file's category names against your season's.
4. **Preview** — every row, and the commit.

The header prints "Step 2 of 4, from *your-export.csv*" so you always know
which file you are looking at.

You can come back. **Back to columns**, beside the primary button on step 3,
re-opens this screen with everything as you left it — see [Coming back to this
screen](#coming-back-to-this-screen).

## Reading the screen

### The summary line

One sentence under the step line, kept up to date as you work. It takes one of
three shapes:

| It says | What that means |
| --- | --- |
| "Recognized as a FilmFreeway export. 14 fields matched by name, 3 on their values, 1 with no clear column. 6 fields have no column in this file. 41 of 77 file columns are not imported." | At least 15 of the file's headings are ones FilmFreeway writes. |
| "Layout not recognized. 4 fields matched by name, 9 on their values, 2 with no clear column. …" | Everything else — a spreadsheet you keep by hand, another platform's export, a FilmFreeway file somebody renamed the headings in. **This is not a problem**; it just means more of the work was done by looking at the values. |
| "Set from your template *Spring form*. Every field has a column and there is nothing to check. 4 of 16 file columns are not imported." | One of your saved templates matched this file exactly. See [Templates](#templates). |

**Recognising a FilmFreeway export changes nothing about the mapping.** It
decides which of those sentences you get and what the Save-as-template box
suggests as a name, and that is all.

### The two sections

**Check these** — only drawn when it has rows. These are the fields FilmScorecard
is least sure about: ones it matched by looking at the values rather than at
the column's name, and ones where nothing was confident enough to choose. Its
note reads "Matched on the values, or more than one column fits. Confirm or
change."

**Matched by name** — everything else that has a column. "Change any by
clicking its column."

**A row stays in the section it opened in.** Answer a *Check these* row and it
does not jump to the other section under your cursor; only the line under the
field name changes.

### A row

Each row carries the field's name, a line saying how its column got there, the
column dropdown with the column's position in the file, and up to three values
from it.

**The fields are named the way FilmFreeway names its columns**, in sentence
case: **Submission link**, **Submission password**, **Submission date**,
**Name of school**, **Film color**, **Submission categories**, **Trailer URL**,
**Project website**, **First name**, **Last name**, **Email**, **Phone**,
**City**, **State**, and so on. On a file from another platform, the sample
values beside each column are the quickest way to tell which one a field
wants.

| The line under the field name | What happened |
| --- | --- |
| **Matched by name** | The column is called something FilmScorecard knows — "Submitter Email", "submitter_email" and "Submitter E-mail" are all one name to it. |
| **Matched on the values, the name differs** | The column is called something else, but its values look right — every value an email address, every value a running time. |
| **First Name + Last Name, joined with a space** | Two columns feed this one field. See [Joining two columns](#joining-two-columns). |
| **Derived from Duration** | The field has no column of its own and is read from another field's column — **Page count** from the column Runtime reads, **Completion year** from the one Completion date reads. It is not a gap and is not flagged. See [Derived fields](#derived-fields). |
| **From your template** | One of your saved templates set it. |
| **Set by you** | You chose it on this screen. |
| **Left empty** | You said this file has no such column, or a template said so. It is an answer, not a gap, and it is not flagged. |
| **Required.** *(prefix on Project title)* | The one field that has to have a column. |

A field with no column gets an **amber row**: an amber edge, an amber dropdown
reading **No column** (or **Choose a column** on Project title), no sample
values, and a line saying why — "Trailer URL and Submission link are both
links", "Only Duration looks like it", or "No column named like it".

The figure in the dropdown is the column's **position in the file**, counting
from 1, so you can find it in the spreadsheet you exported. A joined field
shows both — `1+2`.

## Only Project title is required

**Everything else may be left empty**, and leaving it empty is a real answer
rather than an unfinished one. A festival that never collected a screener link
has a file with no screener link; say so and the rest of the file imports as
usual, with that field blank on every submission.

**Project title is the exception.** It has no "leave it empty" option, and
**Continue to categories** stays grey until it has a column, with the footer in
amber: "Project Title has no column. Choose one to continue." Every row needs a
title — a row without one is skipped as an invalid row — so a file with no
title column would import nothing at all.

The footer says which of the three states you are in:

- "Every field that has a column is set. Categories are matched next."
- "6 fields have no column and stay empty. Continue when the rest look right."
- "Project Title has no column. Choose one to continue." *(amber, and the
  button is inert)*

A derived field is not counted among the fields with no column.

## Choosing a column

Click any row's dropdown. A panel opens under it with:

- **a search box**, focused as it opens, matching anywhere in a column's name;
- **Fits *field*** — the columns whose values look right for this field,
  leaving out any column another field is currently using;
- **All 77 columns, in file order** — everything, in the order the spreadsheet
  has them.

Type in the search box and the two groups collapse into one flat list. Each
option shows the column's name, its position, one sample value, and **Used by
*field*** when something else holds it. Picking one closes the panel.

**Escape clears the search if there is anything in it, and closes the panel if
there is not.** Only one panel is open at a time, and closing one puts your
cursor back on the control that opened it.

A search that matches nothing shows one line — "No column matches "xyz"." —
and the two actions at the foot of the panel stay reachable.

### One column feeds one field

**Picking a column another field is using moves it.** The field that had it
loses it and turns into an amber row where it stands, and the counts in the
header and footer follow. There is no confirmation step, because you can see
what happened.

The two [seeded joins](#joining-two-columns) are the one place a column is
legitimately held twice — "First Name" feeds both *First name* and the joined
*Submitter name* — and the picker says so: "Used by Submitter name and First
name". Picking it for something else takes it from both.

### Joining two columns

Some fields can read **two columns at once**. Open the field's picker, choose
**Add a column to join** at the foot, and the next column you pick is added
rather than swapped in.

- **Names join with a space** — *Submitter name*, *First name*, *Last name*.
  "David" + "Sharif" becomes "David Sharif".
- **Everything else that can join uses a comma and a space** — the five credit
  fields, the synopsis, the submitter statement, and the plain and long text
  fields. "Alice" + "Bob" becomes "Alice, Bob", because every credit in
  FilmScorecard is a comma-separated list.
- **Some fields cannot be joined at all**, and the action is simply not
  offered: the category, dates (a birthdate among them), running time and page
  count, email, phone, countries, links, and the two reference numbers.
  Joining two of those produces something nothing downstream can read.

The row's helper always names the separator, and the sample values show the
**joined** result rather than the two halves, so you can see "David Sharif"
before you commit to it.

**Two joins are set up for you** when the file has the columns for them:
*Submitter name* from "First Name" + "Last Name" (or "Submitter First Name" +
"Submitter Last Name"), and *Directors* from "Director First Name" + "Director
Last Name". FilmScorecard used to do both of these invisibly; now they are
ordinary rows you can see and change. A file that has its own "Submitter Name"
column uses that instead and no join is set up.

### Derived fields

**Page count** and **Completion year** can be filled without a column of their
own:

- **Page count** is read from the column **Runtime** reads. FilmFreeway's
  Duration column carries "00:07:05" on a film's row and "112 Pages" on a
  screenplay's, so one column serves both.
- **Completion year** is read from the year of the column **Completion date**
  reads.

When the file has no column of its own for the field and its source field has
a column, the row reads "Derived from Duration" (or "Derived from Completion
Date"), opens under **Matched by name**, and is not listed among the fields
with no column. **A column of its own wins**: a file with a Page Count column
binds it by name as usual. Picking a column for a derived field turns it into
an ordinary row.

### Leaving a field empty

**Leave *field* empty** is the second action at the foot of every picker except
Project title's. The row's helper becomes "Left empty", the dropdown reads
"No column", and the row is not flagged — you have answered the question.

## The two lists at the bottom

Both start closed.

### "6 fields have no column in this file"

Fields FilmScorecard could not place at all. Its note is exact: **"They stay empty
on import."**

**These pills are buttons.** Click one and the same column picker opens on it;
choose a column and the field is promoted into a row of its own with the helper
"Set by you". This is the only way to reach a field FilmScorecard missed entirely,
so it is worth opening the list once on an unfamiliar file.

**On a file that is not a FilmFreeway export, this list is longer than it used
to be.** The fields added for FilmFreeway's full export — the submitter's
birthdate, gender, pronouns and postal address, the camera details, the cover
letter and the rest — are only ever matched by a column's name, so on a file
that names them differently they wait here for you rather than being guessed
from their values.

### "41 of 77 file columns are not imported"

Columns no field uses, with their positions. These are not clickable; they are
the honest tally of what this mapping leaves behind. The note reads **"No field
uses them. The file itself is untouched."**

**Read that list.** It is the one genuinely new consequence of this screen:

> **A column no field uses is dropped.** Its values are not written to the
> submission, and there is nowhere in FilmScorecard to find them afterwards. The
> uploaded file is untouched and the column still appears in step 4's preview
> grid, so you can read it there — but reading it in the preview is not the
> same as importing it, and editing its cells in the preview changes nothing.

This is a change from how imports used to work, where the preview claimed every
column was imported. It never was; now the count is truthful, on this screen and
on step 4 ("13 of 77 columns mapped to fields").

If a column matters, give it a field. If FilmScorecard has no field for it — a
festival question, a payment status, a still image — it is dropped, and there is
no custom-field storage yet. On a FilmFreeway export the columns left here are
mostly the ones it deliberately does not import — FilmFreeway's own judging
columns, Submission Status and your festival's own questions; see
[What a FilmFreeway export carries that is not imported](https://www.filmscorecard.com/help/importing-submissions.md#what-a-filmfreeway-export-carries-that-is-not-imported).

## How FilmScorecard works out the mapping

In this order, and a field settled by an earlier rule is never reconsidered by a
later one:

1. **A saved template** whose header list is exactly this file's.
2. **The column's name.** Case, spaces, underscores, punctuation and accents
   are all ignored, so "Project Title", "project_title" and "PROJECT TITLE" are
   one name. Where a field has several known spellings the most specific wins —
   "Runtime" beats "Duration".
3. **The two seeded joins**, and then **the two derived fields**, when their
   source field has a column.
4. **The column's values.** A column fits a field when at least **three**
   non-empty values were tested and at least **80%** of them look right.
   FilmScorecard reads the first 200 rows and tests up to 20 values per column, so a
   column that is nearly always blank never matches on values — you can still
   choose it by hand. **The fields added for FilmFreeway's full export never
   take part in this step**: they are matched by name or not at all.
5. **Nothing.** The field has no column.

**A column already spoken for is invisible to the value test**, so two fields
never both claim one column by accident.

**A bare "Country" column is the film's country of origin**, unless the file
also has a "Country of Origin" column — then "Country" is the submitter's own
country, which is how FilmFreeway's export lays them out.

When more than one column fits:

- **Exactly one fits** → it is assigned, and the row opens under *Check these*
  so you confirm it.
- **Two or three fit** → nothing is assigned. The row opens amber, naming up to
  two of them: "Trailer URL and Submission link are both links."
- **Four or more fit** → the signal is worthless and is thrown away; the field
  goes into the "fields have no column" list instead of asking you a question
  with four right answers. **Project title is exempt** — it always gets its own
  row, however many columns fit, because it is the field that blocks.

## Templates

A template is a saved mapping: which column feeds which field, joined columns
included, and the fields you left out. **No submission data is stored in one.**

**Templates belong to the festival, not the season.** Save one while importing
into 2026 and it is there for 2027, and for every other season of that festival.
They do not travel between festivals.

### Saving one

**Save as template** in the header opens a small box. The name is filled in for
you — "FilmFreeway export" for a recognised file, otherwise the file's own name
with its separators turned into spaces ("spring-form-2026.csv" becomes "spring
form 2026") — and you can type anything you like over it. The only rule is that
the name cannot be blank.

**Duplicate names are allowed on purpose**, so two people can each save their
own version of the same layout. The Apply list tells them apart by their saved
date.

Saving writes the template and nothing else — your import is still a draft. A
pill appears in the header reading "*name*, saved today".

### It applies itself when it fits

Upload a later file whose columns are **exactly** the same set as the template's
— same columns, in any order, ignoring case and punctuation — and the template
is applied before the screen even draws. Every field it covers reads "From your
template", the second section is headed **Set from your template**, and the
summary says there is nothing to check.

When that happens **there is no Apply control on the screen at all**, because
you did not choose it and there is nothing to choose between. You can still
change any individual field, and you can still save a new template. The next
time you open this screen for the same import — with **Back to columns** — the
template is yours rather than automatic, and **Change template** appears.

If two of your templates both match a file exactly, the one updated most
recently is the one that applies.

### Applying one by hand

When nothing applied itself and the festival has templates, the header offers
**Apply a template**. The list is A to Z with a search box, and each row shows
how well it fits this file:

> **Spring form** — `10 of 12 headers match` · Saved Sep 3

That count is how many of the *template's* columns this file carries. **It turns
amber when fewer than half of them match**, which is the only warning you get
before applying something that will leave most of the screen unset.

Picking one:

- sets every field whose template column exists in this file, with the helper
  "From your template";
- lets fields the template names but this file does not have fall back to
  ordinary matching;
- **discards any changes you had already made on this screen** — you asked for
  the template, not for a merge;
- turns the button into **Change template**.

### Updating one

**Update template** appears in the header only once you have changed something,
and it rewrites the stored mapping with what is on screen right now. There is no
confirmation box.

Two things worth knowing before you press it:

- **It rewrites a record every season of the festival reads.** Somebody else's
  import next month will get your version.
- **It does not change which files the template applies to.** The header list it
  was saved from is left alone deliberately, so updating it while looking at a
  different file cannot silently re-aim it at that file's columns. The
  consequence is that a template updated against a different export can end up
  naming columns its own files do not have — those fields simply fall back to
  ordinary matching next time.

### "Remove the template, keep my changes"

This is pinned at the foot of the Apply panel once a template is applied.

**Read the label with suspicion: it does not keep your changes.** What it
actually does is drop the template *and* put every field back to the match
FilmScorecard computed for the file on its own — discarding everything you set by
hand, both before and after you applied the template. On an import you have
already carried past this screen once, that means the mapping you saved earlier
is replaced on screen by FilmScorecard's own guess.

If what you want is to stop using the template but keep your own edits, **do not
press it.** Change the fields you want changed and press **Continue to
categories**: what gets stored is whatever is on the screen, and a template is
only ever a starting point.

**Pressing it writes nothing**, so if you have been past this screen before, the
mapping you stored last time is still safe until you press Continue. Your
browser's Back button takes you to step 3 with that stored mapping intact.

## Who can do what

| | Import into the season | Apply a template | Save or update a template |
| --- | --- | --- | --- |
| Organization owner or org admin | Yes | Yes | Yes |
| Festival admin, coordinator or programmer, granted on the festival | Yes | Yes | Yes |
| Somebody granted **one season only** | Yes | Yes | **No** |
| Viewer | No | — | No |

**A season-only grant can apply a template but not write one.** That is
deliberate: a template is shared by every season of the festival, and somebody
brought in to run one season should not be able to rewrite what the others read.

**The refusal is not worded helpfully today.** The **Save as template** button
is drawn for everybody, and pressing it with season-only access answers "That
template could not be saved. Try again." — which will never succeed. If you see
that message and you were added to one season rather than to the festival, ask
whoever manages [festival access](https://www.filmscorecard.com/help/festival-access.md) to widen it, or ask them
to save the template for you.

Anyone who cannot open the season at all gets an ordinary "page not found" from
the import address, exactly as before.

## Coming back to this screen

**Back to columns** on step 3 re-opens it. Everything you saved is still set;
what FilmScorecard cannot remember is *how* each column got there, so it works that
out again by re-running the match and comparing. A field holding exactly what
FilmScorecard would have chosen keeps its original reason; anything else reads "Set
by you" or "From your template". A derived field still reads "Derived from …"
as long as its source field has a column.

Two consequences:

- **Changing the Submission categories column can unsettle step 3.** The
  category names in the file come from whichever column feeds it, so pointing it
  somewhere else gives step 3 a different list of names, and names you had
  already matched may come back unmatched. That is the point of the button —
  discovering on step 3 that the categories look wrong *because* the wrong
  column was mapped used to be unrecoverable.
- **Leaving Submission categories empty is allowed**, and step 3 then shows a
  single row reading "No category column in this file" carrying the whole
  file's row count, where you choose one category for the lot.

**Back to upload** leaves the draft exactly where it is and gives you a fresh
upload card. Nothing is deleted — but nothing offers to resume it either, so
treat it as walking away: the fastest route back is to upload the file again.
Abandoned drafts are swept after seven days.

**An import started before this screen existed asks the whole screen again.**
Any column answers such a draft carried are not read any more — one screen, one
answer.

## When something is refused

The message appears in the footer, in amber, and **your choices are kept** —
nothing navigates and nothing is written.

| Message | What to do |
| --- | --- |
| "Project Title needs a column before you can continue." | Choose a column for Project title. You normally see the greyed button instead; this is the same rule from a stale tab. |
| "That column is not in this file. Refresh the page and try again." | The screen and the stored file have got out of step. Refresh. |
| "That import is no longer available. Start again from Imports." | The draft is gone — cleared, or older than seven days. |
| "This import has already been submitted. Refresh the page." | Another tab already sent it. Refresh and look at [Imports](https://www.filmscorecard.com/help/imports.md). |
| "You do not have permission to import into this season." | Your account cannot import here. |
| "Something in that request is not valid. Refresh the page and try again." | Refresh and try once more. |
| "That did not work. Try again." | Something went wrong in transit. Nothing was written. |
| "That template could not be saved. Try again." | The template write failed. If it keeps failing, it is probably permission — see [Who can do what](#who-can-do-what). |

## On a narrow window

Below about 900 pixels each row stacks: the field name, then the column
dropdown across the full width, then the samples. The sections and the two
lists are unchanged.

On a phone the column picker and the template list are not anchored to their
buttons at all — they open as a panel across the bottom of the screen, with the
same list and the same pinned actions.

## What this screen does not do

- **It does not store the columns it drops.** No custom fields, nowhere for a
  festival question or a payment status to land.
- **It does not manage your templates.** There is no list to rename, tidy or
  delete from; they accumulate on the festival.
- **It does not warn you before overwriting a template.** **Update template**
  writes immediately.
- **It does not remember your last import's answers.** Templates replaced that:
  a mapping is either saved deliberately, with a name, or worked out fresh.
- **It does not read anything across festivals.** Templates belong to one
  festival, and matching only ever looks at this file and this season.
- **It does not explain a field.** There is no hint or tooltip on a field's
  name; the sample values are the guide.

## Related guides

- [Importing submissions](https://www.filmscorecard.com/help/importing-submissions.md) — the four steps end to
  end: choosing the file, this screen, matching categories, and checking every
  row before anything is written — and what a FilmFreeway export brings in.
- [Imports](https://www.filmscorecard.com/help/imports.md) — what happens after you confirm: the job card,
  cancelling and retrying, the history, and rolling a batch back.
- [Festival access](https://www.filmscorecard.com/help/festival-access.md) — who is granted what, and the
  difference between a festival-wide grant and a season-only one.
- [Submissions](https://www.filmscorecard.com/help/submissions.md) — where the imported rows end up.
