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
101
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