B2B SaaS

See which spend turns into recurring revenue

Most SaaS teams can count signups and leads but cannot say which of them became paying accounts, so budget follows cost per lead. We connect ads, website, product usage, CRM and billing in one warehouse model, then add AI so sales, marketing and finance all answer questions from the same numbers. Clients include Grippi, an agency SaaS where we built MCP servers, and iQuanti, on its enterprise SEO platform ALPS.

Book a free discovery call See the work

Free 30 minute call with the engineer who would do the work. You keep the first fix whether or not you hire us.

What we get called in for

The problems teams bring to us

B2B SaaS companies from the first sales hire to scale-up, whether product-led, sales-led or a mix of both.

01

Which campaigns turn into pipeline and closed revenue

Google Ads and LinkedIn optimise toward form fills and trial signups, and most of those never reach a sales conversation. Marketing reports lead volume, sales says the leads are poor, and nobody can show which campaigns produced revenue.

What we do

We capture click IDs and UTMs at signup, carry them into HubSpot or Salesforce, and send qualified opportunities and closed-won deals back to Google Ads, LinkedIn and Meta as offline conversions. The platforms then optimise toward pipeline, and your reporting shows cost per opportunity and per closed deal by campaign.

02

MRR, churn and NRR are different in every tool

Stripe, the CRM, the finance model and the board deck each carry a different MRR, because each treats discounts, annual plans, pauses, upgrades and refunds its own way. Board prep turns into a week of reconciling figures that should already be settled.

What we do

We model subscriptions from billing data in the warehouse with written definitions for MRR, new, expansion, contraction and churn. Everyone reports from that one model, and every figure traces back to invoices.

03

Trial signups don't tie to paid conversions

The paid upgrade happens days or weeks after signup, often inside the app on a different domain, so analytics and ad platforms never see it. You end up scaling campaigns that bring signups who never activate.

What we do

We stitch marketing site, app and billing events to one user and account ID using cross-domain tracking and server-side events. Activation and paid conversion go back to the ad platforms, and you see trial to paid by source, cohort and plan.

04

Product usage data that sales and CS can use

Usage data sits in Mixpanel, Amplitude or the production database, where only engineers can reach it. Account managers learn about churn risk at renewal, and expansion signals go unnoticed.

What we do

We model usage into account-level health and expansion signals in the warehouse and sync them to the CRM with reverse ETL. Sales and customer success see which accounts are growing, stalling or ready to upgrade inside the tools they already use.

05

Attribution for a long B2B buying cycle

Several people from one account touch ads, content, webinars and sales emails over months before anyone fills in a form. Last-touch reporting credits the demo request page and starves the channels that started the deal.

What we do

We build account-level journeys in the warehouse that combine tracked touchpoints, CRM activity and self-reported attribution from the signup form. The result holds up in front of finance, with clear written rules on how each touch gets credit.

06

Answering board and investor questions without an analyst

Each board or investor request becomes an ad hoc project for whoever knows SQL. The same questions about cohorts, CAC payback and pipeline coverage get answered from scratch every quarter, often with slightly different numbers.

What we do

Once the metrics live in a governed model, we add an AI layer that answers questions from those definitions and shows the query behind each answer. We built MCP servers for Grippi so AI tools could work with its data, and we bring the same approach to your metrics.

Results

Work we have done in this space

Questions

What people ask us first

How do I send HubSpot or Salesforce deals back to Google Ads?

Capture the Google click ID and consented contact details such as email at form submission and store them on the contact record. When a deal reaches a qualified or closed stage, upload it as an offline conversion or through enhanced conversions for leads. Google only attributes imported conversions to clicks from the previous 90 days, so long sales cycles need an earlier stage such as a qualified opportunity as the main signal.

Should our MRR come from Stripe or from the warehouse?

Stripe is the source of truth for billing, and its built-in reports work for a simple setup. Once you have annual plans, discounts, several currencies, sales-led contracts or more than one billing system, you need your own definitions. We model MRR in the warehouse from Stripe data so it reconciles to invoices and matches board reporting.

Mixpanel, Amplitude or GA4 for a SaaS product?

GA4 is built around websites and campaigns. Product tools such as Mixpanel, Amplitude and PostHog are better suited to user and account behaviour, funnels and retention inside the app. Many SaaS teams use GA4 for the marketing site and a product tool for the app, with both feeding the warehouse where they join to CRM and billing data.

When does a SaaS company need a data warehouse?

Usually when an important question needs data from more than one system. CAC payback is the classic case, because it joins ad spend, CRM and billing. If your team exports CSVs every month to answer it, a warehouse gives that time back and ends the arguments about whose number is right. It is also the foundation for any AI layer, because the AI is only as good as the model underneath.

Tools we work with here
HubSpotSalesforceStripeSegmentMixpanelAmplitudeBigQuerySnowflakedbtHightouch
How we work

How an engagement starts

The work runs in three steps. You see working output within weeks and can stop after any stage.

01

Discovery call

A 30 minute call with the engineer who would do the work. We look at your setup, tell you what we would fix first, and whether you need us for it.

Day 1
02

Blueprint sprint

We map your sources, stakeholders and goals, then give you an architecture and a prioritised roadmap. You keep it whether or not we do the build.

2 to 4 weeks
03

Build in sprints

We ship working tracking, models, dashboards and agents every two weeks. You can stop after any sprint, and everything built stays yours.

Every 2 weeks

What happens on the call

Book your call
  • 30 minutes with the engineer who would do the work
  • No slides or sales pitch
  • A clear answer on whether we can help, and a referral if we can’t
  • The first fix we would make, which you can use either way
Next step

Get your first fix in 30 minutes

Bring the question your team can’t answer fast enough. The engineer who would do the work looks at your setup with you and tells you the first thing we would fix, plus a straight answer on whether you need us at all. It costs you half an hour, and you keep the fix either way.

Book a free discovery call