BCOEM Homebrew Competition Guide

This page is intended to document and share some of GTA Brews homebrew club's best practices with using BCOEM for running homebrew competitions.

Email Accounts

Each of our competitions are run by a large-ish "Crew" that works together to coordinate the various areas of the competition. We have one email account that is setup to forward to the entire Crew for that specific competition, functioning as an internal distribution list of sorts.


  • brewslam@gtabrews.ca
  • seasonal@gtabrews.ca

The email account above is not intended to be public facing since we don't want to expose the entire Crew to questions from entrants, judges, stewards. We use the same public facing email account for all our competitions, and it only forwards to the Competition Organizer, Head Judge, and Head Steward. This preserves the anonymity of the entries, and allows other members of the Crew to serve as judges or stewards in the competition.


  • comp@gtabrews.ca

In addition to the email accounts above, we have one more that is used to facilitate several Crew members working together to solicit competition sponsors. Each of these Crew members sets up their email client to be able to "send email as" this shared email account, and the email account is setup to forward incoming mail to each of them. This way each member of the sponsorship team is able to see replies from sponsors without that person having to remember to forward.


  • sponsorship@gtabrews.ca

Competition Website

Our preference is use our centralize as much information as we can on our competition website, and limit the info we put into BCOEM. Most of our BCOEM text boxes simply contain links back to our competition website for rules, volunteer info, sponsors & prizes, etc.

Each competition has a homepage which is intended to the main public facing page, with links to other pages for detailed info, and also a link to the BCOEM install.

BCOEM Install and Config

Based on BCOEM Installation Instructions with GTA Brews specific configuration choices.

This article assumes the website is hosted with a premium host service that can handle most of the background technical details like updating PHP, MySQL versions, and obtaining the correct SSL certificates, etc... We use SiteGround and have been happy with their technical support.

Backup Any Previous Configuration

If you have a existing installation from a previous competition, you'll want to backup your configuration files you know what was working before:


Create Sub-Domain

Create a sub-domain dedicated to your competition. Eg. seasonal.gtabrews.ca

Using a sub-domain helps to eliminate cross contamination between your competitions's BCOEM instance, your main website (WordPress installation), and any other BCOEM instances you may have.

Database Setup

  1. Create MySQL user & password for database
    • User: <db_username>
    • Password: <autogenerated+saved>
    • If username is autogenerated, apply a label instead to remind you what it's for
  2. Create MySQL database for the competition
    • Database: <db_name>
    • If DB name is autogenerated, apply a label (Eg. gtabrews_seasonal_2021) instead to remind you what it's for
  3. Link the user to the database

Start Each Competition with a Fresh Subdomain and Database

Although BCOEM does support Archiving and resetting for re-use with additional competitions we don't recommend doing that. Generally each club is running 1 or 2 BCOEM competitions per year, and the software moves forward pretty quick. It's better to start with a fresh wipe of your sub-domain and a fresh SQL database each competition.

You should be archiving your competition results on your club website instead of on BCOEM, that way people can find previous years results easily.

Download Latest Stable BCOEM Version

The latest release of BCOEM can be found here, however it's usually a good idea to check with some other competition organizers what version they used, and if there were any issues.

As a competition organizer, it's also a good idea to keep tabs on the BCOEM GitHub Issues. Sometimes there are small bugfixes submitted without prompting a major release, and you may wish to apply those fixes yourself. In the few months around competition time, you may even wish to go as far as subscribing to GitHub notifications to be aware when issues are reported and/or fixed.

Upload BCOEM to Your Website

Upload the .zip to the public_html section on your subdomain.

Extract the .zip, then move all the files contained in the extracted folder back into the public_html directory.

Configure BCOEM Files

In site/config.php:

$username = "<db_username>";
$password = "<autogenerated+saved>";
$database = "<db_name>";
$session_expire_after = 90;
$setup_free_access = TRUE;
$sub_directory = "";

We have experienced issues with BCOEM sending emails for Confirmation, Password Reset, and Contact Form. The root issue is because PHP mail() function is unreliable. We use SMTP mailing instead.

NOTE: When using PHPMailer(), please make sure to enable Captcha 2.0 to avoid bots using your website to spam people.

In paths.php, Enable SMTP (PHPMailer):


In your site/config.mail.php, Setup your SMTP Mailing:

$mail_default_from = "comp@gtabrews.ca";
$smtp_host = "gtabrews.ca";
$smtp_auth = TRUE;
$smtp_username = "comp@gtabrews.ca";
$smtp_password = "<email_password>";
$smtp_secure = "ssl";

Note: The value for $stmp_host will vary based on your webhost.

BCOEM GUI Installation & Setup

After completing the above steps, you'll need to follow the step-by-step prompts on the website to complete installation and setup. Start by navigating your competition URL and clicking Intall Tables.

Most of the prompts are fairly obvious, but some worth pointing out are:

  • Always use Paypal IPN to make sure entries are reliably marked as Paid
  • Always Enable Captcha 2.0 to make sure bots don't use your website to spam
    • You'll likely need to register your subdomain with google to get Private and Public Captcha keys generated
  • Always make sure Winner Display is set to Disabled and the Winner Display Date is set to a date well after your planned awards ceremony
    • This helps to make sure your results don't leak early
  • Winner Place Distribution should be by Table/Medal Group
  • You should always hide the Brewers Specifics field to avoid enabling entrants sharing unnecessary info with judges
  • We previously used a 50 character limit for text entry in paper-only competitions but we are experimenting with a higher limit now that we are primarily digital scoresheets
  • When setting up your cap it should be on Paid Entries and you should enforce "Pay to Print Paperwork"

Don't forget to change $setup_free_access to FALSE in site/config.php after this step is complete and your BCOEM initial setup is complete.

After the Competition

Displaying Scores/Scoresheets with Results Display

For various reasons, my preference is to display results on my own page, using my own formatting. This means that we need to enable Scores and Scoresheets to display in entrant profiles independent of results.

The method to do this is described on BCOEM github: