> ## 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.

# Campaign Creator vs. Facebook Ad Manager

> What the TheOptimizer Facebook Campaign Creator can do that native Facebook Ads Manager cannot.

export const ArcadeVideoButton = ({id, title = "Watch interactive demo", label = "Watch Video"}) => {
  const [open, setOpen] = useState(false);
  return <div style={{
    display: 'inline-block'
  }}>
      <button type="button" onClick={() => setOpen(true)} style={{
    display: 'inline-flex',
    alignItems: 'center',
    gap: '8px',
    backgroundColor: '#3e47ec',
    color: '#ffffff',
    border: 'none',
    padding: '10px 18px',
    borderRadius: '8px',
    fontSize: '15px',
    fontWeight: '600',
    cursor: 'pointer'
  }}>
        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="white">
          <polygon points="5,3 19,12 5,21" />
        </svg>
        {label}
      </button>

      {open && <div onClick={() => setOpen(false)} style={{
    position: 'fixed',
    top: 0,
    left: 0,
    width: '100%',
    height: '100%',
    backgroundColor: 'rgba(0, 0, 0, 0.85)',
    zIndex: 9999999,
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center'
  }}>
          <div onClick={e => e.stopPropagation()} style={{
    width: '90%',
    maxWidth: '1100px',
    aspectRatio: '16 / 9',
    borderRadius: '12px',
    overflow: 'hidden',
    position: 'relative'
  }}>
            <iframe src={`https://demo.arcade.software/${id}?embed&embed_mobile=tab&embed_desktop=inline&show_copy_link=true`} title={title} frameBorder="0" loading="lazy" allowFullScreen allow="clipboard-write" style={{
    width: '100%',
    height: '100%',
    border: 'none',
    colorScheme: 'light'
  }} />
          </div>

          <button type="button" onClick={() => setOpen(false)} style={{
    position: 'fixed',
    top: '20px',
    right: '24px',
    background: 'rgba(255,255,255,0.15)',
    border: 'none',
    color: '#ffffff',
    fontSize: '24px',
    lineHeight: 1,
    width: '40px',
    height: '40px',
    borderRadius: '50%',
    cursor: 'pointer',
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center'
  }}>
            ✕
          </button>
        </div>}
    </div>;
};

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 Facebook Mass Campaign Uploader follows the same campaign → ad set → ad flow you already know from Facebook Ads Manager. The difference is in what you can do on top of that flow.

The following features are available in the Campaign Launcher and are **not** available in native Ads Manager:

<AccordionGroup>
  <Accordion title="Groups & Variations">
    Define multiple values for any targeting section (budgets, audiences, placements, pages, creatives) and the system automatically generates a separate variation for all group permutations. Three budget groups × three audience groups = nine ad set variations, created instantly — no manual duplication.
  </Accordion>

  <Accordion title="Campaign Restructuring">
    Build a simple campaign with all your creatives, then with a single toggle "explode" it into one campaign per creative, one ad set per creative, or any distribution you need. Upload once, reshape the structure in seconds.
  </Accordion>

  <Accordion title="Multi-Ad Account Launch">
    Duplicate your entire campaign structure (including all variations and settings), assign a different ad account to each copy, and publish everything together in one go. No need to rebuild the same campaigns from scratch in each account.
  </Accordion>

  <Accordion title="Reusable Templates">
    Save your full configuration as a template: campaign settings, ad set setup, ads, variation groups, restructuring settings, multi-account copies, naming templates, and automation assignments. Load it next time and launch with minimal changes.
  </Accordion>

  <Accordion title="Creative Library Integration">
    Browse all images and videos from your active campaigns across all connected accounts, sorted by performance metrics (spend, EPC, usage). Filter by Creative Library tags to pull in pre-organised asset collections instead of uploading from scratch.
  </Accordion>

  <Accordion title="Automation at Launch">
    Attach your existing TheOptimizer automation rules to campaigns before they go live. Rules start evaluating from the first impression — no gap between launch and automation.
  </Accordion>

  <Accordion title="Dynamic Naming Templates">
    Auto-generate campaign, ad set, and ad names using placeholders for targeting settings, budgets, group names, nested names from lower levels, and incremental indexes. Keep naming clean across hundreds of variations.
  </Accordion>

  <Accordion title="AI Creative Enhancement">
    Generate new image variations directly inside the launcher using built-in AI image enhancement, powered by prompts or example images.
  </Accordion>

  <Accordion title="Bulk Placement Customization">
    Assign different creatives to specific placements (for example, a different crop for Stories) across all ads at once, instead of customising one ad at a time.
  </Accordion>

  <Accordion title="Upload to Existing Campaigns">
    Load any live or paused campaign and add new ad sets or ads to it without touching what is already running — no need to recreate the campaign structure.
  </Accordion>

  <Accordion title="Existing Post IDs">
    Use any previously published Facebook post as an ad creative, preserving its accumulated social proof (likes, comments, shares) across campaigns.
  </Accordion>
</AccordionGroup>

***

## What Stays the Same

The campaign settings themselves are identical to Ads Manager. You will find the same options for:

* Campaign objectives (Sales, Traffic, Leads, Engagement)
* Advantage Campaign Budget vs. ad set level budgets
* Audience targeting (locations, age, gender, languages, custom audiences)
* Placements (Advantage+ or manual)
* Ad formats (Single Image, Video — Carousel and Flexible Ads coming soon)
* Pixel selection and conversion events
* Ad copy fields (primary text, headline, description, CTA)

If you know how to set up a campaign in Ads Manager, you already know how to use the launcher for the core configuration. The advanced features on top of it are additive — you learn them as you need them.
