SaaS · Google Ads

SaaS Google Ads Conversion Tracking: Close the Loop from Trial to Paid

SaaS companies have a built-in attribution problem. Someone clicks a Google ad, signs up for a free trial, and converts to paid 14 days later during an in-app moment or a sales call. The Google Ads pixel saw the signup. It missed the conversion. ConversionLoop closes that gap by connecting your CRM or billing system to Google Ads offline conversions — so every trial that upgrades, every deal that closes, gets attributed to the ad that started it.

HubSpot
Your CRM
webhook
ConversionLoop
API upload
Google Ads
Ad platform
10-min setupNo code required14-day free trialReal-time upload
10 min
Setup time
<90s
Upload delay
30 day
Attribution window
0
CSV exports needed

Why SaaS Google Ads campaigns optimize on the wrong event

Most SaaS teams track the signup or trial start as their Google Ads conversion. That is the wrong event. The trial is cheap — converting to paid is the outcome that matters. When Smart Bidding optimizes on trial signups, it finds the audience most likely to sign up, not the audience most likely to pay. The fix is sending your actual paid conversion events — subscription created, deal closed, invoice paid — back to Google Ads as offline conversions.

Ad click
GCLID assigned
Landing page visit
GCLID captured by cl.js
Booking made
Patient books through Pabau
Invoice paid
Without CL — Google sees nothing
Invoice paid
With ConversionLoop — conversion uploaded

ConversionLoop vs. manual CSV upload

Why the manual process breaks — and what changes when you automate it

Feature
Manual / No tool
ConversionLoop
Conversion signal quality
Trial signups — low intent
Paid subscriptions — real revenue
Attribution window
7-day pixel window (misses most)
30-day offline window
CRM to Google Ads sync
Manual CSV or no sync
Real-time webhook, under 90 seconds
Stripe integration
Custom dev work
Native connector, 5 minutes
Value-based bidding
Not possible without revenue data
MRR passed automatically
Developer required
Yes for any custom flow
No — fully no-code

How the SaaS conversion loop works

ConversionLoop captures the GCLID at the top of the funnel and waits for your billing or CRM system to confirm the real conversion.

1

User clicks your Google ad. cl.js captures and stores the GCLID against their email.

2

User signs up for a free trial. Email is linked to the click.

3

14 days later, the user upgrades — Stripe fires a payment.succeeded webhook.

4

ConversionLoop matches the Stripe event to the original GCLID via stored email.

5

The subscription conversion is uploaded to Google Ads with the MRR value.

6

Smart Bidding now optimizes toward audiences that actually pay — not just audiences that sign up.

Ready to connect HubSpot?

14-day free trial. No credit card. Setup takes 10 minutes.

Start free trial

Step-by-step: Connect HubSpot to Google Ads

Follow these steps once. Everything after is automatic.

1
Add cl.js to your marketing site
One script tag captures the GCLID on ad landing. Works with Next.js, React, Webflow, or any stack. Or drop it in GTM.
2
Connect Stripe or your CRM
Add a Stripe webhook for payment.succeeded or a HubSpot workflow on Deal Closed Won. Paste your ConversionLoop endpoint URL.
3
Configure Google Ads destination
Enter your Customer ID and the conversion action name. Set the action type to Import from clicks in Google Ads.
4
Map your conversion value
Pass MRR or LTV from the Stripe charge amount. Google Ads uses this for Target ROAS bidding.
5
Verify and activate
Test event flows through the pipeline. Confirm it appears in Google Ads conversion diagnostics. Go live.

HubSpot events worth tracking

Trial Started

Top-of-funnel signal. Useful for volume, but not for value-based bidding.

Trial Converted to Paid

Primary conversion event. Upload from Stripe or billing system with MRR value.

MQL Created

CRM event when a lead hits your marketing qualified threshold.

Deal Closed Won

For product-led growth with a sales assist layer. Upload from HubSpot or Salesforce.

Annual Upgrade

High-LTV event. Uploading these helps ROAS bidding find expansion-ready accounts.

Key takeaways

  • 1Google Ads pixel only sees the trial signup — not the subscription activation that happens inside your app.
  • 2Optimizing on signups instead of paid conversions inflates CPA and misaligns Smart Bidding.
  • 3ConversionLoop sends trial-to-paid conversion events from Stripe or your CRM to Google Ads in real time.
  • 4Works with HubSpot, Salesforce, GoHighLevel, and any billing system that fires a webhook.
  • 5Once real conversion data flows in, Smart Bidding can reduce cost per paying customer by 30-50%.

Frequently asked questions

What if my trial-to-paid window is longer than 30 days?

Google Ads supports up to a 90-day offline conversion attribution window. Set your conversion action window to 90 days in Google Ads to capture longer sales cycles. ConversionLoop uploads within seconds of the conversion — the window is controlled in Google Ads settings.

Can I track monthly and annual subscriptions as different conversion actions?

Yes. Create two separate conversion actions in Google Ads (one for monthly, one for annual) and map them separately in ConversionLoop. Annual subscriptions typically warrant a higher target ROAS given the LTV difference.

Does this work for product-led growth with no sales team?

Yes. If users upgrade themselves in-app, Stripe fires the webhook. ConversionLoop uploads it to Google Ads. No sales involvement needed.

HubSpot
Your CRM
webhook
ConversionLoop
API upload
Google Ads
Ad platform

Connect HubSpot to Google Ads today

Stop optimizing on guesswork. Every invoice, treatment, and booking — tracked and attributed automatically.

Start free — 14 days on us

No credit card required · 10-minute setup · Cancel anytime