Developer Docs
Features & Configuration
Server-Side Tracking

Server-Side Tracking

Convultra captures conversion data server-side, removing the dependency on browser cookies and client-side pixels. The result is 95--98% tracking accuracy compared to the ~70% industry standard with client-only solutions.

How it works

Visitor arrives with a click ID

When a user clicks an ad, the ad platform appends a click ID to the destination URL as a query parameter. Convultra recognises the following click IDs automatically:

ParameterPlatform
gclidGoogle Ads (standard)
gbraidGoogle Ads (privacy-compliant, iOS/Safari)
wbraidGoogle Ads (privacy-compliant, web campaigns on iOS/Safari)
fbclidMeta / Facebook Ads
msclkidMicrosoft Ads
ttclidTikTok Ads

SDK captures and stores the click ID server-side

The Convultra SDK reads the click ID from the URL on the first pageview and sends it to the Convultra server. The click ID is persisted server-side -- not in a cookie or localStorage.

Because storage is server-side, click IDs survive Safari ITP (7-day cookie limit), cookie blockers, private browsing mode, and browser restarts.

Conversion occurs

When you call a tracking method such as Convultra.trackPurchase(), the SDK sends the conversion event to the Convultra server. The server associates the conversion with the stored click ID automatically.

Conversion forwarded to ad platforms

Convultra forwards the conversion -- including the click ID and any enhanced user data -- to each connected ad platform via their official server-side APIs:

  • Google Ads -- Google Ads API (Conversions)
  • Meta -- Conversions API (CAPI)
  • Microsoft Ads -- Offline Conversions API

Safari ITP and privacy fallbacks

Safari ITP limits first-party cookies to 7 days (or 24 hours in some cases). When ITP strips or prevents gclid storage, Google provides two privacy-compliant alternatives:

  • gbraid -- used for iOS app-related click tracking
  • wbraid -- used for web campaign clicks on iOS/Safari

Convultra captures all three parameters (gclid, gbraid, wbraid) and uses whatever is available. If gclid is present, it takes priority; otherwise gbraid or wbraid is used as the fallback.

What the SDK collects automatically

The SDK captures the following data on every pageview without any additional code:

  • Pageview URL and referrer
  • Click IDs (gclid, gbraid, wbraid, fbclid, msclkid, ttclid)
  • UTM parameters (utm_source, utm_medium, utm_campaign, utm_content, utm_term)
  • Session and visitor identifiers
  • Device, browser, OS, and screen resolution
  • Geolocation (country, region, city -- derived from IP server-side)

SDK performance

MetricValue
Gzipped size~10 KB
Uncompressed size~36 KB
LoadingNon-blocking, async
Render impactZero -- no layout shift, no main-thread blocking

The recommended installation uses a stub + async pattern so that tracking calls are queued immediately and processed once the SDK finishes loading. See Installation for all methods.

No-JavaScript fallback

For visitors who have JavaScript disabled or where the SDK fails to load, Convultra provides a pixel tracking fallback. This is a server-side rendered <img> tag that fires a request to the Convultra API when the page loads.

Pixel tracking captures basic pageview data but cannot track client-side events. See Pixel Tracking for details.

Architecture diagram

Browser                         Convultra Server                  Ad Platforms
───────                         ────────────────                  ────────────
1. User clicks ad
   (URL contains gclid/fbclid)

2. Page loads SDK ──────────→  Stores click ID server-side

3. Convultra.trackPurchase() → /api/v1/track
                                 ├─ Matches click ID ──────────→ Google Ads API
                                 ├─ Enriches with user data ───→ Meta CAPI
                                 └─ Deduplicates ──────────────→ Microsoft Ads API
💡

Server-side forwarding means conversions reach ad platforms even when the visitor's browser blocks third-party requests, cookies, or JavaScript.