Skip to main content
TRACKLAYER · SAAS

Your CAPI for the entire
trial-to-conversion funnel.

Meta, Google, and LinkedIn need conversion signal — but in SaaS the real conversion lives in Stripe Billing or Chargebee three weeks after the click. TrackLayer ingests customer.subscription.* from Stripe and stage-change webhooks from HubSpot, Salesforce, and Pipedrive, translates them to a canonical signup → trial_started → activation_milestone → paid_subscription → expansion taxonomy, and fans them out to every paid channel with LTV RFM segmentation, anomaly auto-pause on delivery drift, and EU/US residency for Pro+ — so your CAC math finally clears.
14-day trial · no card · LinkedIn CAPI included on Growth+
STRIPE TRACKLAYER AD PLATFORMS ────── ────────── ──────────── customer.subscription.created (trialing) → trial_started → Meta StartTrial · LinkedIn INSTALL · GA4 customer.subscription.created (active) → paid_subscription → Meta Subscribe · LinkedIn PURCHASE (ARR) · Google subscribe_paid customer.subscription.updated (upgrade) → subscription_upgraded → Meta Purchase · LinkedIn PURCHASE (ΔMRR) customer.subscription.deleted → subscription_canceled → GA4 · Klaviyo win-back invoice.payment_succeeded (cycle) → subscription_renewed → Meta Subscribe · LinkedIn PURCHASE
// THE PROBLEM

Your conversion signal is in the wrong system.

Meta and Google know when someone clicks. Your dashboard knows when someone signs up. And Stripe knows — three weeks later, when the trial converts — what your real CAC is. Without a bridge between those three systems, every B2B SaaS marketing team optimizes the wrong number.

Trial CPA is a lie.

You optimise Meta on Trial CPA. Two months in, half your trials never reach the paywall and the rest churn at 60%. Cost-per-paid-customer is 4× what Meta thinks. You don't find out until your CFO ties Stripe MRR to ad spend.

LinkedIn doesn't know what to bid for.

Your highest-value channel is LinkedIn. Without a Conversions API call carrying ARR per account, LinkedIn optimises for PageView and SignUp — which is exactly the wrong audience. Enterprise leads don't sign up; they book demos.

Stripe webhooks are stuck inside Stripe.

customer.subscription.created fires reliably — to your billing system. Forwarding it to Meta, LinkedIn, and Google Ads in real time, with the right event names, hashed user data, and revenue values, is the kind of plumbing that takes a month and breaks every Stripe API version bump.

§ 01

Stripe → TrackLayer → every paid channel.

One webhook URL in your Stripe dashboard. Four canonical events out the other side. Revenue values, hashed identifiers, retry on failure, dedup on event_id.
STEP 01

Stripe webhook

Add https://api.tracklayer.io/v1/integrations/stripe/subscription-events?merchant_id=… to your Stripe dashboard. Subscribe to customer.subscription.* and invoice.payment_succeeded. We verify the signature with the per-merchant secret you set during onboarding.

STEP 02

Translate to taxonomy

customer.subscription.created (trialing) → trial_started. Same event with status=active → paid_subscription. updated with a higher unit_amount → subscription_upgraded. deleted → subscription_canceled. invoice.payment_succeeded with billing_reason=subscription_cycle → subscription_renewed.

STEP 03

Enrich

Pull MRR / ARR from the Stripe Price object. Hash email + name with SHA-256. Match against li_fat_id, fbp/fbc, and gclid captured by the TrackLayer pixel during signup. Build EMQ for every event so platforms don't silently drop them.

STEP 04

Fan out

LinkedIn CAPI: paid_subscription → PURCHASE with conversionValue.amount = ARR. Meta CAPI: Subscribe with currency + value. Google Ads: subscribe_paid with conversion value. Klaviyo: trigger trial-end nurture. Idempotent on event_id, retried 3× on 5xx.

§ 02

Intent data turns anonymous demand into LinkedIn lookalike fuel.

TrackLayer scores the pre-demo buying journey, ranks visitors by account intent, then keeps a LinkedIn seed audience fresh for Pro+ SaaS teams without spreadsheet exports.
INTENT SCORING MODEL
Pricing page visit+5
Docs deep dive+3
Demo form abandon+8
Competitor comparison page+4
Third repeat visit+5

Visitors crossing 15 points are promoted to the high-intent queue, with every signal preserved in the dashboard timeline for sales and demand-gen review.

LinkedIn seed sync

Every day at 09:00 UTC, Pro+ SaaS workspaces send newly qualified high-intent visitors into a dedicated LinkedIn lookalike seed audience. Identity is normalized through TrackLayer's server-side PII hashing pipeline before upload.

Sales-readable timeline

The dashboard ranks visitors by total score and shows the exact path: pricing, docs, demo abandonment, competitor research, and repeat visits. Marketing can see why a visitor entered the seed instead of treating it as a black box.

§ 03

One webhook URL. Stripe sends it; TrackLayer routes it.

The merchant configures the URL once in their Stripe dashboard. Every subscription event flows through TrackLayer, gets translated, and fans out to every connected ad platform. Stripe-Signature is verified on every request.
STRIPE WEBHOOK · INBOUND
POST /v1/integrations/stripe/subscription-events?merchant_id=acme_42
Stripe-Signature: t=1776954960,v1=a8f5...
Content-Type: application/json

{
  "id": "evt_1QbX2jABCDEF",
  "type": "customer.subscription.created",
  "data": {
    "object": {
      "id": "sub_1Qb...",
      "status": "trialing",
      "customer": "cus_NZX1...",
      "items": { "data": [{
        "price": {
          "id": "price_1Qa...",
          "nickname": "Growth Annual",
          "unit_amount": 79900,
          "currency": "usd",
          "recurring": { "interval": "year" }
        }
      }] }
    }
  }
}
Stripe POSTs this to the merchant's webhook URL. Stripe-Signature header is required.
LINKEDIN CAPI · OUTBOUND
POST https://api.linkedin.com/rest/conversionEvents
Authorization: Bearer <merchant_li_token>
LinkedIn-Version: 202501

{
  "conversion": "urn:lla:llaPartnerConversion:9911",
  "conversionHappenedAt": 1776954960000,
  "eventId": "stripe_evt_1QbX2jABCDEF_paid_subscription",
  "conversionValue": {
    "currencyCode": "USD",
    "amount": "799.00"
  },
  "user": {
    "userIds": [
      { "idType": "SHA256_EMAIL",
        "idValue": "9c2edcec5b3..." },
      { "idType": "LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID",
        "idValue": "lifat_..." }
    ]
  }
}
paid_subscription routed to LinkedIn as PURCHASE with conversionValue.amount = ARR for revenue-weighted bidding.
// HOW IT COMPARES

Other tools vs TrackLayer for B2B SaaS.

BASED ON PUBLIC DOCS · 04·2026
CAPABILITYTRACKLAYERSegmentRudderStackCustomer.io
Stripe → LinkedIn CAPI with ARRneeds Functionsneeds transform
HubSpot / Salesforce / Pipedrive stage webhooksnative bridgePersonas ($$$)manual transforms
paid_subscription → LinkedIn PurchasePersonas ($$$)custom
Trial → paid funnel eventscanonical taxonomymanualmanuallifecycle only
activation_milestone forwardingmanualmanualsegments
MRR / ARR auto-extracted from Stripe
Per-merchant Stripe-Signature verifyn/a
Sub-second cron retries on platform 5xxCF Queues + DLQFunctions
Price at 100k events/mo (SaaS)$199 Growth≈ $1,500 Personas≈ $250 Cloud≈ $1,000 Premium
TRACKLAYER
Stripe → LinkedIn CAPI with ARR
HubSpot / Salesforce / Pipedrive stage webhooks
native bridge
paid_subscription → LinkedIn Purchase
Trial → paid funnel events
canonical taxonomy
activation_milestone forwarding
MRR / ARR auto-extracted from Stripe
Per-merchant Stripe-Signature verify
Sub-second cron retries on platform 5xx
CF Queues + DLQ
Price at 100k events/mo (SaaS)
$199 Growth
Segment
Stripe → LinkedIn CAPI with ARR
needs Functions
HubSpot / Salesforce / Pipedrive stage webhooks
Personas ($$$)
paid_subscription → LinkedIn Purchase
Personas ($$$)
Trial → paid funnel events
manual
activation_milestone forwarding
manual
MRR / ARR auto-extracted from Stripe
Per-merchant Stripe-Signature verify
Sub-second cron retries on platform 5xx
Functions
Price at 100k events/mo (SaaS)
≈ $1,500 Personas
RudderStack
Stripe → LinkedIn CAPI with ARR
needs transform
HubSpot / Salesforce / Pipedrive stage webhooks
manual transforms
paid_subscription → LinkedIn Purchase
custom
Trial → paid funnel events
manual
activation_milestone forwarding
manual
MRR / ARR auto-extracted from Stripe
Per-merchant Stripe-Signature verify
Sub-second cron retries on platform 5xx
Price at 100k events/mo (SaaS)
≈ $250 Cloud
Customer.io
Stripe → LinkedIn CAPI with ARR
HubSpot / Salesforce / Pipedrive stage webhooks
paid_subscription → LinkedIn Purchase
Trial → paid funnel events
lifecycle only
activation_milestone forwarding
segments
MRR / ARR auto-extracted from Stripe
Per-merchant Stripe-Signature verify
n/a
Sub-second cron retries on platform 5xx
Price at 100k events/mo (SaaS)
≈ $1,000 Premium
§ 04

Three SaaS scenarios where this changes the spreadsheet.

Real ARR, real CAC, real LinkedIn campaigns. Numbers are representative of a Series A-stage SaaS with $40-80k MRR and a $200/mo blended ACV.
Series A · $50k MRR
halcyon-saas.com
BEFORE

Was bidding LinkedIn on raw signup count. CAC came out to $340. Real CAC (signup → paid) was $1,180.

AFTER

Wired paid_subscription with ARR to LinkedIn CAPI. 21 days later LinkedIn started preferring SMB-tier signups that actually converted. Real CAC dropped to $720 against the same $12k/mo budget.

CAC paid$1,180 → $720−39%
Series A · $80k MRR · Growth-led
northfield-tools.io
BEFORE

Activation rate (signup → first workflow run) sat at 24%. Marketing was ad-firing on signup; paid users were a different cohort entirely.

AFTER

Added activation_milestone fan-out to Klaviyo + LinkedIn audiences. Marketing now segments 'activated last 30d' as a lookalike seed for LinkedIn — match rate 7.4%, 2.1× the baseline conversion.

LinkedIn lookalike CR1.8% → 4.2%+133%
Series B · $220k MRR
atlasflow.app
BEFORE

Renewals weren't getting credited to ad campaigns; multi-year LTV invisible to bidding. Meta optimised for trial signups, not multi-year cohorts.

AFTER

subscription_renewed and subscription_upgraded routed to Meta as Subscribe + Purchase with the MRR delta. Bid optimisation shifted toward ICP cohorts with low churn. Net new ARR up 18% in Q1.

Net new ARR / Q+18%Q1 vs Q4
PLAN COMPATIBILITY

LinkedIn LAL automation is gated to Pro+.

The SaaS solution works on every tier. LinkedIn CAPI remains part of the paid SaaS stack, while automated lookalike seed sync from intent data is reserved for Pro, Pro Operator, and Enterprise workspaces.
Starter$79

Meta CAPI + Google Ads Enhanced Conversions + Klaviyo. Intent signals are visible, but automated LinkedIn seed sync is off.

Scale$249

Adds LinkedIn CAPI, Stripe webhook ingest, MCC mode, multi-touch attribution, and audience compilation.

Pro$499

Turns on daily LinkedIn lookalike seed sync for visitors with intent score above 15, plus higher AI operating limits.

Enterprisecustom

VPC deploy, SLA, custom platform adapters, audit logs in SIEM, and governed regional audience sync.

BUILT FOR SAAS

LTV RFM + anomaly auto-pause + audit chain.

Predict churn with RFM segmentation, pause campaigns automatically when delivery anomalies spike, and maintain full audit chain integrity for SOC2 reviews.

LTV RFM segmentation

Recency, frequency, and monetization scores per subscriber cohort.

Anomaly auto-pause

Auto-detect EMQ drop or delivery drift and pause spend before budget burns.

Audit chain integrity

Every event hashed, signed, and logged for compliance review.

// GET STARTED

Wire Stripe to LinkedIn in under an hour.

No SDK install, no Segment migration, no engineering sprint. Add the webhook URL, paste your LinkedIn token, ship the canonical events. Real revenue values into LinkedIn bidding by tomorrow morning.
$199/MO · 200K EVENTS · LINKEDIN CAPI INCLUDED · NO CARD ON TRIAL

We use essential cookies to keep the site secure and functional. Analytics and third-party tags run only with your consent. See our Cookie Policy.

We use essential cookies to keep the site secure and functional. Analytics and third-party tags run only with your consent. See our Cookie Policy.