> For the complete documentation index, see [llms.txt](https://docs.informationhub.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.informationhub.io/tutorial/intermediate.md).

# Intermediate: Data Workflows

This section builds on the project you created in [Beginner](/tutorial/beginner.md). You will import a larger dataset, add photo capture to your form, export results, manage tasks, document your project, build a public app, and collect data offline.

{% hint style="info" %}
This section assumes you have completed the [Beginner](/tutorial/beginner.md) tutorial and have the **Fynbos in Siberia** project with the **Species Observations** table and **Field Observation Form** already set up.
{% endhint %}

***

## Step 1: Import data from a spreadsheet

Dr. Mwangi's colleague Dr. Volkov has been collecting observations in a spreadsheet. Instead of re-entering everything by hand, she imports the file directly.

### Add latitude and longitude columns

The standard for storing location data is two separate columns - one for latitude and one for longitude. Before importing, add these to the Species Observations table:

1. Open the **Species Observations** table.
2. Click **ADD** in the toolbar, then **Add Column**.
3. Add two columns:
   * Name: `latitude`, type: **Double Precision**
   * Name: `longitude`, type: **Double Precision**
4. Click **Save**.

{% hint style="info" %}
With separate `latitude` and `longitude` columns in place, you can now return to the **Field Map** dashboard from the Beginner section and configure the Map component's lat/lng fields. See [Beginner](/tutorial/beginner.md) step 7 for the Map component setup.
{% endhint %}

### Prepare the file

Create a CSV file (`.csv`) or TSV file (`.tsv`) with the same column names as the Species Observations table. Here is an example with 20 rows:

```
species_name,site,latitude,longitude,height_cm,leaf_count,soil_ph,observation_date,observer
Protea siberica,Site Alpha,62.0352,129.6749,46.5,35,5.7,2026-02-10,Dr. Pavel Volkov
Erica glacialis,Site Alpha,62.0364,129.6742,13.1,162,5.5,2026-02-10,Dr. Pavel Volkov
Restio permafrostii,Site Alpha,62.0359,129.6747,80.2,24,5.8,2026-02-10,Dr. Pavel Volkov
Protea siberica,Site Beta,55.0092,82.9363,39.7,29,6.4,2026-02-11,Dr. Pavel Volkov
Erica glacialis,Site Beta,55.0088,82.9352,16.0,195,6.1,2026-02-11,Dr. Pavel Volkov
Restio permafrostii,Site Beta,55.0083,82.9359,79.1,21,6.0,2026-02-11,Dr. Pavel Volkov
Protea siberica,Site Alpha,62.0356,129.6750,48.1,37,5.9,2026-02-15,Dr. Lena Mwangi
Erica glacialis,Site Alpha,62.0362,129.6746,13.8,168,5.6,2026-02-15,Dr. Lena Mwangi
Restio permafrostii,Site Alpha,62.0357,129.6752,83.4,26,5.7,2026-02-15,Dr. Yuki Tanaka
Protea siberica,Site Beta,55.0091,82.9360,40.5,30,6.2,2026-02-16,Dr. Yuki Tanaka
Erica glacialis,Site Beta,55.0086,82.9356,16.8,203,6.0,2026-02-16,Dr. Yuki Tanaka
Restio permafrostii,Site Beta,55.0082,82.9358,80.8,23,6.1,2026-02-16,Dr. Lena Mwangi
Protea siberica,Site Alpha,62.0354,129.6751,49.3,38,5.8,2026-03-01,Dr. Lena Mwangi
Erica glacialis,Site Alpha,62.0360,129.6745,14.5,175,5.5,2026-03-01,Dr. Pavel Volkov
Restio permafrostii,Site Alpha,62.0358,129.6748,85.0,27,5.9,2026-03-01,Dr. Pavel Volkov
Protea siberica,Site Beta,55.0093,82.9362,41.2,31,6.3,2026-03-02,Dr. Yuki Tanaka
Erica glacialis,Site Beta,55.0089,82.9354,17.5,210,5.9,2026-03-02,Dr. Yuki Tanaka
Restio permafrostii,Site Beta,55.0081,82.9357,82.1,24,6.2,2026-03-02,Dr. Lena Mwangi
Protea siberica,Site Alpha,62.0355,129.6753,50.8,40,5.7,2026-03-10,Dr. Lena Mwangi
Erica glacialis,Site Alpha,62.0363,129.6744,15.2,182,5.6,2026-03-10,Dr. Lena Mwangi
```

### Import the file

1. In the project sidebar, click **Tables** and open **Species Observations**.
2. Click the **ADD** button in the toolbar, then select **Import Data**.
3. Select your CSV or TSV file.
4. The import preview shows you how the file's columns map to the table's columns. Verify the mapping looks correct.
5. Click **Import**.

The 20 new rows are added to the table. You should now have 28 rows total (5 manual + 3 from form + 20 imported).

See [Import Data](/project/tables/import-data.md) for more details on column mapping and handling mismatched headers.

***

## Step 2: Add photo capture to the form

Field workers photograph each plant specimen as part of the observation. Dr. Mwangi adds a **File Upload** question to the form so photos are captured in the same submission as the measurements.

### Add a File Upload column to the table

First, the table needs a column to hold the photo references.

1. Open the **Species Observations** table.
2. Click **ADD** in the toolbar, then **Add Column**.
3. Enter the name `plant_photo` and set the data type to **File**.
4. Click **Save**.

{% hint style="info" %}
File columns require a **storage path** configuration - this tells the platform where uploaded files are saved in your project's Storage. When you create the column, a path is set automatically. You can customise it in the column settings. See [Super: Dynamic file paths](/tutorial/super.md) for how to organise uploads by site and date automatically.
{% endhint %}

### Add the question to the form

1. Open the **Field Observation Form** in the form builder (click **Edit** in the form toolbar).
2. At the bottom of the **Observation Details** section, click **CLICK HERE TO ADD A QUESTION**.
3. Name the question **Plant Photo**.
4. Set the **Type** to **File Upload**.
5. Link it to the **plant\_photo** column in the Species Observations table.
6. Click **Save**.

### What field workers see

When filling in the form, the Plant Photo question shows four capture buttons:

| Button      | Action                                                |
| ----------- | ----------------------------------------------------- |
| File icon   | Opens the device file picker - browse existing photos |
| Camera icon | Opens the device camera to take a photo on the spot   |
| Video icon  | Records a short video clip                            |
| Mic icon    | Records an audio note                                 |

On a phone in the field, the **camera** button is the most useful - it opens the camera directly without leaving the form.

After taking a photo, it appears as a thumbnail with a link. A **trash** icon removes it if the wrong photo was taken. Multiple files can be attached to a single question.

Submit one of the existing test observations again (via the form) and attach a photo. Then open the Species Observations table and click on the File cell for that row - the photo appears as a clickable link.

***

## Step 3: Export data

Dr. Mwangi wants to share a snapshot of the data with a collaborator who uses Excel.

1. Open the **Species Observations** table.
2. Click the **Export** button in the toolbar.
3. Choose the format:
   * **Export as TSV** - tab-separated values, works in any spreadsheet tool
   * **Export as XLSX** - Microsoft Excel format
4. The file downloads to your device immediately.

See [Export Data](/project/tables/export-data.md) for details on the export options and how to share a read-only public view of a table.

***

## Step 4: Storage - working with archives

In the Beginner section you uploaded individual files. Storage also supports working with archives.

### Upload and extract a ZIP file

Dr. Volkov has sent a ZIP archive containing 50 site photos organised into folders.

1. Go to **Storage** in the project sidebar.
2. Upload the ZIP file.
3. After the upload completes, click the ellipsis (**...**) next to the ZIP file and select **Extract**. Information Hub unpacks the archive and creates the folder structure automatically.
4. Browse the extracted folders to verify the photos are in place.

### Download files

To download a file, click the ellipsis next to it and select **Download**. For folders, downloading produces a ZIP archive of the folder's contents automatically.

***

## Step 5: Manager - plan fieldwork with kanban boards

Dr. Mwangi uses the Manager to organise upcoming fieldwork tasks.

1. In the project sidebar, click **Manager**.
2. Click the **+** button to create a new workbook.
3. Name it **March Fieldwork**.
4. The board opens with default columns: **To Do**, **Busy**, and **Done**.

### Add task cards

1. Click the **+** button in the **To Do** column.
2. Add cards for upcoming tasks:
   * "Collect Site Alpha measurements - March 15"
   * "Collect Site Beta measurements - March 16"
   * "Download weather station data"
   * "Review and clean imported data"
   * "Prepare monthly report"
3. As work progresses, drag cards from **To Do** to **Busy**, and then to **Done**.

You can assign cards to team members, set due dates, and add descriptions in Markdown. See [Manager](/project/manager.md) for the full guide.

***

## Step 6: Wiki - document field protocols

The project Wiki is the place for long-form documentation that the whole team can reference.

1. In the project sidebar, click **Wiki** (or **Documentation**).
2. Click the **+** button to create a new page.
3. Name it **Field Protocol**.
4. Write the measurement procedure:

> **Field Protocol - Species Observations**
>
> 1. Arrive at the site and record GPS coordinates using the Location question on the form.
> 2. Locate the tagged plant specimen.
> 3. Measure the height from soil level to the tallest point in centimetres.
> 4. Count all visible leaves on the main stem.
> 5. Take a soil pH reading at the base of the plant using the handheld meter.
> 6. Record all values in the Field Observation Form on your phone.
> 7. Use the **Plant Photo** question to photograph the specimen.

5. Click **Save**.
6. Create a second page called **Species Descriptions** with notes on each of the three species.

### Share the protocol publicly

Dr. Mwangi wants to share the field protocol with collaborators who do not have an account.

1. Open the **Field Protocol** page.
2. Click the **Settings** (gear icon) button in the toolbar.
3. Enable **Allow Sharing** and click **Save**.
4. Return to the page view. Click **Share** and copy the public URL.
5. Anyone with the link can read the page without logging in.

See [Wiki](/project/wiki.md) for more details on page settings and pinning.

***

## Step 7: Apps - build a public-facing view

Dr. Mwangi wants to share the data collection form and some results with external collaborators who do not have Information Hub accounts.

### Create an app

1. In the project sidebar, click **Apps**.
2. Click the **+** button to create a new app.
3. Name it **Fynbos in Siberia - Collaborator Portal**.

### Add pages

Apps are made up of pages. Each page can display a form, a dashboard, or a wiki page.

1. Click **Add Page** and paste the shared link of the **Field Observation Form** (enable sharing on the form first if you have not already).
2. Click **Add**. The form page is added to the app.
3. Click **Add Page** again and paste the shared link of the **Field Map** dashboard (enable sharing on the dashboard first).
4. Click **Add**.

### Share the app

1. Click the **Share** button in the toolbar to open the share popover.
2. Copy the public link and send it to collaborators.

Anyone with the link can access the app pages without needing an Information Hub account. See [Apps](/project/apps.md) for the full guide.

***

## Step 8: Offline forms - collect data without internet

Field sites in Siberia do not always have reliable internet. Information Hub supports offline data collection.

### Save the form to your device

Do this while you still have internet access.

1. Open the **Field Observation Form**.
2. In the action bar at the top of the form view, tap **Save for Offline** (bookmark icon).
3. The form is saved to your device. You can now use it without a connection.

{% hint style="warning" %}
Save the form for offline use **before** you go into the field. The button is not available once you are offline.
{% endhint %}

### Collect data without internet

4. Turn off WiFi and mobile data on your device.
5. Open the form as normal - it loads from the local cache.
6. Fill in observations and tap **Submit**. Each submission is queued locally.
7. Repeat as needed. All submissions stay on the device until you sync.

### Monitor and upload with Jobs

When you are back online, submitted observations do not upload automatically - you manage the sync from the **Jobs** page.

1. From the **Home** screen, click **Jobs** in the sidebar.
2. The **Overview** tab shows all pending jobs (one per offline submission).
3. For each pending job, click the **ellipsis (...)** button to open the options menu:
   * **Execute** - uploads the submission to the server immediately.
   * **Download** - saves a local ZIP of the submission data before uploading.
4. Click **Execute** on each job to push the data to the Species Observations table.
5. Switch to the **History** tab to see completed uploads.

If a submission fails to upload (for example, a required field was empty), it appears in the **Manager** tab. From there you can retry or download the failed job data to investigate the issue.

{% hint style="info" %}
Do not clear your browser data or app cache while you have pending jobs. This will permanently delete locally stored submissions before they are uploaded.
{% endhint %}

***

## Step 9: Email notifications on form submission

Dr. Mwangi wants her field assistant to be notified by email every time someone submits the Field Observation Form.

1. Open the **Field Observation Form** and click **Settings** in the toolbar.
2. In the **General settings** section, find the **Email List** field.
3. Enter Dr. Mwangi's email address (and any other recipients, comma-separated).
4. Make sure the **Send Custom Email** toggle is **OFF** (this is the default).
5. Click **Save**.

From now on, every form submission will send a notification email to the submitter and to everyone in the Email List.

{% hint style="info" %}
Turning the **Send Custom Email** toggle **ON** suppresses all notification emails entirely - including to the submitter and to addresses in the Email List. Use it when you want silent submissions during high-volume data entry.
{% endhint %}

Submit a test observation and check your inbox to verify the notification arrives.

***

## Step 10: Update forms - revisit existing records

Sometimes a field worker needs to go back and update a previous observation - for example, to correct a measurement or add a note.

1. Go to **Forms** in the project sidebar.
2. Click **Create Form** and name it **Update Observation**.
3. In the create form dialog, set the form type to **Update**.
4. Select the **Species Observations** table.
5. Tick the columns you want field workers to be able to update (e.g., height\_cm, leaf\_count, soil\_ph).
6. Click **Create**.

When a team member opens the update form, they select an existing row by its primary key (the observation ID). The form loads the current values and the user can edit and re-submit. Only the changed fields are updated in the table.

***

## What you have learned

* How to import data from CSV or TSV files
* How to add a File Upload question so field workers can capture photos on the form
* How to export table data as TSV or XLSX
* How to upload, extract, and download files in Storage
* How to plan and track tasks with kanban boards in the Manager
* How to write and share project documentation in the Wiki
* How to build and publish a public app for external collaborators
* How to collect data offline and sync via the Jobs page
* How to configure email notifications for form submissions
* How to create Update forms for revisiting existing records

***

## Next steps

In the [Advanced](/tutorial/advanced.md) section, you will add more dashboard components, use advanced question types, configure fine-grained permissions, create project templates, and explore the FILE column trick for linking to external resources.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.informationhub.io/tutorial/intermediate.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
