Paid Roku Channels: Registration & Linking with WordPress

Instant TV Channel is pleased to offer a free WordPress plugin that provides Roku Registration & Linking services to WordPress-based web sites. Registration & Linking is a technique that allows you to register customers before they are permitted to have access to your Roku channel. Instant TV Channel's implementation of Registration & Linking uses Amazon S3 buckets to link your customer's account on your web site with your customer's Roku player.

The WordPress plugin provided by Instant TV Channel manages your S3 buckets automatically, you only need to provide the plugin with your bucket names and keys.

Registration & Linking can be used together with any WordPress payment-processing plugin to implement a paid Roku channel. For example, a WordPress-based web site could require customers to enter a payment, make a donation, or sign up for a subscription before being granted access to the page containing the Registration & Linking widget or shortcode.

Step-by-Step Configuration Directions:

  1. Go to the S3 section of your AWS (Amazon Web Services) control panel and create three new S3 buckets. Name them something like "my-registration-bucket", "my-linking-bucket", and "my-account-bucket". You will use the bucket names in several of the following steps.
    • The Region must remain at the default value of "US Standard".
    • These should be private buckets that are not web enabled.
    • These buckets will only be used for Roku player registration and should not be used for Instant TV Channel Configuration File or Content storage.
    • Use only lower-case characters, digits, and dashes in your bucket name. Instant TV Channel does not support the use of upper-case characters or other symbols in bucket names.

      Good Bucket Name: registration-bucket
      Good Bucket Name: reg123
      Bad Bucket Name: registration.bucket (contains unsupported period character ".")
      Bad Bucket Name: reg+123 (contains unsupported plus character "+")
      Bad Bucket Name: Reg-Bucket (contains upper-case characters "R" and "B")
  2. Go to the IAM (Identity and Access Management) section of your AWS control panel where we will create a new IAM identity and keys.
    1. Click the Policies link on the left side of the page.
    2. Click the Create Policy button near the top of the page.
    3. Click the Select button to the right of "Create Your Own Policy".
    4. Provide a Policy Name, for example "my-reglink-policy".
    5. Copy the security policy below and paste into the Policy Document box, replacing "my-registration-bucket", "my-linking-bucket", and "my-account-bucket" with the names of the three buckets you just created.
      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "s3:*"
            ],
            "Resource": [
              "arn:aws:s3:::my-registration-bucket",
              "arn:aws:s3:::my-registration-bucket/*",
              "arn:aws:s3:::my-linking-bucket",
              "arn:aws:s3:::my-linking-bucket/*",
              "arn:aws:s3:::my-account-bucket",
              "arn:aws:s3:::my-account-bucket/*"
            ]
          }
        ]
      }
    6. Click the Create Policy button near the bottom of the page.
    7. Click the Groups link on the left side of the page.
    8. Click the Create New Group button near the top of the page.
    9. Provide a group name, for example "my-reglink-group", then click the Next Step button near the bottom of the page.
    10. The "Attach Policy" page is displayed. Scroll down the list of policies until the "my-reglink-policy" policy that you just created is visible. You may need to scroll through a large number of built-in AWS policies until your policy is visible.
    11. Click the check-box to the left of your policy name, making sure that no other check-boxes are checked, then click the Next Step button near the bottom of the page.
    12. Click the Create Group button near the bottom of the page.
    13. Click the Users link on the left side of the page.
    14. Click the Create New Users button near the top of the page.
    15. Enter a new user name into box #1, for example "my-reglink-user".
    16. Click the Create button near the bottom of the page.
    17. Click either Show User Security Credentials or Download Credentials to copy and save the Access Key ID and Secret Access Key. These keys will be used exclusively for your Registration and Linking buckets. They cannot be used to access any other AWS bucket or service. Make sure that you save the keys for future use, Amazon will not display them again. If you misplace the keys you will have to create a new IAM user.
    18. After copying the Security Credentials, click the Close button near the bottom of the page. You may need to click this button twice.

      At this point we have a new IAM user and a new IAM group - the user has the keys and the group has the security policy. The next steps will add the user to the group so that the keys and security policy will be associated with each other. This will allow the keys to be used in the Roku channel to access the S3 buckets specified by the security policy.

    19. Click the Users link on the left side of the page.
    20. Click the checkbox next to the User that you just created.
    21. Click the User Actions button near the top of the page and select "Add User to Groups".
    22. Click the checkbox next to the Group that you just created.
    23. Click the Add to Groups button near the bottom of the page.
  3. Download the wp_irchan.zip file from http://ex.irchan.com/wp_irchan.zip
  4. If you want to use two registration widgets with different settings for the same channel and website, also download the wp_irchan2.zip file from http://ex.irchan.com/wp_irchan2.zip. This can be used, for example, to have both a paid registration widget with unlimited renewals and a free-trial registration widget with no renewals that expires in 30 days.

    Both the wp_irchan and wp_irchan2 zip files must be installed in order to use both registration widgets on the same website. You can also install the wp_irchan2 zip file later, it is not required if only a single registration widget is needed.

  5. Install the zip file(s) into your WordPress server's wp-content/plugin directory.
  6. Activate the plugin and install the widget as you would any other WordPress plugin or widget. The shortcode for the widget is [irchan]. If you installed two plugins, the shortcode for the second widget is [irchan2]. Make sure to place the widget on a page or pages that are only available to paid subscribers.
  7. Configure the widget by clicking on Instant TV Channel in the main WordPress Settings menu.
    • Optional Partner ID - If used, this must be identical to the Partner ID you have specified on the Instant TV Channel Registration page for the channel.
    • Registration Bucket Name - The name of the S3 Registration Bucket that you previously created.
    • Linking Bucket Name - The name of the S3 Linking Bucket that you previously created.
    • Account Bucket Name - The name of the S3 Account Bucket that you previously created.
    • Access Key ID - The Access Key ID for the Registration & Linking IAM account you previously created.
    • Secret Access Key - The Secret Access Key for the Registration & Linking IAM account you previously created.
    • Widget Title - Appears above the widget on your WordPress pages.
    • Widget Button Label - The text that appears on the widget's button.
    • Success Message - Text that is displayed if linking is successful.
    • Failure Message - Text that is displayed if linking fails. This will occur if the Roku Registration Code is incorrectly entered, or if any of the bucket names or keys are incorrect.
    • Renewal Limit Message - Text that is displayed if a user attempts to exceed the maximum allowed number of renewals.
    • Maximum Number of Renewals - The maximum number of subscription renewals for each subscriber. 0 allows no renewals. Blank allows unlimited renewals. Renewals are tracked by counting the linking files, so do not delete expired files from the S3 Linking bucket if Maximum Number of Renewals is not blank.
    • Player Limit Message - Text that is displayed if a user attempts to exceed the maximum allowed number of registered Roku players.
    • Default Maximum Number of Players - The number of Roku players that a subscriber is permitted to have. Typical values are 1 through 5. This value can be overridden on a per-subscriber basis.
    • Default Registration Lifetime - The number of minutes until the registration expires, starting from when the Roku player is registered. If 0 or blank, the registration will never expire.
    • Default Command - A command to execute on the user's Roku player. Can be overridden on a per-player basis.
      • Delete Token - Delete the token from the player and force re-registration as soon as the the registration-protected area of the channel is entered.
      • No Command - Do nothing. This is the typical setting.
    • Debug Widget - Should always be set to No for production web sites. Displays trouble-shooting information beneath the widget that can be helpful with S3 bucket configuration problems.
  8. Go to the channel's Registration page on the main Instant TV Channel web site. This is only available for a Commercial channel. Under Registration Control:
    • Change Registration Service Provider to SELF.
    • Enter the same Optional Partner ID (if any) that you used in the WordPress plugin. If present, this will also be the folder or directory name in your S3 buckets that will contain the registration, linking, and account files for this channel. If not present then the registration, linking, and account files will be located at the top-level of your buckets.

    Under AWS S3 Buckets:
    • Enter the Registration and Linking bucket names and keys that you created earlier.
    • Click the TEST S3 BUCKETS button and verify that the S3 Bucket Tests Passed message is displayed.

    Under Registration Screen:
    • Change the text for Focal2 to contain the URL for the registration page on your WordPress site.
    • Customize anything else.
  9. The EraseDeviceToken setting in the Theme Editor allows you to erase the channel's Registration & Linking device token in a player. If set to yes, players will always have to go through the Registration & Linking process, even if they have previously been registered. Any player that attempts to access a protected section of your Roku channel will have its device token erased, so you usually only want to have this set to yes for testing, and set to no for a production channel.
  10. Please read this information about the Registration, Linking, and Account buckets before attempting to delete any files! Technical details about Instant TV Channel's implementation of Roku's Device Registration & Linking specification are available here.

To learn how to create a Roku channel using Instant TV Channel, please see this Developer Walk-Through.

Questions, comments or suggestions about this Roku developer guide or the Instant TV Channel WordPress plugin can be emailed to .

Instant TV Channel is a cloud-based tool for Roku developers and content providers that shortens development time and eases maintenance after deployment.



Private Channel Code: ITVC
Check out Instant TV Channel by adding our demonstration channel to your Roku player, or watch the YouTube video.

Need help with your Roku?

We are unable to provide technical support for your Roku device or for channels not created using Instant TV Channel.

Please visit www.roku.com for assistance.



Instant TV Channel is not affiliated with nor endorsed by Roku Inc.