Skip to content

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

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:

/var/www/html/app-ads.txt

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:

Visit https://yourdomain.com/app-ads.txt directly

curl https://yourdomain.com/app-ads.txt
# 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)

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)

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.