
Create and manage campaign ads
Campaign ads let your marketing team create and export ads for Meta, LinkedIn, Google Display and TikTok — all from within a campaign record. Owners and admins approve creatives and manage the Meta connection; standard workspace members can edit briefs and creatives. The **Marketing** module must be enabled. Campaigns gain an **Ads** area once the module is active. > **Important status:** AI image generation and native Meta launching are separately gated and are not active by default. You can write briefs, add or generate concepts, create visuals from uploaded images, and export platform packs without those gates being open. Image generation becomes available once model access and pricing are verified by your Hub administrator. Meta launching requires additional account acceptance. ## Before you begin - Open a campaign record and select the **Ads** tab. - Make sure the campaign has at least one offer with a name, destination and conditions recorded. - Owners and admins can approve creatives and connect Meta; standard members can edit briefs and ad copy. ## Step 1 — Write a brief The brief describes who you are advertising to and what you want to say. 1. In the **Ads** tab, select **Edit brief**. 2. Fill in: - **Audience** — who the ads should reach. - **Objective** — the business goal (defaults to *Website conversions*). - **Tone** — the voice and style. - **Brand** — choose a workspace brand to apply its colours and logo. - **Platforms** — select one or more of Meta, LinkedIn, Google and TikTok. - **Offers** — add the products or services being advertised. Each offer needs a name, description, destination URL, approved claims and conditions. 3. Select **Save brief**. Hub saves a revision history of the brief. If the brief changes while you are editing, a conflict warning appears — copy your changes before reloading. ## Step 2 — Add or generate concepts You can add ad concepts manually or generate them with AI. ### Add a concept manually 1. In the **Ads** tab, select **Add concept**. 2. Choose a saved offer. 3. Enter a draft concept — headline, body and other copy fields. 4. Save the concept. Manually added concepts use the same copy editing, visual editor, favourite, and approval controls as generated concepts. ### Generate concepts with AI From the brief, Hub can generate a batch of six ad variants using the configured text model. 1. Select **Generate concepts**. 2. Hub displays an estimated AI cost before proceeding. Confirm to queue the generation job. 3. Generation creates six variants distributed across your offers. Each variant has a headline, body, description, call to action and a visual direction. You can favourite, edit and duplicate concepts. Saving a concept stores its revision without overwriting other variants. A job in progress can be cancelled; any already-generated variants are preserved. ## Step 3 — Edit and approve creatives Each concept has a **Visual editor** and **Platform copy** section. ### Visual editor - Choose a **layout**: Product screenshot, Image-led or Text-led. - Upload or select artwork and a logo from your workspace image library. - Set background, text and accent colours. - Adjust crop position for the image. - Use **Generate artwork** to create a new image (requires image generation to be enabled by your administrator). - Use **Edit artwork with AI** to refine a selected image with instructions. **Finished artwork:** If you upload a complete, finished design, Hub preserves the whole artwork in feed and story exports — fitting it with the chosen background instead of cropping it into a template or adding duplicate text. The same renderer is used for both preview and export. Generated artwork appears in your workspace image library when the job finishes. Select it to apply it — your creative is never overwritten automatically. ### Platform copy Each platform has specific copy fields: - **Meta** — primary text, headline, description, call to action. - **LinkedIn** — introductory text, headline. - **Google** — up to 15 short headlines, up to 4 descriptions, a long headline and a final URL. - **TikTok** — ordered carousel slides. Hub validates copy against platform character limits and flags missing required fields. ### Approve a creative Owners and admins select **Approve** on a completed creative. Hub checks that: - Required fields are filled. - Offer claims and conditions are recorded. - Character limits are within range. - The creative matches the current brief revision. Approval is required before a creative can be exported or used in a Meta launch. ## Step 4 — Export platform packs Select up to six approved creatives and choose **Export**. Each export pack contains: - **Images** — rendered PNGs for each platform format and size. - **copy.txt** — all copy fields in plain text. - **CSV** — stable IDs, tracked destination links and copy in a spreadsheet-safe format. - **Google copy JSON** — search and display copy for Google Ads import. - **TikTok guidance** — ordered slide images with notes on music and platform setup. Approved packs include the saved Meta plan and setup instructions, copy, tracked destinations, images and a versioned manifest. Approved packs revalidate current approvals, brief and creative revisions, and artwork hashes before export. Draft packs are labelled separately. Download URLs expire after 10 minutes. Export files are private and not publicly accessible. > Previews are illustrative. Platforms may render ads differently from the preview image. ## Step 5 — Set a Meta plan (optional) Before linking a Meta campaign, you can create a separately revisioned Meta plan for the campaign. 1. In the **Ads** tab, open the **Meta** section. 2. Select **Edit Meta plan**. 3. Fill in the advertising objectives, timeline and budget guidance. 4. Save the plan. Meta plans are independently revisioned. Workspace presets (for example, a pre-configured budget guideline for your workspace) can be applied explicitly — applying a preset is a deliberate step, not automatic. Plans work independently of the creative-generation gate. Unsaved plan changes participate in the existing navigation guard. ## Step 6 — Connect Meta as a workspace integration (optional) Meta connection is now a workspace-level integration shared between Settings and Campaign ads. Connecting Meta requires workspace owner or admin access and must be enabled by your Hub administrator. 1. Open **Settings → Integrations** and find **Meta**, or use the **Connect Meta** option in a campaign's Ads tab. 2. Select **Connect Meta** and sign in with your Meta account in a separate window. This preserves any open campaign draft. 3. Approve the required permissions. Hub uses **ads_read** for reporting by default. 4. Select or search from discovered ad accounts. Discovery is paginated and searchable across loaded pages. OAuth tokens are AES-256-GCM encrypted and stored server-side. They are never exposed in Hub. The connection shows identity, expiry, capability, last-check and actionable failure states. Disconnect warns that Meta ads keep running independently. ## Step 7 — Link a Meta campaign and sync reporting (optional) Instead of creating a campaign from scratch inside Hub, you can link an existing campaign created in Meta Ads Manager and sync its status and results. ### Workflow: Plan → Prepare assets → Open Ads Manager → Link campaign → Results 1. In the campaign's **Ads** tab, select **Open Ads Manager** to open Meta Ads Manager directly. 2. Create or find the campaign you want to link. 3. Return to Hub and select **Link campaign**. 4. Hub discovers campaigns from the connected account. Select the correct one. Hub verifies account ownership, isolates workspace data, and transactionally prevents the same remote campaign from being attributed to two active Hub campaigns. ### Automatic sync - Each linked campaign is synced every six hours automatically. - Use **Refresh now** to pull the latest data immediately. - Custom date reports and campaign/ad-set/ad drill-down are read-only. - Failed, deleted or revoked-access refreshes preserve previous results with timestamps and guidance. - Unlinking preserves history and never changes anything in Meta. ### What syncs Hub syncs the campaign's active/paused status, actual settings, spend and results. Missing metrics are shown as unavailable rather than zero. Link CTR/CPC are distinguished from all-clicks metrics. Currencies and overlapping actions are never combined. ## Step 8 — Prepare paused Meta ads (native launch, optional) If your administrator has enabled native Meta launching, you can prepare a paused ad campaign directly from Hub. The campaign is created in Meta but does not spend money until explicitly launched after a reviewed approval. 1. Choose an ad account, Facebook page, Instagram identity, conversion pixel and event. 2. Set audience countries, age range, start date and end date. 3. Select approved creative variants to include (up to six). 4. Select **Prepare**. Hub creates the campaign, ad set and individual ads in Meta at a paused status. Stories remain export-only; initial direct Meta placement uses Facebook and Instagram feed. If a previous prepare attempt left an uncertain result, Hub reconciles by looking for the unique operation name before creating another object. ## Step 9 — Review and launch (native launch, optional) Launching requires a separate review and explicit confirmation by a workspace owner or admin. 1. After preparation, open the **Review launch** panel. 2. Hub re-reads the current creative and brief revisions, approved image hashes and native Meta settings (account status, targeting, budget, dates and creative content). 3. If anything has changed from the saved review, the launch is blocked. Prepare a new proposal if the settings differ. 4. An owner or admin selects **Confirm launch** to activate the ads. Hub activates child ad objects first, then the parent campaign. Pause verifies the resulting status; an ambiguous activation is reported rather than assumed. > **No paid ads are activated without this explicit confirmation step.** Never enable Meta launch flags solely because deployment succeeded. ## Configure Meta Conversions API measurement (optional) Owners and admins can configure a separate encrypted dataset credential for Meta's Conversions API. This is independent of the read-only ads_read reporting connection. 1. In the campaign's **Ads** tab, open **Workspace conversion connection**. 2. Enter the **Dataset ID** and choose a **Delivery mode**: Disabled, Test only, or Live reviewed leads. 3. Enter the **Dataset access token** — a separate credential from your reporting connection. 4. Enter the **Meta Test Events code** from Meta's Events Manager. 5. Select **Save and verify test** (when entering a new or replacement token) or **Save measurement settings**. ### How verification works When you save a new or replacement token, Hub verifies it by sending one synthetic Lead event to Meta using your Test Events code — without requiring dataset metadata read access. - Saving sends one synthetic event. The event contains only a stable, hashed ID — no customer contact data. - The credential is only saved if Meta acknowledges the event. - If verification fails, the existing working credential is preserved unchanged. - Once verified, use **Send synthetic test** at any time to re-confirm the connection before enabling live delivery. Live delivery requires both explicit administrator mode and a separate operator workspace gate. Deployment alone does not enable live delivery. ## Reporting After launch or once a campaign is linked, Hub records timestamped delivery, status, spend and results from Meta. Open the campaign's Ads tab to view current status and reported performance. ## Campaign attribution Campaign attribution (UTM campaign and content keys) is preserved through the export workflow, and is captured before quiz completions and signup journeys. Attribution is validated server-side and attached to existing records and payloads. Quiz completions and signups remain activity measures — they are not qualified leads and do not send Meta conversion events. ## Roles and access | Action | Standard member | Owner / Admin | |---|---|---| | Edit brief and creative copy | ✓ | ✓ | | Add manual concepts | ✓ | ✓ | | Generate concepts | ✓ | ✓ | | Approve creatives | — | ✓ | | Export packs | ✓ | ✓ | | Connect / disconnect Meta | — | ✓ | | Link / unlink Meta campaign | — | ✓ | | Configure Conversions API measurement | — | ✓ | | Prepare Meta campaign (native launch) | — | ✓ | | Review and launch Meta campaign | — | ✓ | ## What the gates mean | Gate | What it controls | |---|---| | `creationEnabled` | Creative write and generation operations. Absent means enabled. | | `imagesEnabled` | AI image generation. Only enable after verified model access and pricing. | | `metaConnectionEnabled` + `metaPermissionsVerified` | Whether the Connect Meta option appears. | | `metaLaunchEnabled` + `metaNativeBudgetVerified` | Whether the native Launch button is available. | These flags are set by your Hub administrator. Contact them if a feature you expect is not visible.