How does the Genuin SDK render ads and deliver the consumer experience?
The Genuin SDK is responsible for turning your ad configurations in Brand Control Center into a real, seamless ad experience for end users across Web, iOS, and Android.
Why this matters:
- Consistent monetization across platforms: Ads render uniformly across web and mobile environments
- Optimized user experience: Ads are intelligently placed without disrupting content flow
- Maximized revenue opportunities: Supports multiple ad formats (in-feed, in-stream, takeover, fallback)
- Zero disruption fallback handling: If ads are unavailable, the experience gracefully switches to content
- Full control via presets: Everything is driven by configurations set in Brand Control Center
Guide — Step-by-Step (How Ad Rendering Works)
Step 1: SDK Initialization
The SDK is initialized inside your app or website with:
- Brand ID
- Placement ID / Embed ID
- Environment (auto-detected)
This tells the SDK what to render and where

Step 2: Fetch Monetization Preset
- SDK calls Genuin backend
- Retrieves the active monetization preset for that placement
This preset contains:
- In-Feed settings
- In-Stream settings
- Sponsored Takeover configuration
- Ad priority & controls

Step 3: Environment Matching
The SDK checks if ads should be shown based on platform:
| Preset Setting | Result |
|---|---|
| Global | Ads shown everywhere |
| Custom | Ads shown only on selected platforms |
If no match - content-only feed (no ads)
Step 4: Feed Rendering Begins
- SDK renders content feed
- Injects ad slots based on configuration
In-Feed Ad Rendering
How Ad Positions Are Calculated
Ad positions are determined using:
- Start Slot
- Repeat Frequency
Example:
- Start Slot = 2
- Repeat Frequency = 4
Ads appear at: 2, 6, 10, 14...

Ad Types in Feed
1. Sponsored Posts
- Looks like normal content
- Has “Sponsored” badge
- Full interaction (like, share, comment)
2. Video Ads
- Autoplay in feed
- “Ad” label
- No interaction buttons
3. Native Ads
- Styled like content
- Includes headline, CTA, advertiser
4. Display Ads
- Banner-style cards
- Click redirects to destination
5. House Ads (Fallback)
- Looks like organic content
- No ad label
- Shown when no programmatic ads are available

Ad Priority Logic
When an ad slot appears:
- SDK tries highest priority ad type
- If unavailable - tries next type
- If none available - shows House Ad
- If no House Ad - slot disappears
In-Stream Ad Rendering (Inside Videos)
Ad Types
| Type | When it appears |
|---|---|
| Pre-roll | Before video starts |
| Mid-roll | Midpoint of video |
| Post-roll | After video ends |

Trigger Logic Example
- Start Video = 2
- Repeat = 2
Ads appear on videos: 2, 4, 6, 8...
User Experience
- Pre-roll blocks content until skipped
- Mid-roll pauses content, then resumes
- Post-roll plays after content ends
If no ad available - content plays normally
Sponsored Takeover Experience
What happens during takeover?
- Entire feed is replaced with sponsored content
- No organic content visible
Two Types
1. Standard Takeover: Feed filled with sponsored posts
2. Video Feed Takeover: Fullscreen vertical video experience (like reels)

If No Active Campaign
- Feed returns to normal behavior
Ad Controls & Experience Settings
1. Mute on Start
- ON: video starts muted
- OFF: video starts with sound
2. Duration Display
- Shows countdown timer (e.g., 0:15)
3. Aspect Ratio Handling
- Flexible (any ratio) OR
- Matches content player
4. Card vs Fullscreen Ads
| Setting | Behavior |
|---|---|
| Card + Fullscreen | Ads visible in feed and fullscreen |
| Fullscreen only | Ads shown only after opening video |

Fallback & Error Handling
If Ads Are Not Available
| Scenario | Behavior |
|---|---|
| No ad fill | Try next ad type |
| No programmatic ads | Show House Ads |
| No House Ads | Remove slot |
If System Issues Occur
- Config fails: content-only feed
- Ad fails: slot removed
- In-stream error: content continues
No user-facing errors or blank spaces
Tracking & Analytics
Key Events Captured
- Ad impression
- Ad click
- Ad skip
- Ad completion
- Ad errors
- Takeover start/end
Impression Rules
- In-feed: visible for ≥1 second
- In-stream: when playback starts
- Takeover: once per session
Rules & Key Considerations
- Ad rendering strictly follows preset configuration
- Environment mismatch = no ads
- House Ads act as fallback only
- No empty or broken UI elements shown to users
- Ad slots collapse cleanly if no fill
Example Scenarios
Scenario 1: Full Monetization Flow
- Ads available: programmatic ads shown
- No ads: fallback to House Ads
Scenario 2: Platform Targeting
- Ads configured for iOS only
- Web users see content-only feed
Scenario 3: Video Monetization
- Pre-roll + mid-roll enabled
- User sees ads before and during video
Scenario 4: Takeover Campaign
- Brand launches takeover
- Entire feed shows sponsored content
FAQs
1. Why are ads not showing?
Check:
- Environment targeting
- Placement configuration
- Active preset
2. What happens if no ads are available?
House Ads are shown, or slots are removed.
3. Do ads affect user experience?
No. Ads are designed to be seamless and non-intrusive
4. Can ads appear only in fullscreen?
Yes, based on preset configuration.
5. Are ads different across platforms?
Yes, based on environment targeting settings
Specs & Limitations
Supported
- In-feed ads
- In-stream ads (pre/mid/post-roll)
- Sponsored takeover
- House Ads fallback
- Cross-platform rendering
Limitations
- No real-time preset updates (session-based)
- No advanced pacing logic
- No user-level frequency capping (Current Phase)