Rust SDK
Rust SDK - Tracking Events
Track events with the FunnelMob Rust SDK.
Standard Attribution Events (Recommended)
Use these typed methods to track standard events that ad networks like Meta and TikTok use to measure conversions and optimize campaign delivery. By sending these events, you enable ad platforms to attribute installs, optimize for high-value users, and report on key actions like purchases, signups, and engagement.
Basic usage
// Engagement & commerce
sdk.track_page_view().unwrap();
sdk.track_view_content().unwrap();
sdk.track_search().unwrap();
sdk.track_add_to_cart().unwrap();
sdk.track_add_to_wishlist().unwrap();
sdk.track_initiate_checkout().unwrap();
sdk.track_add_payment_info().unwrap();
// Lead generation
sdk.track_lead().unwrap();
sdk.track_complete_registration().unwrap();
sdk.track_contact().unwrap();
sdk.track_schedule().unwrap();
sdk.track_find_location().unwrap();
sdk.track_submit_application().unwrap();
// App events (Meta)
sdk.track_achieve_level().unwrap();
sdk.track_unlock_achievement().unwrap();
sdk.track_complete_tutorial().unwrap();
sdk.track_activate_app().unwrap();
sdk.track_rate().unwrap();
sdk.track_in_app_ad_click().unwrap();
sdk.track_in_app_ad_impression().unwrap();
// TikTok-specific
sdk.track_application_approval().unwrap();
sdk.track_download().unwrap();
sdk.track_submit_form().unwrap(); // TikTok legacy — use track_lead() for new implementationsEvents with revenue
track_purchase, track_subscribe, track_start_trial, and track_donate require amount and currency:
// Purchase (Meta + TikTok)
sdk.track_purchase(29.99, "USD").unwrap();
// Subscription (Meta + TikTok)
sdk.track_subscribe(9.99, "USD").unwrap();
// Free trial — pass 0.0 for value (Meta + TikTok)
sdk.track_start_trial(0.0, "USD").unwrap();
// Donation (Meta only)
sdk.track_donate(50.00, "USD").unwrap();
// In-app virtual currency — value only, no currency (Meta only)
sdk.track_spent_credits(500.0).unwrap();Events with parameters
Each typed method has a _with_params variant:
use funnelmob::EventParameters;
let params = EventParameters::new()
.set("content_ids", "SKU123")
.set("content_name", "Blue Widget")
.set("value", 29.99_f64)
.set("currency", "USD");
sdk.track_view_content_with_params(params.clone()).unwrap();
sdk.track_purchase_with_params(29.99, "USD", params).unwrap();All 29 standard attribution events
| Method | Description |
|---|---|
track_page_view() | Fires on every page load |
track_view_content() | Visit to a product or content page |
track_search() | Search performed |
track_add_to_cart() | Item added to cart |
track_add_to_wishlist() | Item saved to wishlist |
track_initiate_checkout() | Checkout process started |
track_add_payment_info() | Payment info entered |
track_purchase(amount, currency) | Transaction completed |
track_lead() | Contact info submitted |
track_complete_registration() | Account registration completed |
track_contact() | Contact initiated |
track_schedule() | Appointment booked |
track_find_location() | Business location searched |
track_customize_product() | Product customized |
track_submit_application() | Application submitted |
track_start_trial(amount, currency) | Free trial started |
track_subscribe(amount, currency) | Paid subscription started |
track_application_approval() | Application approved |
track_download() | File downloaded |
track_submit_form() | Legacy Lead event — use track_lead() |
track_achieve_level() | Level reached in app/game |
track_unlock_achievement() | Achievement unlocked |
track_rate() | Rating submitted |
track_complete_tutorial() | In-app tutorial completed |
track_activate_app() | App launched |
track_in_app_ad_click() | In-app ad clicked |
track_in_app_ad_impression() | In-app ad shown |
track_donate(amount, currency) | Donation made |
track_spent_credits(value) | Virtual currency spent |
Each method also has a _with_params variant (e.g. track_view_content_with_params(params)).
Custom Events
Track any event specific to your app that isn't covered by the standard attribution events above. Custom events are useful for measuring in-app behavior, building internal analytics, and tracking actions unique to your product.
Tracking a custom event
sdk.track_event("onboarding_complete").unwrap();Events with Revenue
For standard events like purchases and subscriptions, use the typed methods above (e.g., track_purchase(amount, currency)). Use track_event_with_revenue only for custom events that aren't covered by the standard methods:
use funnelmob::Revenue;
let revenue = Revenue::usd(29.99).unwrap();
sdk.track_event_with_revenue("tip_sent", revenue).unwrap();
// Other currencies
let eur = Revenue::eur(19.99).unwrap();
let gbp = Revenue::gbp(14.99).unwrap();
let jpy = Revenue::new(2000.0, "JPY").unwrap();Events with Parameters
use funnelmob::EventParameters;
let params = EventParameters::new()
.set("item_id", "sku_123")
.set("quantity", 2_i64)
.set("price", 29.99_f64)
.set("is_gift", false);
sdk.track_event_with_params("add_to_cart", params).unwrap();Events with Revenue and Parameters
let revenue = Revenue::usd(99.00).unwrap();
let params = EventParameters::new()
.set("recipient", "user_456")
.set("message", "Great work!");
sdk.track_event_with_revenue_and_params("tip_sent", revenue, params).unwrap();Standard Events (Legacy Constants)
For backward compatibility, FM_-prefixed string constants are still available:
use funnelmob::standard_events;
sdk.track_event(standard_events::FM_REGISTRATION).unwrap();
sdk.track_event(standard_events::FM_LOGIN).unwrap();
sdk.track_event(standard_events::FM_PURCHASE).unwrap();
sdk.track_event(standard_events::FM_ADD_TO_CART).unwrap();
sdk.track_event(standard_events::FM_CHECKOUT_START).unwrap();
sdk.track_event(standard_events::FM_LEVEL_COMPLETE).unwrap();
sdk.track_event(standard_events::FM_TUTORIAL_COMPLETE).unwrap();
sdk.track_event(standard_events::FM_SUBSCRIBE).unwrap();
sdk.track_event(standard_events::FM_START_TRIAL).unwrap();
sdk.track_event(standard_events::FM_RATE).unwrap();
sdk.track_event(standard_events::FM_SHARE).unwrap();
sdk.track_event(standard_events::FM_INVITE).unwrap();
sdk.track_event(standard_events::FM_ACHIEVEMENT).unwrap();
sdk.track_event(standard_events::FM_SPEND_CREDITS).unwrap();Async Event Tracking
With the async feature enabled:
sdk.track_event_async("app_start").await.unwrap();
sdk.track_event_with_revenue_async(
"tip_sent",
Revenue::usd(29.99).unwrap()
).await.unwrap();
sdk.track_event_with_params_async(
"signup",
EventParameters::new().set("method", "email")
).await.unwrap();
sdk.flush_async().await.unwrap();Validation
Event names and revenue are validated:
use funnelmob::validation::{validate_event_name, validate_currency};
// Event names: letters, numbers, underscores; must start with letter; max 100 chars
assert!(validate_event_name("purchase").is_ok());
assert!(validate_event_name("level_2_complete").is_ok());
assert!(validate_event_name("2nd_level").is_err()); // Can't start with number
assert!(validate_event_name("my-event").is_err()); // No hyphens
// Currency: 3-letter uppercase ISO 4217
assert!(validate_currency("USD").is_ok());
assert!(validate_currency("usd").is_err()); // Must be uppercase