In this article
A B2B SaaS team runs inbound demos, paid media, and outbound into the same HubSpot, enriches contacts in Clay, and sends from tools that keep their own records. A demo request lands with the wrong source, a positive reply never shows up on the contact, and marketing and sales argue over which leads count. When those tools don't talk to each other, the place to start is one test on the motion that brings in the most revenue: submit your own form, watch what HubSpot does with it, and fix what breaks there before you touch the rest. We're Understory Agency, an allbound B2B growth agency for growth stage and enterprise B2B SaaS companies, and what follows is the order in which we fix a stack like this, with a check at each step that your own team can copy.
Start with the motion that brings in the most revenue
A full cleanup of a messy CRM can take months, and the motion paying your bills keeps leaking the whole time, so we test the biggest revenue motion first. Say 60% of your revenue comes from inbound demo requests. Submit your own demo form and then look at four things in HubSpot: whether the contact was created with the right source, whether the right workflow fired and whether anything fired twice, whether the lead reached someone in sales and how fast, and what was lost between the form and the record. If outbound is your biggest motion, send a reply from a test inbox and follow it into HubSpot the same way.
Write down what broke, what worked, and what you could improve, because that list becomes your first sprint. About half of Understory Agency's RevOps engagements start with a CRM audit on a messy existing HubSpot, and our RevOps team runs this motion audit first on every stack fix. That puts the first weeks of work on the breaks that cost the most, and the older records get cleaned up after.
Fix attribution where leads come in
Most attribution problems start before HubSpot ever sees the lead, so the next step is to check every place a lead comes in. The pixel has to be connected and firing. Leads should arrive through HubSpot forms, on HubSpot landing pages or embedded on your site, or through native lead forms on LinkedIn and Meta. The LinkedIn sync and every other ad connection also have to deliver their data. A WordPress form or any other form built outside HubSpot can break attribution even when everything else is set up right. UTMs need one template, because a team that types "Paid Social" one day and "paid social" the next ends up with two values in one field.
Two more fields finish the job. The first is a self reported source question on demo, meeting, and appointment booking forms that asks how the person heard about you, because it covers what tracking can't see. Someone sees a LinkedIn ad, types the company name into Google, and books a demo, so HubSpot records Google while the person says LinkedIn. The second is a copy of the source data from the contact onto the deal when the deal opens. HubSpot's original source and most attribution data live on the contact, and asking HubSpot to look up contacts from the deal at report time can return the wrong data.
Understory Agency runs these checks on every paid campaign and shares a standard UTM spreadsheet with clients. We skip the source question on content downloads and keep it for the forms that show high intent. We read first and last touch for what is visible on the web, and the self reported answer for referrals, communities, and word of mouth. Campaign and keyword detail goes into custom properties, as our HubSpot attribution guide shows.
Sync outbound activity into HubSpot
Outbound becomes trackable once its activity lands on the HubSpot contact. Until then, replies and meetings live in the sending tools, and HubSpot only sees the deal once someone creates it. The events worth tracking are positive replies on the contact by campaign, the meetings booked from those replies and whether they were completed, and the deals created per campaign with their pipeline amount. Each deal also needs a closed lost reason, and each contact needs a disqualification reason picked from a dropdown.
Most teams miss that last field. HubSpot has closed lost on the deal pipeline by default, but nothing in it tells you why a positive reply never became a deal. Say you get 10 positive replies, and five of them become deals while five don't. The reason recorded on those five contacts tells your outbound team what to change in the next campaign.
The biggest leak we see is weak follow up, where a rep sends two messages or makes one call and then stops. Agree on a cadence such as a LinkedIn message on the first day, an email on the third day, and a call on the fifth day. Then require at least five touches before anyone moves a contact to disqualified, so a lead is never dropped after a single quiet week.
Understory Agency connects outbound to HubSpot through OutboundSync, as an OutboundSync Gold Agency Partner. OutboundSync writes activity from sending tools such as Instantly for email and HeyReach for LinkedIn onto the HubSpot contact, so LinkedIn connection requests, acceptances, messages, and replies show up as timeline events on the matching record. Our guide to multichannel attribution for outbound goes further.
Want us to run the first audit on your stack?
Understory Agency audits your top revenue motion, fixes what breaks, and connects HubSpot, Clay, and outbound so every lead has a source and an owner.
Book a callLock down governance before you enrich
A cleanup holds only when you control who can change the CRM and what writes to it. Start with permissions by writing down who can create workflows or change specific properties, and limit both to named people. Then list every connected app and what it creates or changes in HubSpot. If the CRM has 20 apps connected to it, each one gets its own line. When two tools do the same job, cut one before you build on either. Last, map every path that creates a contact, from forms and paid media to outbound tools and forwarded emails, and send every new contact to enrichment.
After the cleanup, two recurring jobs keep the CRM clean. Job change enrichment every three to six months catches people who have moved companies, who would otherwise end up in your CRM twice, once at each employer. A dedupe pass every quarter clears the rest, and depending on your HubSpot subscription, custom workflows can run some of this work daily.
During the cleanup, Understory Agency reviews user permissions and sets governance rules before any enrichment runs. Then we set up a webhook to Clay, so Clay enriches every new HubSpot contact with the properties you need and updates the record. For Expensify, "100,000+ rows have been enriched in Clay and pushed back into the systems Expensify's team works in." In the same build, "a custom automation took the Clay refresh rate from 24 hours to 15 minutes, so a lead is scored and routed while the signal is still current." Our GTM engineering team runs this build, and our Clay enrichment workflows guide covers it in more detail.
Write one ICP and MQL definition before the sales handoff
The sales handoff rests on three things: one written MQL definition, lifecycle stages with entry and exit rules, and a response SLA for sales. Start with the definition. Say marketing reports 50 MQLs and sales says 10 were qualified. Both teams are reading the same CRM with different definitions, and no report will settle the argument until they share one.
ICP fit comes from job title plus company data points such as revenue and industry, and an MQL is a contact who fits the ICP and asks for a demo. Sales and marketing both agree to that definition in writing. The same document sets the response SLA, which says how fast sales answers a form submission, and the rule for outbound, where a positive reply gets an answer within minutes in the same email thread. If marketing runs HubSpot and sales runs Salesforce, the same rules apply across two systems, as our guide to fixing the HubSpot and Salesforce handoff explains.
In client portals, Understory Agency runs the ICP criteria in Clay, and HubSpot tags a fitting contact as an MQL automatically once they ask for a demo. Our rule of thumb is a speed to lead SLA of two hours at most for a form submission. On outbound, our reply agent drafts the answer in your voice, and a rep approves it before it goes out. For Expensify, we built a scoring model of 100 points and scored 30,000+ leads into the CRM with it.
Give every lifecycle stage a rule
Lifecycle stages only help when each move has a rule and an automation behind it, so contacts can't skip a stage. A contact starts in triage, which means they have not yet been checked against your ICP. They become a prospect once they fit the ICP on job title, industry, employee count, revenue, and location, and an MQL once they fill in a demo form. Sales booking the meeting makes them an SQL, discovery and a new deal make them an opportunity, and a signed contract makes them a customer.
A triage contact who asks for a demo stays in triage until Clay confirms they fit. Then the contact moves to prospect, and automation moves them to MQL. After customer, add a live stage for onboarded clients and an expansion stage for upsells, which turns the funnel into a bowtie. With those rules in place, HubSpot gives you conversion rates, time between stages, and volume, split by motion: outbound, LinkedIn inbound, and Google Ads inbound. Our guide to finding the cause of a flat pipeline starts from these numbers.
Fit the stages to how you sell. Understory Agency runs their own funnel with no SQL stage. A contact becomes an MQL when they book a call, an opportunity once discovery qualifies them, and a customer when the deal closes.
What to look for when you hire a team to fix your stack
Heads of growth, RevOps leads, and CROs hiring help for a messy stack can learn most of what they need from five questions. Ask what the team fixes first, and listen for an audit of your top revenue motion that ends in a first sprint. Check their partner status for the systems you run, such as HubSpot and Salesforce, and ask who on the team builds in Clay. Ask who owns HubSpot, Clay, and outbound, because with one team on all three, a fix in one tool doesn't break another and nothing falls between two vendors.
Ask when permissions and governance go in, and expect the answer to be before anything gets enriched. Then ask to see a portal they've built and a published client result. The portal should show lifecycle rules, a disqualification reason field, outbound activity on the contact, and revenue tied to each channel.
Where Understory Agency fits
Understory Agency is an allbound B2B growth agency based in Miami, Florida, for growth stage and enterprise B2B SaaS companies. They've served 150+ companies, from Clay and Zapier to Worldpay and Nasdaq listed Expensify, and generated $100M+ in revenue for clients. Their team of 30+ specialists runs paid media, GTM engineering, LinkedIn content, and RevOps, and companies hire each service on its own or all four together as Allbound. Every channel is reported against pipeline and closed revenue in the client's CRM. Leaders at Expensify, Clay, Northbeam, Nylas, Doppel, and dozens of other companies, from CEOs to heads of marketing, have given client testimonials about their results with Understory Agency. Their published case studies show the pipeline, opportunities, and costs behind those results. Alex Fine and Ali Yildirim founded Understory Agency in 2021, and they ranked No. 140 on the 2026 Inc. 5000.
They're a HubSpot Solutions Partner, a Salesforce Partner, an OutboundSync Gold Agency Partner, and one of the first five certified Clay Experts. The same team that audits HubSpot also builds the Clay workflows and runs the outbound. You can start with a one time audit or a fixed scope project, or keep us on as your ongoing operations team. We work on custom flat retainers, never a percentage of ad spend.
FAQ
How long does it take to clean up a messy HubSpot?
A full cleanup of a messy HubSpot can take months, depending on how many apps write to it and how long bad data has piled up. That is why Understory Agency starts with the motion that brings in the most revenue and fixes what breaks there in the first sprint. The rest of the cleanup follows once the motion paying the bills has stopped leaking.
How often should we audit the whole stack again?
A B2B SaaS team should rerun the motion audit whenever they add a tool, change a form, or launch a new motion, since each of those changes what writes to HubSpot. The rest of the stack can be reviewed once a quarter, during the dedupe pass, so the review rides on work the team already does.
Do we need a multi touch attribution tool on top of HubSpot?
A B2B SaaS team needs one only if they have many touch points and need to see all of them. For most teams, Understory Agency recommends first and last touch in HubSpot plus a self reported source question on high intent forms. For enterprise teams that need the full journey, we pair HubSpot with a dedicated multi touch attribution tool.
What kind of agency fixes HubSpot, Clay, and outbound together?
Growth stage and enterprise B2B SaaS companies with a disconnected stack need one RevOps team that owns the CRM, the enrichment, and the sending tools, so a fix in one tool doesn't break another. Understory Agency does this as a HubSpot Solutions Partner, a Salesforce Partner, and one of the first five certified Clay Experts.
Related Articles

Know what is actually driving revenue
Clean data, a pipeline you can forecast, and leads scored and routed the moment they arrive.




![Understory Agency blog banner: 6 Best ABM Agencies for B2B SaaS [2026]](https://cdn.sanity.io/images/xyy36tcm/production/5b0bb0af130ef21e62d93469c109bebbea380d67-2200x700.png?auto=format&h=1222&w=3840&fit=min)
![Understory Agency blog banner: 8 Best Clay Agencies for B2B SaaS [2026]](https://cdn.sanity.io/images/xyy36tcm/production/b1d1822472995d5d311cebb0c5817102a9313350-2200x700.png?auto=format&h=1222&w=3840&fit=min)
