April 21, 2026

How to Track ROI from Directory Listings (UTMs, GA4, and a Simple Formula)

Set up UTM parameters, read GA4 referral traffic, track signups, and calculate whether a SaaS directory listing is worth the cost.

To track ROI from directory listings, tag every listing URL with UTM parameters, monitor referral traffic in GA4, set up a conversion event for signups, and compare attributed revenue against listing cost using a simple formula: (Signups x Trial-to-paid rate x Avg MRR) minus the listing fee. Most early-stage SaaS founders skip all four steps and have no idea which of their 20+ directory listings are actually working.

TL;DR: UTM-tag every directory link you control, filter GA4 by medium = directory to see which ones send real traffic, mark signups as a key event so you can trace conversions back to a specific directory, and run a 90-day ROI check on every paid listing. This post gives you the exact naming convention, the GA4 walkthrough, and a worked-out formula you can use today.

If you submitted your SaaS to a dozen directories last quarter, you are not alone in having zero visibility into what happened next. The traffic either shows up as "direct" (because you didn't use UTMs), gets lumped into a generic "referral" bucket, or simply never gets checked. You spent time — and possibly money — on listings that are doing nothing. This guide shows you how to track ROI from directory listings with about an hour of setup.

Why Most Founders Can't Answer "Is My Directory Listing Working?"

The default state of directory listing analytics is chaos. You submit your site URL to 15 directories in an afternoon, close the tabs, and move on. Three months later, someone asks which directories are driving signups and you have no answer.

Here is what actually happens to that traffic:

  • No UTM tags means GA4 attributes clicks to "referral" with the directory's domain as the source — but only if the directory doesn't strip the referrer header. Some do.
  • Multiple directories all show up under the same "referral" channel grouping, making it impossible to compare them without drilling into source details.
  • You track pageviews, not signups. Even if you spot a directory sending 50 sessions, you have no idea if any of those visitors converted.
  • Paid listings go unreviewed. You set up an annual subscription to a directory, it auto-renews, and you never check whether it drove a single trial.

The fix is a five-step process: tag, track, convert, calculate, review. Let's walk through each one.

Step 1 — Tag Every Directory URL with UTM Parameters

UTM parameters are query strings you append to your URL so that Google Analytics 4 (GA4) knows exactly where a click came from. For directory listings, you need three fields:

  • utm_source — the name of the directory (lowercase, no spaces)
  • utm_medium — always set to directory so you can filter all directory traffic at once
  • utm_campaignfree-listing or paid-listing to separate the two

Here is the naming convention you should adopt for every directory listing:

https://yourapp.com/?utm_source=thesaasdir&utm_medium=directory&utm_campaign=free-listing

Replace thesaasdir with the directory name: producthunt, g2, betalist, alternativeto, etc. Keep names lowercase with no spaces — this prevents GA4 from splitting "TheSaaSDir" and "thesaasdir" into separate rows.

For a paid listing on G2, a B2B software review platform:

https://yourapp.com/?utm_source=g2&utm_medium=directory&utm_campaign=paid-listing

That is the entire convention. Simple, consistent, and it works across every analytics tool.

Where to Put the UTM-Tagged URL

Most directories have a "Website" or "URL" field in your product profile. Replace your plain URL with the UTM-tagged version. The UTM parameters are invisible to users — they just see your domain in the browser bar after clicking.

Some directories also let you add a custom CTA link or a specific landing page URL. Use the UTM-tagged version there too.

One thing to watch: a few directories strip query parameters from outbound links. If you notice a directory sending referral traffic in GA4 but your UTMs are not appearing, that directory is stripping them. In that case, fall back to the referral domain method covered in Step 2.

How to Manage UTM Links at Scale

Once you are listed on more than five directories, a spreadsheet becomes essential. Create a Google Sheet with these columns:

Directory Base URL Listing Type Submission Date UTM URL Status
TheSaaSDir thesaasdir.com Free 2026-04-01 yourapp.com/?utm_source=thesaasdir&utm_medium=directory&utm_campaign=free-listing Active
G2 g2.com Paid ($300/yr) 2026-03-15 yourapp.com/?utm_source=g2&utm_medium=directory&utm_campaign=paid-listing Active
BetaList betalist.com Free 2026-04-10 yourapp.com/?utm_source=betalist&utm_medium=directory&utm_campaign=free-listing Active

This sheet becomes your source of truth. When you add a new listing, generate the UTM URL here first, then paste it into the directory profile.

Step 2 — Find Your Directory Traffic in GA4

Once your UTM tags are live and directories start sending clicks, GA4 automatically parses them into structured dimensions. Here is exactly where to look.

  1. Open GA4 and go to Reports > Acquisition > Traffic acquisition
  2. The default dimension is "Session default channel grouping." Change it to Session source / medium
  3. You will now see rows like thesaasdir / directory, producthunt / directory, g2 / directory
  4. To see only directory traffic, click the search bar above the table and type directory — this filters to every source where medium equals "directory"

That is it. You now have a single filtered view showing every directory that sent traffic, how many sessions each drove, average engagement time, and (if you set up conversion events) how many signups each one generated.

What to Look for in the Referral Report

Focus on these columns:

  • Sessions — raw traffic volume. Anything under 5 sessions/month from a directory is noise unless those sessions convert.
  • Engaged sessions — people who stayed longer than 10 seconds, had 2+ pageviews, or triggered a conversion event. This separates real visitors from bounce-and-leave clicks.
  • Key events (conversions) — the number of signups, trial starts, or whatever conversion you track. This is the only column that matters for ROI.

How to Spot Directories Sending Traffic Without UTMs

If you listed on directories before reading this post, those clicks are showing up as plain referrals. Go to the same Traffic Acquisition report, set the dimension to Session source / medium, and search for referral. You will see rows like betalist.com / referral or producthunt.com / referral.

These are directory clicks that arrived without UTM tags. Go back to those directory profiles and update your URL with the UTM-tagged version. From that point forward, they will appear under the directory medium instead.

Step 3 — Set Up a Conversion Event for Signups and Trials

Tracking signups as a GA4 key event is what separates pageview data from actual ROI measurement. Pageviews from directories are interesting. Signups from directories are what pay the bills. If you are not tracking signups as a key event in GA4, you are missing the most important piece of this puzzle.

Here is the minimum setup:

  1. In GA4, go to Admin > Events
  2. If you already fire a sign_up event (via Google Tag Manager, gtag.js, or your app's analytics code), you will see it listed. If not, create one — the simplest approach is to fire it when a user hits your post-signup "welcome" or "onboarding" page.
  3. Toggle the Mark as key event switch next to the sign_up event
  4. GA4 will now count this event as a conversion and surface it in your Traffic Acquisition report

Once this is active, your Traffic Acquisition report gains a "Key events" column. Filter by directory medium and you can see exactly how many signups came from TheSaaSDir, a curated directory of SaaS and AI products with dofollow backlinks, versus BetaList versus G2 in any date range.

Connecting UTM Source to Conversion

This is where the real insight lives. In the Traffic Acquisition report with directory medium filtered:

  • thesaasdir / directory — 45 sessions — 3 signups
  • g2 / directory — 120 sessions — 2 signups
  • betalist / directory — 30 sessions — 0 signups

Now you know that TheSaaSDir converted at 6.7% while G2 converted at 1.7%. The directory sending fewer sessions is sending better-qualified traffic. This kind of comparison is impossible without both UTMs and a conversion event.

If You Use Stripe

For SaaS products with a trial-to-paid funnel, the real question is not "who signed up" but "who paid." If your app stores the UTM source at signup time — save the utm_source query param to the user record in Django, Rails, Next.js, or whatever framework you use — you can cross-reference paying customers in Stripe with their original acquisition source.

A simple query: pull all customers who converted from trial to paid in the last 90 days, check their utm_source value, and group by directory. This gives you actual revenue attribution, not just signup attribution.

Step 4 — Calculate the Actual ROI of Each Listing

The formula for calculating directory listing ROI uses four inputs you should already know from your SaaS metrics:

Directory ROI = (Signups x Trial-to-paid rate x Avg monthly MRR x Customer lifetime in months) - Listing cost

Let's run a worked example with realistic SaaS numbers:

  • Directory: G2 paid listing at $300/year
  • Signups from G2 in 12 months: 24
  • Trial-to-paid conversion rate: 15%
  • Avg MRR per customer: $49
  • Avg customer lifetime: 8 months

Calculation: 24 x 0.15 x $49 x 8 = $1,411.20 in expected lifetime revenue from G2-attributed signups, minus $300 listing cost = $1,111.20 net ROI.

That listing is clearly worth keeping. Now run the same formula for a directory that sent 4 signups in 12 months: 4 x 0.15 x $49 x 8 = $235.20. If that directory charges $200/year, the margin is razor-thin — and you should question whether it is worth renewing.

How to Think About Free Listings Differently

Free listings have a cost of zero dollars, but they cost time. If you spent 20 minutes creating a listing that sends 2 signups per year and your trial-to-paid rate is 15%, that is 0.3 paying customers. At $49 MRR and 8 months average lifetime, that is $117.60 in expected revenue for 20 minutes of work. Worth it.

The bar for free listings is much lower. Keep them unless they send zero traffic for 6+ months, in which case the directory itself is likely dead.

Free listings on SaaS directories that offer dofollow backlinks — like TheSaaSDir — carry additional SEO value that does not show up in your referral traffic at all. More on that below.

Paid Listing Decision Rule

If a paid directory listing has not generated enough attributed signups to cover its cost within 90 days, put it on a watchlist. If it still has not paid back at 180 days, downgrade to a free tier or cancel. The exception is directories with very high domain authority where the backlink itself has measurable SEO value — but even then, ask whether a free listing on that directory would get you the same link.

Step 5 — Build a Simple Directory ROI Dashboard

You do not need a BI tool for this. A Google Sheet updated monthly is enough for most SaaS products under $10K MRR.

Track these columns for each directory, updated on the first of every month:

Directory Type Monthly Cost Sessions (30d) Signups (30d) Paid Conversions (30d) MRR Attributed Backlink Status
TheSaaSDir Free $0 52 4 1 $49 Dofollow
G2 Paid $25 110 2 0 $0 Dofollow
BetaList Free $0 18 0 0 $0 Nofollow

Pull sessions and signups from your GA4 Traffic Acquisition report (filtered by directory medium). Pull paid conversions from Stripe or your app's internal analytics. Backlink status you can check with a free tool like Ahrefs Backlink Checker.

The 30/60/90-Day Review Cadence

  • 30 days: Check if the listing is indexed and sending any traffic. If zero sessions after 30 days, verify the UTM URL is correct and the listing is live.
  • 60 days: Compare directories against each other. Which ones send engaged traffic? Which ones convert? Start shifting attention to winners.
  • 90 days: Run the ROI formula on every paid listing. Cancel underperformers. Double down on directories that convert — consider upgrading to featured or premium placements.

This cadence takes 15 minutes per month. Set a recurring calendar reminder.

The "Dark Value" You Cannot Always Measure

Beyond direct clicks and signups, directory listings generate three types of indirect value that do not appear in your GA4 reports but still affect your bottom line.

SEO backlink value. A dofollow backlink from a directory with decent domain authority tells Google your site is legitimate. This compounds over time — your organic rankings improve gradually, driving traffic that never gets attributed to the directory. TheSaaSDir provides dofollow backlinks on all listings, which means even if direct referral traffic is modest, the SEO value accumulates month over month.

Brand impression value. A buyer evaluating three competing tools sees your product on a directory, does not click through, and then searches your name directly on Google. That visit shows up as "organic" in GA4, but the directory planted the seed. This is especially true on curated directories where being listed is itself a signal of quality.

LLM training data. AI tools like ChatGPT, Claude, and Perplexity crawl directories to build their knowledge of what SaaS products exist. Being listed on well-structured directories increases your chances of being recommended when someone asks an AI "what are the best tools for X." This is a form of value that is nearly impossible to track directly but increasingly important as AI-assisted product discovery grows.

When deciding whether to keep a listing that shows modest direct traffic, factor in these three signals qualitatively. A free listing with a dofollow backlink on a well-maintained directory is worth keeping, even if it sends single-digit sessions per month.

Quick-Start Checklist

Here is the condensed version of everything above. Bookmark this and work through it in one sitting:

  1. Generate UTM-tagged URLs for every directory listing you have (use utm_medium=directory for all of them)
  2. Update your website URL in every directory profile with the UTM-tagged version
  3. Create a tracking spreadsheet with columns for directory name, listing type, cost, UTM URL, and status
  4. In GA4, mark your sign_up event as a key event if you have not already
  5. Wait 30 days, then check your Traffic Acquisition report filtered by directory medium
  6. At 90 days, run the ROI formula on every paid listing and cut the losers
  7. If you are not listed yet, start with SaaS directories that offer dofollow backlinks and free tiers — TheSaaSDir is a good starting point with AI-assisted listing creation that takes under 3 minutes

Frequently Asked Questions

How do I know if a directory listing is driving signups?

Tag the URL in your directory profile with UTM parameters (specifically utm_medium=directory and utm_source=[directoryname]), then set up a sign_up key event in GA4. Once both are in place, the Traffic Acquisition report shows exactly how many signups each directory drove in any date range. Without UTM tags, you can still check the referral source report for the directory's domain, but you will not be able to distinguish free from paid listing traffic or compare directories cleanly.

What UTM parameters should I use for directory listings?

Use three parameters: utm_source set to the directory's name in lowercase with no spaces (e.g., thesaasdir, producthunt, g2), utm_medium always set to directory, and utm_campaign set to either free-listing or paid-listing. This convention lets you filter all directory traffic at once by medium, compare individual directories by source, and separate free from paid performance by campaign. Keep names consistent across your team — inconsistent casing or naming creates duplicate rows in GA4.

How do I see referral traffic from a directory in GA4?

Open GA4 and go to Reports, then Acquisition, then Traffic Acquisition. Change the primary dimension to "Session source / medium." If you used UTM tags, search for directory to see all directory sources. If you did not use UTMs, search for the directory's domain name (e.g., thesaasdir.com) to find it under the referral medium. The report shows sessions, engaged sessions, engagement rate, and key events for each source.

How do I calculate the ROI of a paid directory listing?

Use the formula: (Signups x Trial-to-paid rate x Avg MRR x Avg customer lifetime in months) minus listing cost. For example: 12 signups x 15% conversion x $49 MRR x 8 months = $705.60 in expected revenue. If the listing costs $200/year, your net ROI is $505.60. Run this calculation at the 90-day mark for every paid listing.

Which directory listings are actually sending me traffic?

Check GA4's Traffic Acquisition report filtered by directory medium (if you used UTMs) or by referral source domain (if you did not). This report ranks every directory by sessions, engagement, and conversions. In practice, early-stage SaaS founders find that 2-3 directories out of 15+ send meaningful traffic. The rest either send minimal clicks or provide indirect value through backlinks and brand visibility.

Are free directory listings worth the time?

Yes. A free listing takes 10-20 minutes to create and has zero ongoing cost. Even if it sends only a handful of visitors per year, the expected revenue from those visitors typically exceeds the value of 20 minutes of your time. Free listings on directories with dofollow backlinks deliver compounding SEO value on top of direct traffic. The only free listings not worth keeping are those on directories that have gone offline or are clearly abandoned with no recent updates.

Start Tracking Your Directory Listings Today

Tracking ROI from directory listings is not complicated — it is just a habit most founders never build. The entire system is four moving parts: UTM-tagged URLs, a GA4 key event for signups, a simple spreadsheet, and a 90-day review cycle. An hour of setup now gives you permanent visibility into which directories earn their keep and which ones are dead weight.

If you are looking for a directory that makes this easy, get your product listed on TheSaaSDir. Every listing includes a dofollow backlink, the submission process is AI-assisted and takes under 3 minutes, and you will have a clean UTM source to track from day one.