PT Signature Cabinetry • Custom Cabinetry
Google Ads Rebuild, Tracking Overhaul, and Lead Infrastructure for a Custom Cabinet Shop
Google Ads, Meta Ads, Google Business Profile, SEO, Website Rebuild, Social Media Management, Reporting
They Didn’t Own Their Own Domains
The first surprise came before the ads launched.
Abe Penner runs PT Signature Cabinetry out of Lebanon, Missouri. Custom kitchen cabinets, closets, bathroom vanities. His 2026 goal was to add 50 cabinetry jobs. He’d been with a marketing vendor named Castlewood and had never run Google Ads. No ad account, no conversion tracking, no data. He came referred by a contact and signed at $500 setup plus $750/month retainer.
When I went to set up access and start building, I found out Castlewood controlled the domains. Both of them: ptsignaturecabinets.com, which Abe had paid to register for five years in 2023, and pennerarchitectural.com, a ten-year registration he’d paid for in 2024. His own GoDaddy account showed “no domains.” He had receipts proving he’d paid. The domains were under someone else’s account.
I flagged it immediately and walked Abe through the account-to-account transfer process. David at Castlewood eventually initiated it. But it meant I also couldn’t touch Yoast settings or make any SEO changes to the site without going through them. Any title tag edit required a support ticket to the previous vendor.
That context matters for everything that followed.
Building From Nothing
PT Signature had no Google Ads account, so there was no history to salvage or migrate. I built it clean.
Before the first ad went live, I ran a site audit. The homepage H1 was literally the word “Home.” Service pages ranged from 15 to 27 words each. The meta description for the whole site had a typo (“We cab” instead of “We can”). The contact page showed the wrong phone number and wrong hours.
I also ran a Google Business Profile audit. The category was “Cabinet store” instead of “Custom cabinet maker.” Service areas were missing. The profile had no opening date, no social profiles.
While building the campaigns, I did brand research to make sure the ads had something real to say. Three designers I consulted independently landed on the same angle: heritage, craftsmanship, the real person behind the business. Abe’s father was specifically a cabinet maker. That family detail became “Old World Craftsmanship” in the ad copy, not as a generic positioning move but because it was actually true.
Google Ads launched December 12, 2025. Meta Ads the same day.
Google Ads setup:
- Leads objective, phone call conversions
- $350/month budget to start ($13/day)
- Springfield MO, Lake of the Ozarks, Lebanon, Harrison AR
- Maximize Conversions with no target CPA (conservative for a brand-new account)
- GTM container installed, GA4 wired up, form submit and phone click conversions tracking
Meta Ads:
- Leads objective, Instant Form
- $12/day, Advantage+ placements
- Custom question on the lead form: “Briefly describe your project”
The first batch of Meta creative came from an Upwork freelancer I paid $75. They delivered furniture photos and template layouts. I scrapped everything and built three concepts myself.
The First Alert
Two weeks in, on December 27, I pulled the Google Ads data. The account showed 29 conversions. I called Abe. He had received zero leads.
My first thought was a GTM trigger misfiring or a Contact Form 7 issue. I noted it for investigation but didn’t have a full answer yet.
The next monthly report covered December 17 through January 15:
- 13 total leads (6 Google phone calls, 7 Meta form fills)
- $60.78 blended cost per lead
- 1 job already closed from “found online”
The GBP calls went from roughly 5 per month in September to 20 in January. That I credited to the profile optimization work.
I also found out the Lake of the Ozarks location data in Month 1 was wrong. My report said the area had no search volume. The real reason: the $13/day budget was exhausting before ads reached that market at all. I only figured this out on January 24 when I used the Ad Preview tool to check manually. Competitors were showing there. PT’s ads weren’t. Both actual conversions in Month 1 had come from Camden and Miller counties at the lake.
I corrected it: removed Harrison AR where nothing was converting, added bid adjustments to Camden and Miller counties, and switched the location option to “Presence or interest” to catch out-of-state vacation homeowners searching for lake area contractors. That’s a valid prospect segment for this client and it was being missed.
72% of the Conversions Were Fake
On March 4, 2026, I ran a full 18-section Google Ads audit. This is where the full picture came together.
Search Partners, which I had kept enabled in January because their cost-per-click looked efficient at $0.62 versus $3.95 on Google Search, were generating conversions from outside the United States. Including Australia. The efficiency I thought I was seeing was fictional. Thirty-four of the 47 account conversions were fake.
The number 72% comes from a 30-day window: 26 reported conversions, 8 real ones. The stated cost per lead was $33.46. The actual cost per lead, once you divide by real conversions only, was $117.35.
There were other compounding issues. All 7 conversion actions were set to Primary with “Every” counting, meaning the same lead could fire multiple conversions. The negative keyword list had 31 entries for an account running broad match keywords. One keyword, “cabinet makers” in broad match, was consuming 65-83% of the budget throughout Month 1 and 75% of the budget at the time of the March audit. Its cost per real conversion was $153.90.
The keyword that actually worked: “custom woodworking” at $14.69 cost per acquisition.
I told Abe the numbers were inflated. The real cost per lead was higher than reported because the denominator had been padded with noise. Fixing the tracking would make the reported numbers look worse before they looked better.
The March Overhaul
The March audit produced 26 planned changes. I implemented 23 of them in one session on March 7:
- Search Partners disabled
- 50 new negative keywords added (31 to 81 total), covering competitor names, DIY terms, retail searches, commercial searches, out-of-area cities
- Springfield MO excluded from targeting entirely (consuming 69% of spend while Camden County delivered leads at $44 each)
- 5 northwest Arkansas cities added (Rogers, Bentonville, Springdale, Bella Vista, Fayetteville)
- Bid strategy switched from Maximize Conversions to Maximize Clicks with a $5 max CPC cap
- Desktop -50%, tablets -100% (all real conversions were on mobile)
- 5 audience segments added in observation mode
- AI-generated sitelinks removed, manual sitelinks restored
- New RSA built around “Old World Craftsmanship” headline
Two changes skipped as high-risk (keyword removals). One blocked by Google (hosted conversion actions can’t be reclassified through the UI).
By March 9, after a competitive analysis session scraping 7 competitors and building a 14-row improvement tracker, the negative keyword list was at 132. Keywords grew from roughly 15 to 40, expanding into bathroom vanity, closet, and design/quote terms.
What Else Was Built
The ads were the core, but not the whole job.
On the website: I built an 918-line SEO package covering Yoast settings, meta titles and descriptions for all 9 pages, heading fixes, content rewrites, 8 schema snippets (LocalBusiness, 5 service types, FAQPage, Organization), sitemap, and alt text for 14 images. Muhammad, the developer, implemented most of it. The homepage title and meta description were missed on the first pass, which I caught in the live-site audit against the package.
For content: 5 long-form blog posts written, with pricing data sourced from Angi, HomeAdvisor, and competitor sites. All 5 eventually published to WordPress in May 2026, along with cleanup of 2 spam posts and 4 new content categories.
For the website itself: I ran a full copywriting pass on all 10 pages in March, expanding service pages from around 100 words to around 300 words each with keyword targeting. Four positioning angles researched. Recommended angle: “Built Around Your Life.” The full deliverable went through a /unai audit before it went to Muhammad.
For social: 90 posts written across two batches (40 and 50), with corresponding image prompt sets. Social management was later paused by Abe in a budget consolidation move.
For reporting: A Looker Studio dashboard connected to the Google Ads account, Alexana-branded, with an unlisted share link. Three monthly reports delivered. Abe could see the data any time without waiting for a PDF.
What Happened After March
Abe dropped the Google Ads budget from $30/day to $8/day. His call, not mine.
At $8/day, the account was effectively on autopilot. The May 2026 audit found “cabinet makers” broad match consuming 89% of spend, 25 of 40 keywords with zero impressions (budget-starved, not bad keywords), and conversion tracking broken again with “Submit lead form” showing zero conversions and “Needs attention” status.
The tracking issue turned out to be a recurring one. Micro-conversions like page views and direction requests had been set as Primary conversion actions, inflating the reported number. Three apparent leads were actually 8 tracked events. That’s the same structural problem as the fake Search Partner conversions, just a different mechanism.
In May 2026, Abe called wanting Meta Ads restarted. He wanted to fill the pipeline quickly. That timing tracks: Google spend had fallen from $870 in February to around $240 projected in May because of the budget drop.
The Meta relaunch used a different structure than the original. Landing page plus pixel instead of Instant Forms (lead form quality had been degrading since Month 2, with spam fills increasing). All Advantage+ components disabled. Manual placements: Facebook Feed, Instagram Feed, Stories, Reels. Dynamic Creative with 5 primary texts, 5 headlines, 5 descriptions. I researched how national cabinet brands (Cabinets To Go, CliqStudios) structure their Meta ads and rebuilt the copy pattern from scratch. “Free estimate” replaced with “free design consultation” across everything.
What Actually Happened
Month 1 (Dec 17, 2025 - Jan 15, 2026): 13 leads at $60.78 blended CPL, 1 job closed.
Month 2 (Jan 15 - Feb 15, 2026): 12 leads, $97.57 blended CPL. (Google leads in this period are likely inflated by fake Search Partner conversions. The accurate number is lower.)
GBP calls: 5 per month baseline in September 2025, 7 in December, 20 in January, then tapering as social and GBP management paused.
Real cost per lead from the March audit window: $117.35. Not the $33.46 the dashboard had been showing.
The honest summary: the first two months looked better than they were because of fake conversion data. The March overhaul fixed the data but also made the numbers look worse. Month 3 reported a higher CPL than Month 2, which was accurate, but the Month 2 CPL was based on a padded denominator. There is no clean apples-to-apples comparison across the period.
What I can say cleanly: the tracking is accurate now. The negative keyword list grew from 31 to 161. The one keyword eating the budget got moved to phrase match. The account has real data to optimize against instead of noise.
Abe’s goal was 50 cabinetry jobs in 2026. One job from online leads in month one. For a custom shop where one kitchen runs several thousand dollars, that math works. Getting there consistently requires the budget to stay at a level where the ads can actually reach the target markets.
What I Learned
Two things I would do differently.
I should have investigated the fake conversion problem faster. The first alert was December 27. The root cause wasn’t fully understood until the March audit. That’s roughly 10 weeks of inflated data going into the reports and shaping optimization decisions. The January call to keep Search Partners on was made based on their apparent efficiency, which turned out to be fictional. I reversed that decision when the truth became clear, but it should have been caught sooner.
The “cabinet makers” broad match keyword was the root cause of most wasted spend throughout the engagement. It consumed 65-89% of the budget across every audit period I looked at. It didn’t get moved to phrase match until May 2026. That should have been fixed in Month 1.
Both of those point to the same thing: I prioritized building new things over auditing what was already running. The audit cadence needed to be tighter.