# Push analytics data to Amazon S3

Connect an S3 bucket in Brand Control Center so your analytics export lands in your own storage as CSV or Parquet files on a schedule.

Brand Control Center keeps one S3 connection per purpose. The **Push data** tab, covered here, sends your analytics export to a bucket you own. The **Clip it** and **Uploads** tabs read videos from a bucket instead; see [Generate clips from long videos](https://begenuin.com/developers/find-your-use-cases/how-to-generate-clips-from-long-form-videos-and-publish-them-in-the-community-media-network) and [Upload short videos in bulk](https://begenuin.com/developers/browse-by-products/control/can-you-upload-short-form-content-in-bulk-and-instantly-publish-it-to-your-brand-community). For a warehouse instead of files, see [Receive zero-party data in BigQuery](https://begenuin.com/developers/developer-resources/api/connect-bigquery-to-the-brand-control-center-to-receive-zero-party-data).

## Before you begin

- **An S3 bucket** in your AWS account. Note its name and region.
- **An IAM user with programmatic access** whose policy allows `s3:PutObject` on the bucket's objects. Brand Control Center writes a test object when you connect, then the export files on the schedule. For the Clip it and Uploads tabs the user also needs `s3:ListBucket`.
- **The user's access key ID and secret access key.** The access key ID is 20 characters of uppercase letters and digits.
- **Create or Edit permission on Data Sources** in Brand Control Center. A role with view-only access sees the form disabled. See [Invite your team and assign roles](https://begenuin.com/developers/get-started/any-business/how-do-you-add-admins-to-maintain-quality-and-governance-in-your-community).

A policy that allows the push, scoped to one bucket:

```json title="IAM policy"
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:PutObject"],
      "Resource": "arn:aws:s3:::{{BUCKET_NAME}}/*"
    }
  ]
}
```

## Step 1: Open the S3 Storage panel

1. In Brand Control Center, open **Settings** > **Data Sources**.
2. Expand **S3 Storage**. The panel opens on the **Push data** tab.
   ![The Data Sources page in Settings with the S3 Storage panel expanded on the Push data tab, showing Bucket Name, Bucket ID, Access Key ID, Secret Token, Data Sync Frequency, and Data File Format fields.](https://cdn.sanity.io/images/lnrtvsvr/development/80e0a97fbb27a6958615d54df4e20ea16804174d-1875x911.jpg)
   *The Push data tab of the S3 Storage panel before a connection.*

## Step 2: Enter the bucket and credentials

| Field | What to enter |
| --- | --- |
| Bucket Name | A label for the connection, such as genuin-analytics. Required. |
| Bucket ID | The bucket's name in AWS, 3 to 63 characters of letters, digits, and hyphens. Required. |
| Access Key ID | The IAM user's access key, exactly 20 uppercase letters or digits. Required. |
| Secret Token | The IAM user's secret access key. The eye icon shows or hides it. Required. |

**Connect and Save** stays disabled until every required field passes.

## Step 3: Choose the schedule and file format

| Field | Options |
| --- | --- |
| Data Sync Frequency | Daily, Weekly, or Monthly. |
| Data File Format | CSV, or Parquet for columnar storage that query engines read faster. |

Both are required on the Push data tab.

## Step 4: Connect

1. Select **Connect and Save**.
2. Brand Control Center writes a one-line test object, `uploads/genuin_test_file_upload.txt`, to the bucket with the credentials you entered.
3. On success, the notification **Connected to S3 Storage successfully** appears and the details are saved. Exports start on the schedule you chose.

If the write fails, the panel shows **Connection to your S3 storage failed** and asks you to check the details. The usual causes are a mistyped key, a policy without `s3:PutObject`, or a bucket policy that blocks the user. Fix the credentials or the policy and connect again; nothing is saved until the test write succeeds.

## Change or stop the export

To change the schedule, format, or credentials, edit the fields and select **Connect and Save** again. Each save repeats the test write.

There's no disconnect control for S3. To stop deliveries, deactivate or delete the IAM user's access key in AWS. The saved details stay in Brand Control Center until you overwrite them.

## The Clip it and Uploads tabs

Both tabs connect a bucket Brand Control Center reads from, and each is saved separately from Push data. They take the same bucket and credential fields plus:

| Field | What to enter |
| --- | --- |
| Region | The bucket's AWS region, from the list. Required. |
| Path | A folder inside the bucket, such as imports/clips/. Optional, and it can't start with /. |

On save, Brand Control Center lists one object at the path to verify access, so the IAM user needs `s3:ListBucket`.

## Limits

| Item | Limit |
| --- | --- |
| Connections | One per tab: Push data, Clip it, Uploads |
| Bucket ID | 3 to 63 characters: letters, digits, hyphens |
| Access Key ID | 20 uppercase letters or digits |
| Schedule | Daily, Weekly, or Monthly |
| File format | CSV or Parquet |

## Limitations

- **Batch delivery only**: Files arrive on the chosen schedule, not as events happen.
- **Write access is tested, not read**: The connection test is one `PutObject`. A policy that blocks `ListBucket` still connects on the Push data tab.
- **Credentials are stored as entered**: Use a dedicated IAM user with the minimum policy above, and rotate its keys from AWS.

## See also

- [Receive zero-party data in BigQuery](https://begenuin.com/developers/developer-resources/api/connect-bigquery-to-the-brand-control-center-to-receive-zero-party-data)
- [Push analytics data to Mixpanel](https://begenuin.com/developers/developer-resources/api/integrate-mixpanel-with-brand-control-center)
- [Query Genuin event data in BigQuery](https://begenuin.com/developers/developer-resources/api/integrate-google-bigquery-with-brand-control-center)
- [Upload short videos in bulk and publish them](https://begenuin.com/developers/browse-by-products/control/can-you-upload-short-form-content-in-bulk-and-instantly-publish-it-to-your-brand-community)
