All playbooks

Playbook

Facebook Ads Automation: What to Automate and What to Approve

Facebook ads automation splits into five layers: collection, detection, diagnosis, decision construction, and execution. The first four should run untouched. The fifth shouldn't.

13 min readUpdated August 25, 2026

Time to read

13 minutes

Requires

A Meta ad account you can see spend, ROAS, frequency, and CPM data for

Outcome

A defensible automation boundary: which thresholds to set, and which response is right under each one

What should facebook ads automation actually automate?

Facebook ads automation works in five layers, and the useful question is not whether to automate but where to stop. Collection pulls the ad data on a schedule. Detection notices a threshold was crossed. Diagnosis works out which of several causes is responsible. Decision construction assembles the exact change, an amount, a targeting adjustment, a creative swap, with real numbers attached. Execution writes that change to the ad account. The first four layers should run without a human in the loop. The fifth should not, and gating it behind approval is a design decision, not a limitation.

Most products marketed as automated facebook ads promise the fifth layer, an AI that adjusts budgets and swaps creative on its own, and quietly deliver only the first: a dashboard that pulls data on a schedule and calls that automation. Before trusting any tool with that label, make it answer one specific question: which of the five layers does it run untouched, and which one still stops for your explicit say-so before it touches money. A tool that cannot name its own boundary that precisely is almost certainly still sitting at layer one, whatever its dashboard claims.

How often should you check your Facebook ads?

Daily is enough for spend pacing and anything that looks like a delivery failure; those move fast and are worth a same-day look. Creative and audience decisions want a longer window: most need at least seven days of data before the numbers mean anything, and a creative test needs both three days and a minimum spend per variant before a winner is real. Checking more often than daily mostly produces reactions to noise that would have resolved itself by the next real check. The honest reason most people check hourly is anxiety, not information. The actual case for automating the watching is that a system can check far more often than daily, every 20 to 30 minutes in practice, without that anxiety cost, and only surface something once it has cleared the same data floors a careful human would wait for anyway.

The facebook ads automation ladder: five levels, and where the category inverts it

Rank what automation can actually do in ads, from the least judgment required to the most: collection is pulling ad data on a schedule instead of opening Ads Manager to look. Detection is noticing a threshold was crossed. Diagnosis is establishing which of several causes is responsible for what detection found. Decision construction is assembling the exact change to make, with arguments and amounts attached, not just a recommendation in prose. Execution is writing that change to the live ad account.

The argument of this page is simple: levels one through four should be fully automated, and level five should not be. A machine that never sleeps is genuinely better than a human at watching thousands of data points for a threshold crossing, at separating three plausible causes of the same symptom, and at drafting the exact fix with the right numbers on it. None of that spends money. Level five does, and a single wrong inference there is not a missed insight, it is dollars gone that a human cannot un-spend after the fact.

Most marketing in this category inverts the ladder. It promises level five, an AI media buyer running your account on autopilot, and quietly ships level one, a dashboard that refreshes on a schedule and calls the refresh automation. Kluck automates one through four in full and deliberately gates five behind a human tap. That boundary, not a bigger number of automated actions, is the actual claim this page is defending.

The shipped detection thresholds, verified in the extractor code

These are the paid-ads rules Kluck's business-rules engine actually evaluates, with the real thresholds, not the rounder numbers a marketing page would prefer. Each one exists because the underlying metric is genuinely diagnostic, and each carries a minimum-data floor so a thin day of spend cannot trigger it.

Severity on the ROAS decline rule is graded rather than binary: a 20 to 35 percent decline reads as moderate, 35 to 50 percent as high, and a decline past 50 percent, or any ROAS that has fallen below 1.0x, sits in the top severity band regardless of how far past 50 percent it went.

SignalFires whenMinimum data
ROAS declineAd set's 7-day ROAS falls 20% or more vs the prior 7 days$10/day spend in each period ($70 per window)
Creative fatigueFrequency above 3.5, or CTR down more than 30% from its 30-day peak with ad age 14+ days. Either signal alone is enoughMore than 100 impressions
Scale candidateAd set ROAS ÷ account average ROAS is 1.5 or higher AND frequency is below 3.0At least 7 days of data, at least $10 spend
Under-delivery7-day average daily spend pacing under 50% of the prior 7 days; under 30% is severe
Audience saturationCPM up more than 20% AND reach change of 5% or less AND frequency above 2.5At least 14 days
Retargeting gapA funnel stage, cart abandoners, product viewers, or past purchasers, has no coverageEstimated audience of 500 or more
Day-of-week varianceBest-day ROAS ÷ worst-day ROAS above 2.0 while weak days still take meaningful spend

Nobody else publishes numbers this specific for this category, which is exactly why they are worth checking against your own account rather than taking on faith. Frequency itself is computed over a 14-day window as impressions divided by reach, and the CTR peak used for the fatigue comparison is the best 7-day rolling average across the trailing 30 days of daily data, not a single lucky day.

Falling ROAS has three different causes, and the correct response is different in each

A ROAS decline is a symptom, not a diagnosis, and the automation's real job is separating three causes that look identical on a single chart but demand opposite fixes. Cutting budget, the instinctive response to any red number, is either irrelevant or actively harmful in all three cases.

Creative fatigue: frequency above 3.5, or CTR decaying more than 30% from its peak with the ad at least 14 days old. Same audience, worn-out creative. A skincare brand spending $180 a day watched one ad's frequency cross 3.5 on day eleven while its CTR had fallen 34% from its 30-day peak, the classic fatigue signature. The fix is a new creative variant, not a budget cut; cutting budget on a fatigued ad just slows how fast you find out the creative needs replacing.

Audience saturation: CPM rising more than 20% while reach stays essentially flat and frequency climbs past 2.5. The addressable pool is exhausted, not the creative. A supplement brand spending $250 a day saw CPM rise 26% over two weeks while reach barely moved and frequency climbed to 2.9, audience saturation, not creative fatigue, because a fresh video into the same tapped-out audience would not have helped. The fix is expanding or changing the audience; new creative into a saturated audience buys you nothing.

Measurement: the pixel is cold or weak, or the attribution window is short. A fashion brand spending $300 a day watched blended ROAS drop from 3.4x to 2.1x the same week its Meta-attributed purchases fell to zero, even though the pixel was still firing, a weak-signal pixel, not a performance collapse. Performance may not have changed at all here. The fix is fixing the tracking and changing nothing else about the account.

The punchline worth remembering: an instinct to cut budget the moment ROAS drops is wrong in all three of these cases. It does nothing for a measurement problem, actively slows the diagnosis of a creative problem, and does not touch the actual constraint in an audience-saturation problem. Telling the three apart is more valuable than any single alert.

Pixel health: why a firing pixel can still be a weak signal

Kluck reads every pixel assigned to the ad account and classifies it into one of four states. Healthy means it fired within the last 30 days. Cold means it never fired, or has gone stale. Weak signal means the pixel fires, but there are zero attributed purchases behind it. Unavailable means Meta does not expose it at all.

The distinction that matters most, and the one most dashboards skip: the purchase count behind this classification is Insights-attributed purchases, not raw pixel fires. A pixel can be firing perfectly on every page load and still be useless for a conversion campaign, because firing is not attribution. That is precisely the weak-signal state, and it is the case most tools report as green because they only check whether the pixel exists at all.

When a pixel comes back cold or weak, the honest options are to proceed on conversion optimization with an explicit warning that learning will be slow, or to warm the account with a traffic objective first. What is explicitly not on the list is silently downgrading a sales campaign to link clicks to make the numbers look healthier while quietly optimizing for the wrong outcome. Conversion campaigns on a cold pixel also learn slowly in practice until the account is generating on the order of 50 purchases a week; that is a real floor, not a pessimistic estimate.

How to scale Facebook ads: the ratio test, the 40% cap, and the learning-phase gate

A scale candidate is an ad set whose ROAS is at least 1.5 times the account average, with frequency still below 3.0, and at least 7 days of data behind it. All three have to hold at once; a strong ROAS on an ad set already at frequency 3.4 is not a scale candidate, it is closer to a fatigue candidate.

The step cap is 40% regardless of how strong the winner looks, and the reason is mechanical, not conservative for its own sake: a budget jump of any real size re-enters Meta's delivery system into a fresh learning phase, and a delivery system relearning from a bigger, less certain baseline can hand you a worse CPA than you had before you scaled. The cap exists because of how the platform's own optimization responds to a shock, not because Kluck is being cautious for its own sake.

Scale test: ad set ROAS ÷ account average ROAS ≥ 1.5, AND ad set frequency < 3.0, AND ≥ 7 days of data with ≥ $10/day spend

Step cap: next budget ≤ current budget × 1.4

A home goods brand's ad set is spending $200/day at 1.6x the account average ROAS, frequency 2.1, nine days of data: it passes the scale test.

Step 1: $200 × 1.4 = $280/day.

Step 2: $280 × 1.4 = $392/day, roughly double the original $200, reached in two steps rather than one.

Step 3: $392 × 1.4 = $548.80/day, nearly triple the starting budget.

None of this runs if the ad set's learning-phase status reads LEARNING; the instruction is explicit not to raise budget while it does, because a winner still in learning is a winner whose numbers are not yet stable, and scaling it restarts the exact process you were waiting on. Meta omits this status for paused ad sets, for Dynamic Creative, and for some accounts, and the honest response to that missing data is to fall back to the 7-day minimum rather than assume the ad set has exited learning. Give each step roughly a week to clear its own re-entered learning phase and produce a fresh 7 days of data before the next one; tripling a budget through three 40% steps is realistically a three-week process, not a same-day decision.

Choosing thresholds is your meta ads strategy

Automation does not remove judgment from ad management, it relocates it. Before automation, the daily judgment call is: should I pause this ad set today. After automation, the judgment call moves one level up: at what decline, over what window, with what minimum spend, do I want to be told at all.

The second decision is more leveraged and easier to get right than the first, because you make it once, calmly, with the numbers on this page in front of you, instead of daily, under the pressure of a red number in Ads Manager. A meta ads strategy that only exists as reflexes applied to whatever the dashboard shows this morning is not a strategy; a meta ads strategy that exists as a written set of thresholds you would defend to someone else is.

Minimum data thresholds are the real anti-noise mechanism

The thresholds that stop a system from speaking matter more than the ones that make it speak. $10 a day minimum spend, 100 impressions before a fatigue read, 7 days of data before a scale call, 14 days before a saturation call, 500 estimated audience before a retargeting-gap alert, and both 3 days and $50 of spend per variant before a creative test calls a winner.

A tool with no minimums is a tool that will have you reacting to five spend days of noise, because early data is disproportionately loud relative to what it actually tells you. Every one of the numbers above exists to buy enough signal before asking for a decision, and that restraint is the harder engineering problem, not the alerting itself.

What must never be automated in Facebook ads

Culling an ad set on one bad day, before the minimum data floor for the metric in question has been met. A single day's ROAS or CPA is noise until it has enough spend behind it to mean anything.

Calling a creative test winner before the floor of 3 days and $50 of spend per variant. An early leader in a creative test regresses toward the others more often than intuition expects.

Scaling past what the audience can absorb, meaning scaling an ad set whose frequency is already climbing toward the fatigue threshold, even if its ROAS still looks strong today.

Any budget increase beyond the merchant's agreed bound, whether that bound is the 40% step cap or a tighter one the merchant has set for themselves.

Silently substituting a cheaper ad format for the one that was requested, a carousel quietly becoming a single image, or a catalog build quietly losing its Advantage+ shopping automation without saying so.

What makes an approval gate real, not a rubber stamp

An approval step is worthless if the human approving it cannot see what they are approving, and this is where most "human in the loop" claims in this category quietly fail. Three rules define the difference between a real gate and a rubber stamp, and all three are shipped.

Never approve against blank context. Any pause, scale, edit, or duplicate has to carry the real current numbers, spend, ROAS, CPA, and CTR or frequency where relevant, on the approval itself. "Pause this ad set" is not a decision; "pause this ad set: 5 days live, $200 spent, 0.4x ROAS, zero purchases" is.

Approve a number, never a blank. If the merchant says "use whatever budget you think," the system puts a specific figure on the request, so what actually gets approved is a real amount, not an open-ended instruction.

Discrepancies belong on the card, not upstream in the conversation. If the creative being used points to a different product than the campaign's destination page, that has to be stated on the approval card itself, because people tap approve without re-reading what came before it. An accurate warning in the wrong place is not a warning.

The counterintuitive part: more gates make approval less meaningful, not more. Asking for a confirmation in conversation and then again on the card trains the person to click through both without reading either. One well-informed gate beats two lazy ones.

What does an ai media buyer actually replace, and what does it not?

An ai media buyer, in Kluck's version of the phrase, genuinely replaces the daily check, the spreadsheet pull, the "is this fatigue or saturation" analysis, and the work of assembling the exact change once a cause is known. That is real, repetitive, high-volume work, and a machine that never gets tired of checking thresholds at 2am genuinely outperforms a human doing the same check once a day between other tasks.

It does not replace the offer, the customer definition, the creative idea, the decision to spend on a product at all, or accountability for the account. Nothing here decides who your customer is or whether a product deserves ad spend in the first place; those remain judgment calls that live with the merchant, not with the automation watching the numbers underneath them.

Verification is always a live read, and two traps that follow from it

Any question about whether something is actually live in Facebook ads automation triggers a real API call to Meta, never a cached answer, because the analytics store has no campaign status column and never will. Two traps follow directly from taking status seriously.

First, an object's configured status and its effective status differ. An ad set can read as active while its effective status shows the parent campaign is paused, and a campaign flipped on above paused ad sets and paused ads spends nothing; going live has to cascade to the campaign, every ad set, and every ad beneath it, or the campaign that reads active is not actually live.

Second, Meta's review states, in process, pending review, preapproved, can make a correctly launched ad display "Off" in Ads Manager for up to roughly 24 hours. That is review latency, not a broken campaign, and it explains most instances of "why does my Facebook ad say off when I turned it on."

A related trap sits inside scheduled launches. If a merchant names a real future go-live time, the build has to be created active with that start time, because Meta never checks a paused object's start time; a paused object with a timestamp silently never fires. Worse, Meta delivers on the ad set's clock, so a start time set only on the campaign is ignored and the ad set begins immediately. Almost nothing published on this covers it, and it is the kind of specific, checkable detail worth knowing before you schedule anything yourself.

Frequency, CPM, ROAS ratio, pacing, and CTR decay: what each one tells you

These are the five numbers behind every rule on this page. Each stands on its own if you only need one of them right now.

Frequency

Frequency is the average number of times a person saw the ad, computed over a 14-day window as impressions divided by reach.

Use it to flag creative fatigue once it crosses 3.5, or to confirm a scale candidate is not yet saturating its audience while it stays below 3.0.

CPM

CPM, cost per thousand impressions, is spend divided by impressions, multiplied by 1,000.

Use it alongside reach and frequency: a CPM up more than 20% while reach stays flat and frequency climbs past 2.5 is the audience-saturation pattern, not a creative problem.

ROAS ratio against account average

ROAS ratio is a single ad set's ROAS divided by the account's overall average ROAS, a relative measure rather than an absolute one.

Use it before scaling anything: a ratio of 1.5 or higher, alongside frequency below 3.0 and at least 7 days of data, is what makes an ad set a scale candidate at all.

Pacing

Pacing is the 7-day average daily spend divided by the prior 7-day average daily spend, a check on whether spend is delivering at the rate it should.

Use it to catch under-delivery early. Below 50% is worth a look; below 30% is severe and usually points to a delivery or billing issue, not a strategy problem.

CTR decay from peak

CTR decay from peak is the current click-through rate compared against its own best 7-day rolling average across the trailing 30 days of daily data.

Use it as one of two independent creative-fatigue signals. A decay of more than 30% on an ad at least 14 days old is enough on its own, without needing frequency to have crossed 3.5 as well.

None of these five replace each other, and none require the others to be useful on their own. Frequency and CPM together separate fatigue from saturation; ROAS ratio gates scaling; pacing catches under-delivery before it compounds; CTR decay confirms a fatigue read independent of frequency. A decision made from only one of them is a guess dressed up as analysis.

Should you let AI manage your Facebook ads?

The last mile of ads automation should not be automated. Automate the watching, not the spending. Detection and diagnosis are where the repetitive, reliable, high-volume work lives, checking thresholds every 30 minutes, separating three causes of the same symptom, never getting tired or distracted, and a machine genuinely outperforms a human doing the same check once a day between other tasks. Execution is where a single wrong inference spends real money irreversibly, and the cost of being wrong there is asymmetric against the benefit of being fast.

"Keep a human in the loop" on its own is a platitude; every tool in this category claims it. The claim is only worth anything if the approval carries enough context to make a real decision, the current numbers, the specific amount, and any discrepancy between what was asked for and what was built, all on the approval itself. An approval step where the human cannot see those things is not oversight, it is a liability transfer: the system gets to say a human approved it while making sure the human could not meaningfully object.

Name the exception honestly. A merchant who has watched the same rule fire correctly twenty times and wants to write a routine to handle it unattended should be allowed to, and Kluck permits exactly that, opt-in and merchant-defined, never the default. And the gate is not free; it costs a tap and a moment of attention every time. The argument is that it should cost exactly one well-informed tap, not zero and not three.

An alert fired. Now what?

Run this sequence the moment a rule fires, before touching budget, creative, or targeting.

  1. 1

    Confirm the threshold and the minimum data behind it.

    Which signal fired, at what exact reading, and did the minimum-data floor for that signal actually get met, not just a plausible-looking number on a thin day of spend.

  2. 2

    Check pixel health first.

    A cold or weak-signal pixel invalidates every step below it. If the pixel is the problem, fix tracking and stop; do not diagnose performance on top of a measurement problem.

  3. 3

    Separate creative fatigue from audience saturation.

    Frequency above 3.5 or CTR decaying more than 30% from peak points to creative. CPM up more than 20% with flat reach and frequency past 2.5 points to audience.

  4. 4

    Check learning-phase status before any budget move.

    Do not scale while an ad set reads LEARNING. If Meta returns no status at all, fall back to the 7-day minimum instead of assuming it has exited learning.

  5. 5

    Size the change within the 40% guardrail, and pick the response that matches the cause.

    Fatigue calls for new creative, not a budget change. Saturation calls for a wider or different audience. Measurement calls for fixed tracking and nothing else touched.

  6. 6

    Set the re-check window before approving, then decide whether this is a one-off fix or a deeper recovery.

    If the decline is already severe, below the 1.0x threshold or well past 50%, the fix above may only be the first move. Run the full recovery process for that.

    Run the 30-Day ROAS Recovery Playbook

Automated Facebook ads: what Kluck actually reads and writes

Kluck's live ad-platform connection is Meta only. Everything below was verified against the shipped backend, not the config files' aspirational settings.

The approval boundary, in practice

Kluck's version of meta ads automation runs collection, detection, and diagnosis continuously, assembles the exact decision it wants to make, and then stops and asks. Every write to the ad account goes through an approval card that carries the real numbers behind it. The one exception is a routine, a scheduled instruction a merchant writes for themselves.

Sync and evaluation cadence

Meta insights sync roughly every 20 minutes while a store counts as active (an order in the last 60 minutes) and slow to roughly every 80 minutes, a 4x adaptive slowdown, once it goes idle. Orders sync every 5 minutes, analytics every 15, and the ad account object itself every 12 hours. The business-rules engine that turns that data into alerts evaluates on a 30-minute cycle whenever the relevant connector is ready, and again immediately after a full data refresh completes.

Billing health checked before anything else

The account context read returns billing health, whether a payment method exists, account status, and any disable reason. If billing is unhealthy, the workflow stops and sends the merchant to Ads Manager billing rather than attempting a build.

Pixel health with exact states

Every assigned pixel is classified as healthy, cold, weak signal, or unavailable, using Insights-attributed purchases rather than raw pixel fires, so a firing-but-unattributed pixel is caught before it wastes a conversion campaign's learning budget.

Learning-phase status, read directly from Meta

A dedicated tool reads LEARNING, SUCCESS, or FAIL per ad set, with an explicit instruction not to raise budget while status reads LEARNING, and an explicit "not available" note when Meta omits it for paused ad sets, Dynamic Creative, or certain accounts.

Two creative libraries, checked before building anything new

The spend-ranked creative library only contains assets already built into ads. The media library reads the account's actual uploaded video and image assets, catching the common case of an upload with no ad ever built on it. Kluck can also report unused assets, preview a specific one, and resolve existing video variants inside a named campaign.

Real Meta Marketing API write access

Create campaigns, ad sets, ads, and creatives; edit budgets at campaign (CBO) or ad set (ABO) level; edit targeting; swap creative on an existing ad; duplicate any level; pause, activate, or delete; create website custom audiences and lookalikes; build real Advantage+ catalog campaigns. A composite build tool assembles campaign, ad set, creative, and ad in a single approval card.

Everything created paused, going live is a second approval

The one exception is a merchant naming a specific future go-live time, in which case the build carries that start time so Meta delivers exactly then, with no spend before it and no separate go-live tap needed.

Guardrails enforced in code, not just declared in config

Minimum daily budget floors per currency ($10/day USD, PKR 1,000, AED 30, plus SAR, GBP, EUR equivalents). Scaling capped at 40% per step. Creative tests run 3 to 7 variants on equal budget and will not call a winner before both 3 days and $50 of spend per variant have passed. ROAS optimization defaults to a 2.0x target on a 14-day window and caps itself at 3 fixes at once.

Honest degradation instead of silent substitution

A rejected product set on a catalog build retries once without it and is reported as a catalog ad without Advantage+ shopping automation, never called Advantage+. A targeting interest with no valid numeric ID is stripped and disclosed by name, and the build proceeds on broad targeting rather than failing outright. A requested carousel or catalog format that would ship as something simpler stops before go-live instead of shipping silently.

Partial failures are reported, not silently retried

If a build creates the campaign and ad set but fails on the ads, it keeps the existing IDs, reports exactly what was created, and offers to roll back, so no orphaned paused objects show up unexplained in Ads Manager later.

One card per rule, and automatic resolution

A recurring problem updates one alert card in place rather than piling up new ones. When the underlying metric returns to a healthy range on its own, the card closes itself and records why, with no manual dismissal required.

Routines: the one opt-in unattended path

A merchant can author a routine, a scheduled instruction of their own, that executes in an act-first mode without a card per action. It is the sole exception to the approval rule, and it is opt-in and merchant-defined, never the default.

Before you start

  • Meta connected with ads management permission, not just a read-only connection; a default connection can read ad data without being able to write to the account.
  • A healthy billing account with a payment method on file. Kluck checks this before attempting any build and stops if it is not clean.
  • Meta's Custom Audience terms accepted by the merchant in Ads Manager, if you want Kluck to create website custom audiences or lookalikes; Kluck cannot accept those terms on your behalf through the API.
  • A rough sense of the budget guardrail you are personally comfortable with, since Kluck's 40% step cap is a ceiling, not a target you have to use every time.

Keep in mind

  • Meta only. No Google Ads, no TikTok, no Amazon. That is a scope statement, not a roadmap tease.
  • No autopilot spending. Nothing is created in an active state and nothing goes live without an explicit human approval; the only unattended path is a routine the merchant wrote themselves.
  • Cannot prove incremental lift. Kluck reads Meta's own platform-attributed conversion value. A 1-day-click attribution window can understate a 7-day-click window by 30–50%, and switching attribution windows is a measurement change, not a performance improvement.
  • No MER and no per-product CAC. Customer acquisition cost is blended at the account level; there is no marketing efficiency ratio calculation and no per-product attribution.
  • No hourly dayparting. Only day-of-week variance is checked; hourly performance data is not available.
  • Facebook organic publishing is not automated. Instagram publishing is; keep this distinction in mind if you were expecting parity across both surfaces.
  • Write access needs the right permission scope, and Meta's Custom Audience terms have to be accepted by the merchant directly in Ads Manager; Kluck cannot accept them via the API on anyone's behalf.
  • Cold pixel reality: conversion campaigns learn slowly until an account is generating on the order of 50 purchases a week, regardless of anything Kluck's automation does around it.
  • Cannot decide strategy. It cannot tell you who your customer is, what your offer should be, or whether a product deserves ad spend in the first place.
  • The bounded auto-execution described in some rule config, budget shifts under 10% or scaling under 25% happening without approval, cooldown windows, and alert parking, is not shipped behavior. Every write still raises an approval card today.

ROAS already down and you need the full diagnostic process?

This page tells you what fires and what to check first. The 30-Day ROAS Recovery Playbook walks the complete process once a decline is already confirmed and severe.

Run the 30-Day ROAS Recovery Playbook

Not sure what target the automation should even be optimizing toward?

The scale test and the ROAS-decline rule both need a real number to compare against. What Is a Good ROAS? walks through the break-even math that sets it.

Read What Is a Good ROAS?

Frequently asked questions

How do I automate Facebook ads without losing control of spend?

Automate the first four layers, collection, detection, diagnosis, and decision construction, and keep the fifth, execution, behind an approval you tap yourself. Kluck runs the first four continuously and stops before writing any change to the live ad account, so you keep control of spend without doing the daily checking by hand.

Can you automate Facebook ads end to end, including spend decisions?

Technically yes, but Kluck deliberately does not, except for a routine a merchant writes for themselves. Every other write, a budget change, a pause, a targeting edit, a new build, goes through an approval card carrying the real numbers behind it. That boundary is a design choice, not a missing feature.

Should I let AI manage my Facebook ads?

Let it manage the watching: the daily check, the threshold detection, and telling apart creative fatigue, audience saturation, and measurement problems. Do not let it manage the actual spend decision without a human tap, because the cost of a wrong execution is asymmetric against the benefit of being fast, in a way detection and diagnosis are not.

How often should I check my Facebook ads?

Less often than you think, if the automation is actually watching. Kluck's business-rules engine evaluates every 30 minutes against real thresholds, so a problem worth your attention gets surfaced inside that window rather than requiring you to open Ads Manager and look yourself.

When should I scale a Facebook ad set?

When its ROAS is at least 1.5 times the account average, its frequency is still below 3.0, and it has at least 7 days of data behind it, all three at once. Check learning-phase status first; do not scale while it reads LEARNING, and if Meta returns no status at all, fall back to the 7-day minimum rather than assuming it has exited.

How much should I increase a Facebook ads budget at once?

No more than 40% in a single step, regardless of how strong the winner looks. A bigger jump re-enters Meta's delivery system into a fresh learning phase, which can hand you a worse CPA than before you scaled. Two 40% steps very nearly double a budget; three take it to almost triple.

How can I tell if my Facebook ad creative is fatigued?

Two independent signals, either one is enough: frequency above 3.5, or click-through rate down more than 30% from its 30-day peak on an ad at least 14 days old. Both require more than 100 impressions of data before they count. Fatigue calls for new creative, not a budget cut.

What is audience saturation on Facebook ads?

Audience saturation is when the addressable audience for an ad set has been exhausted rather than the creative going stale. It shows up as CPM up more than 20% while reach stays essentially flat and frequency climbs past 2.5, with at least 14 days of data behind the read. The fix is expanding or changing the audience, not refreshing the creative.

Why is my Facebook ads ROAS dropping?

Three common causes look alike on a chart but need different fixes: creative fatigue (frequency above 3.5 or CTR decaying past 30% from peak), audience saturation (CPM up more than 20% with flat reach and rising frequency), or a measurement problem (a cold or weak pixel, or a short attribution window). Cutting budget helps with none of the three.

Is automated bidding better than manual for Facebook ads?

That question conflates two separate things: Meta's own delivery optimization, which Kluck does not override, and whether a human or a machine decides when to change a budget or targeting setting. Kluck automates the watching and diagnosis around Meta's bidding, and keeps the actual budget and targeting decisions behind a human approval.

What is the Facebook ads learning phase, and does it affect scaling?

It is Meta's per-ad-set delivery status, reading LEARNING, SUCCESS, or FAIL, that shows whether the platform has gathered enough signal to optimize delivery reliably. Yes, it directly affects scaling: do not raise a budget while an ad set reads LEARNING, because the increase restarts the exact process you were waiting on, and its numbers were never stable in the first place.

Why does my Facebook ad say off when I turned it on?

Two common causes: an object's configured status differs from its effective status, so an ad set can read active while its parent campaign is actually paused, or Meta's review states, in process, pending review, preapproved, can display a correctly launched ad as off for up to roughly 24 hours. That is review latency, not a broken campaign.

Why is my Facebook campaign not spending?

Check whether the campaign is active above ad sets and ads that are still paused; a campaign set to active is not live until the status cascades down to every ad set and every ad beneath it. Also check billing health directly, since an unhealthy billing account or missing payment method will stop delivery before anything else does.

You've got the boundary. Now set the thresholds.

Connect Meta and let Kluck watch the four layers that should run without you.

Open Kluck, connect your Meta ad account with ads management permission, and ask your Brand Manager to walk the shipped thresholds against your own account before the first alert fires.

Open Kluck