Beyond Likes. Into Sales.
Winfluencer Creator Analytics
App Support Guide
Your complete guide to every feature, tracking methodology, compliance detail, and setup flow within Winfluencer Creator Analytics.
App Overview
Winfluencer Creator Analytics is a Shopify embedded app that tracks influencer-driven traffic through the full e-commerce funnel — from the first click on a tracking link through product views, add-to-cart, checkout, and completed purchase. Each influencer receives a unique tracking link. Revenue and conversion metrics are attributed to individual creators using first-party data only — no cookies, no consent banners required.
| Field | Detail |
|---|---|
| App Name | Winfluencer Creator Analytics |
| App URL | https://app.winfluencer.online |
| Category | Store Management › Operations › Analytics |
| Secondary | Marketing and Conversion › Marketing › Marketing - Other |
| Privacy Policy | https://winfluencer.online/privacy-policy/ |
| API Version | 2026-04 |
| Scopes | read_customer_events, write_pixels, write_themes |
| Embedded | Yes — renders inside Shopify Admin iframe |
| Hosting | Vercel serverless (app.winfluencer.online) |
| Database | NeonDB PostgreSQL (US-East-1) |
Install & Onboarding Flow
The following steps describe the exact experience a merchant goes through from App Store installation to first tracking link — which reviewers should replicate during testing.
read_customer_events, write_pixels, write_themeshttps://app.winfluencer.online/api/authpixelIdwf_influencer_id cart attribute when a visitor arrives via a tracking link. One-time setup.UI Features — Complete Walkthrough
All UI is rendered inside the Shopify Admin embedded iframe using Shopify Polaris components. No external windows or pop-ups are used.
The main dashboard provides a store-wide overview of all influencer-driven performance. It is the first page shown after install.
Conversion Funnel — visual progress-bar funnel showing drop-off at each stage:
Sankey Journey Flow Diagram — a Recharts Sankey diagram showing aggregate multi-touch journey flows between influencers. Node size = influencer; flow width = visitor journey count. Only appears when multi-touch Touchpoint data exists.
Top Influencers Table — top 5 influencers by revenue: Name, Platform, Visitors, Add-to-Cart, Purchases, Revenue, Conversion Rate. Each row links to the influencer profile page.
Responsive 3-column card grid. Each card shows: campaign name, status badge (Active / Ended / Upcoming), date range, influencer count, and 4 metrics — Revenue, Conversion Rate, Visitors, Purchases. Clicking a card navigates to the Campaign Detail page.
| Field | Detail |
|---|---|
| Campaign Name | Required text field |
| Start Date | Optional date picker |
| End Date | Optional date picker |
| Store URL | Base URL for tracking links (defaults to merchant's store homepage) |
| Influencers | Repeatable rows: Influencer Name, @Handle, Platform (TikTok / Instagram / YouTube / Other). One row minimum required. |
wfId: crypto.randomUUID().replace(/-/g,'').slice(0,12) // 12-char hex trackingUrl: storeUrl + '?wf_id=' + wfId // Example: // https://my-store.myshopify.com/products/tee?wf_id=a3f9c12b8e4d
5 metric cards (Revenue, Visitors, Add-to-Cart, Purchases, Conversion Rate) filtered to campaign influencers. Includes:
| Feature | Description |
|---|---|
| Influencer Breakdown Table | Per-influencer stats — Name, Platform, wfId, Tracking URL (Copy button), all funnel metrics, AOV. Each row links to influencer profile. |
| Add Influencer (Inline) | Expands inline form for adding influencers to existing campaigns. Generates new wfId on submission. |
| Campaign Sankey | Journey flow diagram filtered to this campaign's influencers only. |
| Product Intelligence Table | Products, Variant, Price, Carted, Purchased, Cart-to-Buy Rate, Revenue, Signal (High convert / Price friction / Strong intent / Normal). |
The most detailed view in the app. 6 stat cards: Revenue, Purchases, Conversion Rate, AOV, Visitors, Unique Visitors. Includes tracking link copy button.
| Journey Role | Definition |
|---|---|
| Introducer | First touch in the journey — brought the visitor to the brand |
| Influencer | Middle touch — continued engagement during consideration |
| Closer | Last touch before purchase — converted the visitor |
Also shows: Recent Visitor Journeys (last 10, with sequence + outcome badge), 5-stage conversion funnel, Revenue Breakdown sidebar (AOV, Revenue per Visitor, Top Product, Price Friction warning), and full Product Intelligence table.
Tracking System — Technical Deep Dive
Every influencer receives a unique 12-character hex identifier embedded into their tracking link as a URL parameter:
https://my-store.myshopify.com/products/summer-tee?wf_id=a3f9c12b8e4d
| Layer | Mechanism | How It Works | Survives Checkout? |
|---|---|---|---|
| 1 | Cart Attributes | Embed Block writes wf_influencer_id to Shopify cart.attributes on page load | Yes |
| 2 | Pixel localStorage | Web Pixel reads wf_id from URL on every page view, persists via browser.localStorage (Shopify async API) | Yes |
| Property | Value |
|---|---|
| Session ID source | Shopify cart token › checkout token › crypto-generated fallback |
| Session TTL | 30 minutes of inactivity — reset on every pixel event |
| Persistence | browser.localStorage (wf_session_id) + Shopify cart attributes |
| wf_id TTL | 90 days from first touch — attribution window expires after |
| Journey cap | Maximum 20 influencer touches stored per visitor |
| Event Type | Data Captured | Funnel Stage |
|---|---|---|
| page_viewed | Page URL | Top of funnel — traffic |
| product_viewed | Product/variant ID, title, price | Product discovery |
| product_added_to_cart | Product/variant, price, quantity | Purchase intent |
| cart_viewed | Cart total, item count | Cart engagement |
| checkout_started | Line items, subtotal (ex. shipping/tax) | Checkout intent |
| checkout_completed | Line items, order ID, subtotal | Confirmed purchase |
| item_purchased | Single line item: price × quantity | Per-product revenue |
/api/events handler when a checkout_completed event arrives. One item_purchased record is created per line item — enabling per-product revenue breakdowns without requiring the read_orders scope.
The pixel maintains a journey array in localStorage containing every influencer touch for a visitor:
[
{ "wfId": "a3f9c12b8e4d", "ts": 1712000000000 },
{ "wfId": "d7e2b45f9c1a", "ts": 1712010000000 }
]
This array is sent with every pixel event. The /api/events handler creates Touchpoint records for each entry with touchIndex and touchTotal. This powers the Sankey diagram and Introducer/Influencer/Closer role analysis.
Shopify App Store Compliance
| Scope | Justification | Status |
|---|---|---|
| read_customer_events | Required to receive Shopify Analytics pixel events via the Web Pixels API | Pass |
| write_pixels | Required to register and deploy the Custom Web Pixel extension | Pass |
| write_themes | Required to install the App Embed Block into the merchant's active theme | Pass |
| read_orders (NOT requested) | Not needed — revenue computed from pixel events, not Shopify orders | N/A |
| read_customers (NOT requested) | Not needed — no customer PII stored | N/A |
All three mandatory GDPR webhooks are implemented and registered declaratively in shopify.app.toml:
| Webhook | Implementation | Status |
|---|---|---|
| customers/data_request | Logs request, returns 200. No PII stored so nothing to export. | Pass |
| customers/redact | Deletes Order records matching customer's Shopify order IDs. Returns 200. | Pass |
| shop/redact | Immediately deletes Events, Touchpoints, Orders, TeamMembers. Soft-deletes Store (sets deletedAt). Campaign/Influencer data retained 30 days then purged. | Pass |
| Requirement | Implementation | Status |
|---|---|---|
| No PII collected | No customer names, emails, phone numbers, or addresses stored | Pass |
| Anonymous identifiers only | wf_id (brand-created), session ID (cart token or crypto-generated) | Pass |
| Cart attributes classification | wf_influencer_id and wf_session_id are functional data — no consent banner required | Pass |
| No cookie consent required | All tracking uses first-party functional data and Shopify's own analytics infrastructure | Pass |
| No data selling | Privacy policy explicitly states data is not sold, rented, or shared | Pass |
| Data residency disclosed | NeonDB (AWS US-East-1) — stated in privacy policy | Pass |
| 30-day data retention on delete | Soft-delete on uninstall, hard-delete after 30 days | Pass |
| Setting | Value |
|---|---|
| runtime_context | strict — most restrictive sandbox mode |
| analytics | true — required for storefront event subscriptions |
| marketing | true — required for attribution pixel use case |
| sale_of_data | not_enabled — Winfluencer does not sell visitor data |
| Route | URL | Status |
|---|---|---|
| Application URL | https://app.winfluencer.online | Pass |
| Auth Redirect URL | https://app.winfluencer.online/api/auth | Pass |
| App Proxy URL | https://app.winfluencer.online/api | Pass |
| Event Ingestion URL | https://app.winfluencer.online/api/events | Pass |
| No 'shopify' in domain | Custom domain app.winfluencer.online used | Pass |
Test Credentials & Setup Guide
| Field | Detail |
|---|---|
| Shopify Dev Store URL | Provided in the app submission form |
| Admin login email | Provided in the app submission form |
| Admin login password | Provided in the app submission form |
| App install URL | https://app.winfluencer.online |
| Requirement | Implementation | Status |
|---|---|---|
| Authenticates immediately after install | OAuth flow completes and redirects to /app dashboard | Pass |
| Redirects to app UI immediately | After auth, merchant lands on dashboard with no extra steps | Pass |
| Mandatory compliance webhooks | customers/data_request, customers/redact, shop/redact all registered | Pass |
| HMAC webhook verification | All handlers use authenticate.webhook from Shopify SDK | Pass |
| Valid TLS certificate | app.winfluencer.online has valid SSL via Vercel | Pass |
| Embedded app checks | Renders inside Shopify Admin iframe using App Bridge | Pass |
Technical Architecture Summary
| Route | Purpose |
|---|---|
| /webhooks/app/uninstalled | Deletes merchant session on app uninstall |
| /webhooks/app/scopes_update | Updates stored session scopes when app scopes change |
| /webhooks/customers/data_request | GDPR: logs request, returns 200 (no PII stored) |
| /webhooks/customers/redact | GDPR: deletes Order records for the customer |
| /webhooks/shop/redact | GDPR: full data deletion on shop removal (30-day soft delete) |
| Route | Purpose |
|---|---|
| /api/auth | Shopify OAuth entry point |
| /api/auth/callback | Shopify OAuth callback — creates/updates Store record |
| /api/events | Public event ingestion endpoint (POST) — receives pixel events |
| /api/* | App Proxy target — routes storefront API calls |
?wf_id=abc123)wf_id to Shopify cart attributeswf_id, creates session ID, loads journey array from localStoragepage_viewed, product_viewed, checkout_completed…) to /api/eventswf_id, creates Event + Touchpoint records in NeonDBitem_purchased events (expanded from checkout_completed line items). This means no read_orders scope is needed — a deliberate privacy-by-design decision that also avoids Protected Customer Data approval requirements.
— Winfluencer Creator Analytics · App Support Guide · April 2026