Channel Product Configs

This guide explains how to configure channel-specific product bindings, allowing different product availability and pricing per distribution channel.

Overview

Channel Product Configs let you:

  • Bind specific products to distribution channels
  • Configure channel-specific pricing
  • Control product availability per channel
  • Manage regional product variations

Why Channel Product Configs?

Different channels may need different products:

Channel Example Products
Google Play Android-specific SKUs
App Store iOS-specific product IDs
Web Stripe price IDs
China Region WeChat Pay products
Samsung Galaxy Store Samsung-specific products

Prerequisites

Accessing Channel Product Configs

  1. Log in to OpenDev Platform
  2. Click Channel Product Configs in the sidebar
  3. View and manage all configurations

Creating a Configuration

  1. Click Create Config button
  2. Fill in the configuration details:

Configuration Fields

Field Required Description
Config Name Yes Descriptive name
Channel Yes Target distribution channel
Description No Internal notes
  1. Click Create

Binding Products

After creating a configuration:

  1. Click on the configuration to open details
  2. Click Bind Products
  3. Select product tiers to include
  4. Click Bind Selected

Binding Example

Channel: google_play_global
├── pro_monthly
├── pro_yearly
├── coins_100
└── coins_500

Channel: app_store_global
├── pro_monthly
├── pro_yearly
├── coins_100
└── coins_500

Channel: wechat_china
├── pro_monthly_cny
├── pro_yearly_cny
└── coins_100_cny

Managing Bindings

View Bound Products

  1. Open a channel product config
  2. See the list of bound product tiers
  3. Each shows:
  • Product name
  • Product type
  • Platform IDs

Unbind Products

  1. Find the product in the list
  2. Click Unbind button
  3. Confirm the action

Note: Unbinding doesn't delete the product tier, just removes it from this channel.

Reorder Products

Products can be displayed in a specific order:

  1. Drag products to reorder
  2. Order affects display in client apps
  3. Save changes when done

Configuration Strategies

By Platform

google_play_config
├── All Android products

app_store_config
├── All iOS products

web_stripe_config
├── All web products

By Region

global_config
├── USD pricing products

china_config
├── CNY pricing products

japan_config
├── JPY pricing products

By Tier

free_channel
├── Basic features only

premium_channel
├── All premium products
├── Exclusive features

Best Practices

Configuration Naming

Good:
- google_play_global
- app_store_us
- web_stripe_premium
- china_wechat_pay

Avoid:
- config1
- test
- my_config

Product Organization

  1. Consistent sets - Same products across platforms when possible
  2. Clear differences - Document why products differ by channel
  3. Version control - Track configuration changes
  4. Testing - Verify products load correctly per channel

Channel-Specific Considerations

Channel Considerations
Google Play Subscription base plans, offers
App Store Introductory offers, promotional offers
Web Currency handling, regional pricing
China ICP compliance, CNY only

Integration with Apps

Fetching Channel Products

Your app fetches products based on its channel:

// Client-side
const channelKey = getChannelKey(); // e.g., 'google_play_global'

const response = await fetch('/api/products', {
  headers: {
    'X-Channel-Key': channelKey,
  },
});

const products = await response.json();
// Returns only products bound to this channel

Configuration Package

Products are included in config packages:

{
  "channel": "google_play_global",
  "products": [
    {
      "productId": "pro_monthly",
      "name": "Pro Monthly",
      "platformId": "pro_monthly_subscription",
      "price": "$9.99"
    }
  ]
}

Advanced Configuration

Conditional Products

Some products may only be available under conditions:

{
  "productId": "enterprise_yearly",
  "conditions": {
    "minAppVersion": "2.0.0",
    "countries": ["US", "CA", "UK"],
    "userTier": ["pro", "enterprise"]
  }
}

A/B Testing

Test different product sets:

channel_a_test:
├── pro_monthly
├── pro_yearly (33% discount)

channel_b_test:
├── pro_monthly
├── pro_yearly (standard price)

Promotional Channels

Create channels for promotions:

black_friday_2024:
├── pro_monthly (20% off)
├── pro_yearly (40% off)
├── lifetime_access (limited)

Troubleshooting

Products Not Loading

Possible causes:

  • Wrong channel key in request
  • Products not bound to channel
  • Configuration not active

Solutions:

  1. Verify channel key matches exactly
  2. Check product bindings
  3. Test with config package download

Wrong Products Shown

Possible causes:

  • Cached configuration
  • Wrong environment (dev/prod)
  • Multiple matching configurations

Solutions:

  1. Clear client cache
  2. Verify environment setting
  3. Check configuration priority

Missing Platform IDs

Cause: Product tier missing platform-specific ID

Solution:

  1. Edit the product tier
  2. Add the missing platform ID
  3. Verify in platform console

Workflow Example

Setting Up a New Channel

  1. Create Channel in Channels section
  2. Create Product Tiers with all platform IDs
  3. Create Channel Config for this channel
  4. Bind Products to the configuration
  5. Generate Config Package to verify
  6. Test in App using the channel key

Adding a New Product

  1. Create Product Tier with all details
  2. Bind to Channels where it should appear
  3. Update Config Packages for affected apps
  4. Deploy Updated Configs to clients