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

# Uploading Advertiser Data

> How to upload first-party data to Clean Room data sources

## Overview

This guide walks advertisers through uploading first-party data to Clean Room data sources for matching with publisher data.

<Info>
  **Prerequisites:**

  * First-party data prepared with common identifiers (hashed emails, mobile IDs, etc.)
  * Data taxonomy defined
</Info>

## Steps

<Steps>
  <Step title="Navigate to Data Sources">
    In the left menu of your demand-side workspace, click **Data Sources**.
  </Step>

  <Step title="Add a new source">
    Click **Add Source**.
  </Step>

  <Step title="Provide source details">
    Enter a name and description for your data source:

    * Use a clear, descriptive name (e.g., "Lapsed customers")
    * Include details about the data set in the description
  </Step>

  <Step title="Prepare taxonomy file">
    Prepare a taxonomy file in CSV format. The taxonomy defines segment IDs and names.
  </Step>

  <Step title="Upload taxonomy">
    Click **Upload Taxonomy** and select your file.
  </Step>

  <Step title="Access GCS bucket">
    Once the taxonomy is validated, you'll be granted access to a GCS (Google Cloud Storage) bucket.
  </Step>

  <Step title="Upload raw data files">
    Upload your raw data files to the provided GCS bucket using the following format:

    * **File format**: Tab-separated file (TSV) with NO headers
    * **Columns** (in order): `id`, `tag`, `segments`
      * `id`: The user identifier (e.g., hashed email, mobile ad ID, IP address)
      * `tag`: The identifier type - use one of: `email_sha256`, `appnexus`, or `ip_address`
      * `segments`: Comma-separated list of segment IDs as defined in your taxonomy file
    * **Example row**: `abc123def456\temail_sha256\tsegment_001,segment_042,segment_103`
  </Step>
</Steps>

Data will begin processing automatically.

## Permissioning Data (Publisher-Driven Workflow)

If following the publisher-driven workflow, you also need to permission the data source to the publisher's demand-side workspace:

<Steps>
  <Step title="Get publisher's Organization ID">
    Ask the publisher for their demand-side Organization ID (found in their Settings).
  </Step>

  <Step title="Grant permission">
    Input the publisher's Organization ID, set any time limits or usage restrictions if needed, and click **Grant Permission**.
  </Step>
</Steps>

### What You'll See

**Advertiser's view:** When granting permission, you'll see a modal where you enter the publisher's demand-side workspace ID as the destination.

<img src="https://mintcdn.com/permutive/Gz1d1fL8c_WPelD6/images/guides/clean-room/advertiser-grant-permission.png?fit=max&auto=format&n=Gz1d1fL8c_WPelD6&q=85&s=1d4c5072208ecd9105da72a5cd614531" alt="Advertiser view: New Destination modal for granting permission to a publisher" width="1348" height="951" data-path="images/guides/clean-room/advertiser-grant-permission.png" />

**Publisher's view:** After permission is granted, the publisher will see your data source appear in their demand-side workspace. The Owner column shows which advertiser provided each data source.

<img src="https://mintcdn.com/permutive/Gz1d1fL8c_WPelD6/images/guides/clean-room/publisher-data-sources.png?fit=max&auto=format&n=Gz1d1fL8c_WPelD6&q=85&s=396e6721502fb00ff3ee185caa3744cf" alt="Publisher view: Data Sources page showing permissioned advertiser data" width="1484" height="559" data-path="images/guides/clean-room/publisher-data-sources.png" />

<Tip>
  **Data preparation best practices:**

  * Hash emails using SHA-256 — lowercase hex encoded — before uploading (do NOT upload raw email addresses)
  * Normalize identifiers before hashing: lowercase emails, trim values
  * Validate data quality and completeness before uploading large datasets
  * Test with a small sample file first to verify format is correct
</Tip>

<Note>
  Data processing can take several hours depending on dataset size. Monitor the data source status in the interface.
</Note>

## Next Steps

<CardGroup cols={2}>
  <Card title="Creating Clean Room Audiences" icon="users" href="/guides/clean-room/creating-clean-room-audiences">
    Build audiences from your data
  </Card>

  <Card title="Back to Clean Room" icon="arrow-left" href="/products/clean-room">
    Return to product overview
  </Card>
</CardGroup>
