Two Gumroad products on one marketing domain without blended metrics

Path prefixes, product ids, and UTMs so each offer gets its own traffic-to-sales story.

All guides on this topic: Gumroad & Lemon sellers

You launched a Notion template in 2024 and a video course in 2026 on the same site. Site-wide visits per sale looks fine while the course starves, because template traffic dilutes the ratio.

Part of digital product guides. See the traffic-to-sales guide.

Path prefixes as product boundaries

/templates/* vs /course/*, landing reports split automatically if first path segment is stored. Home page traffic stays shared; deep links attribute to product line.

Webhook product_id is ground truth

UTMs lie when people share links. Revenue row product_id from Gumroad/Lemon wins arguments. Filter visitors by sessions that viewed /course before sale when sample allows.

Separate launch pins

Course launch week pins do not include template Black Friday pin. Calendar labels: course-ph-2026, templates-bf-2025.

Cross-sell banners

Site-wide banner to course from template buyers inflates course traffic with warm audience, good for sales, bad for cold ratio benchmarks. Tag utm_content=template-banner.

Pricing page with two buttons

Two checkout URLs, two utm_content values (buy-template, buy-course). Single page, dual CTA, never one untagged button.

Email segmentation

Same domain, different lists, use utm_content=list-course vs list-template on otherwise identical campaigns.

SEO cannibalization

Two products competing for “Notion productivity” keywords blend organic landers. Accept blended SEO or split subdomains course.brand.com for clean acquisition metrics.

Worked split

28d: Template 3k visits, 30 sales, ratio 100. Course 800 visits, 8 sales, ratio 100, parallel efficiency, different scale. Invest marginal hour in course distribution, not template tweaks.

Stripe SaaS third product

If you also run SaaS on /app, exclude /app from digital product ratio entirely, different Stripe attribution.

Hub

/blog/topics/digital-product-analytics

One domain does not mean one metric. Split paths, split webhooks, split pins, then decide where growth actually lives.

Home page as shared lobby

/ traffic serves both products via nav links. Site-wide ratio hides which product home actually feeds. Use session paths: after landing on /, did the user view /course or /templates before sale? Path prefix reports in path funnels answer that without a second domain.

Gumroad vs Lemon per product

You might sell templates on Gumroad and course on Lemon after a migration. Revenue rows need provider + product_id. UTMs on template ads must not be read when reviewing course ratio. Maintain a product catalog table in your head: id, path prefix, checkout provider, primary utm_content for CTAs.

Black Friday vs course launch collision

Calendar collisions blend pins unless you label aggressively. templates-bf-2025 and course-ph-2026 should never share one “November pin.” Marketing pulse exists so you remember which offer was live when ratio moved.

Navigation and cannibalization

Dropdown “Products” with equal weight sends half-interested visitors to both lines. If course is the growth bet, hero CTA should point to /course with utm_content=home-hero-course, measure before redesigning template pages that already work.

SEO landing on wrong product

A blog post ranks for a keyword that fits templates while you push course. Organic ratio for course looks starving; template looks fat. Options: new post for course intent, or accept SEO split and judge paid channels separately. RPV by landing page mindset applies per product line.

Email list single domain, two offers

Same Beehiiv list, two products, segment or tag utm_content per CTA block. “P.S. course link” without tags attributes revenue to whatever campaign wrapper you used, usually wrong. One email, two tagged buttons: buy-template and buy-course.

Webhook reconciliation across SKUs

Sunday reconciliation: sum sales per product_id, sum visitors per path prefix, compute ratio per line. If sums do not match Gumroad dashboard, check timezone boundaries (UTC vs local) before blaming analytics.

Worked migration scenario

You moved course from Gumroad to Lemon mid-year. Pin course-lemon-migration-week separately; ratios before and after are not comparable without footnote. Keep old product_id mapping in webhook handler comments.

When to split domains

Subdomain course.brand.com costs DNS and branding complexity but buys clean acquisition metrics. Stay on one domain while learning; split when course revenue justifies separate SEO and ratio targets, often past $3k/month on the secondary line.

Cross-sell without lying to ratio

Template buyers see course banner, warm traffic. Cold ratio benchmarks should exclude sessions with utm_content=template-banner or path /templates in the same session before course sale. Otherwise course looks efficient when it is mostly upsell.

Dashboard rows to maintain

ProductPath prefixproduct_idPrimary campaign prefix
Templates/templatesgum_xxxtpl-
Course/courselemon_yyycourse-

Update the table when SKUs change.

Related guides

Honest limit

Webhook knows SKU; it rarely knows which blog paragraph sold course vs template unless UTMs and paths align. Qualitative reader surveys still help on top of split ratios.

Analytics site_id or property split

If your stack supports multiple site_id values on one tracker, assign template vs course, optional advanced pattern. Path prefix splitting is usually enough until revenue exceeds comfort zone.

Footer link equality problem

Footer listing both products equally sends low-intent clicks to both. Footer is navigation, not growth, exclude footer-only sessions from cold ratio benchmarks if you can identify entry path / + immediate footer click pattern.

Partner bundles

Selling bundle SKU on Gumroad combining template + course blends product_id, avoid bundles in analytics learning phase or split revenue manually in spreadsheet until webhook exposes line items.

Trademark and brand search

One brand, two products, branded Google queries land on home. Use Search Console queries to see which product name rises; align hero CTA seasonally.

Sunset a product line

When retiring templates, keep path prefix in analytics history. Pin template-sunset-2026 so course ratio is not compared to template-inclusive baseline.

Support tickets by product

Tag Intercom or help desk by product line. Course tickets rising while template sales flat suggests course quality issue masquerading as marketing problem.

Pricing parity mistakes

Accidentally linking course checkout on template pricing page, webhook product_id catches error; ratio looks like template traffic bought course. QA monthly.

Affiliate links per product

Different affiliates per line need different default utm_content in affiliate dashboard. Document in affiliate onboarding PDF.

Roadmap communication

Public roadmap mentioning course delays should not tank template ratio, unless you redirected all traffic to waitlist. Pin comms weeks separately.

Worked annual plan

Q1 template PH, Q3 course launch, two pins, never one “year pin.” Annual review compares each pin to its own baseline.

Final sanity question

“If I killed course tomorrow, would template ratio improve?” If yes, course traffic was diluting denominator, split was necessary. If no, course was invisible on site, navigation problem.

Hub

Digital product analytics

Before the next launch, open your product catalog table and confirm every CTA on the site maps to one row, five minutes that prevent a week of blended-ratio confusion.

Webhook test purchases per SKU

Run one test buy per product_id after any pricing change, confirms revenue rows land in the correct product bucket before you spend on ads aimed at the wrong offer. That single habit prevents the most embarrassing blended-ratio postmortems.

More on this topic