Skip to main content

Gladly Integration Setup Guide

Step-by-step guide to configure the Rivo Lookup Adapter in Gladly so CS agents see customer loyalty data in the sidebar.

Written by James Dohm
Updated today

Overview

This guide walks through the complete end-to-end setup of the Rivo x Gladly Lookup Adapter. When correctly configured, Gladly CS agents see a customer's Rivo loyalty data — points balance, loyalty status, VIP tier, referral URL, and date of birth — directly in the customer profile sidebar the moment they open a conversation.

There are two distinct parts to the setup. Both are required:

  • Part A — Rivo Custom App: Configures how Gladly calls the Rivo API and which attributes it maps.

  • Part B — Customer Profile Definition: Registers those attributes in Gladly so they actually render in the agent sidebar. This step is not accessible from the normal admin UI and must be done via a browser console call.

⚠️ IMPORTANT: Skipping Part B will result in the Rivo API returning data but nothing displaying in the agent sidebar. Both parts must be completed.

Prerequisites

Gather the following before starting. All items are required.

Item

Where to get it

Rivo REST API key

Rivo Admin → Settings → API Keys

Gladly admin access

Must have permission to create/edit Apps under Admin → App Developer Tools

A real customer email

Any customer who exists in both Shopify and Gladly — used to test the integration

Part A — Create and Configure the Rivo Custom App

A1. Navigate to Apps

  1. In Gladly, click the gear icon to open Settings.

  2. In the left sidebar under App Developer Tools, click Apps.

  3. Click the Lookup Adapters tab.

  4. Click Add App in the top-right corner.

  5. Select Custom App from the options.

A2. Basic App Settings

Field

Value

Name

Rivo

Lookup URL

Request Method

POST (default)

📝 NOTE: Do not add a trailing slash to the URL. Use exactly: https://loyalty.rivo.io/api/integrations/gladly

A3. Authentication — HTTP Headers

Scroll to the HTTP Headers section. Add one header:

Header Name

Header Value

Authorization

Bearer <RIVO_REST_API_KEY>

⚠️ CRITICAL: Include the word "Bearer" followed by a space before pasting the API key. The value must be: Bearer <your_api_key_here> (replace with the merchant's actual key).

A4. Search Query Attributes

These attributes are sent to the Rivo API when Gladly looks up a customer. Scroll to the Search Query Attributes section.

Delete any existing entries. Then add exactly these five rows in order:

Attribute (case-sensitive)

Label (display name)

rivoPointsBalance

Points Balance

rivoLoyaltyStatus

Loyalty Status

rivoVipTierName

VIP Tier

rivoReferralUrl

Referral URL

rivoDateOfBirth

Date of Birth

⚠️ CRITICAL: Attribute names are case-sensitive. rivoPointsBalance is correct. rivopointsbalance, loyalty_status, vip_tier_name, and customer_identifier are all wrong and will silently fail.

A5. Search Results Attributes

These attributes are displayed alongside customer search results. Scroll to the Search Results Attributes section.

Delete any existing entries. Then add the exact same five rows as in A4:

Attribute (case-sensitive)

Label (display name)

rivoPointsBalance

Points Balance

rivoLoyaltyStatus

Loyalty Status

rivoVipTierName

VIP Tier

rivoReferralUrl

Referral URL

rivoDateOfBirth

Date of Birth

A6. Auto-Linking Fields

Scroll to the Auto-Linking Fields section. Ensure both checkboxes are checked:

  • Customer Email ✓

  • Phone Number ✓

📝 NOTE: Auto-Linking tells Gladly which fields to use when automatically matching a Gladly customer profile to a Rivo record. Both Email and Phone Number must be enabled.

A7. Save the App

  1. Scroll to the bottom of the modal.

  2. Click Save App.

  3. Confirm the app appears in the Lookup Adapters list with the toggle enabled (green).

  4. Confirm the Autolink Fields column shows: Emails, Phones.mobile.

SUCCESS CHECK: If the Autolink Fields column shows only "Emails" (no phone), go back and enable Phone Number in A6 and save again.

Part B — Update the Customer Profile Definition

This is the most important — and most commonly missed — step. The Customer Profile Definition controls which custom attributes are registered in Gladly and therefore visible in the agent sidebar. It is not editable from the normal admin UI and must be updated via a browser console API call.

⚠️ WHY THIS IS NEEDED: Even after correctly configuring Part A, Rivo data will NOT appear in the agent sidebar until the 5 Rivo attributes are registered in the Customer Profile Definition. The Lookup Adapter Debugger will show yellow warnings ("Customer attribute X is not configured in the profile") until this step is complete.

B1. Find the Merchant's Gladly Org ID

  1. In Gladly, navigate to Admin → App Developer Tools → Lookup Adapter Debugger.

  2. Click the Custom Attributes link. (If you don't see it, look for a "View Custom Attributes" link on the Lookup Adapter Debugger home page — it may be inside a shadow DOM component.)

  3. Once the Custom Attributes page loads, open browser DevTools (F12 or Cmd+Option+I on Mac).

  4. Go to the Network tab and reload the page (Cmd+R / Ctrl+R).

  5. In the Network tab, filter requests by typing: customer-profile-def

  6. Click the GET request to /api/v1/orgs/{orgId}/configuration/customer-profile-def.

  7. Copy the orgId value from the URL — this is the merchant's Gladly Org ID. Save it for the next step.

Example URL: /api/v1/orgs/WsC9W2ZZTQam0qVbfUw9IA/configuration/customer-profile-def
Org ID in this example: WsC9W2ZZTQam0qVbfUw9IA

B2. Run the Profile Definition Update

With the Custom Attributes page still open, open the browser console (DevTools → Console tab) and paste the following script. Replace YOUR_ORG_ID with the org ID from B1.

(async () => {
  const orgId = 'YOUR_ORG_ID';   // replace this
  const url = `/api/v1/orgs/${orgId}/configuration/customer-profile-def`;  // Step 1: GET current definition
  const getResp = await fetch(url);
  const current = await getResp.json();  // Step 2: Define the 5 Rivo attributes to add
  const rivoAttrs = [
    { attr: 'rivoPointsBalance', type: 'STRING', label: 'Points Balance (Rivo)', presentation: 'VISIBLE' },
    { attr: 'rivoLoyaltyStatus',  type: 'STRING', label: 'Loyalty Status (Rivo)',  presentation: 'VISIBLE' },
    { attr: 'rivoVipTierName',    type: 'STRING', label: 'VIP Tier (Rivo)',        presentation: 'VISIBLE' },
    { attr: 'rivoReferralUrl',    type: 'STRING', label: 'Referral URL (Rivo)',    presentation: 'VISIBLE' },
    { attr: 'rivoDateOfBirth',    type: 'STRING', label: 'Date of Birth (Rivo)',   presentation: 'VISIBLE' },
  ];  // Step 3: Merge (skip any already present)
  const existing = current.attributes.map(a => a.attr);
  const toAdd = rivoAttrs.filter(a => !existing.includes(a.attr));
  if (toAdd.length === 0) { console.log('All Rivo attributes already present.'); return; }
  const updated = { ...current, attributes: [...current.attributes, ...toAdd] };  // Step 4: PUT the updated definition
  const putResp = await fetch(url, {
    method: 'PUT',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(updated),
  });
  console.log('Status:', putResp.status, '| Added:', toAdd.map(a => a.attr).join(', '));
})()

SUCCESS: A response of Status: 204 means the update was applied. If you see 401 or 403, confirm you are running the script while logged into Gladly admin in the same browser tab.

🔁 SAFE TO RE-RUN: The script checks for existing attributes before adding them, so it is safe to run multiple times. Duplicate attributes will never be added.

Verification — Confirming the Integration is Live

Step 1: Run the Lookup Adapter Debugger

  1. In Gladly, go to Admin → App Developer Tools → Lookup Adapter Debugger.

  2. Click Test Workflow under Autolinking + Detailed Workflow.

  3. In the Email field, enter the email address of a real customer who exists in both Shopify and Gladly.

  4. In the Lookup Adapter dropdown, select Rivo.

  5. Click Test.

What you should see after a successful run:

  • Autolinking response: "returned 1 result — No errors were detected!"

  • Detailed response: "returned 1 result" with no yellow warnings about rivoPointsBalance, rivoLoyaltyStatus, rivoVipTierName, rivoReferralUrl, or rivoDateOfBirth

⚠️ STILL SEEING YELLOW WARNINGS? Yellow warnings saying "Customer attribute X is not configured in the profile" mean Part B was not completed or did not succeed. Re-run the console script from B2 and confirm you see Status: 204.

Step 2: Verify in the Live Agent View

  1. Navigate to the Gladly agent view (not the admin panel).

  2. Use the search icon to find the same customer you tested with.

  3. Click to open their profile.

  4. In the customer sidebar on the left, scroll down past the Shopify fields.

You should see the following Rivo fields populated:

Sidebar Label

Expected Value

Points Balance (Rivo)

A number (0 if the customer has no points yet)

Loyalty Status (Rivo)

"member" or the customer's specific tier status

VIP Tier (Rivo)

Tier name, or blank if the merchant has no VIP tiers

Referral URL (Rivo)

A hyperlink to the customer's unique referral URL

Date of Birth (Rivo)

Customer's date of birth if collected, otherwise blank

Troubleshooting

Symptom

Fix

Debugger returns 0 results or an API error

The Authorization header is wrong. Confirm the value is Bearer <key> with the correct Rivo REST API key for this merchant. Check for extra spaces or missing "Bearer ".

Debugger returns data but nothing shows in the agent sidebar

Part B was not completed. Run the browser console script from B2. Confirm the PUT response is 204.

Yellow warnings: "Customer attribute X is not configured in the profile"

Same as above — Part B is incomplete. Re-run the script.

Autolink Fields column shows only "Emails" (no phone)

Phone Number auto-linking was not enabled. Re-open the Rivo app config, check the Phone Number box, and save.

Attribute keys like loyalty_status or customer_identifier in the app config

These are the old wrong keys. Delete them and replace with the exact rivo-prefixed keys from section A4/A5.

Console script returns 401 or 403

Run the script from the same browser tab where you are logged into Gladly admin. Do not run from a different tab or browser window.

Rivo fields appear but are all blank / empty

The customer exists in Gladly but not in Rivo — they have never engaged with the loyalty program. Try a different customer who has made a purchase from the merchant's store.

Quick Reference

Item

Value

Rivo API Endpoint

Required HTTP Header

Authorization: Bearer <RIVO_REST_API_KEY>

Required Attribute Keys (exact, case-sensitive)

rivoPointsBalance, rivoLoyaltyStatus, rivoVipTierName, rivoReferralUrl, rivoDateOfBirth

Customer Profile Definition API

GET/PUT /api/v1/orgs/{orgId}/configuration/customer-profile-def

This endpoint is not linked from the Gladly admin nav. Discover the orgId by loading the Custom Attributes page and watching network requests.

Setup Checklist

  • ☐ Rivo app created under Admin → Apps → Lookup Adapters → Custom App

  • ☐ Authorization header set: Bearer <key>

  • ☐ Search Query Attributes: all 5 rivo-prefixed keys added

  • ☐ Search Results Attributes: all 5 rivo-prefixed keys added

  • ☐ Auto-Linking: Customer Email ✓ and Phone Number ✓ both checked

  • ☐ App saved and toggle is enabled (green)

  • ☐ Customer Profile Definition updated via browser console (Part B)

  • ☐ Debugger returns 1 result with no yellow warnings

  • ☐ Rivo fields visible in live agent sidebar

Did this answer your question?