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

# Save as Template & Reuse

> Save your full campaign configuration — including groups, restructuring settings, and automation assignments — as a reusable template for future launches.

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>;
};

After building a campaign structure — including all groups, Restructuring settings, multi-account copies, naming templates, and automation assignments — you can save the entire configuration as a reusable template.

***

## Saving a Template

When you are ready to save, click the **Save** dropdown in the top-right corner of the launcher. Two options appear:

* **Save** — saves the current state over the existing template name (if you loaded one and want to update it), or prompts you to name a new template.
* **Save As** — always creates a new template with a new name, leaving the original unchanged. Use this when you want to create a variant of an existing template without overwriting it.

Give the template a name, confirm, and it is stored to your account.

<Frame>
  <img src="https://mintcdn.com/theoptimizer/ZHMpEyoJnNrJjwpl/images/save-and-use-templates-fb-launcher.png?fit=max&auto=format&n=ZHMpEyoJnNrJjwpl&q=85&s=9fe6ae4eb7c66fccd3bb625979aa74ca" alt="Save a template using the top-right Save dropdown, and apply saved templates from the My Space tab" width="2480" height="1808" data-path="images/save-and-use-templates-fb-launcher.png" />
</Frame>

***

## Applying a Saved Template

The next time you open the Facebook Campaign Launcher, go to the campaign level and open the **My Space** tab on the right panel. Your saved templates are listed there, each showing a summary of what the template will create:

* **Number of Campaigns** — how many campaigns will be generated
* **Campaign Daily Budget** — the total daily budget across campaigns
* **Number of Ad Sets** — total ad sets that will be created
* **Ad Set Variations** — number of ad set variations

Click **Apply Template** next to any template to instantly load the entire structure — campaign settings, ad set configuration, ad setup, groups, Restructuring rules, and automation assignments. The **Variation Preview** panel on the right also updates immediately to reflect the template's totals, so you can confirm you are loading the right structure before making any changes.

***

## Making Changes After Loading

Once a template is loaded, everything is fully editable. Typically you only need to:

* Swap in new creatives at the ad level
* Adjust a budget amount
* Update a destination URL or pixel
* Change the ad account (for multi-account launches)

The rest — targeting, placements, groups, restructuring rules, naming templates, automation — is already in place from the previous build.

<Steps>
  <Step title="Load the template">
    Open the Facebook Campaign Launcher, go to the campaign level, open the **My Space** tab, and click **Apply Template** next to the template you want to use.
  </Step>

  <Step title="Make your changes">
    Update creatives, budget, URL, or any other setting that differs from the previous launch.
  </Step>

  <Step title="Save As to preserve the variant (optional)">
    If your changes represent a new reusable configuration (e.g., a different product or market), use **Save As** to save it as a new template before publishing.
  </Step>

  <Step title="Publish">
    Proceed through Review Variations and Add Automation & Publish as normal.
  </Step>
</Steps>

<Tip>
  Most media buying teams repeat similar campaign structures daily. Save your first build as a template and every subsequent launch becomes a matter of minutes — even for complex multi-variation, multi-account structures.
</Tip>
