Skip to content

Instantly share code, notes, and snippets.

View stuartchaney's full-sized avatar
💥

Stuart Chaney stuartchaney

💥
View GitHub Profile
@stuartchaney
stuartchaney / SKILL.md
Last active March 20, 2026 18:07
Rivo Merchant MCP Skill
name rivo-merchant-mcp
description Guide for using the Rivo Merchant MCP server to investigate shop configuration, customers, loyalty and membership program setup, analytics, integrations, Shopify data, and advanced model queries.

Rivo Merchant MCP Skill

You have access to the Rivo Merchant MCP server, which lets you query your Shopify store's Rivo data — loyalty points, referrals, VIP tiers, paid memberships, cashback, subscriptions, and more. All queries are read-only and automatically scoped to your shop.

Tip: Always call usage_guide_tool first — it returns this guide plus your shop's live configuration (enabled programs, feature counts, active integrations) so you have full context before answering questions.

@stuartchaney
stuartchaney / rivo-loyalty-gifts-setup.md
Last active August 4, 2025 22:27
How to set up Loyalty Gifts from your loyalty landing page

Loyalty Gifts Implementation Guide

Overview

The Loyalty Gifts feature allows merchants to display loyalty gifts directly on their loyalty page. When customers visit the page, they can discover and redeem available loyalty gifts.

Walkthrough Video

Implementation Requirements

@stuartchaney
stuartchaney / custom-block.liquid
Created July 18, 2025 04:26
Rivo membership PDP
{% if product.tags contains "Rivo Membership" %}
<style type="text/css">
product-subscriptions, .product__info-wrapper .product__text,
.shopify-payment-button{
display:none;
}
</style>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
@stuartchaney
stuartchaney / friend_profile_data.js
Created January 24, 2025 04:44
Rivo Friend Profile JS
const friendProfile = localStorage.getItem("rivo_friend_profile");
// Also available here
window.Rivo.friend_profile
let friendProfileData = {
email: "test@test.com", //Email of the friend
referral_id: 1234, //Rivo Referral ID
referral_campaign_id: 1, //Rivo Referral Campaign ID
visitor_token: "abcd", //Rivo Specific tracking code for visitor
window.addEventListener('hashchange', function(){
console.log("hash changed");
});
@stuartchaney
stuartchaney / variables.md
Last active April 16, 2024 15:42
Variables available for Rivo Theme Extensions

How to use these variables

Our theme extensions are built using liquid and a very small javascript framework called Alpine.js.

Here is how to display variables anywhere on the html displayed.

  1. Pick any element
  2. Add x-data to the element
  3. Add x-text to display text
  4. Add x-html if your text has html included.
@stuartchaney
stuartchaney / account.json
Created April 15, 2024 18:33
customers/account.json
{
"sections": {
"main": {
"type": "main-account",
"settings": {
}
}
},
"order": [
"main"
@stuartchaney
stuartchaney / rivo-lp.css
Created March 27, 2024 18:00
Rivo Landing Page Base CSS
/**************************\
Rivo Modal Styles
/**************************/
.rivo-modal {
text-align:center;
}
.rivo-modal__overlay {
z-index: 999999999999;
<script src="https://cdn.tapcart.com/webbridge-sdk/webbridge.umd.js" defer></script>
<script type="text/javascript">
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "<%= asset_url('app_proxy/application') %>";
document.head.appendChild(script);
document.addEventListener("webbridge-loaded", function() {
const div = document.getElementById('rivo-app-root');
@stuartchaney
stuartchaney / determine_test_transaction.rb
Created August 10, 2023 15:07
Service object to determine test transactions for a Shop
class DetermineTestTransaction < ApplicationService
attr_reader :shop
def initialize(shop)
@shop = shop
end
def perform
is_test_environment? || test_eligible_shop?