Fanvue Snapchat Pixel and Conversions API tracking
Fanvue Snapchat CAPI tracking sends Subscribe, Purchase, Sign Up and Page View events from the server, with hashed email and the ScCid click ID, so Snapchat counts every Fanvue conversion even when the browser pixel is blocked.
What you get
Fanvue Snapchat CAPI is a server-side integration built into Fanvue API. It exists so that agencies and creators running Snapchat ads to their Fanvue page can see accurate conversion data even after iOS tracking prevention and ad blockers cut off the browser-only Snap Pixel.
- Server-side Snap Conversions API calls for every subscription, renewal, PPV purchase and tip
- Automatic ScCid capture and 90-day first-party cookie storage on your Fanvue tracking link
- SHA-256 hashed email matching, so raw personal data never reaches Snapchat unhashed
- event_id deduplication shared between the Snap Pixel and the server-side event
How does Fanvue Snapchat CAPI tracking work?
A fan clicks your Snapchat ad and lands on a Fanvue tracking link with a ScCid parameter appended by Snapchat. Fanvue API's landing script stores that click ID in a first-party cookie, then attaches it to the fan record the moment they sign up, subscribe or spend. When that event happens, Fanvue API builds a signed request and posts it to Snapchat's Conversions API endpoint on your behalf, using the same event_id that the client-side Snap Pixel used, so Snapchat's deduplication counts it once.
- Fan clicks a Snapchat ad linking to a Fanvue tracking link carrying ScCid.
- The landing page stores ScCid in a first-party
_scid_fvcookie for 90 days. - The fan subscribes, renews, buys a PPV message or tips on Fanvue.
- Fanvue API hashes the fan's email and builds the Conversions API payload.
- Fanvue API posts the event to Snapchat with the shared event_id for dedup.
Before you start
Have these five things ready before you open the Fanvue API dashboard:
- An active Snapchat Ads account with billing enabled
- A Snap Pixel ID from Snapchat Ads Manager, Events Manager
- A Conversions API access token generated for that pixel
- A Fanvue tracking link for the creator you are running ads for
- A Fanvue API key with the ads-tracking scope enabled
Step-by-step setup
01Create a Snap Pixel
In Snapchat Ads Manager, open Events Manager and create a new Snap Pixel for the ad account you use to promote your Fanvue page. Copy the Pixel ID once it is created.
- Pixel name
- Fanvue - Creator Xyz
- Pixel ID
- a1b2c3d4-0000-1111-2222
- Status
- Active
02Generate a Conversions API token
From Business Settings, generate a Conversions API access token scoped to that pixel. Treat this token like a password, it allows server-side writes to your ad account.
- Token
- scapi_tok_••••••••8f2a
- Scope
- events:write
03Connect in the Fanvue API dashboard
Paste the Pixel ID and Conversions API token into Ads Tracking → Snapchat in the Fanvue API dashboard. Fanvue API stores the token encrypted and never exposes it in client-side code.
04Add your tracking link to Snapchat ads
Use your Fanvue tracking link as the destination URL on every Snapchat ad creative, with the {{ScCid}} macro appended so Snapchat's click ID reaches the landing page.
- Destination URL
- link.apifanvue.com/c/creator_xyz?ScCid={{ScCid}}
05Map Fanvue events to Snapchat events
The default mapping in section 7 below covers most creators. Adjust it in the dashboard if you use custom Fanvue event names.
- New subscription
- SUBSCRIBE
- Renewal / PPV / Tip
- PURCHASE
- Free signup
- SIGN_UP
06Send a test event
Click "Send test event" in the Fanvue API dashboard, then confirm it appears in Snapchat Events Manager's test mode within a minute.
Capture the click ID
Snapchat appends a ScCid parameter to your destination URL. Fanvue API's tracking-link script reads it and stores it in a first-party cookie for 90 days so it survives the gap between the ad click and a later subscription or purchase.
// capture-sccid.ts - run on your Fanvue tracking-link landing page
function captureSnapClickId() {
const params = new URLSearchParams(window.location.search);
const scCid = params.get("ScCid");
if (!scCid) return;
const ninetyDays = 90 * 24 * 60 * 60 * 1000;
const expires = new Date(Date.now() + ninetyDays).toUTCString();
document.cookie = `_scid_fv=${scCid}; expires=${expires}; path=/; SameSite=Lax; Secure`;
}
captureSnapClickId();Event mapping
Fanvue events map to Snapchat's four core event types as follows.
| Fanvue event | Snapchat event | Required / recommended parameters |
|---|---|---|
| Tracking link click | PAGE_VIEW | Recommended: event_source_url, sc_click_id |
| Free follow / signup | SIGN_UP | Required: em (hashed), sc_click_id |
| New subscription | SUBSCRIBE | Required: value, currency, em, event_id |
| Renewal | PURCHASE | Required: value, currency. Recommended: content_ids |
| PPV message purchase | PURCHASE | Required: value, currency. content_ids = ["fanvue:ppv"] |
| Tip | PURCHASE | Required: value, currency. content_ids = ["fanvue:tip"] |
Full payload example
The same conversion can be sent with a raw cURL call, the Fanvue API TypeScript client or a plain Python request. All three produce the same Snapchat Conversions API event.
curl -X POST "https://tr.snapchat.com/v3/PIXEL_ID/events?access_token=SNAP_CAPI_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"data": [
{
"event_name": "SUBSCRIBE",
"event_time": 1699999999,
"action_source": "WEB",
"event_source_url": "https://link.apifanvue.com/c/creator_xyz",
"event_id": "fanvue_sub_abc123",
"user_data": {
"em": ["<sha256(lowercase(trim(email)))>"],
"client_ip_address": "203.0.113.4",
"client_user_agent": "Mozilla/5.0 ...",
"sc_click_id": "<ScCid>"
},
"custom_data": {
"currency": "USD",
"value": 9.99,
"content_ids": ["fanvue:creator_xyz"]
}
}
]
}'Deduplication
If you also run the client-side Snap Pixel on your Fanvue page or bio link, both the browser event and the server event carry the same event_id. Snapchat uses this shared ID to recognize the two as one conversion, so ROAS and conversion counts are not inflated. Generate the event_id once per conversion, for example fanvue_sub_abc123, and pass it to both the pixel call and the server-side event in the same request cycle.
Matching and privacy
Fanvue API only sends hashed personal data to Snapchat. Email addresses are trimmed of whitespace, lowercased, and hashed with SHA-256 before they ever leave Fanvue API's servers. Raw email addresses are never transmitted.
Fields sent with each event: the hashed email (em), the client IP address and user agent for context, and the sc_click_id when a ScCid was captured. Consent is respected end to end: if a fan has not accepted marketing consent under IAB TCF v2.2 or your Consent Mode v2 configuration, Fanvue API withholds the event rather than sending it with degraded identifiers.
Test and verify
Open Events Manager in Snapchat Ads Manager and switch to the pixel's test mode, or request a test_event_code. Send a test event from the Fanvue API dashboard, either through the "Send test event" button on the Snapchat connection page or by including the test code on a real conversion. A good result shows the event listed within Events Manager with status "Received", the correct event name, and the hashed email marked as matched.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Events Manager shows 0 events | Wrong pixel ID or CAPI token in the Fanvue API dashboard | Re-copy the Snap Pixel ID and token from Ads Manager, save, and resend a test event |
| Events arrive but are marked "low match quality" | Missing em, client_ip_address or sc_click_id | Confirm the tracking-link cookie is set and the fan's email is captured before the event fires |
| Duplicate conversions in Ads Manager | Browser pixel and server event use different event_id values | Generate one event_id per conversion and pass it to both the Snap Pixel and the server call |
| 401 Unauthorized from tr.snapchat.com | CAPI token expired or missing scopes | Regenerate the Conversions API token in Business Settings and update it in Fanvue API |
| PURCHASE events missing value | custom_data.value not set on renewals or tips | Always pass value and currency, even for $0 trials, so ROAS reporting stays accurate |
| ScCid not present on landing page | Ad creative link is missing the Snapchat click-ID macro | Add {{ScCid}} to the destination URL template in Snapchat Ads Manager |
| Test events not showing in Events Manager | Wrong or expired test_event_code | Fetch a fresh test_event_code from Events Manager and pass it on the next test send |
Also track on Meta / TikTok / Google Ads
Back to the Fanvue ads tracking overview, or compare plans on Fanvue API pricing.
Frequently asked questions
Ready to build on Fanvue?
Get API keys, docs and MCP access in one click. Free trial, no credit card.