
Build and launch ad campaigns in Hub — plus a smoother new-member experience and better plugin recovery
Create and manage ad campaigns from start to finish inside Hub — write briefs, generate concepts, build visuals, connect Meta, review before launch, and track delivery — plus faster new-member onboarding and more resilient plugin recovery.
What's new in Hub
Today's update introduces a complete campaign ads workflow inside Hub, alongside improvements that make it easier for new team members to join your workspace and keep your ChatGPT plugin working reliably.
Build and manage ad campaigns without leaving Hub
Hub now has a dedicated Ads area inside Campaigns — a structured, end-to-end workspace for creating and managing advertising, from the first brief through to Meta launch and delivery reporting.
Here is what the workflow covers:
Write reusable briefs and generate six concepts at once
Start a campaign with a multi-offer brief that can be reused across future campaigns. From the brief, you can request a batch of six ad concepts in one go. Hub estimates the generation cost before you confirm, records AI usage separately from any advertising spend, and keeps a full job history — queued, running, completed, cancelled, and failed — so nothing happens silently.
Existing concepts are always preserved. Favourites, editing, and duplication let you refine concepts without losing earlier work.
Design visuals and export platform-ready packs
Once you have concepts you like, a visual editor lets you add and arrange layers, choose from three guided layouts, upload or select workspace images, and write platform-specific copy. Validation keeps your creative within the requirements for each platform.
When you're ready, Hub generates a private ZIP export for each platform. Google Display, Facebook, Instagram, and TikTok are all supported; TikTok exports include slide ordering and music setup guidance. Exports carry stable IDs and tracked destinations, so you always know which creative went where.
AI-assisted artwork generation is available in the workflow but remains gated until pricing is verified — uploaded images and text layouts work without it.
Connect your Meta account securely
A separate advertising connection lets workspace administrators link their Meta account using OAuth. Credentials are encrypted server-side and never exposed in the browser. Once connected, Hub discovers your available ad accounts, pages, Instagram profiles, and pixels.
Meta connection itself remains pending final app configuration and account acceptance. No ads can be activated until the connection is verified.
Prepare campaigns with a £300 lifetime budget cap
Campaigns are prepared in Meta as paused objects — nothing spends until you explicitly launch. A single ad set shares a £300 lifetime budget across your selected offers, with a campaign spend cap and an explicit end date. Proposals are bounded to one £300 flight per campaign per start month, so budget limits are enforced before any activation attempt.
If an API response is ambiguous, Hub reconciles by operation name and reports explicitly rather than creating a duplicate ad.
Review, confirm, and launch with owner approval
Launching an ad requires an explicit saved review and owner or admin confirmation. At the point of activation, Hub rechecks the current creative and brief revisions, checks approved source image hashes, and verifies the native Meta account, budget, date, targeting, and creative settings.
Children ad sets activate while the parent campaign stays paused, then the parent activates last. The resulting status is verified; any ambiguous result is reported explicitly rather than assumed to be live.
Track delivery, rejections, and spend
After launch, timestamped delivery, rejection, and spend reports keep you informed of how each campaign is performing — all without leaving Hub.
Important: No paid ads are activated by this update. The Meta connection, image generation, and paid activation remain gated pending verified provider and account acceptance. Real-account acceptance is explicitly recorded and the business campaign task stays open.
New members can join your workspace more reliably
Two improvements make the new-member onboarding path more dependable.
Verification emails now arrive. Hub now sends email verification through its own Resend transport rather than relying on Firebase's default delivery — so the message actually reaches new reviewers' inboxes. The email clearly distinguishes verification from the workspace invitation, includes a transactional rate limit to prevent abuse, and never returns a link or token to the browser. A resend countdown and readable recovery errors are shown in the UI.
Email verification is shown before the join step. New email/password users who reach a workspace invitation without a verified email are now shown the verification controls first — rather than a confusing Firestore permissions error. The invitation acceptance refreshes the user token before the atomic write, so everything completes cleanly.
Your ChatGPT plugin recovers more gracefully
Record searches in the Hub ChatGPT plugin now collect results across bounded pages and report completeness, so you get a full answer rather than a truncated one. When something goes wrong, structured recovery guidance distinguishes clearly between validation errors, conflicts, access issues, and temporary failures — making it easier to understand what happened and what to do next.
Connection management now tells you whether a grant is authorised, in use, expired, or revoked. Consent cancellation returns a validated OAuth denial rather than an ambiguous error.
Sites load and recover more reliably
Site record subscriptions could previously show empty content or retain stale content from a previous scope after a failed read. Explicit loading, error, and retry states have been added to site collections, dynamic detail pages, related content, inspectors, and portal record sections. Subscriptions are now keyed to their scope, and portal drafts stay mounted during recovery.
On narrow screens, the public site header no longer obscures editor controls — layer order is now shared consistently between public chrome and editor surfaces.
More improvements are in progress. We'll keep you updated as they roll out.