Skip to content

Rust SDK - Tracking Events

sdk.track_event("level_complete").unwrap();
use funnelmob::Revenue;
let revenue = Revenue::usd(29.99).unwrap();
sdk.track_event_with_revenue("purchase", 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();
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();
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();
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();

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();

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