← All help articles

Importing leads from a CSV

leadscontactsgetting-started
Importing leads from a CSV

If you're moving into 1pm from a spreadsheet, another CRM, or a shared inbox somebody has been tracking leads in, you don't have to retype the backlog. The leads import takes a CSV and creates one lead per row, ready to work. This article covers where to find it, the file format, how leads link to your existing contacts, what counts as a duplicate, and the things worth knowing before you upload.

Nothing is emailed

Start here, because it's the question everybody asks: importing sends no email and runs no automations. Nobody in the file is contacted, no acknowledgement goes out, and none of your Lead received workflows fire.

That's deliberate. An imported file is usually history, not fresh leads, and sending two hundred people an automatic "thanks for your lead" about something they asked six months ago would be a bad afternoon. If you want a lead to receive something, you send it yourself from the lead's thread after the import.

Where to find it

Go to the Leads page. At the top, next to the Add lead button, there's an Import button that takes you to /Leads/Import.

The page has three parts: a Download template button, a CSV format section you can expand, and the file upload form.

Get the template first

Click Download template. You'll get a small CSV with the exact column headers 1pm expects and three example rows showing a full row, a row without a lead type, and a phone-only row with no email address. Open it in Excel, Numbers, Google Sheets, or any plain text editor.

Working from the template is the easiest way to get this right. Put your leads under the examples, delete the examples, save, upload.

You can build the file from scratch instead. The first row must be a header row, column order doesn't matter, and names are case-insensitive: EventDate, eventdate and EVENTDATE all work.

The columns

There are ten. Two can be required, depending on the row.

  • EventDate. Required on every row. The date of the event they're enquiring about. Write it as 2027-05-15 or 15/05/2027. See the section on dates below, because this is the one column worth being careful with.
  • FirstName. Required, unless the row's Email matches one of your existing contacts (see below). Up to 100 characters.
  • LastName. Optional. Up to 100 characters.
  • CompanyName. Optional. The client behind the lead. For a wedding that's usually the couple as one party ("Bob & Sue"); for a commercial client it's their business name ("Acme Events Ltd"). Up to 200 characters.
  • Email. Optional, but see the next column. Up to 256 characters, and it has to look like a real address (exactly one @ sign, with a dot in the domain) or the row is rejected.
  • Phone. Optional, but a lead needs an Email or a Phone. Up to 50 characters, and fussier than it looks: digits, plus, hyphen, brackets, full stop and spaces are the only characters allowed. A cell reading "0412 345 678 (mob)" fails the whole row, so strip the words out first.
  • Pax. Optional. Guest count, as a whole number. Leave it blank if they didn't say.
  • EventType. Optional. Free text, up to 200 characters: "Wedding", "Conference", "30th birthday". This is the same field the lead form collects, and it feeds the event-type reporting.
  • Message. Optional. Up to 4,000 characters. What they actually asked for. Worth filling in: it's what you read first when you open the lead weeks later.
  • LeadType. Optional. The name of one of your lead types, spelled exactly as it appears on the Lead types page. This is what drives the sales PDF on the lead's quote, the terms a confirmation snapshots, and which automations the lead belongs to, so it's worth setting if your leads fall into distinct types. Leave it blank for an untyped lead.

Why every lead needs a date

EventDate is required, and there's no way round it. In 1pm the lead's event date is the single source of truth for that job: it's what the calendar shows, what the Space double-booking check reads, and what carries onto the booking when the lead converts. A lead with no date can't be checked against anything.

If you genuinely don't know the date for some of your backlog, put your best guess in and correct it on the lead afterwards, or leave those rows out of the file and add them by hand.

Dates: day first, never month first

1pm reads six shapes, and every one of them puts the day before the month:

  • 2027-05-15 (year first). Unambiguous, and the one to use if you have the choice.
  • 2027/05/15 (year first, with slashes).
  • 15/05/2027 (day first).
  • 15-05-2027 (day first, with hyphens).
  • 15 May 2027 (short month name).
  • 15 September 2027 (full month name).

A few notes on how strictly those are read. The year is always four digits. The year-first shapes need two digits for the month and the day, so 2027-05-15 works and 2027-5-15 is rejected, while the day-first shapes take either, so 5/5/2027 is fine. Month names are English, and the short form is the first three letters: Sep, not Sept.

If a row is rejected, the error names 2027-05-15 and 15/05/2027, because those two are the ones worth retyping a column to.

It deliberately does not read month-first dates. 05/15/2027 is rejected rather than guessed at, and so is anything else it can't recognise. This is on purpose: a spreadsheet full of day-first dates read as month-first would put your whole pipeline on the wrong day, and nothing about the file would tell you it had happened. You'd find out weeks later when somebody rang about a booking that wasn't in the diary.

Excel is the usual culprit here. If you're not sure what your date column actually contains, format it as text and type the dates as 2027-05-15 before saving.

How leads link to your contacts

If a row's Email matches one of your existing contacts, 1pm links the lead to that contact and takes the client's identity from the contact record: their name, company and phone, whatever the CSV says. On those rows FirstName isn't required, because the contact already supplies it.

That's the same thing that happens when you pick a contact in the Add lead form, and it's why the linked contact becomes the booking's Client contact automatically when the lead converts.

No contacts are created by the import. If a row's email doesn't match anything, the lead is created with the details from the file and no contact record is made. 1pm creates the contact when the lead converts to a booking, which is the point at which you actually know you're dealing with them. An import that also seeded your address book would double up every client you already have and eat into your contact cap for leads that never go anywhere.

The practical order, if you're migrating both: import your contacts first, then your leads. The lead rows will find the contacts and link themselves.

What counts as a duplicate

A row is skipped as a duplicate only when its email, event date and lead type all match a lead you already have.

That's a deliberately narrow rule, and it's different from the contacts import, which skips on email alone. One person is one contact, but the same client can absolutely enquire twice: a March wedding lead and a September corporate lead from the same address are two leads, and collapsing them would lose one. So only a genuine repeat, the same person about the same date and the same type, is treated as one you already hold.

A few consequences worth knowing:

  • Re-importing the same file is safe. Every row matches what landed the first time and is skipped.
  • The check runs within the file too, so a spreadsheet listing the same lead twice creates one lead.
  • Rows with no email aren't deduplicated. A phone-only lead has nothing stable to match on, so it always imports. Upload a phone-only file twice and you'll get two copies.
  • Leads in every state count, including ones you've marked lost, archived or spam. If you turned a lead down in March, importing it again doesn't bring back a second copy.

What an imported lead looks like

Imported leads land as qualified, on the Qualified tab, exactly like a lead you add by hand. The reasoning is the same: you've already vetted these by putting them in the file, so they skip the New triage step.

They also get:

  • Your account's default Space, if you've set one. The CSV doesn't collect a Space, so change it on the lead if a particular job was somewhere else.
  • A reply address, so a later email reply from the client threads onto the lead the normal way.
  • No quote, no booking, no messages. Just the lead.

Everything else works from there as normal: reply, quote, convert to a booking.

The import results

After the upload you'll see a results card with three counts:

  • How many leads were imported.
  • How many were skipped as duplicates.
  • How many rows had errors and weren't imported.

If any rows had errors, expand View errors to see the line number and reason for each one. The line numbers match your file, counting the header as line 1, so you can fix the original and re-upload.

An import is all or nothing when something goes badly wrong. If the file fails to parse, or the write itself fails, no leads are created at all. You'll get an error message saying so, and you can fix the file and try again without worrying about a half-finished import sitting in your pipeline. Rows rejected individually for a validation error are different: the good rows in that file still import, and only the broken ones are reported back.

Common gotchas

  • The first row must be headers. A file that starts with data has its first lead read as a header row and everything after it misread.
  • Month-first dates are rejected, not guessed. See the dates section above.
  • A LeadType that doesn't match one of yours fails the row. It's an error rather than a silent blank, because a file that was meant to be all wedding leads quietly importing as untyped leads is a mess you'd find weeks later when the wrong terms went out on a quote. Check the spelling against the Lead types page.
  • Phone numbers can't contain words. "ext 12", "(mob)" and "call after 5" all fail the row.
  • A repeated column name isn't an error. If your header row has Email twice, the first wins and the second is ignored. Blank rows are skipped the same way.
  • The maximum file size is 1 MB, which is a few thousand leads. If you're over that, split the file and upload it in two goes.
  • Excel's "CSV" and "CSV UTF-8" formats both import with accented names intact.

What import doesn't cover

The import handles the essentials: who, when, how many, what type, what they asked for. It deliberately doesn't carry:

  • Status history. Everything lands qualified. If some of your backlog is already won or lost, mark those after the import.
  • Start and end times. Add them on the lead, or when it converts.
  • Custom field answers, the ones your lead forms collect.
  • Message threads. Past correspondence stays wherever it is now; the Message column is your one place to record the gist.

If any of those turn out to matter for the way you work, tell us and we'll look at adding them.

When import isn't the right tool

For one or two leads, Add lead on the Leads page is faster than building a file. Import earns its keep when you're moving a real backlog in, or when somebody hands you a spreadsheet of leads from a wedding fair.

Still stuck after reading this? Open a help ticket and we'll answer your specific question.