Write three offers with AI, test two at a time as separate ads within a short drive of your base, and start with about $15 a day for 14 days, roughly $210. Judge them by cost per booked job, not clicks. A budget that small gives direction rather than proof, and Meta will usually label it learning limited.
The offer matters more than the wording. AI is quick at producing variants, but it does not know your margin, your van's range or which jobs you want more of. Decide those first, then let it write. Small budgets also mean small samples: $210 of ads at $10 to $20 a lead buys 10 to 20 leads, so a test points to the next thing to try rather than proving which ad is best.
Wording needs rules, because AI loves urgency. Meta's Advertising Standards bar content that may deceive or mislead people, and its personal attributes rule bars ads that assert or imply something about a viewer's health or financial situation. So no invented deadlines, no "was" prices you never charged and no "Struggling with allergies?" headlines. A table below turns that into lines to cut and lines to use.
The numbers below follow an illustrative one-van carpet cleaner whose average job is $185, with $75 of labour, fuel and chemicals in it. Put your own figures in their place before acting on any of them.
Set the starting budget from one job's profit
Start from profit, not from what feels affordable. On the example job, $185 of revenue less $75 of direct cost leaves $110 gross profit. Suppose you will spend up to $35 to win a new customer, about a third of that profit, on the bet that some will rebook or refer. If one lead in four books, your target cost per lead is $35 × 25%, which is $8.75.
Meta's page on minimum budgets says that if you use the cost-per-result-goal bid strategy, the daily budget should be at least five times that goal. Even on the default bidding it is a useful yardstick, and here it makes $43.75 a day. Its learning-phase page says an ad set usually leaves learning after about 50 results in the week after its last significant edit, and 50 results at $8.75 each is $437.50 a week, about $62 a day. Few one-van firms should start there, so the tiers below show what each step buys.
| Starting budget | Per day | Over 14 days | What it can tell you |
|---|---|---|---|
| Lean | $15 | $210 | Direction only: which of two offers draws more serious leads |
| Sensible | $25 | $350 | A little more evidence per offer, still short of 50 results a week |
| Five times an $8.75 goal | about $44 | about $613 | Meets Meta's guide for a cost-per-result goal, still short of 50 results a week |
Then ask what $210 might buy at different costs per lead, with one lead in four booking:
| Cost per lead | Leads from $210 | Booked jobs | Cost per booked job | Gross profit less ad spend |
|---|---|---|---|---|
| $9 | 23 | 5.8 | $36 | +$432 |
| $14 | 15 | 3.8 | $56 | +$203 |
| $20 | 10.5 | 2.6 | $80 | +$79 |
| $30 | 7 | 1.8 | $120 | −$18 |
The break-even cost per lead is $27.50, which is $110 of profit times one in four. Above it the first job loses money. Below it, the question is how much of the margin you are willing to spend. You will not know your real cost per lead until the ads have run, so treat these as planning figures.
At $15 a day the ad set will sit under Meta's learning-limited label. Meta's help page says that is not a penalty but a sign the budget isn't being spent as effectively as it could be, and lists a small audience, a low budget, a low bid and too many ads at once among the causes. Run the experiment anyway, but keep it simple: two offers, one photo and one radius. The tutorial on Meta ad setup for a local business covers the account and campaign set-up that comes before any of this.

The Complete Excel Course with AI Integration
From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.
By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner
Buy nowFive offers a carpet cleaner can run without bending the truth
An offer is a price plus a reason to book now, and the reason has to be true. These five use one example rate card: $52 for a medium room, $28 for a hallway, $20 for a landing, $3.80 a step on stairs and a $120 minimum. The tutorial on a per-room carpet cleaning calculator shows how to build your own.
- The room bundle. "Three rooms and a hallway for $149." At standard rates that job is 3 × $52 + $28 = $184, so the offer takes $35 off, about 19%. It suits a household with mixed carpet, and it works only if $149 clears your costs. Say "usual price $184" only if $184 is what you really charge.
- Stairs at a set price. "Add the stairs for $39 when you book two rooms or more." A 13-step flight is $49.40 at $3.80 a step, and with a $20 landing it comes to $69.40, so this gives $30.40 away. Stairs are slow, so make sure the rooms booked pay for it.
- A treatment included. "Pet-odour treatment included with any three-room clean." The list price of that treatment is $28 a room, but the cost to you is a little product and ten minutes. The headline price stays intact. Promise the treatment, not the result.
- A first-clean price. "$20 off your first clean, orders over $120." It is simple and clear, and it protects the minimum. Watch whether it attracts people who never book again.
- A seasonal slot with real dates. "Now booking the week of [date]." Scarcity is honest only if your diary shows it, so block the calendar first and write the dates from it.
Pick two that differ in kind, such as a price offer against an added-value offer, instead of two that differ only in the discount. Two near-identical offers will give near-identical results and teach you nothing.
Ask AI for variants with the rules built in
Give the AI the offer, the proof you have and the lines it may not cross. Without the rules it reaches for urgency and guarantees within a sentence.
You write Facebook ad copy for a one-van carpet cleaning business. Offer: three rooms and a hallway for $149 (our usual price is $184). The service radius is about 20 minutes' drive from the owner's base. The photo is a real before-and-after of a living-room carpet taken on a job.
Write four variants. Each needs primary text (under 110 words), a headline (under 40 characters) and a call-to-action line.
Variant 1: price-led. Variant 2: convenience-led, booking in one message. Variant 3: result-led, describing only what the photo shows. Variant 4: a question headline that is not about the reader's health or money.
Rules: plain words, no emojis. Never state a deadline, a number of slots left, a guarantee or a result unless I have given it above. No health or allergy claims, no germ-kill percentages, no "best". Do not speak to the reader's finances or health.
After the variants, list every claim you made that I must be able to prove.
With those rules the first variant usually comes back close to usable. Here is a typical one, followed by the kind of draft you get when the rules are missing (both illustrative):
Rules applied. Three rooms and a hallway cleaned for $149 (our usual price is $184). One fixed price, light furniture moved and put back, and no hidden extras. Message us your rooms and we'll confirm a time. Headline: "3 rooms and a hallway: $149".
No rules. Stains gone for good! We guarantee every carpet looks like new after one visit. Only 3 slots left this week, so book today before the offer ends tonight! Struggling with allergies? Dirty carpets hold dust and germs, and we kill 99.9% of them.
The second draft breaks six rules in five sentences, which is why the prompt lists them. The first draft still needs one check from you: "usual price $184" has to be true, and the claim list at the end of the AI's reply is where it shows up.
Honest special wording: lines to cut and what to say instead
| Line the AI wrote | Why it fails | Say this instead |
|---|---|---|
| "Only 3 slots left this week" | False unless your diary shows exactly three, and customers notice when the last three keep recurring | "Now booking the week of [date]", only if true |
| "Offer ends tonight" | Untrue if you run it again tomorrow | "Offer runs until [end date]", then end it on that date |
| "Was $199, now $99" | Misleading if $199 was never your price | "Three rooms and a hallway: $149" |
| "Guaranteed to remove all stains" | You cannot promise it, and it invites a refund argument | "We treat every stain and tell you before we start if one may not lift" |
| "Struggling with allergies?" | Implies a health condition about the reader | "A deep clean for carpets that have not been done in a while" |
| "Kills 99.9% of germs" | A measurable claim you would have to prove | Delete it and describe what you do |
| "The best carpet cleaner around" | Unprovable | Your real review rating and count, if you have them and they are current |
Two of those rows rest on Meta's own Advertising Standards. The personal attributes rule says ads must not assert or imply a person's attributes, and its list includes physical and mental health, medical conditions and vulnerable financial status. A headline that asks about allergies or breathing sits in that territory, so treat it the same way. The standards also bar content that may deceive or mislead people, which is why a "was" price needs a real price history behind it. Keep a screenshot of your price list and the dates each offer ran, in case a platform or a customer ever asks.
The picture matters as much as the words. Use real photos from your own jobs, taken with the customer's permission and with no house numbers, faces or family items in view. An AI-generated picture of a spotless carpet promises a result you may not be able to repeat, and the customer who books on it will compare your work with the ad.
Local targeting for a one-van firm
Set the location as a radius around your base, and let the minimum job decide how far it reaches. Suppose an hour of van time is worth $55 and your minimum charge is $120. A 25-minute drive each way costs about $46 of that time, which leaves about $74 of the minimum for the cleaning itself. Draw the circle where a minimum job stops being worth the drive, which in this example is closer to 20 minutes than 25.
Go too small and you run into the other problem. Meta's learning-limited page lists a small audience among the usual causes and says the larger the audience, the more chances someone completes the result you want. If the radius gives only a few thousand people, widen it a little rather than narrowing age or interests. Leave age and interests broad and let the offer do the selecting. Meta now sets Leads campaigns up with its Advantage+ automation by default, so open the audience settings before you publish and check that the radius is the one you drew.
Choose the leads objective with an instant form, and add two questions that filter without scaring people off: how many rooms need cleaning (1 to 2, 3 to 4, 5 or more) and whether there are stairs. A lead that answers both is half-quoted already, and one that ticks "5 or more" can be called first. The form should also ask for a phone number you will actually answer, because the first reply decides most of what happens next, as the tutorial on buying leads versus replying faster explains.
Before you publish: ten lines to tick
- Calendar. Block the slots the ad promises, and write the offer's end date in your diary.
- Rate check. The offer price clears your minimum charge and your margin on the job it describes. For the room bundle, $149 against roughly $75 of direct cost leaves about $74.
- Photo. A real job, with permission, with no house number, faces or family items in view.
- Claims. Every item on the AI's claim list is something you can prove today.
- Radius. Set from the drive-time sum, not from a round number.
- Form. Two filter questions, and a phone number field.
- Alerts. Phone notifications on for new leads, and your first reply saved as a snippet.
- Budget. A daily figure you could lose entirely without flinching, and a total for the 14 days.
- Names. A campaign name that carries the offer and the month, so each scoreboard row matches an ad.
- Review date. Day 14 in the diary, and no peeking edits before it.
Run the test: two offers, equal budgets, one photo, 14 days
Meta's page on A/B tests says to choose a hypothesis first, change one variable such as the image, the text, the audience or the placement, and use the same budget for both versions. It also warns that informal testing, such as switching ad sets on and off by hand, can lead to overlapping audiences and unreliable results. So use the A/B test option in Ads Manager and not a manual rota.
- Round 1, days 1 to 14. Offer A against offer B, with the same photo, radius and budget. Do not edit anything in the middle.
- Round 2, days 15 to 28. The better offer against offer C, with the same rules.
- Round 3, days 29 to 42. The best offer with two different real photos.
At $15 a day, six weeks costs $630. Each round splits the budget between the two versions, which is thin, so the plan only works if you resist the urge to read daily numbers.
Here is a filled-in scoreboard for round 1, comparing the room bundle with the pet-odour treatment (illustrative):
| Offer A: room bundle $149 | Offer B: pet-odour treatment included | |
|---|---|---|
| Spend | $105 | $105 |
| Link clicks | 96 | 71 |
| Leads | 9 | 6 |
| Booked jobs | 3 | 3 |
| Cost per lead | $11.67 | $17.50 |
| Leads that booked | 33% | 50% |
| Cost per booked job | $35.00 | $35.00 |
Look at the last row first. Both offers cost $35 for each booked job, which is exactly the figure the budget sum allowed. Offer A drew more leads at a lower price, but fewer of them were serious. Offer B's leads were pet owners with a problem to solve, and half of them booked. With three bookings each you cannot call a winner, because one more booking either way would flip the picture. What the result gives you is a hypothesis for round 2: put the pet-odour treatment inside the bundle and test it against the plain bundle.
What round 1 tells you: four patterns and a fix for each
- Leads, but no bookings. Look at reply speed and at the mismatch between headline and job. If the bundle drew people with six large rooms and a staircase, add a line such as "price for up to three average rooms; stairs extra" and a filter question. Do not change the offer yet.
- Few leads, good bookings. The offer is attracting the right people but too few of them. Widen the radius a little or extend the round by a week before touching the wording.
- Clicks, but no leads. People are interested and then leave at the form. Shorten the form to the phone number and the two filter questions.
- Few clicks. The photo or headline is not stopping anyone. Bring the photo test forward from round 3, and keep the offer as it is.
If cost per booked job still sits above your allowance after a couple of rounds, the ad may not be the problem. A higher minimum charge, a stairs add-on or a rebooking reminder can change the sum more than a better headline can. Once two rounds in a row land under the allowance, raise the budget rarely and in modest steps, because Meta counts frequent budget changes among the edits that can send an ad set back into learning.
Reading small numbers, and when to stop an ad
These are working rules, not Meta's, and they are deliberately cautious.
- Do not read anything into an ad with fewer than about 30 link clicks.
- Do not choose a winner on fewer than about 10 leads per version, and treat bookings as the real measure.
- Compare cost per booked job, not cost per lead or clicks. A cheap lead who never answers the phone costs more than it looks.
- Stop an ad that has spent twice your allowed cost per booked job without a booking, which is $70 in the example.
- Do not edit a running test. Meta's learning-phase page says editing an ad, ad set or campaign during learning resets it, and you lose the comparison as well.
Keep a simple lead log with one line per lead: date, which offer, and an outcome such as booked, no answer, outside the radius, price too high or just browsing. When 15 or 20 leads are in, AI is useful for the pattern-spotting:
Here are 18 leads from two Facebook offers. Each line has the offer (A or B), the date and a one-line outcome. Group the outcomes by offer, count each type, and tell me what kind of lead each offer drew. Where the sample is too small to say, write TOO FEW TO TELL instead of guessing. Do not suggest a winner.
Use first names or job codes in the log, not full names and addresses, because the log is going into a chatbot.
The first reply, and the quote that follows
Reply from your phone as soon as the alert arrives, with a message that asks the three questions that decide the price:
Hi [first name], thanks for your enquiry about the three-room offer. To give you a firm price, how many rooms are carpeted, are there stairs, and are there any pets or stains I should know about? A photo of the worst spot helps. I can usually book within [number] days. [your name]
That message is also the opening of a quote conversation, and the questions are the same ones an automated intake would ask. The tutorial on a carpet cleaning quote template with an AI chat covers the quote layout and the intake flow in detail. For more ready-made prompts on offers and wording, ChatGPT prompts for Facebook ads on a local offer goes further than the single prompt here.
The ad's job ends when the customer replies. How fast you answer and how clear the quote is decide a great deal of what the ad spend returns, so plan to answer every lead the same day before you spend the first dollar.
Questions carpet cleaners ask about Facebook ads
How much should a carpet cleaner spend on Facebook ads each day?
Work it out from your target cost per lead. Meta's minimum-budget page says that with a cost-per-result goal, the daily budget should be at least five times the goal, so a $9 lead target points to about $45 a day. If that is too much, $15 a day for 14 days is a workable experiment, as long as you read the results as direction, not proof.
Why does my ad set say Learning limited?
Meta says it is not a penalty but a sign the budget is not being spent effectively. It appears when an ad set is unlikely to get about 50 results in the week after its last significant edit, usually because of a small audience, a low budget or too many ads. At starter budgets it is normal. Avoid editing the ad mid-test, because a significant edit restarts the clock.
Can I use AI-made pictures of carpets in my ads?
Use real photos from your own jobs, with the customer's permission and no house numbers or faces. An AI picture of a spotless carpet promises a result you may not deliver, and an unhappy customer will compare the ad with what you did. If you do use generated images, never present them as your work, and note that Meta says it labels ads it detects were made with third-party AI tools.
Should I discount or add something free?
Adding value usually protects your price better. Including a pet-odour treatment or two extra stain spots costs you a little product and time, while a deep discount lowers every job. Test one of each as your first two offers and compare the cost per booked job, not the number of clicks.
Further reads
- Local Services Ads for Carpet Cleaners: What the Google Ads Move Changes — See what Google's local ads change for carpet cleaners.
- Pressure Washing Facebook Ads: Before-and-After Creative Made With AI — Compare how a similar trade tests creative on a small budget.
- Roofing Facebook Ads: Copy and Audiences Tested With AI on a Small Budget — See copy and audience tests for a higher-ticket local job.
- AI for Carpet Cleaners: Seven Jobs Worth Automating First — See the other carpet cleaning jobs worth automating first.
- Flooring Contractor Marketing: Seasonal Offers and Posts Drafted With AI — Plan four quarters of offers, job-photo posts and review requests for a flooring firm, with AI prompts, a worked budget and a tracking sheet.
- House Cleaning Business Flyer: Test ChatGPT Copy, Then Design in Canva — Three ChatGPT-written flyer versions, tracked with separate QR codes and code words, tested on matched streets, then built in Canva.
- Upholstery Cleaning Business: Jobs AI Can Take Off a One-Person Round — Booking-form fabric questions, photo-based quotes, aftercare notes and rebook texts a one-person upholstery cleaner can hand to AI, and what stays with you.
- Tutoring Facebook Ads: Parent Messaging and Lead Forms With AI — Three AI-drafted ad variants for parents, a short lead form, a follow-up message and a small monthly budget table for a tutor.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: Meta's business help pages on minimum budgets, the learning phase, learning limited and A/B testing; Meta's Advertising Standards (privacy violations and personal attributes, prohibited commercial practices); Meta's ads help on labelling AI-made ads. Prices, rates and results in the examples are illustrative.