Why Custom Beats Off-the-Shelf (Under $1M ARR)
Off-the-shelf attribution tools. HockeyStack, Dreamdata, Bizible, Hyros. all cost $12k–$40k/year fully loaded. For a B2B SaaS under $1M ARR, that is 1–4% of your entire revenue, which is absurd for an analytics tool.
Worse: at that scale, your data volume is too small for "data-driven" attribution models to mean much. You do not have enough closed deals per month for a Markov chain or Shapley value model to produce statistically meaningful results. You have 5–30 closed deals per quarter. The algorithmic sophistication is wasted.
What you actually need at this stage:
- Clean UTM hygiene on every link you publish.
- A way to see which channel created each closed deal, weighted reasonably.
- A monthly view your whole team can read without Looker training.
That is a spreadsheet plus a few integrations. not a $2k/month SaaS.
The Free Stack
- GA4. free, required anyway. Handles session stitching and anonymous traffic.
- Your CRM. HubSpot free, Pipedrive, Salesforce. Holds deal records, close dates, revenue.
- Google Sheets + a scheduled export. alternatively, BigQuery free tier if you want SQL.
- Looker Studio. free. Connects to GA4 and Sheets/BigQuery. Builds the monthly report.
Total monthly cost: $0. Time cost: 8–16 hours to set up, 1 hour/week to maintain.
Define Your Touchpoints
You need to decide which touchpoints count as "attribution moments" for your business. For most B2B SaaS, these four cover 90% of what matters:
- First Touch (FT): First time a person lands on your site. Captured via GA4 + landing page URL + UTMs.
- Lead Capture (LC): First form fill or identified session (demo request, content download, pricing page visit with email captured). Captured in your CRM.
- Sales-Accepted Lead (SAL): SDR qualifies them. Stage change in CRM.
- Closed Deal (CD): Won opportunity. Stage change + revenue amount in CRM.
Each deal has exactly one of each of these touchpoints. this is what makes the model tractable without specialized tools.
Choose Your Weighting
Now pick how to distribute credit across the four touchpoints. There is no one right answer. pick based on your funnel shape.
| Your funnel | Weighting (FT / LC / SAL / CD) | Why |
|---|---|---|
| Long research cycle, cold audiences matter most | 50% / 20% / 15% / 15% | First touch gets heavy credit. You rarely buy yourself into a deal at the last mile. |
| Sales-led, outbound matters more than inbound | 20% / 20% / 40% / 20% | SAL stage (SDR qualified) gets heavy credit because sales creates the deal. |
| PLG-assisted, short cycle | 40% / 40% / 10% / 10% | Product and demand gen carry the deal. Sales confirms, doesn t create. |
| Balanced / unsure (default) | 30% / 30% / 20% / 20% | Reasonable starting point if you do not have a strong prior. |
You can revisit this each quarter. The goal is not mathematical perfection. it is directional clarity for budget decisions.
Implementation (Step by Step)
Step 1: UTM discipline
Every link you publish. paid ads, LinkedIn posts, newsletter content, email sequences, Reddit comments. must have UTM parameters. Use GA4 URL builder or build a spreadsheet template. No UTM = no attribution.
utm_source: the platform (linkedin, google, meta, newsletter-name)utm_medium: the channel type (cpc, organic-social, email, referral)utm_campaign: your internal campaign name
Step 2: Capture First Touch in your CRM
When a visitor fills out a form, push the first-touch UTM values into custom fields on their contact record. HubSpot does this automatically if you use HubSpot forms. Otherwise, set a cookie on first visit and read it on form submit. Total dev time: 2–4 hours for a junior.
Step 3: Weekly CRM export
Once a week, export closed-won deals from your CRM with: deal amount, close date, first touch UTMs, lead capture date, SAL date. This is 20–50 rows for most B2B SaaS under $1M ARR. Dump into a Google Sheet.
Step 4: Apply weighting in Sheets
In the sheet, create columns for each of the 4 touchpoints. For each deal, split the revenue per your chosen weighting. A $20k deal with a 30/30/20/20 weighting gives $6k credit to First Touch channel, $6k to Lead Capture, etc.
Step 5: Build Looker Studio dashboard
Connect Looker Studio to your Google Sheet. Build two views:
- Channel attribution: Sum attributed revenue by channel (LinkedIn Ads, Google Ads, Organic SEO, Newsletter, etc.) over the last 90 days.
- Campaign attribution: Same but by
utm_campaign. which specific campaigns produced revenue.
Share the dashboard with sales, marketing, and leadership. Review monthly.
Monthly Reporting Template
Once a month, in 30 minutes, you should be able to answer:
- What was our attributed pipeline and revenue by channel, last 90 days?
- What is our CAC by channel, applying this attribution model?
- Which channel is most under-invested relative to its attributed revenue?
- Which channel is most over-invested?
- What are we changing in the next 30 days based on this?
That is the whole game. No $2k/month tool. No data team. No attribution-science PhD. Just UTM discipline + one spreadsheet + a Looker view + a monthly review.
When you outgrow this. usually around $2M ARR or when you hire a real marketing ops person. you graduate to HockeyStack or Dreamdata. But not before. The tools pay back at scale, not at scrappy.
More attribution reads
- Marketing attribution tools compared
- Best B2B SaaS attribution tools
- HockeyStack review 2026
- HockeyStack vs Dreamdata
- HockeyStack alternatives
- Triple Whale vs Hyros
- Northbeam vs Triple Whale
- Triple Whale alternatives
- LinkedIn attribution tools
- Hyros pricing explained
- Server-side tracking setup
- Build a custom attribution model
- 7 attribution models ranked
- GA4 attribution models
- Linear attribution explained
- What is marketing attribution