Multi-Channel Setup
Configure push notifications, email, and in-app messaging for comprehensive player communication.
Overview
Ilara supports multiple messaging channels, each with unique strengths. Use them together for maximum reach and engagement.
Push Notifications
Setup
Configure push providers in Settings → Integrations → Push:
- Firebase Cloud Messaging (FCM): Android and iOS
- Apple Push Notification Service (APNs): iOS native
- Web Push: Browser notifications
Push Configuration
json
POST /v1/integrations/push/fcm{class="code-string">"provider": class="code-string">"fcm",class="code-string">"credentials": {class="code-string">"project_id": class="code-string">"your-firebase-project",class="code-string">"private_key": class="code-string">"...",class="code-string">"client_email": class="code-string">"..."},class="code-string">"default_channel": class="code-string">"game_notifications",class="code-string">"default_sound": class="code-string">"notification.wav",class="code-string">"default_icon": class="code-string">"ic_notification"}
Sending Push
Push Notification Campaign
json
{class="code-string">"channel": class="code-string">"push",class="code-string">"template": {class="code-string">"title": class="code-string">"{{player.name}}, your energy is full!",class="code-string">"body": class="code-string">"Time to continue your adventure.",class="code-string">"image_url": class="code-string">"https:class="code-commentclass="code-string">">//cdn.example.com/energy-full.png",class="code-string">"action_url": class="code-string">"/game/play",class="code-string">"data": {class="code-string">"event_type": class="code-string">"energy_full",class="code-string">"deep_link": class="code-string">"game:class="code-commentclass="code-string">">//play"}},class="code-string">"android": {class="code-string">"channel_id": class="code-string">"game_notifications",class="code-string">"priority": class="code-string">"high"},class="code-string">"ios": {class="code-string">"sound": class="code-string">"default",class="code-string">"badge": 1}}
Setup
Configure email providers in Settings → Integrations → Email:
- SendGrid: Transactional and marketing
- Mailgun: Developer-focused
- Amazon SES: High volume, cost-effective
- Postmark: Transactional focused
Email Configuration
json
POST /v1/integrations/email/sendgrid{class="code-string">"provider": class="code-string">"sendgrid",class="code-string">"api_key": class="code-string">"SG.xxxx",class="code-string">"from_email": class="code-string">"[email protected]",class="code-string">"from_name": class="code-string">"Your Game",class="code-string">"reply_to": class="code-string">"[email protected]"}
Email Templates
Email Campaign
json
{class="code-string">"channel": class="code-string">"email",class="code-string">"template": {class="code-string">"subject": class="code-string">"Your weekly adventure recap, {{player.name}}!",class="code-string">"html_template_id": class="code-string">"weekly-recap-v2",class="code-string">"template_data": {class="code-string">"player_name": class="code-string">"{{player.name}}",class="code-string">"games_played": class="code-string">"{{stats.games_this_week}}",class="code-string">"achievements": class="code-string">"{{stats.achievements_earned}}",class="code-string">"leaderboard_rank": class="code-string">"{{stats.rank}}"},class="code-string">"preheader": class="code-string">"You played 12 games this week!"}}
In-App Messages
In-app messages appear inside your game to active players. Highest engagement but only reaches players who open the game.
Message Types
In-App Campaign
json
{class="code-string">"channel": class="code-string">"in_app",class="code-string">"template": {class="code-string">"type": class="code-string">"modal",class="code-string">"title": class="code-string">"Special Weekend Offer!",class="code-string">"body": class="code-string">"Get 2x gems on all purchases this weekend.",class="code-string">"image_url": class="code-string">"https:class="code-commentclass="code-string">">//cdn.example.com/weekend-offer.png",class="code-string">"buttons": [{class="code-string">"text": class="code-string">"Shop Now",class="code-string">"action": class="code-string">"deep_link",class="code-string">"url": class="code-string">"game:class="code-commentclass="code-string">">//shop"},{class="code-string">"text": class="code-string">"Maybe Later",class="code-string">"action": class="code-string">"dismiss"}],class="code-string">"dismissible": true,class="code-string">"display_duration": 0},class="code-string">"trigger": {class="code-string">"type": class="code-string">"session_start",class="code-string">"delay_seconds": 5}}
Channel Priority & Fallback
Configure channel priority to optimize delivery:
Multi-Channel Campaign
json
{class="code-string">"name": class="code-string">"Re-engagement Campaign",class="code-string">"segment_id": class="code-string">"lapsed-7-days",class="code-string">"channel_strategy": {class="code-string">"mode": class="code-string">"cascade",class="code-string">"channels": [{class="code-string">"channel": class="code-string">"push",class="code-string">"wait_hours": 0,class="code-string">"skip_if_opened": true},{class="code-string">"channel": class="code-string">"email",class="code-string">"wait_hours": 24,class="code-string">"skip_if_opened": true},{class="code-string">"channel": class="code-string">"in_app",class="code-string">"wait_hours": 72,class="code-string">"skip_if_opened": false}]}}class=class="code-string">"code-comment">// Cascade: Try push first, if not opened in 24h send email,class=class="code-string">"code-comment">// if still not opened show in-app when they return
Strategy Modes
Frequency Capping
Prevent notification fatigue with frequency limits:
Frequency Caps
json
{class="code-string">"frequency_caps": {class="code-string">"global": {class="code-string">"max_per_day": 3,class="code-string">"max_per_week": 10},class="code-string">"per_channel": {class="code-string">"push": { class="code-string">"max_per_day": 2 },class="code-string">"email": { class="code-string">"max_per_week": 3 },class="code-string">"in_app": { class="code-string">"max_per_session": 1 }},class="code-string">"quiet_hours": {class="code-string">"enabled": true,class="code-string">"start": class="code-string">"22:00",class="code-string">"end": class="code-string">"08:00",class="code-string">"timezone": class="code-string">"player_local"}}}
SDK Integration
Unity - Register Push Token
csharp
class=class="code-string">"code-comment">// Register device for push notificationsIlaraClient.Instance.RegisterPushToken(token: FirebaseMessaging.GetToken(),platform: class="code-string">"fcm" class=class="code-string">"code-comment">// or class="code-string">"apns");class=class="code-string">"code-comment">// Handle in-app message displayIlaraClient.Instance.OnInAppMessage += (message) =>{ShowInAppMessage(message);};class=class="code-string">"code-comment">// Check for pending in-app messagesawait IlaraClient.Instance.CheckInAppMessages();
Best Practices
- Don't over-message: Respect frequency caps strictly
- Match channel to message: Urgent = push, Rich = email, In-game = in-app
- Personalize: Use player data for relevance
- Test deliverability: Monitor bounce rates and opt-outs
- Respect preferences: Honor opt-out requests immediately
Next Steps
- AI Message Generation — Personalize content
- Send Time Optimization — Optimal delivery timing
- Churn Prediction — Target at-risk players