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

# Bulk Upload Campaigns via Excel

> Upload multiple RevContent campaigns at once using a pre-built Google Sheets template, then submit the exported Excel file through TheOptimizer's Campaign Creator.

export const ArcadePopoutModal = ({id, title = "Interactive demo"}) => {
  const [isPopout, setIsPopout] = useState(false);
  const iframeRef = useRef(null);
  useEffect(() => {
    function onArcadeIframeMessage(e) {
      if (e.origin !== 'https://demo.arcade.software' || !e.isTrusted) return;
      if (!iframeRef.current || !iframeRef.current.contentWindow) return;
      if (e.data.event === 'arcade-init') {
        iframeRef.current.contentWindow.postMessage({
          event: 'register-popout-handler'
        }, '*');
      }
      if (e.data.event === 'arcade-popout-open') {
        setIsPopout(true);
      }
      if (e.data.event === 'arcade-popout-close') {
        setIsPopout(false);
      }
    }
    window.addEventListener('message', onArcadeIframeMessage);
    return () => window.removeEventListener('message', onArcadeIframeMessage);
  }, []);
  return <div style={{
    position: 'relative',
    paddingBottom: 'calc(54.4737% + 41px)',
    height: 0,
    width: '100%'
  }}>
      <iframe ref={iframeRef} src={`https://demo.arcade.software/${id}?embed&embed_mobile=tab&embed_desktop=modal&show_copy_link=true`} title={title} frameBorder="0" loading="lazy" allowFullScreen allow="clipboard-write" style={{
    position: isPopout ? 'fixed' : 'absolute',
    top: 0,
    left: 0,
    width: '100%',
    height: '100%',
    zIndex: isPopout ? 9999999 : 'auto',
    colorScheme: 'light'
  }} />
    </div>;
};

The RevContent Excel Uploader lets you prepare and launch multiple campaigns at once without going through the UI one by one. You define everything — targeting, budget, bidding, and creatives — in an Excel file and submit it through TheOptimizer. You can start from a blank Google Sheets template, or download a pre-filled Excel directly from any existing campaign — ideal when you're launching variations of setups you already run.

***

## How It Works

<Steps>
  <Step title="Get Your Template">
    Open [**Campaign Creator**](https://native.theoptimizer.io/#/campaign-creator-queue) in TheOptimizer and click the **RevContent** card. Choose **Bulk Upload (Excel)** from the options shown.

    <Frame>
      <img src="https://mintcdn.com/theoptimizer/NJM_-pHeOHJcKrLN/images/revcontent/campaign-uploader/revcontent-campaign-creator-selection.png?fit=max&auto=format&n=NJM_-pHeOHJcKrLN&q=85&s=4ca442a7ec11d1168fe89a52b23341be" alt="New RevContent Campaign — choose Create Manually or Bulk Upload (Excel)" width="2457" height="1820" data-path="images/revcontent/campaign-uploader/revcontent-campaign-creator-selection.png" />
    </Frame>

    You then have two ways to get your template:

    **Option A — Download pre-filled from an existing campaign (recommended)**

    In the **Reference campaign** dropdown, select an existing campaign. TheOptimizer will pre-fill the template columns and settings from that campaign. Download the pre-filled Excel file and use it as your base — duplicate rows, update creatives and headlines, and adjust settings as needed.

    <Frame>
      <img src="https://mintcdn.com/theoptimizer/NJM_-pHeOHJcKrLN/images/revcontent/campaign-uploader/revcontent-excel-uploader-modal.png?fit=max&auto=format&n=NJM_-pHeOHJcKrLN&q=85&s=881a521bc03b641c4581edd107df3f81" alt="RevContent Bulk Upload modal — Reference campaign dropdown, Copy template button, and file upload area" width="2452" height="1806" data-path="images/revcontent/campaign-uploader/revcontent-excel-uploader-modal.png" />
    </Frame>

    This is the fastest approach when you're launching campaigns similar to setups you already run.

    **Option B — Start from the empty Google Sheets template**

    If you're setting up a new campaign type from scratch, click **Copy template** to clone the empty template into your Google account:

    [**Clone the RevContent Google Sheets Template →**](https://docs.google.com/spreadsheets/d/1Y-xH7rw8H20tzVxQXcp3tLi-dhJuBb_RLcHHt2pAqWM/copy)

    The template contains:

    * A **main sheet** with one row per ad (campaign settings + creative in each row)
    * **Auxiliary sheets** with reference data: Languages, Countries, Regions, Traffic Types, and more
    * **Column notes** on every column header — hover over the column name to see the accepted values and format
  </Step>

  <Step title="Fill in Your Campaigns">
    Each row in the main sheet represents one ad. To create a campaign with multiple ads, add one row per ad keeping all campaign-level columns identical, and vary only the ad-level columns (image URL, headline, etc.).

    **Key things to note:**

    * Columns marked 🚩 **REQUIRED** must be filled in — the upload will fail if they're missing
    * Columns marked 🟡 are conditionally required (e.g. Country Codes only needed if Country Targeting is INCLUDE or EXCLUDE)
    * Use the auxiliary sheets to look up valid values for countries, regions, languages, etc.
  </Step>

  <Step title="Upload Your File">
    If you used **Option B** (Google Sheets template), first export your sheet: in Google Sheets, go to **File → Download → Microsoft Excel (.xlsx)**.

    Back in the modal, drag and drop your **.xlsx file** into the upload area or click to browse for it. Then click **Upload Campaigns** to submit.
  </Step>

  <Step title="Check Your Email for Confirmation">
    After submitting, TheOptimizer processes the file and sends you an email:

    * ✅ **Successful upload** — your campaigns are queued and being created on RevContent. Track progress from the [Campaign Creator](https://native.theoptimizer.io/#/campaign-creator-queue) page.
    * ⚠️ **Upload failed** — the email will include a new Excel file with all error cells highlighted. Download it, fix the issues, and re-upload.
  </Step>
</Steps>

***

## Column Reference

The table below describes every column in the RevContent Excel template.

| Column                        | Description                                                                                                                                                          |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Traffic Source Account ID** | 🚩 REQUIRED. The RevContent account ID from TheOptimizer where campaigns will be uploaded. Find it under Traffic Sources in the left menu.                           |
| **Campaign Name**             | 🚩 REQUIRED. The name of the campaign.                                                                                                                               |
| **Bid Type**                  | 🚩 REQUIRED. `cpc` — pay per click. `vcpm` — pay per 1,000 views.                                                                                                    |
| **Bid Amount**                | 🚩 REQUIRED. Amount per click (e.g. `0.15`) if Bid Type is `cpc`, or per 1,000 views (e.g. `1.5`) if `vcpm`.                                                         |
| **Budget Type**               | 🚩 REQUIRED. `Unlimited` or `Daily`.                                                                                                                                 |
| **Pacing**                    | Spreads budget evenly throughout the day (available for limited-budget campaigns).                                                                                   |
| **Budget**                    | 🚩 REQUIRED. Minimum allowed budget is \$100.                                                                                                                        |
| **Conversion Tracking**       | Comma-separated list of conversion names from your RevContent dashboard to use with this campaign.                                                                   |
| **Start date**                | 🚩 REQUIRED. `immediately` to start right away, or a date in `yyyy-mm-dd hh:mm:ss` format.                                                                           |
| **End date**                  | 🚩 REQUIRED. `never` to run indefinitely, or a date in `yyyy-mm-dd hh:mm:ss` format.                                                                                 |
| **Traffic Types**             | 🚩 REQUIRED. Comma-separated list. Values: `Adblock`, `Native`, `PushNotifications`.                                                                                 |
| **Country Targeting**         | 🚩 REQUIRED. `ALL`, `INCLUDE`, or `EXCLUDE`.                                                                                                                         |
| **Country Codes**             | 🟡 Required if Country Targeting is INCLUDE or EXCLUDE. Comma-separated country codes. See Countries sheet.                                                          |
| **Region Targeting**          | 🚩 REQUIRED. `ALL`, `INCLUDE`, or `EXCLUDE`.                                                                                                                         |
| **ZIP Code Targeting**        | 🚩 REQUIRED. `ALL`, `INCLUDE`, or `EXCLUDE`.                                                                                                                         |
| **Region Names**              | 🟡 Required if Region Targeting is INCLUDE or EXCLUDE. Comma-separated region names. See Regions sheet.                                                              |
| **Zip Codes**                 | 🟡 Required if ZIP Code Targeting is INCLUDE or EXCLUDE. Comma-separated zip codes.                                                                                  |
| **Device Targeting**          | 🚩 REQUIRED. Comma-separated list. Values: `Desktop`, `Mobile`, `Tablet`.                                                                                            |
| **Browser Targeting**         | 🚩 REQUIRED. Comma-separated list. Values: `Chrome`, `Firefox`, `Safari`, `Edge`.                                                                                    |
| **OS Targeting**              | 🚩 REQUIRED. Comma-separated list of operating systems to target.                                                                                                    |
| **Language Targeting**        | 🚩 REQUIRED. Comma-separated list of languages (e.g. `English,French,Italian`). See Languages sheet.                                                                 |
| **Tracking Code**             | URL parameters appended to landing page URLs for third-party tracker attribution.                                                                                    |
| **Target URL**                | 🚩 REQUIRED (unless using Media Manager Ads). Landing page URL.                                                                                                      |
| **Image URL**                 | 🚩 REQUIRED (unless using Media Manager Ads). Ad image URL.                                                                                                          |
| **Headline**                  | 🚩 REQUIRED (unless using Media Manager Ads). Ad headline. Max 80 characters.                                                                                        |
| **Brand name**                | 🚩 REQUIRED. Brand name displayed below the ad. Max 30 characters.                                                                                                   |
| **Media Manager Ads**         | Reference a saved Ad group from RevContent's Media Manager instead of providing individual image/headline/URL fields.                                                |
| **Rules**                     | Comma-separated <a href="/automation/rules-guide" target="_blank" rel="noopener noreferrer">Rule</a> IDs from TheOptimizer to attach to the campaign after creation. |
| **Rule Groups**               | Comma-separated rule group names from TheOptimizer to attach after creation.                                                                                         |
