Skip to main content

Laura Geller — Promo Messages Verification Guide

Quick Check

Visit any LG collection page on the Marqo variant and inspect the #marqo-config meta tag:

document.getElementById('marqo-config').getAttribute('data-active-promos')

This shows the comma-separated handles of active promos for the visitor's current market.

Verify Market Scoping

AU/Default market (4 promos):

https://www.laurageller.com/collections/all-products-excl-dotd-bundles-clearance-copy?lmi_preview=7ddd0d2a-3235-4f97-bb1b-4eb16309ab25&targeting=eyJjb3VudHJ5T3ZlcnJpZGUiOiIiLCJkZXZpY2VLaW5kIjoiZCIsImV4cGVyaWVuY2VJZCI6IjdkZGQwZDJhLTMyMzUtNGY5Ny1iYjFiLTRlYjE2MzA5YWIyNSJ9&vsly_vid=612fbf27-828b-4321-b2f2-559307f71504

To switch to GB market: Open browser console and run:

const fd = new FormData();
fd.append('country_code', 'GB');
fd.append('_method', 'PUT');
fetch('/localization', { method: 'POST', body: fd }).then(() => location.reload());

Then revisit the collection page — data-active-promos should show 3 handles (not 4).

To switch back: Same as above but with country_code: 'AU'.

Console Verification Script

Paste this in the browser console on any Marqo collection page to get a full diagnostic:

(() => {
const meta = document.getElementById('marqo-config');
const activePromos = meta?.getAttribute('data-active-promos') || '';
const cfg = window.MarqoUIConfig || {};
const rules = window.__marqoPromoMetaobjectRules;

console.table({
'Country': cfg.country,
'Promo Source': cfg.uiComponents?.promo_messages?.value?.promoSource || 'manual',
'Active Promo Handles': activePromos ? activePromos.split(',').filter(Boolean).length : 0,
'Fetched Rules': Array.isArray(rules) ? rules.length : 'not loaded',
'Rendered Promos': document.querySelectorAll('.marqo-promo-message').length,
});

if (Array.isArray(rules)) {
console.log('Rules:', rules.map(r => ({
handle: r.handle,
text: r.text || '(UTM-gated)',
collection: r.collection,
})));
}

console.log('Active Handles:', activePromos.split(',').filter(Boolean));
console.log('Promo Texts:', [...new Set(
[...document.querySelectorAll('.marqo-promo-message')].map(el => el.textContent?.trim())
)]);
})();

Expected Results

MarketActive PromosNon-UTM Text
AU (default)4"40% OFF AT CHECKOUT| + EXTRA 10% WITH CODE: CL10"
GB3"40% OFF AT CHECKOUT"
USInherits default (4)Same as AU

UTM Override Test

Append &utm_campaign=VtvvyX to any collection URL — all product cards should show "Extra 22% Off Applied at Checkout | Code: LG-Z7A994" instead of the default promo text.

Other UTM campaigns to test:

UTM ParameterExpected Text
utm_campaign=VtvvyXExtra 22% Off Applied at Checkout | Code: LG-Z7A994
utm_campaign=UVBqqXExtra 22% Off Applied at Checkout | Code: LG-Z7F997
utm_campaign=Rose40-EMCODE: ROSE40 (lipstick collection only)

How It Works

  1. LG's theme has a "Global Active Promotions" setting (per-market metaobject list)
  2. Our Liquid template reads the setting and renders the selected handles into the page
  3. The widget fetches ALL active promo metaobjects via Storefront API
  4. The widget filters to only show ones in the market's whitelist
  5. resolvePromoMessage matches rules to products by collection, respecting priority and UTM restrictions
  6. Drafts are automatically excluded (Shopify Storefront API only returns ACTIVE metaobjects)

Configuring Markets (for LG team)

Per-market promo selections are managed in:

Shopify Admin → Online Store → Customize → (market dropdown at top) → Theme settings → Global Active Promotions

Changes take effect on next page load — no deploy needed.

Troubleshooting

SymptomCauseFix
No promos showingpromoSource not set to "shopify"Check MarqoUIConfig.uiComponents.promo_messages.value.promoSource
data-active-promos emptyTheme setting not configured for this marketLG team needs to select promos in theme editor
Promos show on some products but not othersProduct not in the targeted collectionCheck product's productCollections array vs rule's collection handle
UTM promo not showingUTM parameter doesn't match any ruleCheck URL params against rule's utm_overrides values
Wrong promo showingHigher-priority rule winningCheck rule priorities — higher number wins