# Import and export UGC

> Import posts from another UGC platform with a CSV file, and export your posts as CSV or JSON.

Breadcrumb: UGC › Import and export · Updated: 2026-10-17
Docs index: https://docs.cevoid.com/llms.txt

Import the photos and videos you collected on another UGC platform or on social media with a CSV file, together with their creators, captions, labels, and product tags. Export your posts as CSV or JSON. Both run in the background.

Navigate to [Settings → Import & export](https://app.cevoid.com/settings/import-export) to import or export UGC.

| Specification | Limit |
| --- | --- |
| _File type_ | .csv, UTF-8 |
| _File size_ | 50 MiB |
| _Rows_ | 100,000 per file |
| _Columns_ | 200 per file |
| _Photos and videos_ | .jpg, .jpeg, .png, .webp, .mp4, .mov, .webm. 1 GB per file, videos up to 10 minutes |
| _Carousel slides_ | 20 per row |
| _Labels and products_ | 50 each per row, and 50 products per slide |
| _Imports at a time_ | One UGC import |
| _Drafts and uploaded files_ | Kept for 7 days |

## How importing UGC works

When you import UGC, Cevoid maps your file's columns and previews the first 30 rows. Once you start, it imports the valid rows in the background, with their photos and videos, creators, labels, and product tags.

Each row is one post, or one [carousel](https://docs.cevoid.com/ugc/collect/import-and-export#carousels). Imported posts land in your Inbox, unless their _Status_ is `approved`: those go straight to your Library and show in every gallery, card, and email widget whose content they match. See [Library & Inbox](https://docs.cevoid.com/ugc/manage/library-and-inbox.md).

An import only adds posts. Posts already in your workspace stay as they are, and Cevoid skips the rows that match them: see [Posts Cevoid skips](https://docs.cevoid.com/ugc/collect/import-and-export#posts-cevoid-skips). An import can't be undone: see [Remove imported posts](https://docs.cevoid.com/ugc/collect/import-and-export#remove-imported-posts).

## Import UGC from a CSV file

To see the columns Cevoid expects, click **Download sample CSV** in the import editor. Its rows show each kind of post, from a single photo to a carousel with products tagged on its slides.

### Upload and map your file

1. Navigate to [Settings → Import & export](https://app.cevoid.com/settings/import-export)
2. Click **Import** in the _User-generated content_ row. The import editor opens.
3. Select the _Source platform_ your file was exported from
4. Click **Choose CSV** and select your file. Cevoid analyzes it and maps the columns it recognizes.
5. Select the column for _Media URL_ or _Carousel slides_ under _Required mappings_
6. Select a column for each other field your file has, under _Optional mappings_
7. Hover over the badge at the top of the preview to see its issues. It shows _No issues_, or how many issues and skipped rows the preview found.
8. Optional: Click **Save draft** to finish later

**Import preview** shows your rows as Cevoid will import them, and **Source CSV** as they are in your file.

### Start the import

1. Navigate to [Settings → Import & export](https://app.cevoid.com/settings/import-export) and open the import draft under _Activity_
2. Click **Start import**
3. Select _I understand these posts land in the inbox unless the file says otherwise, and confirm this import_
4. Click **Start import**. The import's progress opens.

Invalid rows aren't imported, and the [error report](https://docs.cevoid.com/ugc/collect/import-and-export#error-report) lists them. Only the team member who created an import can change, start, or stop it.

## Source platforms

The source platform is the tool your file was exported from. It's saved with the import, and it decides the _Content source_ of rows that leave it empty.

| Source platform | What it changes |
| --- | --- |
| **Instagram export** | Rows without a _Content source_ are Instagram posts |
| **TikTok export** | Rows without a _Content source_ are TikTok posts |
| **Cevoid** | For files exported from Cevoid. Rows without a _Content source_ are `other` |
| **Generic CSV**, **Bazaarvoice Curalate**, **Flowbox**, **Olapic**, **Pixlee (Emplifi)** | Rows without a _Content source_ are `other` |

Whatever the platform, Cevoid maps a column on its own only when its heading is one of the template's, such as `media_url`. Headings match in any case, and a space or a hyphen counts as an underscore, so `Media URL` matches `media_url`. Map the other columns by hand.

## CSV columns

Map each field to one column of your file. Only _Media URL_ or _Carousel slides_ is required: you can leave every other field unmapped, or its cells empty. Fields with set values, such as _Status_, take only the values below, in any case. Separate several labels or products with `|`, as in `kitchen | customer-photo`.

| Field | Heading | What it holds |
| --- | --- | --- |
| _Content source_ | `content_source` | Where the post comes from: `instagram`, `tiktok`, `facebook`, `upload`, or `other`. Empty: set by the [source platform](https://docs.cevoid.com/ugc/collect/import-and-export#source-platforms) |
| _Media type_ | `media_type` | `image`, `video`, or `carousel_album`, which needs _Carousel slides_. Cevoid reads each file's type from the file |
| _Media URL_ | `media_url` | The photo or video's public URL. Required unless you map _Carousel slides_ |
| _Source post ID_ | `source_post_id` | The post's ID on your previous platform. Lets Cevoid recognize the post if you import it again |
| _Posted at_ | `posted_at` | When the post was published: `2026-03-12`, or a date and time with a time zone, such as `2026-03-12T09:30:00Z`. Empty: the day of the import |
| _Original post link_ | `source_url` | The post's link on the network, such as its Instagram link |
| _Carousel slides_ | `children` | A carousel's slides, as a JSON list. See [Carousels](https://docs.cevoid.com/ugc/collect/import-and-export#carousels) |
| _Caption_ | `caption` | The post's caption |
| _Creator handle_ | `author_handle` | The creator's Instagram handle, with or without `@`. See [Creators and profiles](https://docs.cevoid.com/ugc/collect/import-and-export#creators-and-profiles) |
| _Creator name_ | `author_name` | The creator's name, for a new profile |
| _Own content (added by the brand)_ | `own_content` | `true` or `false`, `yes` or `no`, `y` or `n`, `1` or `0`. `true` marks your brand's own posts. Empty means no |
| _Status_ | `status` | `approved` for your Library, or `pending` for your Inbox. Empty: `pending` |
| _Labels_ | `labels` | [Post label](https://docs.cevoid.com/ugc/manage/post-labels.md) names, matched to your labels by exact name. Cevoid creates the ones you don't have yet, and leaves out names over 100 characters |
| _Product identifier type_ | `product_identifier` | How the row names its products: `id`, `sku`, `gtin`, `mpn`, or `url`. Required when the row tags products |
| _Tagged products_ | `products` | The products to tag. Leave it empty on a carousel, which tags products on each slide |
| _Claps_ | `claps` | How many [claps](https://docs.cevoid.com/ugc/showcase/ugc-popup.md) the post has, as a whole number. Empty: 0 |

### How Cevoid matches products

Cevoid matches each product in _Tagged products_, or on a slide, to your synced catalog, by the row's _Product identifier type_:

- `id`: the product's ID on your ecommerce platform, such as the Shopify product ID
- `sku` or `mpn`: the product's SKU or MPN
- `gtin`: the product's GTIN or barcode
- `url`: the product page's full URL

Values must match exactly, including case. A product that matches nothing, or more than one product, isn't tagged. The post is still imported, and the error report lists the product.

### Photos and videos

Cevoid downloads each photo and video and keeps its own copy. The URLs must be public, and Cevoid doesn't follow redirects. A row whose photo or video can't be downloaded isn't imported, and the error report lists it.

### Carousels

A carousel is one row, with its slides in _Carousel slides_: a JSON list of up to 20 slides, in their order. Each slide has a `media_url`, and can have a `media_type` (`image` or `video`) and `products`, a JSON list of the products on that slide:

```json
[
  { "media_type": "image", "media_url": "https://example.com/posts/8-1.jpg", "products": ["6411923672450"] },
  { "media_type": "video", "media_url": "https://example.com/posts/8-2.mp4" }
]
```

Cevoid imports each slide as its own post, as with Instagram carousels. The slides share the row's caption, creator, labels, and status.

- **Products:** Tag them on each slide, in the row's _Product identifier type_. A carousel row with _Tagged products_ isn't imported.
- **The first slide:** If its file can't be downloaded, the row isn't imported. Another slide that can't be downloaded is left out, and the rest of the carousel is imported.
- **Media URL:** Can stay empty on a carousel. If it's set and isn't one of the slides, Cevoid ignores it.

### Creators and profiles

_Creator handle_ links each post to the profile with that Instagram handle. If no profile has it, Cevoid creates one with the handle, named after _Creator name_, or after the handle when the row has no name.

Rows with _Own content (added by the brand)_ set to `true` are your brand's own posts, such as posts from your own feed or in-house photos. Cevoid credits them to your workspace, as it does your own uploads, and links no profile, whatever _Creator handle_ says.

A post with no _Creator handle_ that isn't your brand's own has no profile. Once approved, it's listed under [Unassigned](https://docs.cevoid.com/ugc/manage/library-and-inbox.md#unassigned-posts).

## Follow an import

An import's progress opens when you start it. To find it again, open it under _Activity_ on [Settings → Import & export](https://app.cevoid.com/settings/import-export). While a UGC import runs, its badge shows _Validating posts_, _Importing posts and media_, and then _Finishing import_. Every status an import can have is in [Run statuses](https://docs.cevoid.com/workspace/import-and-export.md#run-statuses).

The import's details count the posts it _Created_, one per slide of a carousel, the rows it _Skipped_, and the photos and videos it imported or couldn't.

Click **View posts** in the import to see its posts: in the Inbox while any of them are there, otherwise in the Library.

**Stop import** ends a running import, and the posts it already imported stay. See [Stop an import](https://docs.cevoid.com/workspace/import-and-export.md#stop-an-import).

### Error report

The error report lists what an import skipped or couldn't bring in. Download it for 7 days with **Download error report** in the import, or in its **...** menu under _Activity_.

- The file, `ugc-import-report.csv`, has the columns `row`, `column`, `code`, and `reason`
- It lists the rows that failed, the rows Cevoid skipped, and what it left out of imported posts: product tags it couldn't match, labels over 100 characters, and slides it couldn't download
- Row numbers count the header as row 1, so your first post is row 2

## Posts Cevoid skips

An import never changes a post that's already in your workspace. Cevoid skips a row, and lists it in the error report, when:

- An earlier row in the file has the same _Source post ID_, or the same first photo or video
- A post with the same _Source post ID_ was imported before
- An earlier import brought in the same first photo or video
- A post in your workspace has the same _Original post link_, such as a post synced from Instagram
- The row is an Instagram post, and its _Source post ID_ is the ID of an Instagram post already in your workspace

The first photo or video is the _Media URL_, or a carousel's first slide. Skipped rows count as _Skipped_, not as errors.

## What imported posts do

Imported posts work like other posts, except here:

| Area | Imported posts |
| --- | --- |
| Library and Inbox | Have the source **Imported**. The _Import_ filter lists each import by file name and date. See [Filter posts](https://docs.cevoid.com/ugc/manage/library-and-inbox.md#filter-posts) |
| Galleries | The content source **Imported** adds posts from your imports to a [custom gallery](https://docs.cevoid.com/ugc/showcase/galleries.md#custom-galleries) |
| Posted date | _Posted at_ from your file, or the day of the import. The _Posted at_ filter and an export's _Date_ range use it |
| Product tags | Have no hotspots. To add one, see [Add hotspots](https://docs.cevoid.com/ugc/manage/posts.md#add-hotspots) |

## Remove imported posts

A UGC import can't be undone. To remove the posts one import added, filter your Library and Inbox by _Import_, select the posts, and archive them with the **Archive** [bulk action](https://docs.cevoid.com/ugc/manage/library-and-inbox.md#bulk-actions). Cevoid deletes archived posts permanently 30 days after they're archived, and you can restore them until then. Profiles the import created stay.

## Export UGC

Export your posts to keep a copy or move them to another tool. The file includes creators' handles and names. The export editor shows how many posts match, and a preview of the file's first 30 rows.

1. Navigate to [Settings → Import & export](https://app.cevoid.com/settings/import-export)
2. Click **Export** in the _User-generated content_ row
3. Select a _Format_: **CSV** or **JSON**
4. Optional: Set the _Date_ range. It filters posts by the date they were posted.
5. Click **Start export**
6. Select _I confirm I am authorized to export creator personal information_
7. Click **Start export** again

When the file is ready, Cevoid emails you a link. Click **Download export** in the export, or in its **...** menu under _Activity_. The download expires after 7 days.

Each post is one row, and a carousel is one row with its slides in `children`. An export covers all time by default.

- **CSV:** The template's columns, so the file can be imported into Cevoid again with the source platform **Cevoid**. Four more columns follow them, which an import ignores: `cevoid_post_id`, `created_at`, `views`, and `clicks`.
- **JSON:** The same details, with carousel slides and products nested

In both formats, each media URL links to Cevoid's copy of the file, and products are listed by their ID on your ecommerce platform, with the identifier type `id`.

## Related articles

- [Library & Inbox](https://docs.cevoid.com/ugc/manage/library-and-inbox.md)
- [Import & export](https://docs.cevoid.com/workspace/import-and-export.md)
- [Posts](https://docs.cevoid.com/ugc/manage/posts.md)
- [Post labels](https://docs.cevoid.com/ugc/manage/post-labels.md)
- [Platform uploads](https://docs.cevoid.com/ugc/collect/platform-uploads.md)

---

Canonical: https://docs.cevoid.com/ugc/collect/import-and-export
