Rivo Debug / Kitchen Sink
Not logged in — RivoAPI methods will fail · RivoAPI status: waiting for RivoAPI…
Liquid — server-side customer data
Liquid
Everything available at render time from the customer object — no JS required.
This is what can be used for server-side conditionals like loyalty status gating.
| Property | Value |
|---|---|
| customer.id | |
| customer.email | |
| customer.first_name | |
| customer.last_name | |
| customer.orders_count | |
| customer.total_spent | |
| customer.accepts_marketing | |
| customer.tags | |
| loyalty-opt-in tag? | NO |
shop.metafields.rivo — rewards metafield
Liquid
Rivo populates shop.metafields.rivo.loy.points_program.points_rewards with the active rewards.
If populated, rewards can be rendered server-side with zero JS — the most robust approach.
⚠️ shop.metafields.rivo.loy.points_program.points_rewards is empty or not accessible.
The metafield namespace may need to be exposed in Settings → Custom data → Storefront access,
or the metafield key may differ. Fall back to RivoAPI.rewards() below.
RivoAPI.identify_customer()
Widget SDKPoints balance, loyalty status, lifetime earnings. The primary source of truth for what to show on the account page header.
— not yet fetched —
RivoAPI.customer_tier()
Widget SDKCurrent VIP tier and progress toward the next tier. Can power a progress bar showing how far the customer is from their next reward level.
— not yet fetched —
RivoAPI.rewards()
Widget SDK
All available rewards. Compare this to the Liquid metafield above — if they match,
the metafield approach works and you don't need JS for the list. Each reward also has a
live Redeem button that calls RivoAPI.redeem(id).
— not yet fetched —
window.Rivo — global config object
JS global
Rivo injects a global window.Rivo object when its embed script loads.
It exposes the app proxy base URL (proxy_paths.loy) and the current customer ID —
both are needed for triggering custom actions client-side without a server-side API key.
— not yet inspected —
RivoAPI.update_dob()
Widget SDK — write
Writes the customer's date of birth to Rivo. Rivo uses it to automatically award birthday points.
The value is then readable back in Liquid as
customer.metafields.custom.rivo.value.dob (if the metafield namespace is exposed).
Format: MM-DD (e.g. 06-24 for June 24th — no year).
| Liquid source | Value |
|---|---|
| customer.metafields.custom.rivo.value.dob |
What this enables on the account page
Custom action — proxy trigger
JS → app proxy
Custom actions award points for things you define in the Rivo dashboard (e.g. "Completed profile", "Added birthday").
They're triggered by POSTing to the Shopify app proxy — no server-side API key needed,
authentication goes through the proxy. The proxy URL comes from window.Rivo.global_config.proxy_paths.loy.
⚠️ The custom action name must already exist in your Rivo dashboard under Ways to Earn → Custom Action — otherwise the request will return an error.
— inspect window.Rivo first to see the resolved URL —
Ideas for custom actions on the account page
| Action name (you define) | When to trigger |
|---|---|
| profile_birthday_added | After successful updateCustomerDob() |
| account_page_visit | On rivo-js-loaded while on /account |
| referral_link_copied | After customer copies their referral URL |
| newsletter_subscribed | After loyalty opt-in form submission |
RivoAPI.referral_stats()
Widget SDKThe customer's referral URL, code, and summary stats. Useful for a "share with a friend" section on the account page.
— not yet fetched —
RivoAPI.points_logs() — Activity Feed
Widget SDKTimeline of points earned and spent. Powers an activity feed on the account page — shows recent transactions like "Earned 50 points for order #1234" or "Redeemed 200 points for 10% off".
— not yet fetched —
RivoAPI.cart_earnings_estimation() — Cart Points Preview
Widget SDKEstimates how many points the customer will earn from their current cart. Powers a "You'll earn X points with this order!" motivator on the cart page or mini-cart.
— not yet fetched —
RivoAPI.best_reward_to_show() — Next Reward Nudge
Widget SDKThe single most relevant reward for this customer right now. Powers a motivational "You're X points away from a free treat!" nudge bar on the account page, cart, or site-wide banner.
— not yet fetched —
RivoAPI.membership() + membership_details()
Widget SDKMembership program status and details. Powers a digital membership card showing program enrollment, benefits, and renewal info. Fetches both endpoints to give the complete picture.
— not yet fetched —
RivoAPI.loyalty_gifts() — Claimable Gifts
Widget SDKAvailable loyalty gifts (different from points-based rewards). These are free gifts the customer can claim — powers a "Gifts waiting for you" section on the account page.
— not yet fetched —
RivoAPI.profile_pos_qr() — In-Store QR
Widget SDKQR code for in-store POS point collection. The customer shows this at checkout to earn points on physical purchases. Powers an "Earn points in store" card on the account page or a mobile-first loyalty wallet view.
— not yet fetched —
RivoAPI.vip_tier() — VIP Tier Roadmap
Widget SDK
All available VIP tiers with thresholds and perks — the full program roadmap.
Different from customer_tier() which only returns the customer's current tier.
Powers a tier comparison table or visual progress roadmap.
— not yet fetched —
RivoAPI.orders() — Order Points History
Widget SDKRecent orders with points earned per order. Powers a "Points earned per purchase" history view on the account page — lets the customer see exactly which orders earned them points.
— not yet fetched —
RivoAPI.shopify_customer() — Shopify Customer Data
Widget SDKThe full Shopify customer object as Rivo sees it. Useful for spotting data mismatches between Shopify and Rivo, verifying tags, and debugging customer identity issues.
— not yet fetched —
RivoAPI.referrals() — Full Referrals List
Widget SDK
Detailed list of all referred people (vs referral_stats() which is just the summary).
Powers a referral dashboard showing each person referred, their status, and points earned.
— not yet fetched —