Conversion Tracking Across Platforms
Conversion Tracking Across Feature Experimentation and Web Testing
Conversion tracking in a connected Wingify architecture relies on one fundamental requirement:
The same UUID must be used at the time of conversion as was used at the time of bucketing.
If identity is consistent across client and server layers, conversions can be attributed accurately across:
- Feature Experimentation (FE)
- Wingify Web Testing
- Wingify Web Insights
- Offline systems (CRM, POS, backend billing, etc.)
This section explains how conversion tracking works in both FE-first and Client-first architectures, and how offline conversions fit into the model.
Conceptual Flow of a Connected Conversion
Let’s start with a simple system-level example:
- FE SDK evaluates the user.
- Server renders content based on flag decision.
- Browser loads page (SmartCode may also evaluate visual experiments).
- User clicks a “Buy Now” button.
- Conversion event is fired.
- Event is attributed using the same UUID that was used for bucketing.
If UUID continuity is maintained, attribution works across products.
FE-First Conversion Flow
This flow is common in:
- Backend-rendered applications
- Authenticated SaaS products
- API-first architectures
Identity and Rendering
- User request hits the server.
- User ID is passed to FE SDK.
- FE SDK converts the user ID to a UUID and evaluates the feature flag.
- Server sets UUID in cookie.
- Client-side renders UI using this UUID.
sequenceDiagram
participant User
participant Server
participant FE_SDK as Wingify FE SDK
participant Browser
User->>Server: 1. HTTP request
Server->>FE_SDK: 2. User ID is passed to SDK
FE_SDK->>FE_SDK: 3. Convert user ID to UUID and evaluate feature flag
FE_SDK-->>Server: Return decision + UUID
Server->>Browser: 4. Response (Set UUID cookie)
Browser->>Browser: 5. Render UI using UUID
At this point:
- Server-side experiment decision is locked.
- Client-side SmartCode reads the same UUID.
- Identity is unified.
Client-Side-First Conversion Flow
This flow is common in:
- Marketing websites
- Anonymous traffic
- SEO landing pages
- Static web deployments
Identity and Rendering
- SmartCode loads first.
- SmartCode generates a UUID.
- UUID stored in cookie.
- UI renders.
- User action triggers a server call.
- Server reads UUID from cookie.
- Server passes UUID into FE SDK.
- FE evaluates the user based on the client-generated UUID.
sequenceDiagram
participant User
participant Browser
participant SmartCode
participant Server
participant FE_SDK as Wingify FE SDK
User->>Browser: Visit page
Browser->>SmartCode: 1. Load SmartCode
SmartCode->>SmartCode: 2. Generate UUID
SmartCode->>Browser: 3. Store UUID in cookie
Browser->>Browser: 4. Render UI
User->>Browser: 5. Trigger action
Browser->>Server: Request (UUID cookie)
Server->>Server: 6. Read UUID
Server->>FE_SDK: 7. Evaluate using UUID
FE_SDK->>FE_SDK: 8. Evaluate user (reuse UUID)
FE_SDK-->>Server: Evaluation result
Now:
- Client and server are aligned.
- Identity is unified.
Conversion Trigger
Now, assume a button click occurs.
There are three supported ways to track the conversion:
- Client-Side Custom Event API (Web Testing)
- Method 2: FE SDK
trackEventAPI - Offline Conversion Tracking
Method 1: Client-Side Custom Event API (Web Testing)
Conversion is triggered via SmartCode custom event API on the webpage.
Example:
<script>
// Do not change anything in the following two lines
window.VWO = window.VWO || [];
VWO.event = VWO.event || function () {VWO.push(["event"].concat([].slice.call(arguments)))};
// Replace the property values with your actual values
VWO.event("REPLACE_WITH_ACTUAL_EVENT_API_NAME", {
"property1": "<text_value>",
"property2": <number_value>,
});
</script>Use this when:
- Conversion is purely UI-driven
- Marketing or CRO teams manage events
- You want conversion tracked within Web Testing
Since SmartCode is already using the UUID from cookie, attribution remains consistent.
Method 2: FE SDK trackEvent API
Conversion is tracked server-side using FE SDK.
Example (Node.js):
vwoClient.trackEvent('REPLACE_WITH_ACTUAL_EVENT_API_NAME', {
id: uuidFromCookie
});Use this when:
- Conversion is backend-confirmed (e.g., payment success)
- You want authoritative server validation
- You want conversion tied directly to FE experiment logic
Because the same UUID is passed, attribution aligns with earlier bucketing.
Method 3: Offline Conversion Tracking
Conversions may occur outside the web session:
- In-store purchase
- Call-center sale
- CRM lifecycle update
- Subscription upgrade via billing system
If the same UUID is stored in your backend systems, it can be sent later via Wingify Data360 offline conversion APIs.
Reference: How to Track Offline Conversions Using Wingify Data360
Offline conversion tracking works seamlessly in a connected system.
Requirements:
- Store UUID alongside user record (CRM / DB)
- Use same UUID in offline event payload
- Ensure UUID originally used during evaluation
This enables:
- Web experiment attribution
- Feature flag attribution
- Full journey visibility
- Revenue mapping across touchpoints
Note: As long as the UUID matches the one used during evaluation, attribution remains accurate across FE and Web Testing.
Conversion Flow Architecture Diagram
Below is a unified conversion flow showing both evaluation and tracking stages across systems.
sequenceDiagram
participant User
participant Browser
participant SmartCode
participant Server
participant FE_SDK as Wingify FE SDK
participant Wingify
participant Data360 as Offline System
User->>Browser: Visit Page
Browser->>SmartCode: Load SmartCode
SmartCode->>Browser: Generate/Read UUID (cookie)
Browser->>Server: Request (UUID cookie sent)
Server->>FE_SDK: Evaluate flag using UUID
FE_SDK->>Wingify: Fetch config & evaluate
Wingify-->>FE_SDK: Decision
FE_SDK-->>Server: Variation decision
User->>Browser: Click "Buy Now"
alt Client-side conversion
SmartCode->>Wingify: track.customEvent(UUID)
else Server-side conversion
Server->>FE_SDK: trackEvent(UUID)
FE_SDK->>Wingify: Send conversion event
else Offline conversion
Data360->>Wingify: Push conversion(UUID)
end
Note over SmartCode,FE_SDK: Same UUID ensures correct attribution
Critical Requirement: Conversion After Identity Sync
Conversion tracking should only occur after successful visitor synchronization across layers.
If conversion fires:
- Before the UUID is shared,
- Or before the server reuses the client UUID,
- Or before FE SDK evaluation uses the correct identity,
Then attribution may fragment.
Updated 13 days ago