Miguel ManeiraSpec work for Amplemarket Book 30 min

Miguel Maneira$100k+ a month in ad spend · Meta, Google, TikTok, Telegram Ads, Taboola, PropellerAds

How I run paid. Structure, diagnosis, tools.

Six years in paid acquisition, now in iGaming: strict networks, crowded markets, and one number that matters, whether the player pays back. This is the method: what I optimize for, how I set campaigns up, what I do when a metric moves, and what I build to go faster.

01The chain

Every cost is three rates multiplied.

When cost per acquisition moves, I don’t guess. I split it into the three numbers that make it and find which one moved. Each has a different owner: the auction, the creative, the page.

CPMPrice of attention

What the auction charges for 1,000 impressions. Set by competition, audience size, season and placement. Mostly outside the creative.

CTRCreative

Share of people who click. The creative’s job, and the first thing to fatigue.

CVRPage and offer

Share of clicks that become the conversion that pays. Landing page, offer, speed, message match.

ValueThe only judge

What the conversion is worth: a deposit in iGaming, a qualified opportunity in B2B. Cheap and worthless loses.

CPA = CPM ÷ (1,000 × CTR × CVR) CPC = CPM ÷ (1,000 × CTR). So a CPC rise with flat CTR is an auction problem, and a CPC rise with falling CTR is a creative problem. Same number, different fix.

02Structure

Test in isolation. Scale in consolidation.

Testing needs control: fixed budgets, one variable, a clean read. Scaling needs the opposite: fewer, bigger buckets, so the algorithm has enough data to find buyers. I keep the two apart.

Meta

Facebook, Instagram
Test
ABO: one ad set per angle, same budget each, so the algorithm can’t crown a winner on day one. Broad audience, 3–5 ads per ad set, same landing page.
Scale
Winners move to a CBO (Advantage+ campaign budget) campaign. Budget up in steps of about 20% every 2–3 days, so delivery doesn’t reset into learning. A big jump goes to a duplicate instead.
Bidding
Start on highest volume (lowest cost). Move to cost cap once an ad set clears learning, around 50 conversions a week, and I know the CPA that pays back.
Signal
Optimize for the deepest event that still fires about 50 times a week. Too few? Go one step up the funnel for a while, never down to clicks.

Google Ads

Display, Search, Performance Max, SEO
Display
Mobile VAS at MobWizards. The placement report read daily, placements that don’t pay back excluded, and banners made in-house so tests run faster.
Search
For SMB clients at Wize Media. Exact and phrase match for the money terms, broad only with a strong conversion signal. Negative lists reviewed from the search terms report every week.
PMax
Only with clean conversion data, brand terms excluded, and asset groups split by angle, so I can still see what’s working.
SEO
Review websites I built alongside the Telegram communities: organic Google traffic, no ad spend.
Bulk
Google Ads Editor for building and changing campaigns across many countries at once: copy a working structure, swap language and geo, post.
Proof
At MobWizards I ran Google Display in nearly every geo worldwide, and opened the Middle East: a market the company had never explored.

Native and pop

Taboola, PropellerAds
Buy
CPC on native, where the headline and thumbnail do the targeting. Start broad, then bid per placement.
Clean
Placements judged on value, not clicks: after a spend threshold, the ones that don’t convert go on a blocklist, the best get a higher bid or their own campaign.
Test
Headline × thumbnail, one at a time. Native is a pre-sell: the page after the click has to finish the argument the headline started.

Tracking

Voluum, then TGstudio
Split
Weighted rotation across landing pages, offers and creatives, one variable at a time.
Truth
The conversion that counts comes from the operator by postback, not from the pixel. The ad platforms get that event back, so they bid on deposits, not sign-ups.
In B2B
The same idea: send qualified opportunities from the CRM back to Google, Meta and Reddit as offline conversions, so bidding learns from pipeline, not form fills.
03When a number moves

What it means, and what I do.

The mistake is reacting to one metric. I read them together, check tracking first, and change one thing.

What I see What it usually means What I do
CPM up, CTR flatCPM ↑CTR = The auction got pricier: a competitor, a season (big match days, Q4), or an audience too narrow. Not the creative. Widen the audience, open placements, move budget to the countries or hours that still pay back. Don’t kill a creative that still clicks.
CTR down, CPM flatCTR ↓CPM = Creative fatigue. Same people, same ad, fewer clicks. Check frequency. Ship the next batch of angles, not variations of the tired one. Keep the winner running at a lower share.
Frequency up, results downFreq ↑Results ↓ The audience is used up. Broaden, exclude recent converters, add new geos or placements. In prospecting, frequency climbing past ~3 in a week is my early warning.
CTR up, CVR downCTR ↑CVR ↓ The ad promises something the page doesn’t deliver, or the page broke. Tracking and page first: postback firing, page loading on mobile, offer live. Then message match: the page’s first line should finish the ad’s sentence.
CVR drops overnight, everywhereCVR ↓↓all campaigns Almost never the market. Usually tracking: a postback, a pixel, a redirect, an offer that was paused. Don’t touch bids. Test the funnel end to end with a real conversion, compare with the operator’s numbers, fix, then let it recover.
Cheap sign-ups, no depositsCPR ↓Value ↓ The angle attracts curiosity, not buyers. My memes did this: the cheapest sign-ups and the weakest players. Judge it on payback and cut it, however good the CPR looks. Move the platform’s optimization to the deposit event.
Spend won’t deliverSpend ↓Impr. ↓ Cost cap too tight, audience too small, or an ad stuck in review. Check disapprovals first. Then loosen the cap in steps or merge ad sets.
Stuck in learningLearning limited Too few conversions per ad set for the algorithm to learn. Fewer, bigger ad sets, or a higher-funnel event for a while. Splitting budget across ten ad sets starves all ten.
In B2B: CPL fine, few sales callsCPL =SQL rate ↓ The form is too easy, the offer too generic, or the targeting reaches people who can’t buy. Add a qualifying question, pick a higher-intent offer (a demo over an ebook), and optimize on the opportunity the CRM sends back, not the lead.

Thresholds like “~3 a week” and “~50 conversions” are where I start looking, not laws. The number that decides is always payback.

04Rules

What I do every day, and what I never do.

Habits that kept the numbers honest across six networks and every market I opened.

  1. Daily close. By country and by client, every morning: spend, conversions, value, payback.
  2. One variable per test. Landing page, offer or creative. Never two at once.
  3. Angles in batches. Pain, proof, offer, curiosity, local culture. Each batch tests one angle.
  4. Static first. In my tests, static beat video. Volume of angles beat polish.
  5. Broad targeting. The creative does the targeting; the algorithm finds who answers.
  6. Tracking before tactics. When numbers jump, I check the postback before I touch a bid.
  7. No big budget jumps. Step up, or duplicate. Resetting learning costs more than it saves.
  8. Test where the team won’t. The Middle East was untested when I opened it.
05Tools, APIs, AI

What I use, and what I built.

When a tool didn’t fit, I built one with Claude Code. Everything below is in use today.

Built

TGstudio

Our growth platform, built on my own time with Claude Code. Click tracker that replaced Voluum, workflow engine with AI nodes that replaced n8n, and a multi-network ads manager: one campaign launches to every network we buy on through their APIs, with automated rules.

AI, daily

Claude Code

Where I build: TGstudio, this site, LUUKAT and an HQ of agents that runs finance models, reporting and operations, with a person signing off where it matters.

AI, connected

MCP servers

Claude Code wired to the tools it works on: Playwright and Chrome DevTools to run audits and check pages, GitHub to ship, Neon for the database, Sentry for errors, Stripe for payments, Context7 for current docs.

AI, method

Claude Code skills

Reusable playbooks I set up: ai-seo for AEO work, design-os and impeccable for pages, dataviz for reports, remotion for video in code, and brainstorming → writing-plans before anything big.

Measure

PostHog · Google Sheets

PostHog instrumented with Claude Code on LUUKAT’s funnel. Google Sheets for the daily close, where the payback math lives.

Create

Tyver, then AI

Tyver to read what competitors are running before making anything. Nano Banana, Seedance, Kling, Higgsfield and ChatGPT to produce, so a test never waits on a designer.

Get cited

Share-of-answer audits

10 buyer prompts, three runs each, in live ChatGPT and Perplexity, logged out. Scripted, so every run is the same, and the raw answers are published. That’s how I measured Amplemarket’s share of answer.

Deliver

Resend · Cloudflare

SPF, DKIM and DMARC set up for LUUKAT’s sending domain.

Not yet

A CRM in production

I’ve sold B2B and know what a seller needs from a lead. Running your CRM is days 1–30 work.

Done · that’s the whole setThirty minutes on the plan Book a call: what you’d change, and what you’d want measured first.