Manage Rewards

Reward Types:






{% if rewards %} Rewards in red are inactive. To activate a reward, add it to an active category. {% for reward, reward_info in rewards.items() %} {% if reward in redeems %} {% if reward in active_rewards %} {% else %} {% endif %} {% if reward_info["cooldown"] > 0 %} {% set minutes_label = 'minute' if reward_info["cooldown"] == 1 else 'minutes' %} {% else %} {% endif %} {% endfor %}
Name Price Info Cool down Category Actions
{{ prefix }}{{ reward }} {{ reward_info["price"] }} {{ reward_info["info"] }}{{ reward_info["cooldown"] }} {{ minutes_label }}None{{ reward_info["categories"] | join(', ') }}   {% endif %}

Goals

{% for reward, reward_info in rewards.items() %} {% if reward_info["type"] == "goal" %} {% if reward in active_rewards %} {% else %} {% endif %} {% endfor %}
Name Target Info Category Actions
{{ prefix }}{{ reward }} {{ reward_info["target"] }} {{ reward_info["info"] }} {{ reward_info["categories"] | join(', ') }}     {% endif %}

Votes

{% for reward, reward_info in rewards.items() %} {% if reward_info["type"] == "vote" %} {% if reward in active_rewards %} {% else %} {% endif %} {% endfor %}
Name Price Info Category Actions
{{ prefix }}{{ reward }} {{ reward_info["price"] }} {{ reward_info["info"] }} {{ reward_info["categories"] | join(', ') }}     {% endif %}
{% endif %}

Manage Viewer Accounts

{% if users %} To merge an account with a temporary account: Copy the email address from the temporary account, click "edit" next to the account you want to merge, paste the email address into that account, click "save".

{% for user in users %} {% if not user[1] %} {% else %} {% endif %} {% set points_label = 'point' if user[2] == 1 else 'points' %} {% if user[4] %} {% if not user[1] %} {% else %} {% endif %} {% else %} {% endif %} {% if user[3] %} {% else %} {% endif %} {% endfor %}
User Points balance Email Authed
Temporary Account {{ user[1] }} {{ user[2] }} {{ points_label }}{{ user[4] }}{{ user[4] }}noneYesNo
{% endif %}

Manage Categories

  

Active Categories

Inactive Categories

{% for cat in active_categories %}   {{ cat }} - Deactivate Delete
{% endfor %}
{% for cat in inactive_categories %}   {{ cat }} - Activate Delete
{% endfor %}

Manage Announcements

{% if settings_info[8] %} {% else %} {% endif %}
Enable periodic announcements
minutes How long between each announcement?
Enter your announcements, one per line. May contain html IMG tags to display images.




OwnchatBot Settings

minutes How often do you want to award your viewers points?
points How many points do you want to award them?
Character that preceeds chat commands, so OwnchatBot knows what to look for.
Example: "{{ settings_info[3] }}points"
What is the external URL of your OwnchatBot?

Owncast Integration

Create in Owncast Admin panel. Integrations -> Access Tokens (check all three boxes)
The token you created above.
The external URL of your Owncast instance, with "http://" or "https://".

Kofi Integration

{% if settings_info[7] %} {% else %} {% endif %}
Enable Ko-fi integration. Enable Ko-fi integration. ("Kofi Settings" button will appear in the navigation bar when enabled.)
Get from Kofi -> More -> API -> Webhooks -> Advanced -> Verification Token.




Kofi Settings

Donations

{% if kofi_settings['donations'] %} {% else %} {% endif %}
Enable awarding points for donations
points How many points should viewers recieve, for every dollar they donate?
What is your Kofi page URL?

Subscriptions

{% if kofi_settings['subs'] %} {% else %} {% endif %}
Enable awarding points for monthly subscriptions
points How many points should subscribers recieve every month?




To-Do List


Stream Overlay

To place the to-do list overlay in your stream, create a browser source in your streaming software
using the following URL: {{ settings_info[10] }}/todo
 Recommended width: 420
 Recommended height: 500
 In OBS, check "Refresh browser source when scene becomes active"

You can spruce up your list with fonts and colors by inserting custom CSS into the browser source.
Example CSS:
 h4 {
  font-size: 32px;
  text-decoration: underline;
  text-align: center;
  margin-bottom: 0;
  padding-bottom: 0;
 }

 ul {
  margin-top: 0;
  padding-top: 0;
 }

 li {
  font-size: 30px;
 }

If you want to use a custom font, place the font file in your "instance/assets/" folder, and reference the following location in your CSS:
  /assets/yourfont.ttf

Customize Your Alerts

{% set follower_alert = alerts_dict["FOLLOWER_ALERT"] %} {% if follower_alert %} {% if "webm" in follower_alert %} {% else %} {% endif %} {% else %} {% endif %} {% set milestone_alert = alerts_dict["MILESTONE_ALERT"] %} {% if milestone_alert %} {% if "webm" in milestone_alert %} {% else %} {% endif %} {% else %} {% endif %} {% set goal_alert = alerts_dict["GOAL_ALERT"] %} {% if goal_alert %} {% if "webm" in goal_alert %} {% else %} {% endif %} {% else %} {% endif %}
Type Image URL
New Follower:Empty   {{ settings_info[10] }}/alert/follower
Milestone Reached:Empty   {{ settings_info[10] }}/alert/milestone
Goal Reached:Empty   {{ settings_info[10] }}/alert/goal

Stream Overlays

To use these alerts, create a browser source in your streaming software, using the URLs specified above.
 Recommended width: 200
 Recommended height: 200
 In OBS, check "Refresh browser source when scene becomes active"

Each alert will display the name of the viewer that triggered the alert. You can customize the position of the name, as well as fonts and colors by inserting custom CSS into the browser source.
Example CSS:
 #nameBox {
  top: 50%; /* Vertical position */
  left: 50%; /* Horizontal position */
  font-size: 20px; /* Adjust as needed */
  font-weight: bold; /* Adjust as needed */
 }

If you want to use a custom font, place the font file in your "instance/assets/" folder, and reference the following location in your CSS:
  /assets/yourfont.ttf