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
- Existing Product Tiers
- Configured Channels
- Understanding of your distribution strategy
Accessing Channel Product Configs
- Log in to OpenDev Platform
- Click Channel Product Configs in the sidebar
- View and manage all configurations
Creating a Configuration
- Click Create Config button
- Fill in the configuration details:
Configuration Fields
| Field | Required | Description |
|---|---|---|
| Config Name | Yes | Descriptive name |
| Channel | Yes | Target distribution channel |
| Description | No | Internal notes |
- Click Create
Binding Products
After creating a configuration:
- Click on the configuration to open details
- Click Bind Products
- Select product tiers to include
- 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
- Open a channel product config
- See the list of bound product tiers
- Each shows:
- Product name
- Product type
- Platform IDs
Unbind Products
- Find the product in the list
- Click Unbind button
- 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:
- Drag products to reorder
- Order affects display in client apps
- 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
- Consistent sets - Same products across platforms when possible
- Clear differences - Document why products differ by channel
- Version control - Track configuration changes
- 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:
- Verify channel key matches exactly
- Check product bindings
- Test with config package download
Wrong Products Shown
Possible causes:
- Cached configuration
- Wrong environment (dev/prod)
- Multiple matching configurations
Solutions:
- Clear client cache
- Verify environment setting
- Check configuration priority
Missing Platform IDs
Cause: Product tier missing platform-specific ID
Solution:
- Edit the product tier
- Add the missing platform ID
- Verify in platform console
Workflow Example
Setting Up a New Channel
- Create Channel in Channels section
- Create Product Tiers with all platform IDs
- Create Channel Config for this channel
- Bind Products to the configuration
- Generate Config Package to verify
- Test in App using the channel key
Adding a New Product
- Create Product Tier with all details
- Bind to Channels where it should appear
- Update Config Packages for affected apps
- Deploy Updated Configs to clients