Meta Verified partner TikTok Verified partner

The whole product, written out.

Every one of the 660 things upload.ad does, down to the small ones. Search the list for what you need and see whether it is here.

7 days free. No credit card required.

Creative library

Where finished work lands and stays findable.

Drag and drop uploading
Drop images and video anywhere on the library to add them. Whole folders come in at once.
Freeform canvas
Creatives sit on a canvas you pan and zoom, arranged the way the campaign is actually shaped rather than in a fixed grid.
Grid view
A dense thumbnail grid for when you want everything at a glance.
List view
A row per creative with name, status, folder, and dates, sortable by column.
Folders
Nest creatives into folders per client, campaign, or concept.
Folder colours and icons
Give a folder its own colour and icon so it reads at canvas zoom.
Tags
Tag creatives freely and filter the library down to one tag.
AI tagging
New uploads get suggested tags from what is actually in the image or video, so the library stays searchable without anyone tagging by hand.
Full library search
Search across file names, folder names, ad copy text, and tags in one box.
Lightbox preview
Open any creative full screen, step through the set with the arrow keys, and play video in place.
Video player with scrubbing
Frame-accurate scrubbing, keyboard control, and a timeline that shows where comments sit.
Rename creatives
Rename in place from the canvas, the list, or the API.
Duplicate creatives
Copy a creative, optionally into another folder, without re-uploading it.
Bulk move
Select many creatives and move them into a folder in one action.
Manual reordering
Drag creatives into the order you want them read in.
Trash with 30-day recovery
Deleted creatives go to the trash and can be restored for 30 days before they are removed for good.
Permanent delete
Empty the trash yourself when something should be gone now.
Sticky notes on the canvas
Drop a note next to a creative for context that is not a comment on the work itself.
Notes you can write in properly
Headings, lists, quotes, highlights and links, so the brief beside the work reads like a brief.
To-do lists beside the work
Keep the shot list or the round of changes on the board, and tick items off as they are done.
Who ticked it off
Each finished item shows the person who marked it done.
Links that show the page
Paste an address and it becomes a card carrying that page's own picture and title.
Notes and lists in every view
They sit beside your files in grid and list too, and open full size when you want to read or write.
Notes live in folders
Move a note, a list or a link into a folder the way you move a file.
Search reads what you wrote
Find a note by a phrase inside it, a list by one of its items, or a link by its address.
Shapes and drawing
Draw boxes, arrows, and freehand marks on the canvas to group and point at things.
Assigned creative editor
Set which member owns a creative, overriding the uploader, so feedback reaches the person actually cutting it.
Match a live ad to its creative
Resolve an image or video already running on a platform back to the library asset it came from, so an ad in the table is never an orphan.
Creative detail panel
One panel per creative with its versions, comments, copy, tags, review status, and the ads it became.
Saved library views
Save the current search, tags, status, and folder as a named view you can come back to.
Bulk approve and request changes
Set a whole selection to approved or changes requested at once.
Bulk tagging
Add a tag to a whole selection, strip a shared tag off all of them, or AI-tag a batch.
Copy and paste creatives
Copy a selection and paste it into whichever folder you are looking at, with the usual shortcuts.
Undo a delete
Deleting shows a short undo bar instead of asking first, and one click puts it all back.
Drag onto the breadcrumb
Drop creatives on a breadcrumb, or on back or home, to move them up a level or to the top.
Select every match
Press Enter in the search box to select everything matching what you typed.
Search results show where a file lives
Matches from other folders show their path and say when the hit came from saved copy.
Restore or empty the whole trash
Put everything back at once, or clear it out, with days remaining shown per item.
Rubber-band selection
Drag a box across the canvas to select every card, folder, and drawing inside it.
Canvas zoom controls
Zoom from the corner controls, read the current level, and click it to snap back.
Hold space to pan
Hold space, or use the middle mouse button, to drag the canvas without moving anything on it.
Canvas tool shortcuts
Single keys switch between select, pen, text, shape, and eraser, and one key fits everything on screen.
Group drawings
Select several notes, shapes, and strokes together to move, duplicate, or delete them in one go.
Eraser
Wipe drawings away by dragging across them.
Video thumbnails play on hover
Point at a video card and it plays in place, silently.
Unresolved comment counts
Every card and row shows how many comments are still open on it.
Side-by-side version compare
Play the current cut next to an older one with both players on the same clock.
Playback speed, loop, and fullscreen
Cycle speed, loop the clip, set volume, and go fullscreen from the player or the keyboard.
Step a frame at a time
Nudge the playhead one frame either way at the clip's real frame rate.
Remembered view choice
The library comes back as canvas, grid, or list, with your sort and filters intact.

Uploads and media handling

What happens between the file leaving your machine and being ad-ready.

Images and video
The library takes the image and video formats Meta and TikTok actually ingest, and rejects anything that could not become an ad.
Content sniffing on upload
File type is read from the file itself, not from what the browser claims, so a mislabelled file cannot slip through.
Large file uploads
Multi-gigabyte video uploads run in the background while you keep working.
Upload queue
Every file gets a job you can watch, with per-file progress and a clear reason when one fails.
Retry a failed upload
Retry a single failed file without redoing the whole batch.
Dismiss stuck jobs
Clear an upload job you no longer care about out of the activity panel.
Metadata stripping
Newly uploaded images can have AI generation markers, Content Credentials, generator prompts, and camera EXIF and GPS removed, without re-encoding the picture.
Smooth playback of heavy video
Every video gets a lighter copy made for reviewing, so scrubbing a huge file is instant instead of dragging the original around.
Review copies carry nothing extra
The copy people watch is stripped of the camera, location, and creation data the original file arrived with.
Previews that retry themselves
If a video's review copy does not render the first time, it is retried on its own until it does.
Video verified before processing
A file that is not genuinely a video, or that points somewhere else instead of holding one, is refused rather than processed.
Interrupted uploads cost you nothing
An upload that never finished is cleared out within a day and stops counting against your storage.
Versions on any creative
Upload a new cut over an existing creative. It takes the same spot, folder, and review thread, and older cuts stay behind the version switcher.
Version history
See the whole chain for a creative, which version is current, and the review status each one reached.
Video poster frames
Set the still that represents a video, so grid tiles and previews show the frame you chose rather than whatever the first one happens to be.
Download originals
Pull the untouched source file back out whenever you need it.
Zip download
Download a selection or a whole folder as one zip.
Review copies are free
The lighter playback copies the app makes never count against your storage.

Review and approval

Feedback that lands on the frame, not in a chat thread.

Comments on creatives
Threaded comments on every creative, with replies and full editing.
Timecoded video comments
A comment on video pins to the second it was left at, and clicking it jumps the player there.
Time range comments
Mark a stretch of video rather than a single moment.
Comment reactions
React to a comment instead of adding another one that just says yes.
Mentions
Type @ and a name to pull a teammate into a thread. They get a notification.
Internal notes
Mark a comment team-only so it never appears on a review link a client can see.
Resolve threads
Close a thread once it is handled, and reopen it if it was not.
Review statuses
Every creative carries a status: in review, changes requested, or approved.
Status per version
Approval belongs to the version that was approved, so a new cut starts its own review.
Comment editing
Rewrite your own comment. Only newly added mentions notify, so fixing a typo does not ping the room again.
Review inbox
One place showing everything waiting on you across every folder.
Drawing on the frame
Reviewers can mark up the picture or the video frame itself with ink, boxes, and arrows, and the marks stay attached to that comment.
Delete your own comment
Remove a comment you wrote, and its replies go with it.
Hide resolved comments
Collapse resolved threads out of the way, and the choice sticks.
Mention autocomplete
Type @ and the teammate list narrows as you type, with arrow keys to pick.

Review links and client sharing

Show work to people who will never sign up.

Review links
Share a creative, a selection, or a folder as a link anyone can open and comment on.
Unlimited free reviewers
Clients and reviewers never need a seat, an account, or a plan. Every plan includes as many as you like.
Guest approvals
A reviewer can approve or request changes on a link by adding their name, no sign-up.
Password-protected links
Put a password on a link before it leaves your hands.
Link expiry
Set a link to stop working after a number of days.
Downloads on or off
Decide whether people on the link can save the files.
Comments on or off
Share read-only when you want a look, not a conversation.
Revoke a link
Kill a link at any time and it stops working immediately.
Link view tracking
See whether a link was opened, how often, and what came back from it.
Client report links
A public performance page at its own address, scoped to a platform, an account, or picked campaigns, with a date range you choose.
Report link passwords and expiry
The same password and expiry controls as review links.
Live report data
A report link refreshes when it is opened, so the client is never reading a stale export.
Note for the client
Add a short written note at the top of a report link.
Guests can draw on the frame
Freehand, rectangles, and arrows in four colours, attached to the comment.
Drawings appear at their moment
A mark shows whenever the video sits at that timecode, and across the span of a range comment.
Guest names are remembered
A reviewer's name is filled in for them next time.
Reviewer decisions stay theirs
The browser, not the typed name, decides which decisions and reactions belong to whom.
Threads update live for guests
New comments and decisions arrive without a refresh.
Approval progress on a folder link
How many of the shared files are approved so far.
Reviewers see each other's decisions
Who approved, who asked for changes, and when.
Change your mind
A new decision from the same reviewer replaces their earlier one.
Guests cannot overturn the team
Once the team settles a status, a guest decision leaves it alone.
Type an exact timecode
Type or nudge the time on a comment instead of scrubbing for it.
Comment on the whole video
Unpin a comment from its moment so it applies to all of it.
Version compare on a review link
An older cut plays alongside the current one, muted and in sync.
Download everything as a zip
One zip of every original on a multi-file link.
Guest comments are labelled
They reach the team under the typed name, marked as a guest.
Passwords stay unlocked
A week on a review link, a month on a report, so a client is not retyping it.
Shared pages stay out of search engines
A link you send is not one search engines index.
Branded tab icon
Your logo replaces ours in the browser tab, password screen included.
A branded domain shows only its own work
Another workspace's link will not open on your domain.
Mobile review layout
The file list, the media, and the comments stack on a phone.
Report thumbnails are served with the page
Creative images on a report come from the page itself, not hotlinked from the ad platform.

Building ads

From an approved creative to a real ad, in the same place.

Ad builder
Pick creatives, write copy, set the destination and targeting, and launch. Campaign and ad set are set in the same flow.
Publish to Meta
Facebook and Instagram, under the page and account you choose.
Publish to TikTok
TikTok Ads, under a linked TikTok identity.
Batch launches
One ad per creative across a whole selection, so a set of twenty cuts becomes twenty ads in one pass.
Publish to several ad accounts
Send the same creatives to each named connected account on a platform in one action.
Automatic creative upload
Building an ad uploads the creative to the platform for you. There is no separate publish step to remember.
Live ad preview
See the ad as it will render, with your copy and creative in place, before it goes out.
TikTok ad preview
A TikTok-shaped preview for TikTok placements.
Carousel ads
Build multi-card carousels from a set of creatives.
Catalog ads
Launch against a product set from your connected catalog.
Lead ads
Launch Meta lead ads and pull submissions back into the workspace.
Partnership ads
Boost a creator post as a partnership ad, with the sponsor tag on it, from the content the business is cleared to advertise.
TikTok Smart Creative
Hand TikTok a set of videos and texts and let it combine them, serving the variants that work.
Product catalogs
Browse the catalogs the connected business owns and build ads against them.
Product sets
Build a product set from conditions, by price range, category, brand, or in stock only, and promote it.
App promotion ads
Run ads for a registered app rather than a web destination.
Publishing identities
Browse the pages, Instagram accounts, and TikTok identities available to you, and create a new TikTok identity when you need one.
Advantage+ enhancements
Turn on Meta's creative enhancements from the builder.
Lead inbox
Lead ad submissions collected hourly and readable in the app, filtered by form or by ad, with every answer the person gave.
Lead form browsing
See the lead forms on the account and which one an ad is collecting into.
Existing post ads
Run an ad against a post that already exists so it keeps the likes, comments, and shares it has earned.
Post picker
Browse the page posts and the posts behind existing ads, or paste a post id directly.
TikTok Spark Ads
Authorise a creator post and run it as a Spark Ad.
Text variants
Multiple primary texts, headlines, and descriptions on one ad, so the platform can pick between them.
Call to action picker
Set the button on the ad from the platform-supported list.
URL parameters
Append tracking parameters to every destination URL, set once for the batch.
Identity selection
Choose the Facebook Page, Instagram account, or TikTok identity an ad publishes under.
Soundtrack search
Search the music library and pick the track on TikTok ads that take one.
Store listing destination
Send an ad to an app store listing instead of a URL.
Scheduled launches
Set a future time and the ad goes live then, not now.
Launch paused
Create the ad paused so someone can look at it in the platform before it spends.
Drafts
Save a half-built ad and come back to it.
Cancel a scheduled ad
Pull a scheduled launch back before its time comes.
Campaign objectives
Pick what a campaign is for: sales, traffic, leads, engagement, awareness, or app promotion.
Special ad categories
Declare housing, employment, credit, financial products, politics, or gambling, and the extra fields those categories require are sent for you.
Optimisation goals
Choose what an ad set optimises for: link clicks, landing page views, conversions, reach, impressions, ThruPlay, leads, app installs, post engagement, or page likes.
Ad set destinations
Send an ad to a website, your post, your page, your video, your event, or a form on the ad itself, with only the destinations the objective allows offered.
Per-position placements
Pick individual positions, not just platforms: Facebook feed, Reels, Stories, Marketplace, search, in-stream, Instagram feed, Reels, profile, search, Threads, Audience Network, Messenger, and WhatsApp Status.
Placement rules checked before launch
Combinations the platform refuses are caught with a plain explanation instead of a rejected publish.
Dayparting
Run an ad set only on the days and hours you choose, set at launch or changed later on a live ad set.
Campaign spend caps
Put a lifetime ceiling on a campaign so it stops at a number you set.
Pre-flight checks
A bid cap with no amount, a ROAS goal with no floor, an app campaign with no store link, a lifetime budget with no end date: each is caught with a sentence saying what is missing.
Page-backed Instagram identity
Create the Instagram identity an ad needs when the business has no Instagram account of its own.
Partnership permission status
See which creators have approved your business for partnership ads and which requests are still waiting.
Find a creator post by its link
Paste an Instagram or Facebook link to pull up that exact post, searched across every page and account the business manages.
TikTok campaign objectives
Reach, traffic, video views, community interaction, lead generation, website conversions, app promotion, and product sales.
TikTok optimisation and billing
Pick the goal, and the billing event TikTok requires alongside it is set for you.
TikTok placements
Run on TikTok, on Pangle, across the app bundle, or leave placement automatic.
TikTok delivery pacing
Spend an ad group's budget evenly through the day, or as fast as it can.
TikTok Business Center identities
Publish under an account authorised to you through a Business Center, not only accounts linked to the advertiser directly.
TikTok instant pages
Pick the instant page a TikTok lead ad collects into.
Duplicate with changes
Make several copies at once, name them with your own suffix, swap in different creatives, or rewrite the text and link.
One ad into several ad sets
Send the same creative, or a whole batch, into many ad sets at once.
Ad set picker with search
Choose those ad sets from a searchable dialog that keeps the count and the limit in sight.
Name each ad in a batch
Every creative gets its own editable ad name, prefilled from the file name.
Each creative brings its own copy
Tick one box and every ad in a batch pulls the copy saved on its own creative.
Grow or trim the batch
Add more creatives, or drop one, without going back to the library.
Drop a file onto the builder
Drag an image or video onto the creative field to upload it and build on it straight away.
Edit copy in the preview
Type directly into the mock ad; the headline, text, and card headlines are editable where you see them.
Flip the preview between creatives
Thumbnails above the preview switch which one you are looking at.
Character counters
Live counts on every text field, a warning near the limit, and a clear message past it.
Missing fields are pointed out
Pressing create marks each unfilled field and scrolls you to the first one.
Display link
Show a tidy domain on the ad instead of the full destination URL.
Save a batch as drafts
One button saves a draft per creative, ready to finish later.
Create ads from several drafts
Tick drafts and turn them all into paused ads in one pass.
Post picker views
Browse posts as a grid or a list, sorted newest, oldest, or by name, and it remembers which you prefer.
Paste a list of locations
Paste a comma-separated list into the location field and every one it recognises is added.
Explainers on the tricky fields
Question marks beside budget types, optimisation goals, bid amounts, and post IDs explain the concept where you need it.
Copy an ad's post ID
Copy the post behind an ad, or start a new ad from it.
Manage copy templates
Browse, search, edit, duplicate, and delete the workspace's templates in one place.
Save all unsaved copy
Save every edited variant at once, and closing warns before anything is lost.

Targeting and audiences

Everything the ad set needs, set from the builder.

Location targeting
Countries, regions, and cities, with a searchable picker.
Age and gender
Set the age range and gender, or leave them open.
Language targeting
Limit an ad set to people browsing in given languages.
Interest search
Search interest targets and see how large each one is before adding it.
Location search
Search targetable places and pick them by name, whatever shape the platform wants underneath.
Audience browsing
See the custom and lookalike audiences on the account while you target.
Device and OS targeting
Target by device type and operating system.
Spending power targeting
Use the platform spending-power segments where they are available.
Custom audience include and exclude
Layer saved audiences in or out of an ad set.
Customer list upload
Upload a customer list as a hashed audience without the raw list leaving your hands.
Lookalike audiences
Build a lookalike from a source audience.
Delete audiences
Remove an audience you built when it has served its purpose.
Reach estimates
See the estimated monthly audience for an ad set's saved targeting.
Placement selection
Pick placements per ad set, or let the platform choose.
Pixel selection
Choose which pixel and conversion event an ad set optimises for.
Frequency caps
Set a frequency cap on reach ad sets that require one.
European Union targeting rules
The builder handles the extra EU requirements, including who pays for an ad, where they apply.
TikTok network and income targeting
Target by connection type, from WiFi down to 2G, and by household income bracket.

Ads manager

Reading and running what is already live.

Cross-platform ads table
Meta and TikTok ads in one table, with results beside each row.
Column picker
Choose which metrics and fields the table shows.
Sortable columns
Sort by any column by clicking its header.
Metric filters
Filter to ads above or below a number: spend over, ROAS under, whatever the question is.
Saved views
Save a set of columns and filters and come back to it.
Row virtualisation
Thousands of ads scroll smoothly because only what is on screen is drawn.
Creative preview on hover
Hover a row to see the creative behind the ad without leaving the table.
Ad detail view
One ad with its trend, copy variants, creative, delivery, and change history.
Pause and activate
Flip status on an ad, ad set, or campaign from the table.
Inline editing
Change names, budgets, bids, and end times without opening the platform.
Bulk budget changes
Set or scale budgets across a selection in one action.
Duplicate ads and ad sets
Copy any object, optionally into another parent.
Delete ads
Remove objects from the account, gated behind its own permission.
Campaign and ad set browsing
Read the account structure without switching tools.
Bid strategies
Highest volume, bid cap, cost per result goal, and ROAS goal, set from the app.
Ad issues view
Everything needing attention in one list: rejected, flagged, or blocked on billing, across both platforms.
Change history
Recent changes made in the ad account, read from the platform's own log.
Ad attribution to members
Credit an ad to a team member so team performance reads correctly.
Billing limits and credit lines
Both ceilings that can stop delivery in one place: each account's own spending limit and the business's extended credit lines, with limit, spent, and available.
Archive ads
Put a campaign, ad set, or ad away for good on Meta without deleting it.
Deep duplicate
Copy a campaign or ad set with everything inside it, into several parents at once.
Ad quality rankings
The quality, engagement rate, and conversion rate rankings the platform gives each ad.
Full result metrics
Reach, frequency, CPC, CPM, ThruPlays, adds to cart, registrations, installs, leads, purchase value, and a cost per result that follows the most specific conversion the ad has.
Account currency and time zone
Numbers appear in the ad account's own currency, and schedules are written in its own time zone rather than yours.
Large accounts load completely
Campaign, ad set, and identity pickers page all the way through instead of stopping at the first page.
Ad account disabled alert
If a platform disables a connected account you are told in the app and by email, rather than finding out from stopped delivery.
Compact rows
Switch to tighter rows to fit more on screen, and it stays that way.
Auto-refresh
Turn on a one-minute refresh so the numbers keep updating while you watch.
Freshness and row count
The toolbar says how long ago the table updated and how many rows your filters left.
Group by campaign
Fold ads and ad sets under their campaign, each group carrying its own totals.
Hide the summary
Put away the tiles and the trend chart when you only want the table.
Column presets
Swap the table to a ready-made column set in one click.
Drag columns into order
Reorder the metric columns by dragging them.
Search shortcuts
Type status:paused, spend>100, or roas<1 straight into the search box.
Table keyboard shortcuts
One key to search, to switch between campaigns, ad sets, and ads, to refresh, and to clear.
Right-click a row
A menu on any row with open, edit, pause, duplicate, archive, and delete.
Copy a name or ID
Copy any object's name or its platform ID from the row menu.
Export the table
Download exactly what the table is showing, as CSV, TSV, Excel, or JSON.
Archived view
Browse the things you have archived as their own view.
Bulk status changes
Tick a set of rows and pause, resume, or archive all of them at once.
Drill from a selection
Pick campaigns, switch level, and see only their children.
Expand a row in place
Open an ad inside the table for its trend, costs, rankings, recent changes, and creative.
New ads are highlighted
After creating, the table scrolls to the new ad and marks where it landed.
Empty state that connects an account
With nothing connected, the page explains why and offers the connect button there.
Download leads as a spreadsheet
Save the lead submissions you are looking at as a file.
Per-account spending limit remaining
Each connected account shows how much of its own limit is left.

Creative testing

Put creatives in front of the market and let the numbers decide.

Creative tests
Launch creatives as real ads into a designated testing ad set and let them run.
Hourly evaluation
Tests are scored every hour against benchmarks from your own account.
Win rules and thresholds
Define what winning means: the metric, the threshold, and the spend floor.
Hard spend stop
A maximum spend per test that stops it whatever else is happening.
Automatic promotion
Winners move into your scaling ad set, automatically or on your say-so.
Automatic losers off
Creatives that do not clear the bar are stopped instead of quietly spending.
Test pipeline configuration
Set the testing ad set, the scaling ad set, and the rules once.
Manual promote and kill
Override the pipeline at any point.
A/B tests
Meta ad studies and TikTok split-test campaigns, created from the app.
Creative outcome labels
The hourly rollup labels each creative a winner, a loser, fatigued, or neutral, with the reason.
Split test variables
Choose what a TikTok split test actually varies: targeting, bidding and optimisation, or creative.

Budgets and pacing

Knowing on the 12th whether the month is on track.

Monthly budget plans
Set a monthly spend target per platform, for a whole account or for picked campaigns.
Pace tracking
Spent, expected, pace percent, and projected month end, recomputed every hour.
Pacing triggers
Fire an automation when a plan crosses a pace threshold, so drifting budgets act rather than just report.
On-demand recompute
Refresh a plan now instead of waiting for the hourly pass.
Budget scaling actions
Increase or decrease a budget by a percentage, with floors and ceilings that hold.
ABO, CBO, and lifetime
Ad set budgets, campaign budgets, and lifetime budgets are all first-class.

Automations

A trigger, then a graph of steps that run when it fires.

Visual flow builder
Build a flow on a canvas: drag nodes, connect ports, configure each step in a panel.
Flows as code
The same flow readable and writable as a YAML document, for people who would rather type it.
Review status trigger
Fire when a creative moves to approved, changes requested, or in review.
Comment triggers
Fire when someone comments, including guests on a review link, or resolves a thread.
Upload triggers
Fire when a creative finishes uploading or a new version is added.
Share link triggers
Fire when a review link is opened or commented on.
Publish and rejection triggers
Fire when a creative is published, when a platform rejects an ad (with the reason), or when a publish fails.
Lead trigger
Fire when a Meta lead ad submission arrives.
Team trigger
Fire when someone accepts a workspace invitation.
Test triggers
Fire when a creative test starts, completes, promotes a winner, or kills a loser.
Creative status trigger
Fire when the hourly rollup relabels a creative a winner, loser, or fatigued, carrying the full 30-day numbers and the live ads behind it.
Connection lost trigger
Fire when a Meta or TikTok connection stops working.
Storage threshold trigger
Fire when workspace storage passes 80% or 100% of what the plan includes.
Daily, weekly, and monthly schedules
Run at an hour and minute in your own time zone. A monthly run set for the 31st still runs in February.
Metric trigger
Check ad performance against your conditions as often as every fifteen minutes.
Checking windows
Confine metric and pacing checks to an hour range, so nothing acts at three in the morning.
Rolling metric windows
Measure over the last few hours rather than whole days.
Arithmetic thresholds
Compare a metric against an expression, not just a fixed number.
Trigger filters
Narrow a trigger to a folder, an account, a campaign, or a name pattern.
Webhook trigger
Fire the flow when a POST arrives at the flow's own secret hook URL.
Manual runs
Start a flow by hand against a selection of creatives or ads.
Conditions and branching
Branch on true and false, with grouped conditions and nesting.
For-each loops
Iterate over the ads or creatives a trigger matched and act on each.
Join
Bring branches back together before continuing.
Wait
Pause a flow for a set time before the next step.
Wait for an event
Hold a flow until something happens, with a timeout path when it does not.
Set values
Compute and store values partway through a flow for later steps to use.
Template pipes
Format values inline: currency, numbers, dates, and text, written into any field.
AI steps
Put a language model in the middle of a flow and use what it returns.
Send a request
Call any HTTP endpoint from inside a flow and branch on the response.
Sub-flows
Run another automation from a flow, optionally waiting for it to finish.
Comment and review actions
Add a comment, add a team-only note, or set the review status from a flow.
Library actions
Move to a folder, rename, duplicate, or move to trash without touching the app.
Create a review link from a flow
Generate a link, with comment settings and expiry, as a step.
Publish from a flow
Send a creative to an ad account as a step in the flow.
Ad control actions
Pause, activate, scale budgets, set budgets, scale bids, set bids, and update names, budgets, spend caps, and end times.
Read performance in a flow
Pull creative performance for a platform and window and branch on what comes back.
Report exports
Export a campaign, ad set, or ad report for a date range and email it to a member.
Notification actions
Send an in-app notification, post to Slack, Discord, or Teams, send an email, or fire a webhook event.
Start a test from a flow
Kick off a creative test as a step.
Generate copy from a flow
Write ad copy from a brief inside the flow.
Run history
Every run, every step, what it received and what it returned.
Version history on flows
Previous versions of a flow are kept, so an edit can be read back.
Enable and disable a flow
Switch a flow off without deleting it, and back on when you want it again.
Restore a past version
Roll a flow back to an earlier version. The current state is kept first, and runs waiting on the old flow are cancelled.
Replay a run
Run a flow again against a past run's stored trigger, for real, when something should have worked and did not.
Dry-run preview
See what a flow would do against real data before you switch it on.
Throttling and failure backoff
A flow cannot run away, and one that keeps failing is backed off rather than hammered.
Webhook idempotency
A repeated hook delivery does not run the flow twice.
Automation templates
Start from a ready-made flow instead of an empty canvas.
Failure alerts and automatic switch-off
Choose when a failing flow tells you, whether it emails the owner, and whether it switches itself off after a run of failures.
Error paths on a step
Any action, request, wait, or AI step has its own error output, so a flow can carry on down another branch when a step fails.
Per-step retries
Set how many times an individual step retries and how long it waits between attempts.
Billing headroom triggers
Fire a flow when a credit line or an account spending limit drops past a share of its ceiling, or past a flat amount, once per crossing rather than every hour.
Pan and zoom the flow
Drag the background to move around, scroll to zoom, and get back to a readable size in one click.
Tidy layout
Have the builder arrange every step into a clean layout instead of nudging boxes by hand.
Undo and redo
Take back any change to a flow, including moves, deletes, and settings.
Right-click on the flow
Duplicate, disconnect, or delete a step, and tidy the layout, from a menu.
Duplicate a step
Copy a configured step rather than setting the same thing up twice.
Searchable step picker
Adding a step opens a menu you can type to filter, right where you pointed.
Delete connections
Click a connection to select it and remove it.
Impossible connections explained
Draw a connection the flow cannot support and it says why, and offers the step that would make it work.
Loop body drawn as a block
The steps a repeat covers are framed, so it is obvious what runs once per item.
Run results on the flow
Pick a past run and every step lights up with what happened to it.
Plain-English run outcome
A failed or stopped run says which step failed, or which condition stopped it, in a sentence.
Per-item loop results
A repeat step lists each item it ran on and whether that one worked.
Edit a flow with AI
Describe the change in a sentence and get a marked-up before and after to accept or reject.
Version diff
Compare any past version against the flow as it stands, line by line and summarised.
Copy or export a flow
Copy the written form to the clipboard, or download it as a file.
Duplicate an automation
Copy a whole flow, paused, and open the copy.
Syntax reference in the editor
A worked example of every construct sits beside the code view.
Live validation
The code view says whether the document is valid and how many steps it has as you type, with the line a problem is on.
Run once per thing
Hold a flow to one run per creative or ad ever, so nothing is acted on twice.
Rotate the hook address
Copy the flow's address, or issue a new one and kill the old immediately.
Insert a value with one click
Available values are listed under text fields, and clicking one drops it in.
Invert a condition group
Flip a group so it passes when it does not match.

Ad comment moderation

The comments under live ads, in one inbox.

Ad comment inbox
Comments on your live Meta and TikTok ads in one place.
Facebook and Instagram coverage
Meta covers both the Facebook post and the Instagram media behind an ad, and every comment says which it came from.
Reply publicly
Answer a commenter as the page, from the app.
Edit a reply
Rewrite one of the page's own Facebook replies after posting it.
Hide and unhide
Take a comment out of public view without deleting it.
Delete comments
Remove a comment on either platform.
Filter the inbox
Narrow by ad, by platform, by period, and by whether it was answered.
Moderation permission
Moderating is its own permission, because a reply posts publicly under your brand.
Like a comment as the page
Acknowledge a commenter with a like from the brand instead of a reply, and take it back again.
Reply threads in the inbox
Open a comment to read the replies under it, with who wrote each and when.
Delete your own reply
Remove a reply the page posted without touching the customer's comment.
Reply length counter
A live count against each platform's own limit while you write.
Inbox remembers where you were
The platform and date range you last used come back next visit.
Inbox refreshes itself
New comments appear without a reload.

Analytics and reporting

What ran, what it cost, and who did the work.

Overview home
An adaptive home showing cross-platform performance, what needs you, and what is running.
Performance analytics
Spend, impressions, clicks, purchases, and ROAS across both platforms.
Account time series
Daily series per account so trends are visible, not inferred.
Breakdowns
Split results by the platform breakdowns: age, gender, placement, and more.
Ad insights
Full metrics for a single ad over any range.
Creative analytics
Outcomes per platform, with winner, loser, and fatigued counts and the top creatives by spend.
Team performance
Creatives, publishes, ads, and ad results per member, with a previous-period comparison and the unattributed remainder.
Activity analytics
Workspace activity over 7, 30, or 90 days: creation, review, versioning, publishing, testing, storage, and sharing.
Sharing analytics
Active review links, views, guest approvals, and change requests.
Automation analytics
Run counts and outcomes for your flows.
Per-creative performance
Spend and results rolled up to the creative rather than the ad, across every ad that used it.
Refresh performance now
Recompute the rollup on demand instead of waiting for the hourly pass.
Period comparison
Every headline number carries the previous window beside it.
Rearrangeable cards
Drag the analytics cards into the order you read them in.
Hide cards
Put away the cards you never look at.
Sortable analytics tables
Every analytics table sorts by clicking its header.
Custom date ranges
Any range, plus the usual presets.
Ranges that include today
A workspace setting shifts rolling ranges onto today instead of ending yesterday, keeping their length.
Google Sheets export
A running performance log in your own Drive, one row per ad per day, appended daily across campaign, ad set, and ad tabs.
CSV report exports
Export a report as a file, by hand or from a flow.
Leads in the spreadsheet export
Lead submissions append to their own tab as they arrive, with a column per question, and new questions add their own columns.
Resizable cards
Set any card small, half width, or full width with a chart, and the grid fills the gaps.
Card library
Bring back a hidden card, or add ones that are off by default.
Hover a chart for the exact number
Point at any day to read the value and what the previous period did that day.
Shareable views
The tab, platform, and date range live in the address, so a reload or a pasted link lands on the same view.
Per-member drill-down
Open a member's row to see every ad they created with its spend, clicks, and results.
Spend by member charts
Bar charts ranking the team by spend and by creatives added.
Copy a report link
Copy a client report address in one click.
Restore a revoked report link
Turn a report link back on after revoking it.

AI assistant and copy

A model that can actually operate the workspace.

Workspace assistant
Chat that can run the workspace: upload, organise, review, launch, moderate, and read performance, with the same permissions you have.
Chat sessions
Conversations are kept, so you can pick one back up.
Screen control
The assistant can see and drive the dashboard, and you can stop it at any point.
Confirmation before destructive actions
The assistant asks before it deletes or spends, and an approval covers exactly the action you were shown, never a substituted one.
Ad copy generation
Generate primary texts, headlines, and descriptions from a brief and the creative itself.
Saved copy per creative
Copy variants live on the creative and carry into the ad builder.
Copy templates
Workspace-wide reusable sets of primary texts, headlines, and descriptions, up to five each.
Template performance
Ads built from a template are recorded, so the list shows how often each is used and reports rank saved copy by what it returned.
Generate variants with AI
One click adds new lines in the voice of the copy already in the template, up to five of each.
Templates section
A place in the sidebar for the copy your team reuses: open one where it sits, edit it, duplicate it.
Concurrent edit protection on templates
Saving a template that changed underneath you fails rather than overwriting a teammate.
Token balance
Plan tokens reset monthly, purchased packs roll over, and plan tokens are spent first.
Token packs
Buy more tokens when a month runs hot, at a rate that steps down with size.
Never used to train models
Every request goes out with data collection refused, so creatives and workspace content never feed model training.
Drag creatives into the assistant
Drop library creatives or images onto the assistant to attach them to your question.
Slash commands
Type a slash in the assistant to run a ready-made request such as a weekly report or a spend review.
Edit or retry a question
Change something you already asked, or ask again, and the conversation carries on from there.
Chat history by recency
Past conversations grouped as today, yesterday, and older, with delete on hover.
Copy brief remembered
The brief you gave last time comes back prefilled.
Honest about what it saw
If an image is too large or a video has no frame yet, the app says the copy came from your notes and the file name instead.
Assistant screen permission
Decide once whether the assistant may see and drive your screen, rather than being asked every time.

Team and access control

Who can do what, down to the folder.

Workspaces
Separate workspaces with their own creatives, ad accounts, and team.
Workspace switcher
Move between the workspaces you belong to from the header.
Invitations
Invite by email, with the role set before they arrive.
Invite links
Share a join link instead of typing addresses.
Role presets
Full access, media buyer, video editor, reviewer, and analyst, as starting points.
Granular permissions
Upload, publish, edit, comment, review, delete, import, share, view ads, create ads, activate ads, delete ads, moderate, manage automations, use AI, and create API keys, each switched on its own.
Spend permission separated
Activating ads and changing budgets is its own permission, so building an ad and spending money are not the same right.
Folder scoping
Limit a member to named folders and the library, uploads, and share surfaces all narrow with them.
Ad account scoping
Limit a member to named ad accounts.
Owner-only controls
Roles, admin invitations, branding, custom domains, and workspace preferences stay with the owner.
Demote before remove
An admin has to be demoted before being removed, so nothing happens by accident.
Enforced two-factor
Require two-factor authentication for everyone in the workspace.
Workspace audit trail
Twelve months of who did what, filterable per member, so there is always an answer to how something got changed.
Live presence
See who else is in the workspace and where they are working.
Realtime sync
Someone else's change appears in your open tab without a refresh, whether it came from the app, the API, the CLI, or an agent.
Teammate cursors
See where other people are pointing on the library canvas, live.
Shared selection
When someone selects creatives, everyone else can see what they picked.
Access ends the moment it is revoked
Removing someone from a workspace closes their open tabs on the spot rather than at their next reload.
Stale tab protection
A tab left open on a workspace you have since switched away from is stopped and reloaded rather than saving into the wrong place.
In-app notification bell
Mentions, approvals, failures, and everything else addressed to you.
Merged notifications
Ten comments on one creative arrive as one line that counts them, not ten lines to clear.
Seats per plan
Two on Starter, five on Growth, fifteen on Pro, and unlimited on Agency, with a counter on the team page. The trial gets two, so you can bring someone in before you pay.
Pending invitation management
See who was invited and by whom, resend the email, or cancel it.
Re-inviting reuses the invitation
Inviting the same address again renews the existing invitation, so every email already sent still works.
Decline an invitation
Turn one down rather than leaving it hanging.
Wrong-account invitations explained
An invitation opened on the wrong account says which address it was sent to and offers to switch.
Leave a workspace
A member can leave on their own, which ends their access and tells the owner.
Leaving cuts off keys and sessions
Their workspace keys stop working and open sessions drop.
Removal cuts access everywhere
Removing someone revokes their keys and disconnects the apps they had connected.
Member profile page
When they joined, when they were last active, exactly what they can reach, and what they have been doing.
Per-member permission editing
Start from a preset, then switch any single permission on or off.
Access resets on a role change
Old folder, account, and permission settings are cleared so nothing stale comes back.
Two-factor gaps on the roster
When two-factor is required, members who have not set it up are flagged.
Teammate emails hidden from members
Plain members see names, not addresses.
Set a teammate's photo
Owners and admins can upload or clear a member's picture.
Rename the workspace
Change the workspace name whenever it stops fitting.
Invite link limits
Expire a join link after a number of days, or never, and cap how many people it lets in.
Invite link status
Uses left and expiry at a glance, and a revoked link stops working at once.
Access preview before inviting
Set exactly what an invitee will be able to do, and see it summarised on the pending invitation.
Expired invitations flagged
One that was never accepted is marked as expired.
Team performance export
Export the member performance table, totals included.
Attributed share of spend
The team page states how much of the account's total spend the attributed ads account for.

Notifications and channels

Getting told, where you already are.

Slack notifications
Workspace events posted to a Slack channel.
Discord notifications
The same events in a Discord channel.
Microsoft Teams notifications
The same events in a Teams channel.
Email notifications
Off until you turn them on, and picked event by event.
Per-channel event picking
Each destination receives only the events you chose for it.
Grouped bulk notifications
A batch upload sends one summary when the queue drains, not a message per file.
Test messages
Send a sample to a channel to confirm it is wired up.
Delivery status
See whether the last delivery to a channel worked.
Masked webhook URLs
Saved channel URLs are shown masked, because the URL is the credential.
Notifications never block uploads
If a chat service is down the message is dropped and the upload carries on.

Integrations

Where creative already lives.

Google Drive import
Pick files from Drive and bring them into the library.
Dropbox import
Browse a connected Dropbox and import from it.
Watched folders
Point at a Drive or Dropbox folder and anything new in it arrives in the library on its own.
Folders inside a watched folder
A batch folder dropped into the folder you watch arrives here as a folder too, with everything inside it.
Replacing a file adds a version
Swap a file in the folder you watch and it lands as the next version of the one already here, ready to compare.
Where a watched folder sends its files
Each one delivers into the library folder you pick, and you can point it somewhere else later.
Deleting can reach the folder too
Turn it on and putting a creative in the trash also puts the file in the trash where it came from.
Files removed there can leave here
Turn it on and a file taken out of the watched folder goes to your trash, restorable for thirty days with its comments.
Duplicate skipping
Files already imported are skipped rather than brought in twice.
Meta connection
Connect your own Facebook business and ad accounts.
TikTok connection
Connect your own TikTok Business Center and ad accounts.
Multiple ad accounts
Connect as many accounts as your plan covers and switch between them.
Default ad account
Set which account the app opens on.
Disconnect a provider
Disconnect Drive or Dropbox at any time. Files already imported stay in the library.
Live ad account updates
Meta tells us when something changes on a connected account, so the app is current without waiting for a poll.
Automatic connection refresh
Access is renewed before it expires, and you are emailed if a connection still needs your attention.
Connection health
A broken or expired connection is surfaced, and can fire an automation.
Watch a Drive folder by sharing it
Share a folder with the address shown, paste its link, and new files arrive on their own.
Watched folder status
Each one shows when it last synced or that syncing failed, and can be stopped.
Sheets export health
The export shows when it last ran and whether it worked, with a link to the spreadsheet.
Copy-paste setup for AI clients
Pick your client and get the exact configuration for it, ready to copy.

Developer platform

Everything the app does, available to your own code and your agents.

REST API
A versioned HTTP API over the same code paths the app itself uses.
Additive-only stability promise
The v1 surface does not break. New things are added beside the old ones.
Typed SDK
A typed client covering every tool.
Command line tool
Upload, manage creatives, edit copy, run tools, and script the workspace.
MCP server
Connect Claude, ChatGPT, Cursor, or any MCP client and let it run the workspace in natural language.
Hosted MCP endpoint
A remote server for clients that connect over HTTPS, with sign-in in the browser and no keys to paste.
Local MCP server
The same tools over stdio for clients that launch a local process.
Browser sign-in for the CLI
Approve a device in the browser instead of managing a key.
Machine-readable CLI output
Every command takes a flag that prints the raw response instead of the pretty output, ready to pipe into jq.
Meaningful exit codes
The CLI exits with a code that says what went wrong, so a script can branch without parsing text.
API keys
Create keys for headless use, with an expiry and a name.
Scoped keys
A key can be limited to a subset of permissions, so a script gets only what it needs.
Signed webhooks
Structured events delivered to your endpoint, signed so you can verify them.
Webhook event selection
Take every event, or pick the ones you care about.
Webhook delivery log
Seven days of deliveries, paginated, with what was sent and what came back.
Test webhook delivery
Send one signed test payload to check your endpoint.
Webhook redelivery
Send any delivery from the log again, signed with your current secret, when your endpoint was down for it.
Zapier, Make, and n8n
The signed webhook is a trigger and the API is the actions, so the generic webhook and HTTP steps on those platforms work with no app to install.
Idempotency keys
A replayed create returns the stored result instead of creating twice.
Cursor pagination
Stable cursors on every list, so pages do not shift under you.
Structured error codes
A closed set of machine-readable codes on every failure, alongside a message meant for a person.
OpenAPI specification
The whole surface described in a spec you can generate against.
Tool catalog search
Agents can search the tool catalog by keyword or category instead of holding every schema in context.
Docs in Markdown
Every documentation page has a plain Markdown twin for agents to read.
Multi-language examples
Reference examples in several languages, not just cURL.
Import creatives from a link
Point at a public image or video URL and it is fetched into the library like any other upload.
New versions from a link
Add a new cut over an existing creative straight from a URL.
Machine-readable automation reference
Every trigger, filter, action, field, metric, and variable, so an agent can write a working flow without guessing.
Agents only see what they may run
The tool list is filtered to the caller's permissions, so a limited member's agent is never offered something it would be refused.
Result schemas in the catalog
Tools publish the shape of what they return, not just what they take.
Destructive and read-only flags
Every tool says whether it only reads or whether it spends money and cannot be undone.
Catalog revalidation
Clients can skip re-downloading every schema when nothing has changed.
Four protocol revisions supported
Old and new agent clients both work against the same address.
Agents register themselves
Agent clients set themselves up on their own; there is nothing to create by hand first.
Authorization screen
Before an app gets in you see who is asking, which workspace it would act in, and what it could do.
Agent access is pinned to one workspace
An agent acts only in the workspace you approved it for, and loses access if you leave.
Workspace-wide key oversight
Owners and admins see every key made in their workspace, when it was last used, and can revoke any of them.
Automatic webhook retries
A delivery your endpoint missed is retried on a widening schedule for hours, signed with your current secret.
Wait for uploads to finish
The CLI can block until every file is done, with a time limit you set.
Fetch every page at once
Ask for the whole history rather than paging by hand.
Confirmation for destructive commands
A command that spends money or cannot be undone refuses to run until you say so explicitly.
Arguments as flags or JSON
Pass a tool's arguments as a JSON object or as plain key=value pairs.
Local files for agents
Running on your machine, an agent can hand over files by path: creatives, a poster frame, a logo.
SDK retries with backoff
Rate limits, blips, and network failures are retried for you, waiting as long as the server asks.
Retry-safe by default
Creating calls carry a replay key automatically, so a retry cannot create the thing twice.
Timeouts and cancellation
Set a deadline per client or per call, and cancel anything in flight.
Iterate every page
List helpers walk every page for you instead of handing back cursors.
Wait for an upload to land
One call polls a job until it is finished or failed.
Download a creative's file
Fetch the original bytes with your credentials, streamed or as an attachment.
Typed tool calls
Tool names complete as you type and their arguments are checked before anything runs.
Call tools newer than your build
A tool added after you installed the client is still callable.
Webhook verification helper
Confirm a delivery really came from us, with a freshness window you can set.
Runs anywhere
No dependencies, and it works on Node, Bun, Deno, and edge runtimes.

Branding and white-label

Client-facing pages that look like yours.

Brand name on review pages
Set the name shown to reviewers and clients.
Custom logo
Put your own logo on review and report pages.
Hide attribution
Take our name off the pages your clients see.
Custom domains
Serve review links from your own subdomain. The app gives you the DNS records and checks them for you.
Live domain status
A domain you connect shows where it has got to on its own, with nothing to refresh.

Account and security

The boring parts, done properly.

Email sign-in with a code
Sign in with a one-time code rather than a password to remember.
Passkeys
Sign in with a passkey on any device that supports one.
Two-factor authentication
Time-based codes on your own account, with recovery codes.
Device list
See where you are signed in and sign a device out.
Step-up authentication
Changing two-factor or removing a passkey asks for a current code first, so a stolen session cannot quietly take the locks off.
Security alert emails
Two-factor changes, passkey changes, and sign-ins from a device we have not seen before are emailed to you.
Connected apps
See which agents and apps hold access, and revoke any of them.
Profile and avatar
Your name and picture, shown to your team and on invitations.
Encrypted platform tokens
Ad platform credentials are encrypted at rest.
Signup abuse guards
Disposable addresses are refused and new-account sends are rate limited.
Account deletion
Delete your account and its data from the app itself.
Support requests
Reach support from inside the dashboard, with your context attached.
Backup codes
At the two-factor step you can use a one-time backup code instead of the authenticator.
Trust a device
Mark a browser trusted so it stops asking for a code every time.
Passkey autofill
Saved passkeys are offered straight from the browser's own autocomplete.
Sign-in remembers your method
The page leads with whichever way you signed in last.
Passkey sign-in from the desktop app
The desktop app hands off to your browser for the passkey and picks the session back up.
Secure your account on the way in
New accounts are offered a passkey or an authenticator immediately, with a skip if you would rather not.
Sign-in codes expire
Six digits, ten minutes, single use, and throttled.
Stay signed in for a month
Sessions last thirty days and refresh as you work.
Sign-in reopens your last workspace
You land back where you were working.
Change your sign-in email
Move the account to a new address, approved from the old inbox and verified at the new one.
First-run connection page
A new workspace is walked through connecting Meta or TikTok.
Named passkeys
Passkeys are named per device and can be renamed, so you know which one you are removing.
New backup codes on demand
Generate a fresh set of recovery codes and copy them in one click.
API key last used
Every key shows when it was last used, and admins see who made each one.

Plans and billing

Priced on ad accounts, never on how many people look at the work.

Four plans by ad account
Pricing scales with the ad accounts you run, not with seats and not with spend.
Free trial
Try the app before paying for it.
Annual billing
Pay yearly and get two months free.
Extra ad accounts
Add accounts beyond your plan at a per-account price.
Storage included per plan
Each plan carries its own storage, with usage shown against it.
Storage overage in blocks
Going over bills in fixed blocks rather than cutting you off.
Storage billing follows what you store
Free up space and the extra storage stops billing, without you having to ask.
Self-serve checkout
Subscribe, change plan, and manage payment details yourself.
Invoices
Your billing history with hosted invoices and PDFs.
Usage page
Token balance, spend history, storage, and what was published this month.
Free reviewers on every plan
Reviewers are never billed, on any plan.
Seven-day trial
Started when you claim your workspace, with the days left shown as you go.
Nothing is deleted when a trial ends
Everything is frozen and comes back exactly as it was when you subscribe.
Upgrade now, downgrade at renewal
An upgrade charges only the difference and applies at once. A downgrade starts when the time you have paid for runs out.
Cancellation runs to the end of the period
Cancelling keeps everything working until the time you paid for is used up.
Purchased tokens survive cancellation
Only the monthly allowance is cleared; packs you bought stay.
Annual plans get tokens monthly
The allowance arrives every month rather than once a year.
Promo codes at checkout
Enter a code when you subscribe.
Tax ID on invoices
Add a VAT or tax ID at checkout so invoices carry it.
Owner-only billing
Only the owner changes the plan or buys packs, and everyone else is told who to ask.
Storage overage warning
Crossing into paid storage tells you what it will now cost per month.
Ad account limits at connect time
Connecting past what your plan covers is refused with a clear next step.
Extra ad accounts bill monthly
They are never prepaid, even on an annual plan, so dropping one stops the charge.

Apps and interface

Details that only matter when you are in it all day.

Desktop app
A native app for macOS, Windows, and Linux.
Automatic desktop updates
The desktop app updates itself.
Signed macOS builds
The Mac app is signed and notarised, so it opens without a fight.
Dark and light themes
Follows the system, or set it yourself.
Streamer mode
Blur what a shared screen should not carry: names, media, people, and money, each switched on its own.
Hover to reveal
In streamer mode, point at something to read it, after a delay you set, or never.
Keyboard navigation
Move through the library, the lightbox, and the tables from the keyboard.
Custom dialogs
Every prompt and confirmation is part of the app, never a browser box.
Instant loads on return
The app shows what you last saw immediately and refreshes it behind you.
Publishing continues after you close the tab
A big batch works through the queue on its own, whether or not anyone has the dashboard open.
Bulk work stays out of your way
A batch of five hundred launches runs behind whatever you are doing, so a big job never leaves you watching a spinner.
Getting started guide
A short checklist on the overview until the workspace is set up.
Collapsible sidebar
Collapse the navigation to icons only, and it stays that way.
Tablet navigation
At tablet widths the navigation shows as icons so the page keeps its width.
Swipeable mobile navigation
On phones the sections become a swipeable row that scrolls the current page into view.
Attention count in the navigation
The Ads row carries a live count of rejected or flagged ads.
Attention counts per workspace
The switcher shows how many ads need attention in each of your other workspaces.
Upload progress in the tab title
The browser tab counts finished files, so a big batch stays visible when you switch away.
Connection warning in the header
A connection about to expire shows a reconnect link at the top of every page.
Right-click anywhere
A menu offering the actions that make sense on the page you are on.
Settings open over your work
Every section opens over the page you were on, linkable and closed with browser back.
Resizable assistant panel
Drag the assistant's edge to widen it, or keep going to take over the page, and it reopens as you left it.
Inline workspace rename
Rename the workspace straight from the header.
Start your own workspace
Someone who has only ever joined other teams can create one of their own.
Streamer mode from the account menu
Blur client work the moment a call starts, without going to settings.
Hold a key to unblur
In streamer mode, hold a key to see everything for as long as it is down.
Theme follows you
Your light or dark choice is saved to your account and changes in every open tab at once.
Ad account remembered per workspace
The account you were working in comes back next visit, per workspace.
Needs your attention
One list of everything waiting: creatives assigned to you, reviews, rejected ads, failing flows, unopened client links, storage, and new leads.
Best performer and wasted spend
The overview names the best ad of the period and totals the spend that produced nothing.
Top ads by spend
The biggest spenders of the period with status, CTR, and results, on the home page.
Remembered overview period
Your 7-day or 30-day choice is remembered.
Copy a platform media reference
Copy the image hash or video ID the platform gave a finished delivery.
Mixed-currency and partial-data notices
The overview says plainly when one platform failed to load or when accounts run in different currencies.
Deliveries grouped by batch
Uploads are grouped into the batch they were sent in, with a tally and a collapse control.
Upload from the creative picker
Drop or choose files while picking a creative for an ad, and a single upload becomes the pick as soon as it is ready.

Affiliate program

For people who send other teams our way.

Referral links
Your own link, with clicks and signups tracked against it.
Application-gated program
Applications are read by a person before an account is approved.
Commission dashboard
Clicks, referred accounts, subscriptions, commissions, and payouts.
Payouts
Payout details you fill in once, and a payout history you can read.
25% for twelve months
A quarter of every subscription invoice a referral pays in their first year.
Ninety-day referral window
A click is credited to you for ninety days, so a sign-up weeks later still counts.
Thirty-day refund hold
Commission becomes payable a month after the invoice, and is voided if that invoice is refunded.
Partial refunds scale the commission
A partly refunded invoice reduces the commission rather than voiding it.
Monthly payouts above a minimum
Balances roll forward until they are worth sending, then go out on the first.
Choose your own referral code
Pick the code in your link if it is free.
New signups only
A link never earns on someone who is already a customer, and never on yourself.
Commission emails
You are told each time a referral earns you one, and when it becomes payable.
Self-billed credit note
Every payout comes with a credit note carrying your name, address, and tax ID for your own books.
Payout details stored once
Your billing name, address, and tax ID are kept for the credit notes.
Masked payout account
A saved account shows only its currency and last four digits.
Commission history
Every commission with its status and the date it becomes payable.
Clicks and commission charts
Thirty days of clicks and twelve months of commissions.

Emails the app sends

Mail you get, and mail you can switch off.

Onboarding sequence
Welcome, then nudges to upload, connect an ad account, and publish, each sent only if that step is still undone.
Trial reminders
Two days before a trial ends, at expiry, and a few follow-ups after.
Annual renewal heads-up
Annual subscribers hear from us two weeks before the card is charged again.
Payment problem emails
A failed payment, a last-retry warning, and a note when it finally goes through.
Mention emails
Everyone @mentioned in a comment gets one.
Publishing failure email
When a creative could not reach the ad account after the retries.
Scheduled ad warning
The owner is told when a scheduled ad has not gone live.
Automation failure email
When a flow keeps failing, and again if it switches itself off.
New key email
Whoever creates an API key is told it happened.
Bounced addresses are never mailed again
An address that bounces is dropped rather than mailed forever.
Unsubscribe takes a real click
A confirmation page, so a mail scanner cannot opt someone out by accident.
Product emails are optional
One link switches off the non-essential mail; account and billing messages keep arriving.

Reliability

What happens when a platform is slow, busy, or wrong.

Platform errors in plain language
A rejection comes back as what to do about it, not as an error code.
Automatic delivery retries
A publish that hits a busy platform is retried on a widening schedule, waiting as long as the platform asks.
Told when a delivery gives up
After the retries run out you get an email naming the file and where to retry it.
Waits for video processing
A video becomes an ad only once the platform says it is ready, with the wait capped so a stuck file reports rather than hangs.
Platform limits handled for you
Calls are paced under the platform's own hourly budget, so one big job never locks the account out.
Stale numbers cleared on change
When a platform reports a change, the stored copy is dropped before your tabs refresh.
Failed AI work costs nothing
A creative the tagger cannot read gives its token back.

Not seeing something you need? Tell us what it is and we will look into adding it.

Request a feature

From feedback
to Approved.

Comments pin to the exact frame. Versions stack on the same creative, and one click marks it Approved. Clients review from a share link with no account, and reviewers are always free, on every plan.

From Approved
to spending.

Send the approved creatives straight into an ad, one at a time or a whole batch at once: campaign, ad set, budget, copy, A/B test, written once and applied to every ad. No exporting, no re-uploading, no retyping it all into another tab. Go live now, start paused, or schedule it for Monday.

Kills the losers
while you sleep.

Set a threshold and walk away. Spent $50 with nothing to show for it, the ad pauses. A test picks a winner, its budget scales. Your rules watch the real numbers on Meta and TikTok and act on them, so a dud stops burning money at 3am instead of whenever you next open the tab.

Summer sale · retarget 30d

active · $63.40 spent · 0 purchases

Ad metrics match

Checked hourly against live results: campaigns, ad sets, or ads whose metrics cross your thresholds.

Pause or activate

Flip the matched campaign, ad set, or ad on or off.

Post to Slack/Discord/Teams

Message your connected notification channels.

Build it into your pipeline.

A REST API, a CLI, and an MCP server for agents. Everything the app can do, your scripts and tools can do too.

Read the docs
upload.ad
# push a batch from your terminal
$ uploadad upload hook_a.mp4 hook_b.mp4 --wait

# expose upload.ad to your agent
$ claude mcp add --transport http \
    uploadad https://upload.ad/mcp

All of it is in every plan.

Nothing on this page is held back for a higher tier. Plans differ only in how many ad accounts, seats, storage and assistant tokens you get, and reviewers are always free.

One price for the whole pipeline.

Plans are metered on connected ad accounts, never on seats or spend. Reviewers on share links are free and unlimited on every plan.

Starter

For Brands

$59/mo

Billed monthly

  • 1 ad account
  • 2 team seats
  • 250 GB storage then $5.99/250 GB per month
  • 100 AI tokens per month
  • Unlimited ad launches
  • Publish to Meta and TikTok
  • Batch launches with one ad per creative
  • Carousels, existing posts, and Spark Ads
  • Lead ads and Advantage+ enhancements
  • Scheduled launches and drafts
  • Folders, tags, and AI tagging
  • Versions and approval statuses
  • Review links with comments, passwords, and expiry
  • Unlimited free reviewers
  • Creative and team performance analytics
  • Shareable client report links
  • Automations with a visual flow builder
  • Creative tests and budget scaling
  • Ad comment inbox for Meta and TikTok
  • Roles, permissions, and folder scoping
  • Watched folders in Google Drive and Dropbox
  • Slack, Discord, and Teams notifications
  • API, CLI, MCP, and webhooks
  • Desktop app
Start free trial

7 days free, no credit card

Growth

For Freelancers

$199/mo

Billed monthly

  • 3 ad accounts
  • 5 team seats
  • 1 TB storage then $5.99/250 GB per month
  • 300 AI tokens per month
  • Unlimited ad launches
  • Publish to Meta and TikTok
  • Batch launches with one ad per creative
  • Carousels, existing posts, and Spark Ads
  • Lead ads and Advantage+ enhancements
  • Scheduled launches and drafts
  • Folders, tags, and AI tagging
  • Versions and approval statuses
  • Review links with comments, passwords, and expiry
  • Unlimited free reviewers
  • Creative and team performance analytics
  • Shareable client report links
  • Automations with a visual flow builder
  • Creative tests and budget scaling
  • Ad comment inbox for Meta and TikTok
  • Roles, permissions, and folder scoping
  • Watched folders in Google Drive and Dropbox
  • Slack, Discord, and Teams notifications
  • API, CLI, MCP, and webhooks
  • Desktop app
Start free trial

7 days free, no credit card

Pro

For Small Agencies

$449/mo

Billed monthly

  • 10 ad accounts
  • 15 team seats
  • 2 TB storage then $5.99/250 GB per month
  • 600 AI tokens per month
  • Unlimited ad launches
  • Publish to Meta and TikTok
  • Batch launches with one ad per creative
  • Carousels, existing posts, and Spark Ads
  • Lead ads and Advantage+ enhancements
  • Scheduled launches and drafts
  • Folders, tags, and AI tagging
  • Versions and approval statuses
  • Review links with comments, passwords, and expiry
  • Unlimited free reviewers
  • Creative and team performance analytics
  • Shareable client report links
  • Automations with a visual flow builder
  • Creative tests and budget scaling
  • Ad comment inbox for Meta and TikTok
  • Roles, permissions, and folder scoping
  • Watched folders in Google Drive and Dropbox
  • Slack, Discord, and Teams notifications
  • API, CLI, MCP, and webhooks
  • Desktop app
Start free trial

7 days free, no credit card

Agency

For Large Agencies

$799/mo

Billed monthly

  • 15 ad accounts then $15/month each
  • Unlimited team seats
  • 4 TB storage then $5.99/250 GB per month
  • 1000 AI tokens per month
  • Whitelabel review links Your branding on your own domain
  • Unlimited ad launches
  • Publish to Meta and TikTok
  • Batch launches with one ad per creative
  • Carousels, existing posts, and Spark Ads
  • Lead ads and Advantage+ enhancements
  • Scheduled launches and drafts
  • Folders, tags, and AI tagging
  • Versions and approval statuses
  • Review links with comments, passwords, and expiry
  • Unlimited free reviewers
  • Creative and team performance analytics
  • Shareable client report links
  • Automations with a visual flow builder
  • Creative tests and budget scaling
  • Ad comment inbox for Meta and TikTok
  • Roles, permissions, and folder scoping
  • Watched folders in Google Drive and Dropbox
  • Slack, Discord, and Teams notifications
  • API, CLI, MCP, and webhooks
  • Desktop app
Start free trial

7 days free, no credit card

The AI assistant

Included on every plan. Your monthly tokens are what it runs on.

  • Launches whole ad batches to Meta and TikTok
  • Runs creative tests and scales the winners
  • Digs through performance data for you
  • Builds automations that watch your ads
  • Replies to and moderates ad comments
  • Writes and rewrites ad copy

7 days free. No credit card required.