How to fix Church Online Platform v4 and Cloudflare to allow www and non www URLs to work

If you’ve set up a custom domain on version 4 of Church Online Platform (ChOP), you may find that it works on either or but not both. Here’s a quick walkthrough on how to get that working properly. First add your custom domain under Setup, then Domain in Church Online Platform v4.

Church online platform setup page

Then under the DNS tab in Cloudflare, create a CNAME with your custom domain that points to, and proxy status set to DNS only.

Add another CNAME that has www pointing to your domain name with proxy status set to Proxied.

Cloudflare DNS management page

After this, you’ll need to set up a 301/302 redirect after setting up DNS. Staying on Cloudflare go to the Page Rules tab and create a Page Rule with a Forwarding URL setting and point to your domain. Then click Save and Deploy.

Cloudflare page rule page

Give it a few minutes to propagate and you should be good to go. As a note if this is your first time setting up custom domains, you’ll need to go into your domain name registrar and add the Cloudflare nameservers. You can find the nameservers under the DNS tab (right below DNS Management). Hope this helps you get set up the documentation on Setting Up Your Custom Domain – Church Online Platform wasn’t very clear, hopefully this clears things up.

Also posted on

Livestreaming prerecorded content for church online with

With current social distancing requirements, churches are trying to work out how to do online streaming yet we try to keep our staff safe while producing a church service. I thought I’d share with you the tools that we’re using at Whittier Area Community Church to stream our services online. I’m Director of IT and a live streaming YouTuber and podcaster. I don’t represent the A/V Tech department at WACC, but I did have an active role in setting up the tools we use to get this all done.


Whittier Area Community Church Sunday Service

For starters, we prerecord 3 parts of our service: heritage worship, worship, and the sermon. Our video editor creates 2 video files to be uploaded to and we use Google Drive to send these files between the editor and the production staff. All of this allows us to minimize the time that staff are on-site and allows us to get in and out quickly. Staff safety is paramount during this COVID-19 pandemic and using a recorded service and a scheduler lets us do all this work remotely.


With our two video files produced and ready to go we upload them to a service called which I’ve used for many non-church projects to do live streams and recorded podcasts and it works great! has a function called Scheduler that works quite well for streaming prerecorded content.

Stream your recorded videos live
Image of Scheduler page on

You can find their pricing on the pricing page depending on your requirements.

Setting up your Restream Channels

This process couldn’t be simpler, you click add a channel and select the place you want to stream to. For instance, with Facebook, you can select the profile of the person logged in and it would stream to their account or you can select a page this person is Admin of (How to manage roles on a Facebook Page). From there you’ll be able to stream to that page. One thing to note is the Continuous live stream checkbox on the edit channel page, I’d suggest keeping this unchecked it “enables continued streaming past Facebook’s 8-hour limit, but a recorded version isn’t stored to your page after the stream ends.” I don’t feel there is a reason to use this and for us it stopped us from being able to stream.

edit channel setting for facebook
Edit Channel settings for Facebook

YouTube also has the same function, you just want to make sure that your user that is logged in has proper access to the YouTube account you want to stream to. (Change channel owners & managers with a YouTube Brand Account) “If a channel is linked to a Brand Account, multiple people can manage the channel from their Google Accounts. You don’t need a separate username or password to manage YouTube channels with a Brand Account.

Setting up your first scheduled service

Before we were using’s scheduler we were streaming live using’s ability to send it a signal using their RTMP endpoint, we did this for a short time before going on lockdown here, in California. Before that and COVID-19 we were using a service called using their hardware encoder.

In once you select the channels that you want to stream to it will restream (see where they got the name) to each of those channels. Those channels, many of which are for gamers such as Mixer and Twitch but don’t let that fool you, it supports many popular platforms. Our church streams to our Facebook page as well as YouTube. We could stream to LinkedIn or Periscope on Twitter or any custom RTMP endpoint, if needed, you could even stream to Instagram using this custom RTMP but that’s for another post in the future.

add a channel

With Scheduler, you use the same endpoints and can select each one individually when setting up the stream, for instance, if you wanted to stream a church service to a specific Facebook page for a ministry. This also works for Facebook Groups too if you need to do that.

new live event

You specify the time and date and it will stream the video selected to the channels selected. There are some features for doing repeat streams and at what interval, we don’t use that.

Putting it all together

While streaming to YouTube and Facebook we also use CHOP or Church Online Platform as a way of having a chat, prayer and other ways of interacting with this church all in one player. You can see our use of CHOP over at We recently did a post on how to optimize the statistics from CHOP using Google Analytics Configure Google Analytics for Church Online Platform for using custom dimensions.

Wrapping up

I hope this article helps you with some clarification with live streaming a recorded service, check out our other posts relating to this and leave a comment if you have any questions or suggestions for more posts from us!

If this post is helpful please share it using the links provided.

Configure Google Analytics for Church Online Platform for using custom dimensions

Thanks to the spreading COVID-19 pandemic, lots of churches are scrambling to roll out or upgrade their online streaming experience. One of the most popular (and free!) tools to provide some over-the-top features for online streaming is a product called Church Online Platform (CHOP). This tool provides an easy to edit web page wrapper around an embedded video player from your livestreaming tool of choice. You can add your church logo, custom links, and even offer an interactive chat widget for your congregants.

While this tool is generously created and supported free of charge by the awesome folks at Life.Church in Oklahoma, developer time is limited and not every feature request can be accommodated. One of the areas that could use a little improvement is analytics. Unfortunately, the newest version of this platform has very limited customizability so if you’re on v4 you’ll have to make do with the defaults. If you’re on v3 though, read on to learn how to add basic Google Analytics and add additional features too! (Check this support article to determine the version you’re on)

Adding basic Google Analytics on version 3 couldn’t be easier: Just follow the article Set up a property on the Google Analytics help center to create a property if you don’t already have one for your CHOP site. If you do, jump ahead to the article on Setting up the Analytics tag. Once you have the code snippet, go to your CHOP Admin page, click the “Settings” menu, and paste the tracking code into the “Google Analytics tracking code” field in the “Extras” section:

If you just want basic Google Analytics, that’s all you need to do! Within a few minutes you should start to see data show up in your Google Analytics view. But what if you want more info? One problem I ran into was that it was hard to see exactly how many visitors were on the site for a given service because GA only lets you break down visitors by the hour. And CHOP doesn’t have a unique URL for each service. Is there a way to figure out what service/event was streaming when a visitor landed on your CHOP site? Yes there is! I’ve written a little Javascript snippet that will grab this information and push it up to Google Analytics as a custom dimension.

First, you need to create your custom dimension. Each free Google Analytics account is allowed up to 20 dimensions, and like many other features of Google Analytics (goals, e.g.) custom dimensions are permanent – you can disable them but can’t delete them. If you’re close to your limit already, make sure this is something you want to use one of your 20 slots for. Go to Google Analytics and select your CHOP property. Go to “Admin” and select “Custom Definitions” -> “Custom Dimensions”. Click “New Custom Dimension”

Add a name – it doesn’t matter what you pick so make it easy to understand for when you’re looking at reporting later. Select “Hit” for scope – that means the value you set is only valid for one page view. Then click “Create”. You’ll see this page explaining how to use your new dimension:

Since this is my first custom dimension, I’ll access it with the ID “dimension1”. Now we need to paste in the custom JS snippet. I’ve included it below and I’ll explain the parts briefly. If you or someone you know is familiar with Javascript, you should be able to customize it to meet your needs:

First, this script grabs a list of all the active events from the CHOP API. Then, for each event, it checks to see if the current time is between the start and end times for the event. If it is, the script creates a value for the custom dimension by adding the event ID to the beginning of the label, followed by the event title, followed by the event start time. You can modify line 18 to your liking. If none of the events matches the current time, a page view event will be sent without any custom dimension.

To install the custom script, first be sure to swap the “UA-1234567-01” in line 17 and line 24 with your own property ID from your tracking code. Then, go back to the “Google Analytics tracking code” field in the CHOP settings. Remove the line that says

gtag('config', 'UA-1234567-01');

And paste the custom snippet at the end of the default Google Analytics snippet. When you’re finished, it should look something like this:

To view your results, go to Google Analytics -> Behavior -> Site Content -> All Pages and click the “Secondary dimension” drop down. Click “Custom Dimensions” and then select the name you picked for your custom dimension.

Once you do that, you’ll see all your page views grouped by the event that was streaming when they visited that page:

You can also create segments for specific events using this same field. To create a segment, go to Segments under the View settings in the Admin area, or click the “Add Segment” button that appears on many pages in Analytics:

Click “New Segment”, give it a name like “9am Service”, select “Conditions” on the left under “Advanced”. Select your custom dimension name from the dimension drop down menu, then specify the criteria. For example, you can search for a specific event ID by using “Starts With” and typing in the ID. Or you can search for an event title by using “Contains” and typing in the title:

When you’re done, click “Save” and your segment will be accessible on all view pages:

If you have any questions, problems, or suggestions about this post, please share them in the comments. And if you have any requests for future posts, share those too and we’ll try to get to your request soon!

Skip to content