### Purchase Started Event Example
Source: https://funnelfox.com/docs/integrations/analytics/mixpanel
This JSON object illustrates a 'purchase_started' event. It captures similar user and device context as other events, along with details relevant to the initiation of a purchase.
```json
{
"event": "purchase_started",
"properties": {
"time": 1764157968.403,
"distinct_id": "01KB004A83JZZ5C72XR8PYXC79",
"$browser": "Chrome",
"$browser_version": 142,
"$city": "Podgorica",
"$current_url": "https://app.funnelfox.com/preview/01K3GQH43MCTKFTJSY4Z6906AV/main/wj1ya9nv?vid=1764157909461_69&fpid=01KB004A83JZZ5C72XR8PYXC79&fsid=01KB004A83GDRTNZS2R11A339M",
"$device_id": "19abfc55ad8511-029397ae0b42e38-26061b51-144000-19abfc55ad8511",
"$identity_failure_reason": "errAnonDistinctIdAssignedAlready",
"$initial_referrer": "https://app.funnelfox.com/funnels/01K4W2T6AVB1A17C8SK7RBQDHC/editor/main?type=default&tab=screens&screen=y9Nk1CAE&config=screen-config&mode=canvas",
"$initial_referring_domain": "app.funnelfox.com",
"$insert_id": "01KB004M0JMA6VKM1V7NVTZZFW",
"$lib_version": "2.59.0",
"$mp_api_endpoint": "api.mixpanel.com",
"$mp_api_timestamp_ms": 1764157969309,
"$os": "Windows",
"$referrer": "https://app.funnelfox.com/funnels/01K3GQH43MCTKFTJSY4Z6906AV/editor/main?type=default&tab=screens&screen=QbfqbhE9&config=screen-config&mode=canvas&element=el_pUOS0",
"$referring_domain": "app.funnelfox.com",
"$region": "Podgorica",
"$screen_height": 864,
"$screen_width": 1536,
"$user_id": "01KB004A83JZZ5C72XR8PYXC79",
"currency": "USD",
"mp_country_code": "ME",
"mp_lib": "web",
"mp_processing_time_ms": 1764157971125,
"mp_sent_by_lib_version": "2.59.0",
"onboarding": "demo-app",
"payment_method": "paypal",
"payment_provider": "stripe",
"price": 1,
"price_fact": 1,
"product_id": "price_1SXIsO3Yhl9rcCZfMTp4Sx54",
"sandbox": true,
"vendor_price_id": "price_1SXIsO3Yhl9rcCZfMTp4Sx54",
"vendor_product_id": "prod_TUH4pRlAcHxBWr",
"vendor_profile_id": ""
}
}
```
--------------------------------
### Example onboarding_started Event
Source: https://funnelfox.com/docs/integrations/analytics/posthog
This JSON object represents an example of the 'onboarding_started' event captured by PostHog. It includes detailed properties about the user's session, device, and environment.
```json
{
"uuid": "019bb799-c985-7405-bade-1f8209fb172c",
"event": "onboarding_started",
"properties": {
"$window_id": "019bb799-b36d-753d-9f86-6375561c2009",
"$lib_rate_limit_remaining_tokens": 99,
"$device_type": "Desktop",
"$session_recording_network_payload_capture": {
"capturePerformance": {
"network_timing": true,
"web_vitals": true,
"web_vitals_allowed_metrics": null
}
},
"$raw_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",
"$screen_width": 1536,
"$insert_id": "71pvpxb6dr32dj4q",
"$replay_script_config": {
"script": "posthog-recorder"
},
"$timezone": "Europe/Budapest",
"$exception_capture_enabled_server_side": false,
"$web_vitals_allowed_metrics": null,
"$recording_status": "disabled",
"$os": "Windows",
"$pathname": "/preview/01K3GQH43MCTKFTJSY4Z6906AV/main/QbfqbhE9",
"$lib_version": "1.194.2",
"$feature_flag_payloads": {},
"token": "",
"sandbox": true,
"$current_url": "https://app.funnelfox.com/preview/01K3GQH43MCTKFTJSY4Z6906AV/main/QbfqbhE9?vid=1768311833907_157&fpid=01KEVSKCPADAGPYRQQJBFT2PDA&fsid=01KEVSKCPA28HKFC3GY4VVZ9C9",
"$browser_language_prefix": "en",
"$screen_height": 864,
"$lib": "web",
"$browser_version": 143,
"$web_vitals_enabled_server_side": true,
"$session_id": "019bb799-b36d-753d-9f86-637459f42d50",
"$initial_person_info": {
"r": "https://app.funnelfox.com/funnels/01K3GQH43MCTKFTJSY4Z6906AV/editor/main?type=default&tab=screens&element=el_vt2Mw&screen=QbfqbhE9&config=screen-config&mode=canvas",
"u": "https://app.funnelfox.com/preview/01K3GQH43MCTKFTJSY4Z6906AV/main/QbfqbhE9?vid=1768311833907_157&fpid=01KEVSKCPADAGPYRQQJBFT2PDA&fsid=01KEVSKCPA28HKFC3GY4VVZ9C9"
},
"$user_id": "01KEVSKCPADAGPYRQQJBFT2PDA",
"$console_log_recording_enabled_server_side": true,
"$session_recording_canvas_recording": {},
"$referrer": "https://app.funnelfox.com/funnels/01K3GQH43MCTKFTJSY4Z6906AV/editor/main?type=default&tab=screens&element=el_vt2Mw&screen=QbfqbhE9&config=screen-config&mode=canvas",
"$is_identified": true,
"onboarding": "demo-app",
"$os_version": "10",
"$viewport_height": 752,
"$device_id": "019bb799-b36e-7a8f-ac52-e04de9053f8d",
"$browser_language": "en-US",
"$referring_domain": "app.funnelfox.com",
"$host": "app.funnelfox.com",
"$configured_session_timeout_ms": 1800000,
"$time": 1768311867.781,
"distinct_id": "01KEVSKCPADAGPYRQQJBFT2PDA",
"$dead_clicks_enabled_server_side": false,
"$autocapture_disabled_server_side": false,
"$active_feature_flags": [],
"$browser": "Chrome",
"$viewport_width": 398,
"$replay_sample_rate": null,
"$replay_minimum_duration": null
},
"timestamp": "2026-01-13T13:44:27.852000Z",
"team_id": 274461,
"distinct_id": "01KEVSKCPADAGPYRQQJBFT2PDA",
"elements_chain": "",
"created_at": "2026-01-13T13:44:33.708000Z",
"person_mode": "full"
}
```
--------------------------------
### PayPal Subscription Plan Configuration Example
Source: https://funnelfox.com/docs/integrations/payments/paypal
Example parameters for creating a subscription plan in the PayPal Dashboard. This includes plan name, price, and billing cycle.
```text
Plan Name: Premium Monthly
Price: $19.99/month
Billing Cycle: Monthly
Trial: Optional (set days and price)
Setup Fee: Optional
```
--------------------------------
### Progressive Messaging Example
Source: https://funnelfox.com/docs/elements/loader
This example shows how to change the loader's message at different progress milestones to maintain engagement.
```text
0-33%: "Analyzing your profile..."
34-66%: "Matching preferences..."
67-100%: "Preparing results..."
```
--------------------------------
### Onboarding Started Webhook
Source: https://funnelfox.com/docs/api-reference/webhook-reference/onboardingstarted
This webhook is triggered when a user starts the onboarding process. It can be used to initiate follow-up actions or track user engagement.
```APIDOC
## Webhook: onboarding.started
### Description
This webhook is triggered when a user starts the onboarding process. It can be used to initiate follow-up actions or track user engagement.
### Method
POST
### Endpoint
/webhooks/onboarding/started
### Request Body
This webhook does not have a request body. The event details are sent in the response.
### Response
#### Success Response (200)
- **event_type** (string) - The type of the event, which will be "onboarding.started".
- **data** (object) - An object containing the details of the onboarding start event.
- **user_id** (string) - The unique identifier of the user who started onboarding.
- **timestamp** (string) - The time at which the onboarding started, in ISO 8601 format.
#### Response Example
```json
{
"event_type": "onboarding.started",
"data": {
"user_id": "usr_123abc",
"timestamp": "2023-10-27T10:00:00Z"
}
}
```
```
--------------------------------
### Install FunnelFox Billing SDK via NPM
Source: https://funnelfox.com/docs/develop/web-sdk-quickstart
Install the FunnelFox Billing SDK and Primer's checkout library using npm.
```bash
npm install @funnelfox/billing @primer-io/checkout-web
```
--------------------------------
### Objection Dissolver FAQ Examples
Source: https://funnelfox.com/docs/elements/faq
Use these examples to address common purchase barriers and build confidence in potential customers.
```text
Q: "Is there a money-back guarantee?"
A: "Yes! 30-day full refund, no questions asked."
Q: "What if I don't have time?"
A: "Just 15 minutes a day. Fits any schedule."
Q: "Will this work for beginners?"
A: "Absolutely! We start from zero."
```
--------------------------------
### URL Parameter Condition Example
Source: https://funnelfox.com/docs/elements/overview
This example demonstrates how to set up a condition to show an element when a specific URL parameter is present. The condition checks if the 'utm_campaign' parameter contains the value 'promo'.
```text
URL: funnel.com?utm_campaign=promo
Condition: ?utm_campaign contains "promo"
Result: Element shows
```
--------------------------------
### Example Events Data
Source: https://funnelfox.com/docs/integrations/analytics/posthog
This snippet shows the structure of example event data, including initial and current URL, UTM parameters, referrer, browser, device, OS, and screen dimensions. It also includes geoIP information and a timestamp.
```json
{
"$initial_current_url": "https://app.funnelfox.com/preview/01K3GQH43MCTKFTJSY4Z6906AV/main/QbfqbhE9?vid=1768311833907_157&fpid=01KEVSKCPADAGPYRQQJBFT2PDA&fsid=01KEVSKCPADAGPYRQQJBFT2PDA",
"$initial_utm_medium": null,
"$initial_fbclid": null,
"$initial_referrer": "https://app.funnelfox.com/funnels/01K3GQH43MCTKFTJSY4Z6906AV/editor/main?type=default&tab=screens&element=el_vt2Mw&screen=QbfqbhE9&config=screen-config&mode=canvas",
"$initial_host": "app.funnelfox.com",
"$initial_browser": "Chrome",
"$initial_browser_version": 143,
"$initial_device_type": "Desktop",
"$initial_os": "Windows",
"$initial_os_version": "10",
"$initial_screen_height": 864,
"$initial_screen_width": 1536,
"$initial_viewport_height": 752,
"$initial_viewport_width": 398,
"$initial_raw_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
},
"$ip": "",
"$sent_at": "2026-01-13T13:45:47.135Z",
"$set": {
"$geoip_city_name": "Gijón",
"$geoip_city_confidence": null,
"$geoip_subdivision_2_name": "Asturias",
"$geoip_subdivision_2_code": "O",
"$geoip_subdivision_1_name": "Principality of Asturias",
"$geoip_subdivision_1_code": "AS",
"$geoip_country_name": "Spain",
"$geoip_country_code": "ES",
"$geoip_continent_name": "Europe",
"$geoip_continent_code": "EU",
"$geoip_postal_code": "33204",
"$geoip_latitude": 43.5381,
"$geoip_longitude": -5.6604,
"$geoip_accuracy_radius": 20,
"$geoip_time_zone": "Europe/Madrid",
"$browser": "Chrome",
"$browser_version": 143,
"$device_type": "Desktop",
"$current_url": "https://app.funnelfox.com/preview/01K3GQH43MCTKFTJSY4Z6906AV/main/3uy7vijw?vid=1768311833907_157&fpid=01KEVSKCPADAGPYRQQJBFT2PDA&fsid=01KEVSKCPADAGPYRQQJBFT2PDA",
"$pathname": "/preview/01K3GQH43MCTKFTJSY4Z6906AV/main/3uy7vijw",
"$os": "Windows",
"$os_version": "10",
"$referring_domain": "app.funnelfox.com",
"$referrer": "https://app.funnelfox.com/funnels/01K3GQH43MCTKFTJSY4Z6906AV/editor/main?type=default&tab=screens&element=el_vt2Mw&screen=QbfqbhE9&config=screen-config&mode=canvas",
"$screen_height": 864,
"$screen_width": 1536,
"$viewport_height": 752,
"$viewport_width": 398,
"$raw_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
},
"$geoip_city_name": "Gijón",
"$geoip_country_name": "Spain",
"$geoip_country_code": "ES",
"$geoip_continent_name": "Europe",
"$geoip_continent_code": "EU",
"$geoip_postal_code": "33204",
"$geoip_latitude": 43.5381,
"$geoip_longitude": -5.6604,
"$geoip_accuracy_radius": 20,
"$geoip_time_zone": "Europe/Madrid",
"$geoip_subdivision_1_code": "AS",
"$geoip_subdivision_1_name": "Principality of Asturias",
"$geoip_subdivision_2_code": "O",
"$geoip_subdivision_2_name": "Asturias",
"$transformations_succeeded": [
"GeoIP (019b69c8-3970-0000-a854-45b85b1ff3fd)"
],
"$has_recording": false
},
"timestamp": "2026-01-13T13:45:44.918000Z",
"team_id": 274461,
"distinct_id": "01KEVSKCPADAGPYRQQJBFT2PDA",
"elements_chain": "",
"created_at": "2026-01-13T13:45:51.320000Z",
"person_mode": "full"
}
```
--------------------------------
### New Subscription: Conversion Webhook Example
Source: https://funnelfox.com/docs/billing/subscription-migration-billing
This JSON illustrates the webhook payload for a new subscription that has been converted during a migration. It shows the active status and billing details of the newly started subscription.
```json
{
"event_timestamp": "2025-12-19T11:00:00.766550",
"event_type": "subscription",
"subtype": "convertion",
// ... other fields
},
"subscription": {
"subs_id": "73d520ae-42ff-4c52-877a-fa4a82534699",
"status": ["RECURRING"],
"is_active": true,
"started_at": "2025-12-19T11:00:00.759873",
"current_period_starts_at": "2025-12-19T11:00:00.759873",
"current_period_ends_at": "2025-12-20T11:00:00.759873",
"next_check_at": "2025-12-20T09:00:00.759873",
"price_point": {
"ident": "short_no_trial_migrate",
"next_price": "5",
"next_period": 1,
"next_period_duration": "days"
// ... other fields
}
}
```
--------------------------------
### onboarding_started Event Example
Source: https://funnelfox.com/docs/integrations/analytics/mixpanel
This JSON object represents an 'onboarding_started' event. It includes standard event properties and specific details about the user's session and device.
```json
{
"event": "onboarding_started",
"properties": {
"time": 1764157641.846,
"distinct_id": "01KAZZTK8TEF1QTRVVHAN2TNY5",
"$city": "Podgorica",
"$device_id": "19abfc55ad8511-029397ae0b42e38-26061b51-144000-19abfc55ad8511",
"$identity_failure_reason": "errAnonDistinctIdAssignedAlready",
"$insert_id": "01KAZZTNZMKKWZKG6TN3JY2N4M",
"$lib_version": "v1.2.0",
"$mp_api_endpoint": "api.mixpanel.com",
"$mp_api_timestamp_ms": 1764157641846,
"$region": "Podgorica",
"$user_id": "01KAZZTK8TEF1QTRVVHAN2TNY5",
"mp_country_code": "ME",
"mp_lib": "go",
"mp_processing_time_ms": 1764157641990
}
}
```
--------------------------------
### Track Custom Event Example
Source: https://funnelfox.com/docs/editor/coding
An example of tracking a 'QuizCompleted' event, including the user's quiz score.
```javascript
fox.trackCustom('QuizCompleted', {
score: fox.inputs.get('quiz-score')
})
```
--------------------------------
### Sequential Loaders Example
Source: https://funnelfox.com/docs/elements/loader
Demonstrates how to use multiple loaders in sequence to provide a comprehensive process feeling for the user.
```text
Multiple loaders in sequence:
1. "Analyzing profile..." ✓
2. "Checking availability..." ✓
3. "Applying discounts..." ✓
Result: Comprehensive process feeling
```
--------------------------------
### Loader with Timer Example
Source: https://funnelfox.com/docs/elements/loader
Shows how to combine a loader with a timer to create a sense of urgency after a user has made an investment.
```text
Loader: "Reserving your spot..."
Result page: "Spot reserved for {{timer}}"
Creates urgency after investment
```
--------------------------------
### Quiz Start Form Structure
Source: https://funnelfox.com/docs/elements/textinput
A simple form structure to start a quiz, asking for the user's name and capitalizing it.
```text
"First, what's your name?"
Input: Text
Placeholder: "John"
Transform: Capitalize
Next page: "Nice to meet you, {{name}}"
```
--------------------------------
### Processing Element: Technical Feel Messaging Examples
Source: https://funnelfox.com/docs/elements/processing
Provides examples of technical-sounding labels for the Processing element to create a sophisticated impression.
```text
"Initializing algorithm..."
"Processing data points..."
"Running optimization..."
"Generating results..."
```
--------------------------------
### Example Event: second_screen_presented
Source: https://funnelfox.com/docs/integrations/analytics/mixpanel
This JSON object logs the 'second_screen_presented' event, detailing user session information, browser, OS, and current URL for the 'demo-app' onboarding.
```json
{
"event": "second_screen_presented",
"properties": {
"time": 1764157962.624,
"distinct_id": "01KB004A83JZZ5C72XR8PYXC79",
"$browser": "Chrome",
"$browser_version": 142,
"$city": "Podgorica",
"$current_url": "https://app.funnelfox.com/preview/01K3GQH43MCTKFTJSY4Z6906AV/main/wj1ya9nv?vid=1764157909461_69&fpid=01KB004A83JZZ5C72XR8PYXC79&fsid=01KB004A83GDRTNZS2R11A339M",
"$device_id": "19abfc55ad8511-029397ae0b42e38-26061b51-144000-19abfc55ad8511",
"$identity_failure_reason": "errAnonDistinctIdAssignedAlready",
"$initial_referrer": "https://app.funnelfox.com/funnels/01K4W2T6AVB1A17C8SK7RBQDHC/editor/main?type=default&tab=screens&screen=y9Nk1CAE&config=screen-config&mode=canvas",
"$initial_referring_domain": "app.funnelfox.com",
"$insert_id": "01KB004EBH4MF0Q5KECJKPD238",
"$lib_version": "2.59.0",
"$mp_api_endpoint": "api.mixpanel.com",
"$mp_api_timestamp_ms": 1764157964057,
"$os": "Windows",
"$referrer": "https://app.funnelfox.com/funnels/01K3GQH43MCTKFTJSY4Z6906AV/editor/main?type=default&tab=screens&screen=QbfqbhE9&config=screen-config&mode=canvas&element=el_pUOS0",
"$referring_domain": "app.funnelfox.com",
"$region": "Podgorica",
"$screen_height": 864,
"$screen_width": 1536,
"$user_id": "01KB004A83JZZ5C72XR8PYXC79",
"mp_country_code": "ME",
"mp_lib": "web",
"mp_processing_time_ms": 1764157971110,
"mp_sent_by_lib_version": "2.59.0",
"onboarding": "demo-app",
"sandbox": true,
"screen_cid": "wj1YA9nv",
"screen_id": "wj1YA9nv",
"screen_index": 1
}
}
```
--------------------------------
### Example Event: products_screen_presented
Source: https://funnelfox.com/docs/integrations/analytics/mixpanel
This JSON logs the 'products_screen_presented' event, capturing details about the user's session, device, and the current URL for the 'dog-translator' application's paywall.
```json
{
"event": "products_screen_presented",
"properties": {
"time": 1764157530.027,
"distinct_id": "01KAZZKYENGYTV096Q63759551",
"$browser": "Chrome",
"$browser_version": 142,
"$city": "Podgorica",
"$current_url": "https://demo-app.fnlfx.com/dog-translator/paywall/?fpid=01KAZZKYENGYTV096Q63759551&fsid=01KAZZKYEN85PTFAKNAKA2X27E",
"$device_id": "19abffa0c56f0e-0df0f253d22403-26061b51-144000-19abffa0c56f0e",
"$initial_referrer": "https://app.funnelfox.com/",
"$initial_referring_domain": "app.funnelfox.com",
"$insert_id": "01KAZZQ7VTDF42AJQSBKD6FA24",
"$lib_version": "2.59.0",
"$mp_api_endpoint": "api.mixpanel.com",
"$mp_api_timestamp_ms": 1764157532546,
"$os": "Windows",
"$referrer": "https://app.funnelfox.com/",
"$referring_domain": "app.funnelfox.com",
"$region": "Podgorica",
"$screen_height": 864,
"$screen_width": 1536,
"$user_id": "01KAZZKYENGYTV096Q63759551",
"mp_country_code": "ME",
"mp_lib": "web",
"mp_processing_time_ms": 1764157532734,
"mp_sent_by_lib_version": "2.59.0",
"onboarding": "dog-translator",
"sandbox": false,
"screen_cid": "paywall",
"screen_id": "0LKgdIxV",
"screen_index": 17,
"screen_type": "paywall"
}
}
```
--------------------------------
### API Pagination Example
Source: https://funnelfox.com/docs/develop/api
Illustrates how to use the `limit` and `cursor` parameters for paginating through API list endpoints.
```bash
# First page
GET /funnels?limit=20
# Next page using cursor from previous response
GET /funnels?limit=20&cursor=abc123
```
--------------------------------
### Example User Event Data
Source: https://funnelfox.com/docs/integrations/analytics/amplitude
This JSON object represents an example of user event data captured by Amplitude, including user properties and device information.
```json
{
"is_attribution_event": false,
"isChildRow": false,
"language": "English",
"library": "amplitude-ts/2.11.13",
"location_lat": null,
"location_lng": null,
"os": "Chrome 142",
"os_name": "Chrome",
"os_version": "142",
"partner_id": null,
"paying": null,
"plan": {},
"platform": "Web",
"raw_event_type": "user_email_collected",
"region": "North Holland",
"sample_rate": null,
"server_received_time": "2025-11-13 15:26:19.560000",
"server_upload_time": "2025-11-13 15:26:19.565000",
"session_id": 1763047575821,
"source_id": null,
"start_version": null,
"user_creation_time": null,
"user_id": null,
"user_properties": {
"email": "test@example.com"
},
"uuid": "e2b3debf-68b8-489e-af63-4ee9bb2b4732",
"version_name": null
}
```
--------------------------------
### Install FunnelFox Billing SDK via CDN
Source: https://funnelfox.com/docs/develop/web-sdk-quickstart
Include Primer's Web SDK and CSS first, followed by the FunnelFox Billing SDK script from a CDN.
```html
```
--------------------------------
### Account Creation Pattern
Source: https://funnelfox.com/docs/elements/loader
This pattern shows a loader with percentage display during account setup, lasting about 3 seconds before redirecting to the dashboard.
```text
Signup: Email/password
Loader: "Setting up your account..."
Show percentage: Yes
Duration: 3 seconds
Dashboard: Welcome screen
```
--------------------------------
### Processing Element: Value Building Messaging Examples
Source: https://funnelfox.com/docs/elements/processing
Shows examples of messaging for the Processing element that emphasize scale, thoroughness, special treatment, and individual attention.
```text
"Checking 500+ products..." → Scale
"Comparing 50 providers..." → Thoroughness
"Applying exclusive discounts..." → Special treatment
"Personalizing for you..." → Individual attention
```
--------------------------------
### Learning Progress Chart Configuration
Source: https://funnelfox.com/docs/elements/chart
Example configuration for a chart tracking learning progress, using a step type for milestones and defining start/end badges.
```text
Start: 0
End: 100
Duration: 30 days
Badge Start: "Beginner"
Badge End: "Expert Level"
Type: Step (skill milestones)
```
--------------------------------
### TypeScript: Configure and Create Checkout
Source: https://funnelfox.com/docs/develop/types
Demonstrates how to configure the SDK and create a type-safe checkout instance. Ensure necessary imports are included.
```typescript
import {
configure,
createCheckout,
CheckoutInstance,
PaymentResult,
CheckoutConfig,
PaymentMethod,
} from '@funnelfox/billing';
// Configure
configure({
orgId: 'your-org-id',
});
// Create checkout with type safety
const checkout: CheckoutInstance = await createCheckout({
priceId: 'price_123',
customer: {
externalId: 'user_456',
email: 'user@example.com',
countryCode: 'US',
},
container: '#checkout',
clientMetadata: {
source: 'web',
campaign: 'summer-sale',
},
paymentMethodOrder: [
PaymentMethod.PAYPAL,
PaymentMethod.PAYMENT_CARD,
PaymentMethod.GOOGLE_PAY,
PaymentMethod.APPLE_PAY,
],
});
// Type-safe event handlers
checkout.on('success', (result: PaymentResult) => {
console.log('Order:', result.orderId);
console.log('Status:', result.status);
console.log('Transaction:', result.transactionId);
});
```
--------------------------------
### Handle AppsFlyer Install Conversion Data
Source: https://funnelfox.com/docs/integrations/authentication/deep-links
Use this snippet to process install conversion data from AppsFlyer. It checks for 'Non-organic' status and an 'ffkey' to identify the user.
```kotlin
override fun onConversionDataSuccess(conversionData: MutableMap?) {
val data = conversionData?.get("data") as? MutableMap
if (data != null && data["af_status"] == "Non-organic" && data["ffkey"] != null) {
// Identify user using the AppsFlyer DDL ffkey from conversion data.
}
}
override fun onConversionDataFail(errorMessage: String?) {
Log.e("AppsFlyer", "AppsFlyer DDL failed: $errorMessage")
}
override fun onAppOpenAttribution(data: Map?) {}
override fun onAttributionFailure(errorMessage: String?) {}
}
```
--------------------------------
### Value Stacking Example
Source: https://funnelfox.com/docs/elements/list
Demonstrates how to present the cumulative value of an offer, breaking down individual components and their total worth before revealing the final price.
```text
$97 value - Course materials
$47 value - Worksheet templates
$197 value - Group coaching
$97 value - Lifetime updates
= $438 Total Value
Your Price: Just $97
```
--------------------------------
### Example Link Click Event Data
Source: https://funnelfox.com/docs/integrations/analytics/amplitude
This JSON object shows an example of data for a 'link_button_clicked' event, including event properties like the URL and onboarding status.
```json
{
"_time": 1763121069534,
"$insert_id": "01KA138ZDR13A8SPW92D4AM3MT",
"$schema": 13,
"amplitude_attribution_ids": null,
"amplitude_id": 1389196450853,
"app": 757882,
"city": "Amsterdam",
"client_event_time": "2025-11-14 11:51:09.534000",
"client_upload_time": "2025-11-14 11:51:11.539000",
"country": "Netherlands",
"data": {
"group_first_event": {},
"group_ids": {},
"path": "/2/httpapi"
},
"device_carrier": null,
"device_family": "Windows",
"device_id": "fnlfx_01KA137SQW32AWYM9A263GWKTQ",
"device_type": "Windows",
"display_name": "link_button_clicked",
"dma": null,
"event_id": 130,
"event_properties": {
"cta": false,
"onboarding": "demo-app",
"sandbox": true,
"url": "https://funnelfox.com/docs/getting-started"
},
"event_time": "2025-11-14 11:51:09.534000",
"event_type": "link_button_clicked",
"group_properties": {},
"groups": {},
"ip_address": "193.124.206.155",
"language": "English",
"library": "amplitude-ts/2.11.13",
"location_lat": null,
"location_lng": null,
"os": "Chrome 142",
"os_name": "Chrome",
"os_version": "142",
"partner_id": null,
"paying": null,
"plan": {},
"platform": "Web",
"processed_time": "2025-11-14 11:51:12.199000",
"region": "North Holland",
"sample_rate": null,
"server_received_time": "2025-11-14 11:51:11.539000",
"server_upload_time": "2025-11-14 11:51:11.544000",
"session_id": 1763121034056,
"source_id": null,
"start_version": null,
"timeline_hidden": false,
"user_id": null,
"user_properties": {},
"uuid": "cd4e99de-4333-4f90-a806-839c3cb8f060",
"version_name": null
}
```
--------------------------------
### Demo Request Date Picker Setup
Source: https://funnelfox.com/docs/elements/datepicker
Configuration for scheduling demo requests, specifying the input type as a calendar and setting date constraints.
```text
"When would you like your demo?"
Type: Input (calendar)
Min: Next business day
Max: 14 days out
Trigger: Send to calendar integration
```
--------------------------------
### Checkout Impression Event Example
Source: https://funnelfox.com/docs/integrations/analytics/mixpanel
This JSON object represents an example of a 'checkout_impression' event. It includes user, device, and session details along with specific checkout-related properties.
```json
{
"event": "checkout_impression",
"properties": {
"time": 1764157963.489,
"distinct_id": "01KB004A83JZZ5C72XR8PYXC79",
"$browser": "Chrome",
"$browser_version": 142,
"$city": "Podgorica",
"$current_url": "https://app.funnelfox.com/preview/01K3GQH43MCTKFTJSY4Z6906AV/main/wj1ya9nv?vid=1764157909461_69&fpid=01KB004A83JZZ5C72XR8PYXC79&fsid=01KB004A83GDRTNZS2R11A339M",
"$device_id": "19abfc55ad8511-029397ae0b42e38-26061b51-144000-19abfc55ad8511",
"$identity_failure_reason": "errAnonDistinctIdAssignedAlready",
"$initial_referrer": "https://app.funnelfox.com/funnels/01K4W2T6AVB1A17C8SK7RBQDHC/editor/main?type=default&tab=screens&screen=y9Nk1CAE&config=screen-config&mode=canvas",
"$initial_referring_domain": "app.funnelfox.com",
"$insert_id": "01KB004F6ZWF88FZRMGDFXP8PB",
"$lib_version": "2.59.0",
"$mp_api_endpoint": "api.mixpanel.com",
"$mp_api_timestamp_ms": 1764157964057,
"$os": "Windows",
"$referrer": "https://app.funnelfox.com/funnels/01K3GQH43MCTKFTJSY4Z6906AV/editor/main?type=default&tab=screens&screen=QbfqbhE9&config=screen-config&mode=canvas&element=el_pUOS0",
"$referring_domain": "app.funnelfox.com",
"$region": "Podgorica",
"$screen_height": 864,
"$screen_width": 1536,
"$user_id": "01KB004A83JZZ5C72XR8PYXC79",
"currency": "USD",
"mp_country_code": "ME",
"mp_lib": "web",
"mp_processing_time_ms": 1764157971125,
"mp_sent_by_lib_version": "2.59.0",
"onboarding": "demo-app",
"payment_method": "paypal",
"payment_provider": "stripe",
"price": 1,
"price_fact": 1,
"product_id": "price_1SXIsO3Yhl9rcCZfMTp4Sx54",
"sandbox": true,
"vendor_price_id": "price_1SXIsO3Yhl9rcCZfMTp4Sx54",
"vendor_product_id": "prod_TUH4pRlAcHxBWr",
"vendor_profile_id": ""
}
}
```
--------------------------------
### Create a Checkout with FunnelFox Billing SDK
Source: https://funnelfox.com/docs/develop/web-sdk-quickstart
Initialize a checkout instance with organization ID, price ID, customer details, and a container selector. Primer's checkout form will render in the specified element.
```javascript
import { createCheckout } from '@funnelfox/billing';
await createCheckout({
orgId: 'your-org-id',
priceId: 'price_123',
customer: {
externalId: 'user_456',
email: 'user@example.com',
},
container: '#checkout-container',
});
```
--------------------------------
### Feature Clarifier FAQ Examples
Source: https://funnelfox.com/docs/elements/faq
Explain product functionality, plan inclusions, and upgrade options to clarify value for users.
```text
Q: "What's included in the premium plan?"
A: "All features, unlimited usage, priority support."
Q: "Can I upgrade later?"
A: "Yes, upgrade anytime and pay the difference."
Q: "Do you offer team accounts?"
A: "Yes, add unlimited team members."
```
--------------------------------
### Example Event: translator-app
Source: https://funnelfox.com/docs/integrations/analytics/mixpanel
This JSON object represents an example event logged for the 'translator-app' onboarding flow. It includes various properties capturing user and session details.
```json
{
"$region": "Podgorica",
"$screen_height": 864,
"$screen_width": 1536,
"$user_id": "01KBFYK16MHPXRZDAEP7RXDTQ5",
"form_cid": "",
"mp_country_code": "ME",
"mp_lib": "web",
"mp_processing_time_ms": 1764693233428,
"mp_sent_by_lib_version": "2.59.0",
"onboarding": "translator-app",
"reply": "Improve my communication",
"sandbox": false,
"screen_cid": "goals",
"screen_id": "jHXsakwR",
"screen_index": 1
}
}
```
--------------------------------
### Example Event Payload
Source: https://funnelfox.com/docs/integrations/analytics/mixpanel
This JSON object represents a generic example event payload. It includes common properties like screen dimensions, user ID, and library information.
```json
{
"$screen_height": 864,
"$screen_width": 1536,
"$user_id": "01KAZZKYENGYTV096Q63759551",
"mp_country_code": "ME",
"mp_lib": "web",
"mp_processing_time_ms": 1764157517274,
"mp_sent_by_lib_version": "2.59.0",
"onboarding": "dog-translator",
"sandbox": false,
"screen_cid": "auth",
"screen_id": "GJQ2wBTp",
"screen_index": 15,
"screen_type": "auth"
}
```
--------------------------------
### Example Events Data Structure
Source: https://funnelfox.com/docs/integrations/analytics/posthog
This JSON object represents the structure of example events captured by PostHog. It includes various properties related to the user, device, session, and application state.
```json
{
"$lib_version": "1.194.2",
"$device_type": "Desktop",
"$viewport_height": 752,
"$user_id": "01KEVSKCPADAGPYRQQJBFT2PDA",
"$replay_minimum_duration": null,
"$replay_script_config": {
"script": "posthog-recorder"
},
"$autocapture_disabled_server_side": false,
"$exception_capture_enabled_server_side": false,
"$configured_session_timeout_ms": 1800000,
"$lib_rate_limit_remaining_tokens": 97.33,
"$screen_width": 1536,
"$lib": "web",
"$host": "app.funnelfox.com",
"$time": 1768311898.376,
"$browser": "Chrome",
"$console_log_recording_enabled_server_side": true,
"onboarding": "demo-app",
"$recording_status": "disabled",
"token": "",
"$is_identified": true,
"$web_vitals_allowed_metrics": null,
"screen_type": "finish",
"$pathname": "/preview/01K3GQH43MCTKFTJSY4Z6906AV/main/final",
"$screen_height": 864,
"sandbox": true,
"$web_vitals_enabled_server_side": true,
"$raw_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",
"$browser_version": 143,
"$timezone": "Europe/Budapest",
"$active_feature_flags": [],
"$initial_person_info": {
"r": "https://app.funnelfox.com/funnels/01K3GQH43MCTKFTJSY4Z6906AV/editor/main?type=default&tab=screens&element=el_vt2Mw&screen=QbfqbhE9&config=screen-config&mode=canvas",
"u": "https://app.funnelfox.com/preview/01K3GQH43MCTKFTJSY4Z6906AV/main/QbfqbhE9?vid=1768311833907_157&fpid=01KEVSKCPADAGPYRQQJBFT2PDA&fsid=01KEVSKCPA28HKFC3GY4VVZ9C9"
},
"$device_id": "019bb799-b36e-7a8f-ac52-e04de9053f8d"
},
"timestamp": "2026-01-13T13:44:58.448000Z",
"team_id": 274461,
"distinct_id": "01KEVSKCPADAGPYRQQJBFT2PDA",
"elements_chain": "",
"created_at": "2026-01-13T13:45:03.007000Z",
"person_mode": "full"
}
```