Rust SDK - Tracking Events
Simple Events
Section titled “Simple Events”sdk.track_event("level_complete").unwrap();Events with Revenue
Section titled “Events with Revenue”use funnelmob::Revenue;
let revenue = Revenue::usd(29.99).unwrap();sdk.track_event_with_revenue("purchase", revenue).unwrap();
// Other currencieslet eur = Revenue::eur(19.99).unwrap();let gbp = Revenue::gbp(14.99).unwrap();let jpy = Revenue::new(2000.0, "JPY").unwrap();Events with Parameters
Section titled “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
Section titled “Events with Revenue and Parameters”let revenue = Revenue::usd(99.00).unwrap();let params = EventParameters::new() .set("plan", "annual") .set("trial_days", 7_i64);
sdk.track_event_with_revenue_and_params("subscribe", revenue, params).unwrap();Standard Events
Section titled “Standard Events”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
Section titled “Async Event Tracking”With the async feature enabled:
sdk.track_event_async("app_start").await.unwrap();
sdk.track_event_with_revenue_async( "purchase", 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
Section titled “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 charsassert!(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 numberassert!(validate_event_name("my-event").is_err()); // No hyphens
// Currency: 3-letter uppercase ISO 4217assert!(validate_currency("USD").is_ok());assert!(validate_currency("usd").is_err()); // Must be uppercase