app-ads.txt for Roku Channels
When submitting a Roku channel that displays video ads, you'll need to set up an app-ads.txt file. This guide explains what it is, why you need it, and how to configure it for your CastConductor channel.
What is app-ads.txt?
app-ads.txt is an IAB (Interactive Advertising Bureau) standard for connected TV and mobile apps. It's the OTT equivalent of ads.txt for websites.
The file declares which ad networks and sellers are authorized to sell your channel's ad inventory. This helps prevent:
- Ad fraud — Stops unauthorized parties from selling fake inventory
- Brand safety issues — Ensures advertisers know their ads appear on legitimate channels
- Revenue leakage — Prevents unauthorized sellers from taking your ad revenue
Roku Requirements
When enabling monetization during channel submission, Roku requires:
| Field | Description | Example |
|---|---|---|
| Developer URL | Your website's root domain | https://yourstation.com |
| app-ads.txt | Must be accessible at root path | https://yourstation.com/app-ads.txt |
File Location
The file must be at the root of your domain. Roku's crawler will look for https://yourdomain.com/app-ads.txt — not in a subdirectory.
Configuration Options
Option 1: RAF Only (Recommended for Most Users)
If your channel only uses Roku's built-in advertising framework (RAF) and you don't use third-party ad networks:
# [Your Channel Name] - Roku Channel
# This channel does not authorize third-party programmatic ad sellers
# All advertising is served directly via Roku Advertising Framework (RAF)
Keep the # Characters
The # symbols are required — they denote comments in the app-ads.txt format. Don't remove them! Without the #, these lines could be interpreted as malformed seller entries rather than comments. Replace [Your Channel Name] with your actual channel name, but keep the # at the start of each line.
When to Use
- You monetize through RAF pre-roll/mid-roll ads only
- You sell sponsorships directly (no programmatic)
- You don't use external ad networks like Google or SpotX
Option 2: RAF + Roku Direct Sales
If you participate in Roku's ad marketplace where Roku can fill unsold inventory:
# [Your Channel Name] - Roku Channel ID [YOUR_CHANNEL_ID]
# Authorized advertising sellers
# Roku Direct
roku.com, [YOUR_PUBLISHER_ID], DIRECT
Replace [YOUR_PUBLISHER_ID] with your Roku publisher/seller ID.
Option 3: Third-Party Ad Networks
If you integrate with external ad networks (Google Ad Manager, SpotX, FreeWheel, etc.):
# [Your Channel Name] - Roku Channel ID [YOUR_CHANNEL_ID]
# Authorized advertising sellers
# Roku Direct
roku.com, [YOUR_PUBLISHER_ID], DIRECT
# Google Ad Manager
google.com, pub-XXXXXXXXXXXXXXXX, DIRECT
# SpotX
spotx.tv, XXXXX, DIRECT
# FreeWheel
freewheel.tv, XXXXX, RESELLER
Know Your Seller IDs
Each ad network provides a unique publisher/seller ID. Contact your ad network account manager for the correct values.
Option 4: No Advertising
If your channel has no ads at all (subscription or free):
# [Your Channel Name] - Roku Channel
# This channel does not display advertising
# Monetization is via subscription or direct sponsorship only
WordPress Implementation
Method 1: Upload Physical File
Upload a file named app-ads.txt to your WordPress root directory:
You can do this via:
- SFTP/FTP client
- File manager in your hosting control panel
- SSH:
nano /var/www/html/app-ads.txt
Method 2: WordPress Must-Use Plugin
Create a file at wp-content/mu-plugins/app-ads-txt.php:
<?php
/**
* Serve app-ads.txt for Roku channel
*/
add_action('init', function() {
if ($_SERVER['REQUEST_URI'] === '/app-ads.txt') {
header('Content-Type: text/plain');
header('Cache-Control: public, max-age=86400');
echo "# Your Channel Name - Roku Channel\n";
echo "# This channel does not authorize third-party programmatic ad sellers\n";
echo "# All advertising is served directly via Roku Advertising Framework (RAF)\n";
exit;
}
});
This approach lets WordPress serve the file dynamically without needing file system access.
Method 3: .htaccess Rewrite
If you prefer storing the file in a different location:
# Serve app-ads.txt from uploads folder
RewriteRule ^app-ads\.txt$ /wp-content/uploads/app-ads.txt [L]
Verification
After setting up your file, verify it's accessible:
Troubleshooting
| Issue | Solution |
|---|---|
| 404 Not Found | Ensure file is in web root, not a subdirectory |
| WordPress blocking .txt files | Check security plugins (Wordfence, etc.) |
| File not updating | Clear CDN cache, check file permissions |
| Roku submission rejected | Verify file is publicly accessible (no login required) |
Related Resources
Next Steps
Once your app-ads.txt is live, return to the Roku Developer Dashboard and continue your channel submission. Enter your domain URL in the "Developer URL" field.