> For the complete documentation index, see [llms.txt](https://support.sayprimer.com/primer/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.sayprimer.com/primer/connections/datasets/uploading-via-s3.md).

# Uploading via S3

Drop people and company CSVs to your Primer S3 location for automated loading.

> **Beta** — opened on request. Contact <support@sayprimer.com> to request access.

You can load people and companies into Primer by dropping CSV files to an S3 location Primer reads. This is the automated equivalent of [importing a CSV](/primer/connections/datasets/importing-a-csv.md) and works well with pipelines like Snowflake, Hightouch or Fivetran.

## Where files go

Put each record type in its own folder under your dataset prefix:

* People — `{prefix}/datasets/people/`
* Companies — `{prefix}/datasets/companies/`

Your `prefix` comes from your sync configuration; support provides it when you're set up.

## File format

Each file is a [CSV with a header row](/primer/connections/datasets/importing-a-csv.md) using the canonical people or company columns. Each file is a **complete snapshot** of that dataset — records absent from a new file are dropped, not merged.

## What happens after you drop a file

Primer picks up the file, processes it, and moves it into an `archived/` subfolder on success or a `failed/` subfolder on failure, so you can tell whether a drop was ingested.

## Exporting to Primer's S3 from your warehouse

Any tool that can write a CSV to an S3 prefix can feed this drop. The pattern is the same whatever you use: produce a CSV with the [canonical columns](/primer/connections/datasets/importing-a-csv.md) and land it in the right `people/` or `companies/` folder under your prefix.

* **Snowflake** — `COPY INTO '@your_stage/...'` (or an external stage pointed at the prefix) to unload a query result as CSV directly to the S3 location.
* **Hightouch** — configure an **Amazon S3** destination targeting your prefix and sync a model to it on a schedule.
* **Fivetran** — use an S3 destination / transformation that writes the CSV to the prefix.

Because each file is a **complete snapshot**, schedule the export to write the *whole* current dataset each run, not just changed rows — anything absent from the newest file is dropped. Your prefix and the exact folders come from your sync configuration; support provides them when you're set up.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://support.sayprimer.com/primer/connections/datasets/uploading-via-s3.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
