A parent at 9.14pm is not browsing like a B2B buyer. They are half in a feed, half in a calendar, trying to decide whether your week-long STEM camp is a real slot or another pretty carousel. For kids activities and camps companies, that is the auction. Meta is where the decision starts, not a search box with “day camp near me” already typed. If your ads look like a brochure and your landing page asks for a 14-field form before a price or a session date, you are funding scroll time, not deposits.
Meta Ads average ROAS sits around 2.8x across industries in widely cited 2025-2026 industry benchmarks (Northbeam, Triple Whale, and similar MMM datasets), versus roughly 4.2x for Google Ads - though both figures swing significantly by vertical and attribution model. That gap is not a reason to abandon the channel. It is a reminder that camps do not buy on last-click search intent. They buy on creative, proof, and a registration path that still works after the third reel of the night. Creative fatigue shows up in rising CPMs before booked weeks drop. UGC-style videos often peak in 5-6 days. Treat that as the operating reality, not a platform glitch.
This piece is for the marketer who owns enrollment, not the parent shopping camps. It covers why 2020 lookalike stacks underperform, how Advantage+ and broad delivery actually get used when the offer is a session with a start date, what the registration page has to do, and how you keep signal quality when 20%+ of conversion data disappears to ad blockers and privacy changes.
Why camp Meta spend collapses before the waitlist fills
You launch a summer-camp set in March, get cheap reach, then watch cost per registration inquiry climb while the catalog of sessions is still half empty. The usual diagnosis is “the algorithm.” The more useful diagnosis is that the ad stopped being a targeting system. On Meta, creative is your targeting. Hooks, format, and whether the parent can tell in two seconds that this is a real program with dates, ages, and a deposit, decide who even sees the next impression.
Old playbooks stacked interests (parenting, soccer, STEM) and lookalikes of last year’s enrollments, then paused anything that did not convert in 48 hours. That resets learning and makes daily volatility look like strategy. At low spend, Meta’s learning-phase swings are noisy. Short windows invite you to kill the only ad that would have worked on day four. Meanwhile CPMs creep first. Lead volume is the lagging indicator. If you wait for form count to fall, you already paid for tired creative.
A second leak is the homepage. Sending camp traffic to a site that also sells birthday parties, after-school clubs, and a blog about “10 rainy-day crafts” dilutes the message the ad just made. Parents who tapped “reserve week 3” should land on week 3: ages, ratio, pickup window, what is included, refund language, and a form that matches the promise. Agencies and in-house teams that keep everything on the homepage are not being thrifty. They are asking Advantage+ to invent intent the page refuses to close.
Signal quality is the third collapse. If you only fire a Pixel Lead event on a thank-you page that 40% of mobile parents never hit because the form is long, smart bidding optimizes on a minority of true enrollments. Event Match Quality scores do not reliably predict profitable outcomes. Clean events, Conversions API, and a definition of “qualified” that sales or front-desk actually uses beat a pretty EMQ dashboard. You will still lose some data. Design for that, do not pretend the Pixel of 2019 is intact.
If your current set is one campaign, three static carousels, and a homepage CTA, you do not have a Meta program. You have a seasonal burst. The rest of this article is the build that holds through early-bird, peak enrollment, and the last-minute scramble when a session is 11 spots from capacity.
Creative that stops a parent mid-scroll (and what dies in five days)
Parents do not need another brand anthem. They need to know the age band, the week, whether lunch is included, and whether this looks supervised or chaotic. Open on a specific moment: a counselor counting kids onto a bus, a kiln coming out of a firing, a swim test with a clearly numbered group. Text on screen should name the offer in the first second. “Week of July 14, ages 8-11, two spots left in robotics” beats “Unforgettable summers.”
Short-form video is how you protect user experience in Meta’s current auctions. Static boards still have a job for remarketing and for proof (facility, ratios, sample schedule). They rarely win cold. User-generated clips from last summer, shot vertical, with a parent voiceover or a director on camera, tend to outperform studio polish. They also burn faster. Plan a testing engine, not a hero asset you will ride for eight weeks. When CPMs rise and frequency on the winning ad crosses the point where the same households see it daily, rotate the hook, not just the end card.
Broad targeting plus a systematic creative test now outperforms manual audience stacking for most consumer programs, often by a noticeable ROAS band when the funnel is honest. That does not mean you dump budget into Advantage+ with a vague “summer fun” primary text. Broad delivery still needs a tight offer. If your creative could equally sell a competitor’s nature camp, Meta has no reason to find your buyers. Name the location, the session type, the age, and a reason to act this week (early-bird cutoff, sibling discount, waitlist for week 2 only).
Policy is not optional. Kids-related ads sit in a sensitive category. You cannot imply you are collecting data on children, you cannot run creepy “we know your kid loves soccer” copy, and you cannot use imagery that looks like you are targeting minors rather than parents and caregivers. Keep the audience as adults. Speak to the person who pays the deposit. Show children in program context with clear supervision, not close-up “ideal child” stock. If compliance is the reason your account keeps getting limited, fix the creative system before you raise budget.
A regional camp group we see in this category kept one 28-second drone flyover live for 19 days because “it looked premium.” CPM was up, comments were “where is this,” and the form was still asking for a child’s date of birth before showing tuition. They cut the film to 11 seconds, put tuition and age on screen, and moved DOB behind a confirmation email. Inquiries that named a specific week rose even though spend stayed flat. The mechanism was not a new audience. It was an ad that finally matched a page a tired parent could finish.
If you need a second set of eyes on creative-to-page alignment, a partner that already runs Meta Ads for enrollment-style offers can pressure-test hooks against policy and against the actual registration form, without turning the account into a weekly learning reset.
Get a free marketing audit - we review your search, ads, and landing pages and send back what to fix first.
Get a free audit
An Advantage+ structure camps companies can fund without resetting learning
Fewer campaigns, broader targeting, cleaner conversion setup. That is the 2026 shape, and it fits session-based businesses better than a tree of ad sets by zip code, interest, and lookalike. Split only where the offer or the economics truly differ: day camp versus overnight, school-year clubs versus summer intensive, or two brands that cannot share creative. Constant structure changes kill performance. Resist the urge to “just add a lookalike” every time a week is soft.
Bid for the event that is closest to money you can actually see. A lead is not a deposit. If your CRM or registration tool can pass a Purchase or a custom “DepositPaid” event through the Conversions API, use it. If you cannot, at least separate “info pack download” from “started registration.” Optimizing for the soft event fills the inbox with parents who wanted a PDF. Automated bidding will look busy and still miss quality if the event is vanity.
Budgets should cover learning without pretending every day is a referendum. Meta’s daily volatility at thin spend is real. Decide a weekly enrollment CPA or cost per deposit you can live with, then judge creative on a longer window than 24 hours. Manual bidding on brand-new accounts is a reaction to high CPC pressure in search, not a Meta best practice. On Meta, starving the system of volume so you can feel in control usually produces the opposite: no learning, random winners, and a narrative that “ads don’t work for camps.”
Audit scorecard
-
Offer on the ad, not in the footer Every primary text and video hook nam
Offer on the ad, not in the footer Every primary text and video hook names session type, age band, location, and a date or deadline. If a parent cannot screenshot the offer, Meta cannot target it.
-
One campaign per true offer family Do not split day camp into 11 zip-cod
One campaign per true offer family Do not split day camp into 11 zip-code ad sets. Split overnight vs day, or distinct brands. Extra ad sets reset learning and starve winners.
-
Deposit-quality events Pixel plus Conversions API
Deposit-quality events Pixel plus Conversions API. Fire the optimization event on completed registration start or paid deposit, not newsletter signup. Map first-party fields you are allowed to send for parents, never for children as the audience.
-
Creative cadence, not a hero film
Keep 4-8 active concepts. Kill on CPM and frequency, not on a two-day CPA spike. Replace the hook when the winning asset ages past a few days of strong results.
-
Dedicated session landing pages Ad copy and headline match
Dedicated session landing pages Ad copy and headline match. Show tuition range, ratios, sample day, pickup rules, and a short form. Instant Forms can collect names. They rarely collect a committed week unless you follow up in minutes.
-
UTM and CRM discipline Every ad has
UTMs. Front desk tags source. You reconcile Meta’s CPA against deposits by week, not against “leads.” Last-click will double-count if search is also live.
-
Policy and comment hygiene Hide or answer comments that create complianc
Policy and comment hygiene Hide or answer comments that create compliance risk. Do not run copy that sounds like you profile kids. Adults pay. Adults are the audience.
-
Mobile form that survives 9pm Core Web Vitals still matter after the cli
Mobile form that survives 9pm Core Web Vitals still matter after the click. Only about 55.9% of origins pass all three in recent CrUX data. A slow, layout-shifting registration page taxes paid social harder than organic.
Action checklist
- Export last season’s enrollments by session, age, and first-touch source. You are building signals, not a 2020 lookalike shrine.
- Write three offers that a parent can say out loud: early-bird week, last-minute remaining spots, and school-year club trial. One landing URL each.
- Shoot or cut five vertical videos under 15 seconds. First frame is the offer. Last frame is the same URL promise.
- Stand up one Advantage+ or broad campaign per offer family. Cap the learning edits. Change creative, not structure, in week one.
- Implement Conversions API with your registration tool. Confirm the event that sales will defend in a board packet.
- Tag every URL with a consistent UTM scheme so deposits can be compared to in-platform CPA without a scavenger hunt.
- Set a kill rule on frequency and CPM, not on a single expensive Sunday. Replace hooks on a 5-6 day cycle when an asset is the only thing delivering.
- Train whoever answers the phone or inbox to ask which week the parent saw. That sentence is your quality filter when attribution is messy.
Free tools - try these yourself

Registration pages where Meta traffic actually becomes a week on the roster
Broad targeting wastes money when the funnel is weak. That objection is fair. The fix is not a return to 14 interest piles. It is a page that continues the ad. Headline restates the session. Proof is specific: counselor-to-camper ratio, accreditation, sample schedule, photos from the actual site, and parent quotes that mention logistics, not “magic memories.” Price range belongs above the fold. Hiding tuition until a call is a B2B demo tactic. Parents comparison-shop at night.
Forms should ask for the adult first: name, email, phone, which week, child age band (not full legal name and medical history on step one). You can collect the rest after they choose a session. Instant Forms inside Meta are convenient and usually lower quality. Use them for waitlist or catalog requests. Send high-intent “reserve this week” traffic to a page you control. Watch scroll depth, rage clicks on the fee table, and abandon on the medical-upload step. HeyLead Insights is built for that post-click picture: where proof, forms, and CTAs leak intent so you are not guessing from a CPA that only exists in Ads Manager.
Speed is part of creative. A parent on cellular in a parking lot after pickup will bounce if the hero image is a 4MB drone still. Check INP and LCP on the registration template, not the blog. Mobile is most of the clicks in paid social. If conversion lags desktop, do not “optimize the campaign.” Shorten the form and stop autoplaying a muted 40-second loop under the fold.
Open Graph tags decide whether the share or the ad preview looks like a camp or a random URL. Preview the image, title, and description before you scale. A mismatched OG image is a tiny thing that makes a professional program look accidental. Same for the H1 on the session page. If the ad said “Overnight wilderness, ages 12-14” and the H1 says “Welcome to Camp,” you trained Meta to find the wrong people.
A multi-site activities company ran Advantage+ into a global “programs” hub. Cost per lead looked acceptable. Deposits did not. The hub listed 40 offerings with identical thumbnails. They built three session pages, matched OG images to the ads, and cut the form from 11 fields to 5. The in-platform CPA ticked up slightly. Paid-in-full weeks did not. That is the only scoreboard that matters for this category.
When the page is the bottleneck, keep working the handoff before you add TikTok or another cold network. Adding platforms rarely beats tighter positioning, a clearer offer, and tracking you trust. You can always expand once week-level deposits are reconcilable.
When Ads Manager CPA and booked sessions refuse to match
Attribution complaints in this category are not theoretical. Meta’s number, GA4’s number, and the registrar’s spreadsheet will disagree. Last-click counts the same conversion more than once if a parent clicked search after seeing a reel. Privacy changes and blockers drop 20%+ of browser events. If you manage to the in-platform CPA alone, you will scale junk or kill a campaign that actually filled week 4.
Pick a business event: deposit paid, or registration completed with a session ID. Pass it server-side. Use UTMs so the registrar can still tell Meta from Google from a counselor’s personal share. For decisions above the channel, think in incrementality: hold out a region or a late session and see whether Meta spend moved deposits, not whether the pixel fired. Unified marketing measurement and even lightweight mix models are how CFOs want the story. Channel dashboards are how operators debug creative. Use both. Do not pretend one dashboard is the P&L.
Reporting cadence should be weekly and operational: which hooks died, which session pages converted, which leads never named a week on the call. Monthly slideware buries the 5-day creative death cycle. No one can guarantee a specific ROAS or CPL before they have run in your account with your pages and your refund policy. Anyone who does is selling a number, not a program. Realistic enrollment lift from a rebuilt Meta system is a season, not a weekend. Early-bird windows are your first honest read.
Keep search in the mix if parents still Google the brand after the reel. That is not failure. That is a path. Give credit without letting last-click steal the Meta budget every time someone types your camp name. The job is filled weeks at a cost you can defend, not a prettier platform ROAS than last year’s 2.8x benchmark.

What we hear from clients in this category
“We kept pausing Advantage+ every time CPA jumped on a Tuesday. The only ads that ever learned were the ones we left alone long enough for the hook to burn out instead.” - Head of Marketing, multi-site youth camps
“In-platform leads looked cheap until we matched them to deposits. Half never named a week. We had optimized for the PDF, not the roster.” - Founder, after-school activities group
FAQs
Should kids activities and camps companies still use interest targeting?
Use interests as a weak signal at most, not as the architecture. Broad or Advantage+ with strong session-specific creative usually finds parents more efficiently than stacking “parenting” and “soccer.” If you must constrain, constrain by geography and by offer, not by a 2019 interest museum.
Are Instant Forms good enough for camp deposits?
They are fine for catalogs, waitlists, and early interest. They are weak for paid weeks. Send reserve-this-session traffic to a page with tuition, ratios, and a short adult-first form, then follow up fast. Quality beats a cheaper CPL.
How fast should we rotate creative?
Watch CPM and frequency before lead volume. Many UGC-style ads peak inside a week. Build a queue of hooks so you are not improvising on a Sunday night when the winning asset dies.
Why does Meta ROAS look worse than Google for our brand searches?
Google often harvests existing demand. Meta creates the shortlist at 9pm. Average Meta ROAS near 2.8x versus Google near 4.2x is a category pattern, not proof your camp ads are broken. Judge Meta on incremental deposits in enrollment windows.
What if automated bidding spends on the wrong parents?
Fix the event and the page before you switch to manual. If the pixel counts a brochure download as success, bidding will buy brochure downloaders. Clean conversion setup and a deposit-level event are the control, not daily bid caps that starve learning.
Putting it to work
Execution sprint
This week
- Pull 30-90 days of performance for camps (Search Console, ads, CRM, or call logs - whatever you have).
- Flag the top leak: wrong intent, weak page, slow response, or dirty conversion tracking.
- Ship one fix on the highest-traffic money path (page, campaign split, or response rule).
- Run the free tools below on that same URL or account and log the findings.
Free tools for this sprint
Next 30 days
- Expand the fix to the next one or two money paths only after the first one shows cleaner bookings.
- Align creative, keywords, or content with the same offer the page now states.
- Review booked outcomes weekly; cut anything that still only produces unqualified volume.
This week
-
Pull 60 days of Meta leads and mark which ones named a session week and which became deposits.
-
Rewrite the winning ad’s primary text so age, location, and date appear without a tap.
-
Point that ad at a dedicated session URL, not the homepage. Check Open Graph and H1 match.
-
Build UTMs for every live ad and confirm the registration thank-you fires in both Pixel and CAPI.
-
Cut one long form to adult contact plus week plus age band only.
-
Queue two replacement vertical hooks so you are not stuck when CPM climbs.
Next 30 days
-
Collapse extra ad sets into offer-family campaigns and stop daily structure edits.
-
Run a holdout or at least a week-level deposit reconciliation against Ads Manager CPA.
-
Fix Core Web Vitals on the registration template until mobile complete rates stop lagging.
-
Install a creative kill-and-replace rule tied to frequency, not mood.
-
Document policy-safe do’s and don’ts so counselors’ UGC can be used without account risk.
Start by lining up last season’s deposits against the ads that were live those weeks. If the story only exists in Ads Manager, the work is measurement and the handoff from hook to registration, not another interest stack. HeyLead can own that loop for kids activities and camps companies: session-specific creative, Advantage+ structure that is not reset every Tuesday, and the page-plus-event plumbing so Meta spend maps to booked weeks. Chat with us on WhatsApp
Free marketing audit, or reach Martin directly:
Get a free audit Connect on WhatsApp · [email protected]