CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-react-native-onesignal

React Native SDK for OneSignal's push notification, email, SMS, and in-app messaging service

Pending
Overview
Eval results
Files

session.mddocs/

Session Analytics

Outcome tracking and attribution for measuring notification effectiveness and user engagement.

Capabilities

Outcome Tracking

Track user actions and conversions that result from notifications and in-app messages to measure campaign effectiveness.

/**
 * Increases the "Count" of this Outcome by 1 and will be counted each time sent.
 * @param name - The name/identifier of the outcome event
 */
function addOutcome(name: string): void;

/**
 * Increases "Count" by 1 only once. This can only be attributed to a single notification.
 * @param name - The name/identifier of the unique outcome event
 */
function addUniqueOutcome(name: string): void;

/**
 * Increases the "Count" of this Outcome by 1 and the "Sum" by the value. Will be counted each time sent.
 * If the method is called outside of an attribution window, it will be unattributed until a new session occurs.
 * @param name - The name/identifier of the outcome event
 * @param value - The numeric value to add to the outcome sum
 */
function addOutcomeWithValue(name: string, value: string | number): void;

Usage Examples:

import { OneSignal } from "react-native-onesignal";

// Track basic outcomes (can be triggered multiple times)
OneSignal.Session.addOutcome("button_clicked");
OneSignal.Session.addOutcome("page_viewed");
OneSignal.Session.addOutcome("video_played");

// Track unique outcomes (only counted once per notification)
OneSignal.Session.addUniqueOutcome("app_opened");
OneSignal.Session.addUniqueOutcome("tutorial_completed");
OneSignal.Session.addUniqueOutcome("first_purchase");

// Track outcomes with monetary value
OneSignal.Session.addOutcomeWithValue("purchase", 29.99);
OneSignal.Session.addOutcomeWithValue("subscription", "15.99");
OneSignal.Session.addOutcomeWithValue("tip_given", 5);

Common Use Cases

E-commerce Tracking

// Track shopping funnel outcomes
function trackEcommerceOutcomes() {
  // User views product (can happen multiple times)
  OneSignal.Session.addOutcome("product_viewed");
  
  // User adds to cart (track each add)
  OneSignal.Session.addOutcome("item_added_to_cart");
  
  // User starts checkout (unique per session)
  OneSignal.Session.addUniqueOutcome("checkout_started");
  
  // Track purchase with value
  OneSignal.Session.addOutcomeWithValue("purchase_completed", orderTotal);
  
  // Track specific product category purchases
  OneSignal.Session.addOutcome("electronics_purchase");
}

Content App Tracking

// Track content engagement outcomes
function trackContentEngagement() {
  // Article opened (can be multiple per session)
  OneSignal.Session.addOutcome("article_opened");
  
  // Video played (track each play)
  OneSignal.Session.addOutcome("video_played");
  
  // User subscribes (unique outcome)
  OneSignal.Session.addUniqueOutcome("subscription_started");
  
  // Premium upgrade with value
  OneSignal.Session.addOutcomeWithValue("premium_upgrade", 9.99);
  
  // Track content sharing
  OneSignal.Session.addOutcome("content_shared");
}

Gaming App Tracking

// Track gaming outcomes and monetization
function trackGamingOutcomes() {
  // Level completed (can happen multiple times)
  OneSignal.Session.addOutcome("level_completed");
  
  // Achievement unlocked (track each achievement)
  OneSignal.Session.addOutcome("achievement_unlocked");
  
  // First game played (unique)
  OneSignal.Session.addUniqueOutcome("first_game_played");
  
  // In-app purchases with value
  OneSignal.Session.addOutcomeWithValue("coins_purchased", 4.99);
  OneSignal.Session.addOutcomeWithValue("power_up_purchased", 1.99);
  
  // Daily login bonus claimed
  OneSignal.Session.addOutcome("daily_bonus_claimed");
}

Social App Tracking

// Track social engagement outcomes
function trackSocialEngagement() {
  // Post created (can be multiple)
  OneSignal.Session.addOutcome("post_created");
  
  // Profile completed (unique setup)
  OneSignal.Session.addUniqueOutcome("profile_completed");
  
  // Friend added (track each connection)
  OneSignal.Session.addOutcome("friend_added");
  
  // Message sent (track engagement)
  OneSignal.Session.addOutcome("message_sent");
  
  // Premium membership (with value)
  OneSignal.Session.addOutcomeWithValue("premium_membership", 19.99);
}

Financial App Tracking

// Track financial app outcomes
function trackFinancialOutcomes() {
  // Account created (unique)
  OneSignal.Session.addUniqueOutcome("account_created");
  
  // Transaction completed (can be multiple)
  OneSignal.Session.addOutcome("transaction_completed");
  
  // Money transferred with value
  OneSignal.Session.addOutcomeWithValue("money_transferred", transferAmount);
  
  // Investment made with value
  OneSignal.Session.addOutcomeWithValue("investment_made", investmentAmount);
  
  // Feature usage tracking
  OneSignal.Session.addOutcome("budget_tool_used");
  OneSignal.Session.addOutcome("savings_goal_set");
}

Attribution Windows

Outcomes are attributed to notifications within specific time windows:

// Best practices for outcome timing
function handleNotificationClick(notification) {
  // Immediate outcomes - track right after notification interaction
  OneSignal.Session.addOutcome("notification_clicked");
  
  // Delayed outcomes - track when user actually completes action
  setTimeout(() => {
    OneSignal.Session.addOutcome("delayed_action_completed");
  }, 5000);
}

// Track outcomes at appropriate times
function trackUserJourney() {
  // Track at key conversion points
  onAppOpen(() => {
    OneSignal.Session.addUniqueOutcome("app_opened");
  });
  
  onPurchaseComplete((amount) => {
    OneSignal.Session.addOutcomeWithValue("purchase", amount);
  });
  
  onFeatureUsed((featureName) => {
    OneSignal.Session.addOutcome(`${featureName}_used`);
  });
}

Outcome Analytics Dashboard

These outcomes can be viewed in your OneSignal dashboard:

  • Count: How many times the outcome occurred
  • Sum: Total value across all outcome events (for addOutcomeWithValue)
  • Attribution: Which notifications drove these outcomes
  • Conversion Rates: Percentage of notification recipients who completed outcomes
// Structure outcome names for easy dashboard filtering
function useStructuredOutcomeNames() {
  // Category-based naming
  OneSignal.Session.addOutcome("ecommerce.purchase");
  OneSignal.Session.addOutcome("ecommerce.cart_abandon");
  OneSignal.Session.addOutcome("content.article_read");
  OneSignal.Session.addOutcome("social.post_shared");
  
  // Action-based naming
  OneSignal.Session.addOutcome("user_action.login");
  OneSignal.Session.addOutcome("user_action.logout");
  OneSignal.Session.addOutcome("user_action.profile_update");
}

Value Tracking Best Practices

// Always use numeric values for value-based outcomes
function trackValueOutcomes() {
  // GOOD - numeric values
  OneSignal.Session.addOutcomeWithValue("purchase", 25.99);
  OneSignal.Session.addOutcomeWithValue("tip", 5);
  OneSignal.Session.addOutcomeWithValue("subscription", 9.99);
  
  // Convert strings to numbers when needed
  const priceString = "15.99";
  OneSignal.Session.addOutcomeWithValue("upgrade", parseFloat(priceString));
  
  // Handle different currencies by converting to base unit
  const priceInCents = Math.round(29.99 * 100); // Convert to cents
  OneSignal.Session.addOutcomeWithValue("purchase_cents", priceInCents);
}

Install with Tessl CLI

npx tessl i tessl/npm-react-native-onesignal

docs

core-sdk.md

in-app-messages.md

index.md

live-activities.md

location.md

notifications.md

push-subscription.md

session.md

user-management.md

tile.json