American attention is the most expensive in the world. A campaign that wastes a fifth of its budget on the wrong audience loses money slowly in cheap markets and quickly here. That turns the difference between a tool that builds campaigns properly and one that merely launches them into a financial question. These are the five checks worth running, all verifiable before you commit.
1. Is targeting read from Meta, or shipped inside the product?
The difference that never appears on a feature list and shows up directly in cost per result.
Meta exposes its targeting catalogue through the API — roughly 284 behaviours in the current list, and it returns the same catalogue regardless of the country requested. There is no separate US list; the US-relevant entries sit inside the shared one.
A tool shipping a hardcoded shortlist silently discards everything outside it. The campaign launches, no error appears, and it targets far less than it should. We found exactly this in our own product: a hand-maintained list of fifteen behaviours was filtering the model's selections and discarding 161 of 177 chosen entries for having no matching ID. The list had been written for one market, so only that market's campaigns were unaffected — every foreign campaign was running without the buyer-value signals that exist for it.
💡 Ask the vendor: is targeting fetched from Meta at build time, or included in the product? It is a factual question and the answer tells you a great deal about how the tool was built.
2. Does it leave placements to Meta?
Meta publishes guidance to let its system choose placements rather than pinning them by hand, and reports better cost per result for campaigns that do. Three legitimate reasons exist to pin — per-placement creative, brand fit, brand safety — and most US small businesses meet none of them.
Pinning is easy to present as sophistication when it is usually the opposite: overriding the platform's optimisation and charging you for it.
3. Does it validate the payload before launching?
Constructing something Meta accepts is harder than it looks, and the errors explain almost nothing. A sample of real ones we have hit:
- 1A sales objective with link-click optimisation and a page promoted object is rejected outright. The identical combination is accepted under a traffic objective. It only breaks for someone who picks sales, has a website and no working pixel — so nobody discovers it until a customer does.
- 2A WhatsApp call-to-action on a video creative cannot carry a link parameter. Meta returns code 105, subcode 1815630, described as "number of parameters exceeded" — the real reason appears only in a localised message. An image creative accepts the same value, so it stays invisible until the first video ad.
- 3Minimum daily budgets are enforced per ad set and tiered by objective. Below the floor the campaign is refused with an error that never mentions the rule.
- 4A carousel with per-card links will replace a chat destination with a web page if the tool writes a URL onto a message-destination card.
💡 There is a way to catch all of these before a customer does. Meta accepts a validate-only flag on ad set creation: it checks a payload against the live API and returns the real errors without creating anything or spending anything. Ask whether the vendor uses it. Running every payload combination through it found a launch-breaking bug in our own product that code review and more than a hundred real-data comparisons had both missed.
4. Does it stop touching the campaign once it is live?
Counter-intuitive, and expensive when wrong. Every edit to a live ad set restarts Meta's evaluation of it.
An ad set adjusted several times in quick succession can go dark for the rest of the day while the same account delivers normally on another campaign — with nothing in the interface to explain it.
So treat "continuous AI optimisation" as a claim requiring evidence. Adjustment on real signal after a learning period is valuable. Constant rewriting of live ad sets is interference wearing the word optimisation.
Two timing facts so you do not chase a fault that is not there: a new click or conversion ad set typically takes four to five hours before its first impression, and a flat zero delivery curve on a brand-new ad set means nothing — healthy campaigns show exactly the same.
5. Whose account does it launch into?
If the tool runs ads from an account it controls, your pixel history, custom audiences, conversion data and spend record belong to the vendor. In the US that history is expensive to build and materially improves performance, so losing it on exit is a real cost with a real number attached. Get the answer in writing before you connect anything.
The three categories, briefly
Full-stack
AdStellar, Solara AI, Synter, Adyft. Builds the campaign and launches it. The only category that helps if you have never structured an ad set.
Creative-only
AdCreative.ai, Creatify, Predis.ai. Excellent assets, no campaign help, and all the claim-accuracy review still yours.
Account automation
Madgicx, Revealbot, AdScale. Optimises campaigns you already built. Indispensable if you can build one, useless if you cannot.
Every payload validated against Meta before launch
Adyft builds Meta campaigns from Meta's live targeting catalogue, checks each payload against the API first, and launches into your own account. Fourteen-day free trial.
Start free — no card needed