95% of active users were landing in “Unassigned.” Every channel looked worthless.
CAUSE · Server-side events were arriving stripped of ga_session_id, ga_session_number, and engagement_time_msec — so no hit could be tied to a session, and no revenue to a source.
8,897 users, 24 add-to-carts, 0 purchases. The client wanted to fix checkout.
CAUSE · Cart-to-checkout was running at a healthy 79%. The break was upstream at 0.27% product-page-to-cart, plus an anomaly at payment submission. Checkout was never the problem.
A marketing team was fielding one-off campaign requests from every direction. None of them could work.
CAUSE · Budgets too small to reach confidence, creative lift too high to justify them, and no shared strategy underneath. The fix wasn’t better campaigns — it was fewer of them.
What I do
01 / Media
Paid search & shopping
Campaign strategy, account builds, and budget allocation across Google Ads, Shopping, and Merchant Center — for accounts from $150/day up to enterprise programs spending $3 million a year, across SaaS, ecommerce, and real estate. I run New Orbit Digital as a deliberately two-person shop, so the person you brief is the person in the account.
02 / Measurement
Analytics & attribution
GA4 and GTM forensics: funnel drop-off analysis, server-side tagging failures, channel misattribution, and pricing benchmarks. Most accounts don’t have a traffic problem. They have a measurement problem dressed up as a traffic problem.
03 / Software
Products & tooling
I build the tools the work needs. A central platform that pulls multiple marketing channels into one place and handles day-to-day analytics, custom reporting, deep data analysis, and change-history tagging. An intelligent notes app that captures and triages tasks, calendar events, research topics, and lists onto their own surfaces. An enrollment analytics dashboard built for a school board. Node, React, Supabase, Cloudflare Workers — shipped rather than mocked up.
Evidence
One strategy instead of eleven small ones
Global Knowledge · Strategy
Global Knowledge’s marketing department was fractured across disciplines, and the internal team was drowning in one-off requests: run a small campaign here, a small campaign there. Each came with high creative lift, a budget too small to reach statistical confidence, no room to learn from the result, and an agency fee that would have exceeded the media spend behind it.
So the work wasn’t running those campaigns. It was reworking them into a single cohesive strategy — consolidating the asks, pointing the budget at what could actually be measured, and giving the internal team one plan to execute against instead of eleven competing ones. Reporting was standardized on GA4 as the single source of revenue truth, replacing the previous agency’s ads-attributed numbers.
$1,201,390Revenue during the engagement
The revenue that couldn’t be attributed to anything
Codecademy & Skillsoft · GA4
Two separate enterprise accounts came to me with the same symptom: channel reports that made every source look broken. In both, the cause was the same and it wasn’t in the ad platform at all. Conversions were being sent server-side via Measurement Protocol, and the session parameters weren’t travelling with them.
Without ga_session_id, GA4 has no way to join a conversion back to the session that produced it. The revenue arrives; the attribution doesn’t. The fix was unglamorous — forward the session parameters from the client-side conversion moment into the server-side hit — but until it was done, every optimization decision downstream was being made on noise.
$334,665In six-month revenue, now correctly attributed to source
Reading a funnel that ended in zero
DTC retail · Shopping
A store with steady Shopping traffic and no sales at all. The instinct in the room was to rebuild checkout. The event chain said otherwise:
8,897 users →24 add to cart →19 begin checkout →8 add payment →0 purchase
Cart to checkout held at 79% — that stage was fine. The collapse was at 0.27% product-page-to-cart, with a second anomaly at payment submission. I also ran the catalog against Merchant Center benchmarks: 44 products with comparable data, priced at parity on the top-clicked flagships and above benchmark on two others. Not a pricing crisis, but not a reason to spend more either.
My recommendation was to stop increasing spend. I’d also floated a theory about free-listing misattribution inflating the traffic; reconciling Shopping clicks against GA4’s session count disproved it, so I withdrew it.
$30,000In monthly spend held back from a broken funnel
Lead every facet of a two-person paid search agency — strategy, account work, new business, and delivery.
Manage Google Ads and measurement for clients including Codecademy, Skillsoft, Christie’s, Hint Water, and American Giant.
Structure retainers around portfolios rather than single brands, including a multi-brand agreement covering three brands and two product drops monthly.
Building a multi-channel marketing platform in-house — unified analytics, custom reporting, deep data analysis, and change-history tagging.
Nov 2022 — Nov 2023
Director of Client Services
FT Optimize
Owned multiple client relationships end to end, accountable for service quality, performance, and retention.
Partnered with account managers to convert performance data into action rather than reporting.
Grew the team’s capability through direct coaching and clear communication standards.
May 2022 — Nov 2022
Acquisition Marketing Director
Popmenu
Led awareness and lead generation for both employer and candidate audiences, routing each to the right service.
Ran client-facing and internal initiatives on bi-weekly Agile sprints, with success measured per initiative.
Led a department-wide brand refresh, testing copy and creative against real engagement data.
Mar 2019 — Feb 2022
Director of Paid Traffic
AdWords Nerds
Hired and led the team running weekly strategy against a 70-client book of business.
Designed subscription programs that scaled to new client demands without rebuilding delivery each time.
Improved lead generation to more than 3× qualified lead flow and more than 5× ROI.
Oct 2014 — Mar 2019
Account Manager
AdWords Nerds
Helped launch the startup by building service offerings and scaling operations alongside client satisfaction.
Vetted, implemented, and trained the team on analytics and reporting platforms for tracking large ad investments.
Kept the offering competitive by continuously adopting new ad platform capabilities.
Apr 2012 — Sep 2014
Distillery Production Manager
Hewn Spirits
Identified white-space opportunities for new products and worked with development to expand the portfolio.
Mar 2011 — Oct 2014
Sales Manager
Keystone Homebrew
Protected the team from burnout through seasonal hiring, scheduling, and deliberate delegation.
Built customer trust by listening for the actual problem before recommending anything.
Builds
Ads agent
In daily use
A central platform for multiple marketing channels at once — day-to-day analytics, customized reporting, deep data analysis, and change-history tagging, so every performance shift can be traced back to the change that caused it.
Node · Supabase
Capture & triage inbox
In daily use
An intelligent notes app. Throw anything at it and it sorts itself — tasks, calendar events, research topics, and lists each land on their own custom surface, with groceries ordered by how I actually walk the store.
Cloudflare Workers · Supabase
Enrollment analytics
Delivered to board of trustees
An enrollment, retention, and pipeline analysis tool built for a private school — turning admissions and re-enrollment data into a view the board could actually govern from, rather than a spreadsheet nobody opened twice.
Data analysis · Reporting
KINOLUST
Running
Software for archiving a film library into a single browsable surface that can also run scheduled streams — built for large-scale watch parties, where a programmed channel beats asking forty people to press play together.
Encode pipeline · Scheduling
Ghost Signal
v0.1 playable
A co-op project where one crew is stranded and the other is searching, and the only channel between them is the interface. Per-role state filtering with payload auditing, seeded RNG, and a balance harness that asserts win-rate thresholds in CI.
Node · WebSockets
Primer
In active development
Ask for a primer on anything and get the same shape back every time — context, key events, notable facts, the live debates with citations both sides would actually reach for, and where to read next.
Format test-driven across 5 domains
Community & arts
Emerson Waldorf School
Parent-Teacher Council Co-Chair
Co-chair the PTC for a school community of roughly 300 families across grades 5–12, and enrolled in a governance leadership program. Built the enrollment and retention analysis delivered to the board of trustees, designed the parent-facing materials the community actually uses, and led a design exercise on building analog social infrastructure as a deliberate alternative to another group chat.
Tabletop
Founder → handed off
Started a local tabletop gaming meetup, grew it into a convention, and then handed it to new leadership — which was always the point. The measure of a community project isn’t how long you run it. It’s whether it survives you leaving.