---
title: "Importing Events"
slug: "importing-events"
updated: 2026-06-12T10:58:23Z
published: 2026-06-12T10:58:23Z
canonical: "help.infoodle.com/importing-events"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://help.infoodle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Importing Events

An **Events import** bulk-creates events on the infoodle calendar from a CSV file. Use this when you need to load a whole programme of events at once — a year of services and meetings, a season of classes, a multi-day conference schedule, or a list of external commitments — rather than adding events one at a time through **Events → Add Event**.

This article covers the **Events** entity of the infoodle Import tool. For the general shape of the import wizard, see [Import Data](/docs/import-data); for getting your data ready, see [Preparing Import Data](/docs/preparing-import-data).

## Before you start

- You need the **Access Import Tool** role item to open
the Import tool. An administrator grants this from **Administration → Roles**.
- You need the **Add events** role item to create new
events. If you are updating existing events through the import (for
example, refreshing the start time on a series that was already loaded),
you also need **Edit all events**.
- The infoodle **Events package** must be enabled on
your site. If **Events** is not in your main menu, contact infoodle
support to have it switched on.
- A properly-formatted CSV file. The Import tool offers an example
template you can download — see **Step 1** below.

## The fields an Events import loads

Each row of your CSV becomes one event. The columns map to the following infoodle event fields:

| CSV column | What it sets | Example |
| --- | --- | --- |
| **Event Title** | The internal name of the event — the title that appears on the calendar for staff. | Sunday Service |
| **Colour Code** | The numeric colour code used to colour-band the event on the calendar. Codes correspond to the colour palette already configured for your tenant. | 2 |
| **Event Status** | One of **Confirmed**, **Planned but not confirmed**, **Suggested**, or **Cancelled**. | Confirmed |
| **Visible on Internet** | **Yes** or **No**. When **Yes**, the event is published to your public-facing calendar feed under the **Public Event Title**. | Yes |
| **Event Description** | Free-text description of the event. Used in calendar tool-tips and on the public listing. | Weekly Sunday morning service in the main hall. |
| **Link to web page** | Optional URL shown alongside the event — e.g. a registration page or sermon notes. | https://example.org/sunday |
| **Public Event Title** | The title shown to public visitors when **Visible on Internet** is **Yes**. If blank, the public feed will fall back to the internal **Event Title**. | Sunday Worship Service |
| **Setup Start Datetime** | When room or equipment setup begins. Earlier than **Event Start**. | 09/05/2023 08:50:00 |
| **Event Start Datetime** | When the event itself begins. | 09/05/2023 09:00:00 |
| **Event End Datetime** | When the event itself ends. | 09/05/2023 10:00:00 |
| **Packdown Complete Datetime** | When packdown / clear-out finishes. Later than **Event End**. | 09/05/2023 10:10:00 |
| **All day event** | **Yes** or **No**. When **Yes**, the event spans the whole day(s) regardless of the times in the date columns — set the dates to **00:00:00** and **23:59:59** to be explicit. | No |
| **Created by User (Unique ID)** | The infoodle Unique ID of the person who should be recorded as the event owner / creator. This person must already exist in infoodle. | 42 |

---

## Step 1: Prepare the CSV

The cleanest way to start is to download infoodle's example Events template, replace the example rows with your data, and save the file as CSV.

1. Go to **Administration → Data Import**.
2. Under **Start new import**, enter a label (e.g.
**Q3 2026 Events**), pick **Events** from the
**Select the import type** dropdown, and click **Start**.
3. On the **Upload data** step, click
**Download template** to get
`events-example.csv`.

### Date and time formatting

- All four datetime columns use the format
`DD/MM/YYYY HH:MM:SS` (24-hour clock). The infoodle Import
tool will parse other common datetime formats if your spreadsheet
exports them differently, but matching the template is the safest
option.
- Datetimes are interpreted in your tenant's configured time zone.
The Events calendar then displays them in that same zone, so a 09:00
service in a New Zealand-configured tenant means 09:00 NZT.
- For an **All day event**, set the **Event Start** to
`00:00:00` and **Event End** to `23:59:59`
on the appropriate date(s). Multi-day all-day events use the start
date's 00:00:00 and the end date's 23:59:59.

### Required vs. optional columns

At a minimum each row needs an **Event Title**, an **Event Start Datetime**, an **Event End Datetime**, and the **Created by User** Unique ID. **Colour Code**, **Event Status**, **Visible on Internet**, **All day event**, **Setup Start** and **Packdown Complete** all have sensible defaults but are easier to set correctly in the spreadsheet than to back-fill afterwards.

### Recurring events

The Events import does **not** create recurring-event series — each row of the CSV becomes one independent event. Mapping a weekly meeting to a series in the import would mean enumerating each instance as its own row (52 rows for a year of weekly events). If you need a true recurring series — one master event that the calendar repeats — create the series manually after the import, or use the **Events → Add Event** screen with the recurring options. **(Recurring-import behaviour was not confirmed against the live UI for this draft — verify before publishing.)**

## Step 2: Open the Import tool and pick Events

From the cog menu in the top-right of any infoodle page, go to **Administration**, then click **Data Import** on the Administration tile.

On the Import tool's start screen, enter a label that describes the batch you're loading (e.g. **Sunday Services H2 2026** or **Term 3 Classes**), then choose **Events** from the import-type dropdown and click **Start**.

## Step 3: Upload the CSV

The **Upload data** step has two halves. On the left, you can re-download the example template if you need a fresh copy. On the right, either drag your prepared CSV onto the drop zone or click it to open a file browser.

Click **Continue** once the file has uploaded to move on to field mapping.

## Step 4: Map the columns

The **Fields** step is where you tell infoodle which column of your CSV corresponds to which event field. If you used the example template column headers verbatim, the Import tool will recognise most of them automatically — you'll see them already mapped on the **Assigned** tab.

The Fields screen has three tabs:

- **Remaining** — columns that aren't mapped yet.
The **Remaining fields to Map** progress bar on the right is your
guide; work down the list until it hits zero.
- **Assigned** — columns that are mapped to an
infoodle event field.
- **No Import** — columns marked
**Do Not Map**. Use this for extra columns in your spreadsheet that
infoodle doesn't need to load (e.g. an internal reference number you
were using to keep track of rows).

For each column on the **Remaining** tab, pick the matching infoodle field from the dropdown (e.g. your CSV's `Event Start Datetime` column maps to the infoodle **Event Start** field). When you select a date field, infoodle shows a **Date Format** setting — check it matches the format you used in the spreadsheet. When you finish a page, click **Save Mapping** to apply the choices and move the rows to **Assigned**.

For general guidance on the mapping table and its settings, see **[Configuring Data Fields](/docs/configuring-data-fields)**.

## Step 5: Configure the import settings

Click **Continue** from the Fields screen to reach **Configure**. This is where you tell infoodle how to handle duplicates — rows in your CSV that look like events already in infoodle.

The four duplicate-handling options follow the same pattern as other import types: **Always create new**, **Create new only**, **Update existing only**, and **Update existing and create new**. For a first-time bulk-load of a new programme, **Always create new** is normally what you want. For refreshing a series you've previously imported, **Update existing and create new** plus a duplicate-identifier column (such as **Event Title**) lets infoodle match each row to the existing event.

For full detail see **[Configuring Import Settings](/docs/configuring-import-settings)**.

## Step 6: Check, then run

The **Check** step is the last stop before any data is written. infoodle shows you, for each row:

- The fields it will set on the new event.
- Any rows where it has detected a likely duplicate (these are
marked with a duplicate icon — click it to open the matched
existing event in a new tab and confirm the match is correct).
- Any rows where validation has failed — for example a missing
required field, an unparseable datetime, or a **Created by User**
Unique ID that doesn't exist in infoodle. Errors are highlighted; you
can fix them inline and click **Save Changes**.

When you're satisfied with the preview, click **Continue** to queue the import. infoodle runs a final data-validation check, then creates the events. The wizard shows a live count of **Records Created** and **Records Updated** as it goes.

For detail on the Check step and how to interpret validation errors, see **[Check and Run the Import](/docs/check-and-run-the-import)**.

## Step 7: Verify the events on the calendar

Once the import status reads **Import complete**, go to **Events** in the main menu and navigate to a date range that should contain the new events. Click an event to confirm the title, status, description, public title and times all loaded as expected.

## If you need to undo an import

Every completed Events import shows up under **Continue existing import** on the Import tool's start screen with a **Roll back changes** button. Rolling back removes the events that this particular import created. Use it if you spot a structural mistake (wrong colour code on a whole batch, wrong time zone in the source data, etc.) and want to start again rather than fix events one at a time.

## Common gotchas

<dt>"My dates all imported a month off."</dt>
<dd>The template uses <strong>DD/MM/YYYY</strong> (day first), not
MM/DD/YYYY. If your spreadsheet is set to US date formatting,
<code>05/09/2026</code> will be read as 5 September, not 9 May. Set the
<b>Date Format</b> in the field mapping step to match what your
spreadsheet actually contains, or change the spreadsheet's date format
before exporting to CSV.</dd>
<dt>"All my events appeared at the wrong time of day."</dt>
<dd>The Events import treats datetimes as your tenant's configured time
zone — not UTC. If your source data is in a different zone
(e.g. exported from a US-based system into a NZ-configured infoodle),
convert the times before importing.</dd>
<dt>"The Created by User column rejects my Unique IDs."</dt>
<dd>The Unique ID in this column has to be an existing person's
infoodle ID, not a name and not a role. Look the ID up via a People
report (<b>Reports → Add report → People</b>, include the
Unique ID field) and paste the numbers into the spreadsheet.</dd>
<dt>"My recurring weekly meeting only showed up once."</dt>
<dd>Each CSV row creates one event — the Events import is not
aware of recurring series. Either enumerate every occurrence as its
own row, or create the series manually through
<b>Events → Add Event</b> after the import.</dd>
<dt>"All my events came in as Suggested."</dt>
<dd>The <b>Event Status</b> column accepts <b>Confirmed</b>,
<b>Planned but not confirmed</b>, <b>Suggested</b> and
<b>Cancelled</b> spelled exactly as shown. A blank or unrecognised
value typically falls back to <b>Suggested</b>. Set the column
explicitly for every row.</dd>
<dt>"Setup and Packdown times are wrong / missing."</dt>
<dd>The Setup and Packdown datetime columns are independent of Event
Start and Event End. If you don't track room setup, set Setup Start =
Event Start and Packdown Complete = Event End so they don't show empty
on the calendar.</dd>

Related Pages

[Import Data](/v1/docs/import-data) [Preparing Import Data](/v1/docs/preparing-import-data) [Starting your Import](/v1/docs/starting-your-import) [Configuring Data Fields](/v1/docs/configuring-data-fields) [Configuring Import Settings](/v1/docs/configuring-import-settings) [Check and Run the Import](/v1/docs/check-and-run-the-import)
