komissio_sdk 1.0.0 copy "komissio_sdk: ^1.0.0" to clipboard
komissio_sdk: ^1.0.0 copied to clipboard

Official Komissio SDK for Flutter. Track affiliate conversions, attribute referrals, and manage commissions in your mobile app.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:komissio_sdk/komissio_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 1. Initialize the SDK on app startup
  await Komissio.configure(
    apiKey: 'km_live_your_api_key_here',
    merchantId: 'your-merchant-uuid',
    // Optional:
    appVersion: '1.0.0',
    logLevel: LogLevel.info, // Enable logs during development
  );

  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Komissio SDK Example',
      home: const HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  const HomeScreen({super.key});

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  String _status = 'Ready';

  // 2. Handle deep links in your app
  // Call this from your deep link handler (e.g., uni_links, app_links)
  Future<void> _handleDeepLink() async {
    final uri = Uri.parse(
      'https://yourapp.com/promo?ref=sarah123&cmp=spring_sale',
    );
    final attributed = await Komissio.handleDeepLink(uri);
    setState(() {
      _status = attributed
          ? 'Attribution saved from deep link'
          : 'No attribution params in link';
    });
  }

  // 3. Track a conversion when user makes a purchase
  Future<void> _trackPurchase() async {
    setState(() => _status = 'Tracking...');

    final result = await Komissio.trackConversion(
      eventType: EventType.oneTimePurchase,
      customerIdentifier: 'user@example.com',
      value: 49.99,
      orderId: 'order_${DateTime.now().millisecondsSinceEpoch}',
      device: 'iPhone 15 Pro',
    );

    setState(() {
      if (result.attributed) {
        _status = 'Attributed to ${result.affiliate?.name}\n'
            'Commission: ${result.commission?.amount} ${result.commission?.currency}';
      } else {
        _status = 'Not attributed: ${result.reason}';
      }
    });
  }

  // 4. Track a subscription
  Future<void> _trackSubscription() async {
    setState(() => _status = 'Tracking subscription...');

    final result = await Komissio.trackConversion(
      eventType: EventType.subscriptionCreated,
      customerIdentifier: 'user@example.com',
      value: 9.99,
      orderId: 'sub_${DateTime.now().millisecondsSinceEpoch}',
      metadata: {
        'plan': 'premium',
        'billing_period': 'monthly',
      },
    );

    setState(() {
      _status = result.attributed
          ? 'Subscription attributed! Commission: ${result.commission?.amount}'
          : 'Not attributed: ${result.reason}';
    });
  }

  // 5. Identify user for recurring commissions
  Future<void> _identifyUser() async {
    await Komissio.identify(customerId: 'cust_12345');
    setState(() => _status = 'User identified for recurring tracking');
  }

  // 6. Fetch SDK config
  Future<void> _fetchConfig() async {
    try {
      final config = await Komissio.fetchConfig();
      setState(() {
        _status = 'Merchant: ${config.companyName}\n'
            'Currency: ${config.currency}\n'
            'Active affiliates: ${config.activeAffiliates}\n'
            'Commission rule: ${config.defaultCommissionRule?.name ?? "none"}';
      });
    } catch (e) {
      setState(() => _status = 'Error: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Komissio SDK Example')),
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            Card(
              child: Padding(
                padding: const EdgeInsets.all(16),
                child: Text(_status, style: const TextStyle(fontSize: 16)),
              ),
            ),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: _handleDeepLink,
              child: const Text('Simulate Deep Link'),
            ),
            const SizedBox(height: 8),
            ElevatedButton(
              onPressed: _trackPurchase,
              child: const Text('Track Purchase (\$49.99)'),
            ),
            const SizedBox(height: 8),
            ElevatedButton(
              onPressed: _trackSubscription,
              child: const Text('Track Subscription (\$9.99/mo)'),
            ),
            const SizedBox(height: 8),
            ElevatedButton(
              onPressed: _identifyUser,
              child: const Text('Identify User'),
            ),
            const SizedBox(height: 8),
            OutlinedButton(
              onPressed: _fetchConfig,
              child: const Text('Fetch SDK Config'),
            ),
          ],
        ),
      ),
    );
  }
}
0
likes
130
points
8
downloads

Documentation

API reference

Publisher

verified publisherkomissio.io

Weekly Downloads

Official Komissio SDK for Flutter. Track affiliate conversions, attribute referrals, and manage commissions in your mobile app.

Homepage
Repository (GitHub)
View/report issues

Topics

#affiliate #tracking #analytics #conversions #marketing

License

MIT (license)

Dependencies

connectivity_plus, flutter, http, shared_preferences, uuid

More

Packages that depend on komissio_sdk