I'm James, Head of Marketing at Surface Scan.
We're a five-person 3D scanning and printing company. Over the last couple of years I've built the online ordering system we run our print room on, launched the Google Ads campaign that brings customers to it, and built the CRM that tells Google Ads which of those clicks turned into paid invoices. You asked to see four things, so here they are.
RapidQuote 3D, the ordering system I built for Surface Scan.
It started as an online quoting tool and I've built it out to run our entire 3D printing operation. Customers upload their 3D models, pick materials and colours, chat with us if they're stuck, and check out. Behind that there's a full admin area for orders, quality control, shipping, inventory and machine maintenance. It's live on our website, processes thousands of orders a year and has taken well over £100k in orders. I built it with Claude Code, which is my version of Replit.
The Google Ads campaign I run to bring in 3D printing orders.
I launched it in February 2026 when the new version of RapidQuote went live. Since then I've scaled spend from around £800 a month to around £3,000 a month while ROAS has gone from 0.85x to 1.61x. These aren't crazy numbers, but it's steady growth on a limited budget in a niche, low-volume industry, as a five-person business competing with global printing bureaus. It also kept growing through the summer, which is normally our slow period.
- Keywords. I started with generic keywords and gradually refined them into ad groups around why people are searching, like needing a part fast or needing a specific material.
- The landing page. I realised the iframe was taking a few seconds to load, so people were arriving to our header, our footer and a blank screen. I added a placeholder that shows instantly until the full tool loads.
- Mobile. Our customers have traditionally been desktop, but mobile clicks are a lot cheaper, so I optimised the tool for phones.
- "Don't have a file?" A lot of people clicking through didn't have a file to print from. I added a live chat for them right next to the upload button so we capture them rather than lose them. I'm currently A/B testing different designs for that upload screen based on the questions we get asked most.
- Tracking. This was the biggest struggle. With the tool in an iframe it was tricky getting gclid and gbraid to stick, sending accurate data back to Google Ads and showing the same numbers in the RapidQuote admin. I got there eventually, using Claude Code to test different methods, adding custom snippets and listeners to the site and keeping it all compliant. It's working well now.
- Bidding. Once the analytics were solid I switched to Maximise Conversion Value. Average order value went from £42.30 in August to £114.66 in September.
- The "don't have a file" chat. The clicks were fine, people just had nothing to upload. A chat turns that into an enquiry, and sometimes we end up scanning or designing the part for them as well.
- Mobile. It would have been easy to ignore because our buyers are mostly desktop, but the cheaper clicks are on phones.
- Doing the bidding change last. If I'd switched to Maximise Conversion Value before the tracking was fixed, Google would have been optimising towards bad data.
- Splitting by intent. Once each ad group was about one reason for searching, the ad copy and the landing page could actually match it.
- Launching with generic keywords. It spent money on searches with no real intent behind them, and there was nothing specific for the ads to say.
- Assuming the landing page was fine because I'd built it. It was fine for people willing to wait for an iframe. People coming from an ad aren't.
- Spending before the tracking was right. That cost me a couple of months of decisions on patchy data. May's 0.64x is on the chart because that's what happened.
- Target ROAS. CPC has been creeping up, mostly from competitor bidding, so I'm bringing in a target ROAS and increasing it steadily to force CPC down without the ads dropping out.
- The upload screen tests. A/B testing variations based on the questions customers ask us most.
- Keep scaling. October is on track to be the best month so far, so the plan is to keep increasing spend as long as ROAS holds.
Simplified stats, since my current employer wouldn't want me sharing everything. Happy to go through the live account on a call.
The custom CRM I built for Surface Scan, live since August.
As well as the automation inside RapidQuote, I built us a CRM from scratch. The part most relevant to this role is the pipeline connecting our enquiries to Google Ads, so we know which ads turned into quotes and which turned into paid invoices.