Field guide

The GTM Engine

The go-to-market system I built at Growth-X, drawn as it actually ran. Every channel, what happened after the click, and how ads brought the same people back to the site. I am running the same machine again now, for my own practice.

Bootstrapped, zero outside funding 500+ B2B clients Sold June 2025 9.4:1 LTV to CAC

Most go-to-market spending pays for a visit and then loses the visitor. At Growth-X, a visit got identified where possible, recorded against a person, followed up, and added to an ad audience, so we could reach the same person again for far less than the first click cost. Below is how each part worked, in the order I would build it.

Read

The five stages

Fourteen tools in the diagram, grouped into the five things they actually do. Stage five sends people back into stage one.

1

Attract

SEO · paid search · LinkedIn posts · signal outbound

Four sources, all pointing at the website. Blog posts that answer questions prospects actually asked. Google Ads on a small budget. LinkedIn posts from the whole team, most of them from me as the founder. And outbound, aimed only at accounts showing a buying signal.

Two parts of this matter more than they look. The first is the LinkedIn profile. I had thousands of connections, and what counted was whether they reacted to my posts, because every reaction shows the post to that person's own network.

The second is the signal. We watched for companies that had just raised a Series A, because a company that just raised is about to spend on growth. Crunchbase and similar sources told us when it happened. A comment on one of our LinkedIn posts counted as a signal too, and went into the same outbound queue. Without a signal, we did not reach out.

Trap

Buying clicks before the rest of the engine exists. With nothing behind the click, the visitor leaves and you never learn who they were.

Do this
  • Write one blog post a month that answers a question a prospect actually asked you, on a call or in a DM, in the words they used. Those are the queries buyers type into Google.
  • Run Google Ads on buying intent keywords only, with a fixed daily cap set before you start. Ours was small. Count every click as the first touch with that person, not as a sale.
  • Post on LinkedIn from the founder account, about the actual work, several times a week. People who read your comments click through to your profile, so keep it current.
  • Pick one buying signal and act on it the day it fires. A funding round, a relevant job post, a comment on your post.
2

Capture

Your website, where every channel sends people

Everything lands here, and most visitors leave without saying who they are.

97% of visitors leave without converting.
Marketo and SiriusDecisions, via Happierleads

Which is why the destination rule matters. If you made a video, host the page on your own domain and embed it there. If you are sharing a resource, put it on your site, or at minimum route it through a link you control. LinkedIn will not tell you who clicked a link you shared, so a link that leaves your site is a touch you will never see.

Never send customers to a place that is outside your website, because you want to track it.

One caveat. The moment you send someone to your site, they assume you are selling. If the page gives them what the message promised, that is fine. If the message promised something useful and the page is a sales pitch, they leave.

Do this
  • Host every video, guide and resource on your own domain. If it has to live elsewhere, link through a redirect you control, so the click is recorded.
  • Install analytics you own (self-hosted Umami is free) and the identification script on every page, including the thank-you page.
  • Make the landing page match the message that sent them. A sales page after a message that promised no pitch loses the visit.
3

Identify

Visitor identification · enrichment · the touch ledger

This stage turns anonymous traffic into names, and it is the one most websites skip. RB2B is the tool I use. The free tier resolves companies. The paid tier resolves people, which means the LinkedIn profile of someone who was just reading your pricing page.

Just one person buying your product could pay for their subscription.

If you cannot afford the paid tier, do this instead. Take the company level identification, which is free, and match it against the people you have already contacted in outbound. You know who you wrote to at that company. Now you know that company is on your site this week. That is a warm follow-up for zero dollars.

The free Slack feed is the other thing to use, and it is where a technical founder gets ahead. RB2B posts each identification into a Slack channel, and a script can read it.

Slack alert    script reads the channel
               cron or cloud routine, once a day
               write the hit into your own store
               raise that lead's score
               score crosses your line    it goes in the outbound queue
You can build a script that reads from Slack, and with a cron job … populate your stats of the GTM machine and then trigger whatever action you need once you identify. Which can just be scoring higher a specific lead.

About that score, since everything after this depends on it. It is one number per person, and every recorded touch adds to it. Opened a post, visited twice, came back after a DM, arrived from a retargeting ad. You set the threshold where a human gets involved. Without a score, you have no way to decide which of two hundred names to follow up first.

Then enrichment fills in the gaps, and all of it lands in a CRM that records every touch, not just the last one. Every later stage reads from that record.

Usually it takes six, seven steps to convert a lead into a person that will actually do a specific action, like booking a call or trying a demo.
ToolWhat it doesCost
RB2B freeCompany level identification, roughly 150 a month, plus the free Slack feed$0
RB2B paidPerson level, name and LinkedIn URL of the visitorfrom ~$79/mo
ClayEnrichment and verification. Priced in creditsskip, see below
Your CRMThe touch ledger. Any CRM, including one you build$0 to start
Do this
  • Turn on RB2B free (company level, roughly 150 a month) and connect its Slack channel. Cost, zero.
  • Have a coding agent write the script that reads that channel, scores each visit and writes it to your CRM. The prompt I would give it is in the build order below.
  • Match company level hits against the people you already contacted at that company. That is a warm follow-up for zero dollars.
  • When one customer would cover $79 a month, turn on person level and start getting names and LinkedIn URLs.
  • Give every touch a point value and set the score at which a human gets involved. A starting table, adjust it to your funnel. First visit 1, second visit 3, pricing page 5, return visit after a message 8, a human steps in at 10.
4

Engage

LinkedIn · your posts · wherever else they already are

Now you know who they are, so you reach out. A connection request, then a few messages after they accept, each one carrying something useful. Past that, the places nobody bothers with. Follow them on X, comment on their posts there, react to an Instagram story. None of these closes anything on its own. Each one is another touch.

Any box you add to this GTM machine is an extra touch, and any extra touch, if done right, does increase your chances that the client will take actions.

An accepted connection also works like a newsletter subscription. Once someone connects, your posts show up in their feed, and every post after that is a touch you did not have to send.

A newsletter is your LinkedIn feed.

Email is the channel I would use least at this stage. A cold email asking for a call gets ignored, and a sending domain that gets flagged stops reaching anyone. Put the addresses you collect into retargeting audiences instead (stage five). Write an email only when the signal is very strong, or after five or six other touches, and when you do, send something useful and leave the pitch out.

One thing has changed since I built this. Everyone has AI now, everyone sends outreach at volume, and the average message got worse. Four sentences written about the recipient stand out more than they did in 2019. Keep it short and specific, and only write where there is real intent. Where there is no intent yet, post, stay visible, and send nothing.

You want to be useful. You want to give value. You don't want to get value.

Here is a real message. I send it today to people who looked at buying Growth-X on Acquire.com when it was for sale. It is shown as it goes out, except that the revenue line is left out here.

You were interested in Growth-X a while back. I sold it in June 2025. Nine years, no funding, 500+ clients.

I made the whole GTM machine public, 9.4:1 LTV to CAC. riccardopisano.com/gtm-engine

I do this for founders now. Worth a look for you or one of your companies? 30 minutes, free. riccardopisano.com/book

It opens with the one thing we have in common, gives them something useful before asking for anything, and asks once. The same day, a LinkedIn connection request goes to the same person with a one line note saying who it is from, so they recognise the name in two places.

Not every first touch has to be a message. One opener that got me a reply was a comment under a founder's LinkedIn post. The post was about having three products and looking for a GTM hire. I wrote that with three products and no clear signal from the market about which one people wanted, a hire would not solve it, and that picking one product first would. A reply under a post is public. The author gets something useful whether or not they answer, and everyone else reading the thread sees how you think before you have ever messaged them.

Do this
  • Send a connection request with a note under 300 characters. One shared fact and one reason to accept, no link and no ask. Free LinkedIn allows roughly five noted invites a month, so spend them on the highest signal names and send the rest bare.
  • After they accept, send at most three messages over about two weeks, and make each one useful on its own. A resource on your site, an observation about their company, an intro, an answer to something they posted. None of them asks for a call. If they want one, the booking link is on the page you sent them to. If they stay silent after three, stop and let your posts keep you in their feed.
  • Do not send cold email. Upload the addresses to your ad platforms as a retargeting audience instead. Email someone only on a very strong signal or after five or six touches, and send them something useful, never a pitch.
  • Reply under their posts with something they can use. It counts as a touch, and everyone reading the thread sees it.
  • Follow them on X and comment on one post. Cheap touches that still register.
  • Where there is no signal yet, post, stay visible, send nothing.
5

Retarget

Meta · Google · LinkedIn, from your own list

The enriched emails from stage three become customer list audiences on the ad platforms. This is where most of the addresses you collect should go. The people already in your engine keep seeing you, and every ad sends them back to the website, where stage two identifies them again.

This stage is also what makes paying for stage one reasonable, and I want to be clear about my own position here.

Every single person that gets into your website then gets retargeted in so many ways that your $1 value expense on Google Ads is just an entry point. It is not getting lost.

The same dollar buys something different when the click lands in a system that will reach that person another six, seven or eight times. That is the only case where I think paid traffic makes sense, and it is why this stage gets built before the ad budget goes up.

Trap

Running retargeting without stage three. No identification and no enrichment means no list to upload, and you are paying to reach strangers again.

Do this
  • Export the enriched emails from the CRM as a customer list audience on one platform first. Mind the minimums, checked September 2026. LinkedIn will not serve to a matched list under 300 people. Google Customer Match serves at 100 across Search, YouTube and Display. Meta creates an audience at 100 but in practice wants about 1,000 to deliver. The platforms move these, so check before you build. Until your list passes the minimum, this stage waits.
  • Point every retargeting ad back to a page on your own site, never to an external link, so the return visit is identified.
  • Spend on retargeting before cold clicks. That audience already knows who you are.
  • Check each platform's current identity matching rules before committing budget. They have tightened since I ran this.

Then it repeats

The retargeted lead clicks back to the site. That visit is identified again, the score goes up, the CRM records another touch, and they re-enter the sequence one step further along than last time. Each round costs less than the first, because you already know who the person is.

At Growth-X, a customer was worth 9.4 times what it cost to win them, a 9.4:1 LTV to CAC ratio. The benchmark usually quoted as healthy is 3:1.

This is what makes us grow without much investment, to an exit.
Build order

Where to start, if you are starting

Build it in this order. Each stage needs the one before it in place to be worth anything.

First, at zero cost

The ledger and the destination

  • Pick the CRM. If you have nothing, a table you own is enough to start. One row per person, one row per touch. HubSpot free works if you would rather not build, and gets annoying at the paid tiers. What matters is one record per person with every touch on it.
  • Move every resource you share onto your own domain, or behind a redirect you control.
  • Install analytics and free tier identification, and point the RB2B Slack feed at a channel. Then have Claude Code, or whichever coding agent you use, write the script that reads that channel and scores each lead. Paste this in and fill in the brackets.
    Build me a small script that turns RB2B's Slack alerts into scored leads.
    
    1. Read new messages from the Slack channel where RB2B posts website visitor identifications, with a Slack bot token taken from an environment variable. Use each message's ts as its unique id and skip any ts already processed, so re-running the script never counts a visit twice.
    2. Parse each alert into name, title, company, company domain, LinkedIn URL and the page they visited. Keep company-only alerts too, with the name left empty.
    3. Save every alert as a touch in my CRM, which is [HubSpot free / a Postgres table / a Google Sheet]. One record per person, one row per touch.
    4. Score each person and store the total. First visit 1, second visit 3, pricing page 5, a return visit after I messaged them 8.
    5. When a person's score reaches 10, post them and their touches to my Slack as ready for a human.
    6. Run it once a day on a schedule, and first show me a dry run against the last 50 messages that writes nothing.
    Read what it writes before you run it on real data.
Then, roughly $79 a month

Names, and one sequence

  • Turn on person level identification, so the alerts carry names and LinkedIn profiles instead of company names.
  • Write one short sequence for people who accept a connection. Every message gives something useful, and none of them asks for a call.
  • Pick one buying signal and wire it in. Funding round, hiring pattern, a comment on a post. One is enough.
Only then, ad budget

Retargeting first, cold second

  • Upload the list you have built as a customer audience on one platform. Learn it before adding others.
  • Spend on retargeting before cold clicks. That audience is people the engine already knows.
  • Then pay for cold clicks, now that each one lands in everything above.
Honest notes

What changed since, and what I do not know

Growth-X is gone. It was acquired in 2025 and the buyer moved away from this category. Where the diagram says Growth-X, use HeyReach or whichever outreach tool you prefer, and stay inside LinkedIn's terms while you do. The engine never depended on one tool. The sequence logic we ran inside Growth-X was never published.

I would skip Clay today. It was the right call when we built this, but credit pricing gets expensive fast. Most of what we used it for is now a short script calling a few APIs directly, and a coding agent can write it for you.

Get your own custom version

I build this as a fractional CTO and Head of GTM, which covers both halves the machine needs. Someone has to write the script that reads the Slack channel, and someone has to decide whether a lead is worth the touch. On a free thirty minute call I look at the go-to-market you run today, where the leads drop out, and what a version built for your company would include.

Book a free call to assess your GTM engine