Three steps to add day-to-day shopping from independent brands to your agent or app: coffee, snacks, skincare, pet food and gifts. No sign-up, no key. Add your partner ID and earn up to 10% of every order.
Building an agent: steps 1 to 3. Building an app, site or newsletter: skip step 2.
Then add your partner ID and earn up to 10% of every order. Docs on GitHub ↗ · Before you build
# 1. Get the full catalog. No key. curl -L https://loyaltie-product-feeds.s3.amazonaws.com/feeds/catalog/products-connect.csv -o loyaltie.csv # 2. Add the skill to your agent (agents only) Read https://raw.githubusercontent.com/loyaltie-partners/connect/main/skill.md # 3. Send the buyer to a ready cart https://loyaltie.com/cart?products=<id>:1,<id>:2 # Then earn: wrap links in your tracking link https://loyaltiecomltd.sjv.io/c/<PARTNER_ID>/4008618/57003?u=<encoded link>
One file with every product your users can buy on Loyaltie, from brands that sell on Shopify, WooCommerce, Wix, Squarespace and their own sites. Google Shopping field names, prices in USD, refreshed every 6 hours. Store it, index it and rank it your way, and show the names, descriptions and images in your product.
# CSV, one row per product, header first
curl -L "https://loyaltie-product-feeds.s3.amazonaws.com/feeds/catalog/products-connect.csv" \
-o loyaltie-products.csvimport Papa from "papaparse";
const csv = await fetch("https://loyaltie-product-feeds.s3.amazonaws.com/feeds/catalog/products-connect.csv")
.then(r => r.text());
const { data: products } = Papa.parse(csv, { header: true });
// Snacks, best predicted interest first
const picks = products
.filter(p => p.product_type.startsWith("Eat > Snacks"))
.sort((a, b) => b.predicted_interest - a.predicted_interest)
.slice(0, 5);| Field | What it is |
|---|---|
| id | The product’s ID (a UUID). Use it in cart links. |
| title, brand, seller_name | Product name, the brand, and the maker behind it |
| store_city, store_state | Where the maker is |
| product_type | Life area and category, e.g. Eat > Snacks, Drink > Coffee, Care > Skin. Skip the few marked Unclassified. |
| price, plan_price | One-time price, and the price per delivery on a plan, in USD, e.g. 15.99 USD and 15.19 USD |
| link, image_link | Product page and main image. You may show and hotlink the images. |
| ships_within, shipping_scope, ships_to_countries | How fast it ships and where to. For buyers outside the US, check ships_to_countries. |
| research_key_features, research_key_benefits, research_key_ingredients | Researched product context your agent can decide on. Several values, separated by “ | ”. |
| product_star_rating, product_review_count | Buyer ratings |
| predicted_interest | 0 to 100: how likely people are to buy it |
Any agent that can read a URL sets itself up from one prompt. The skill explains the catalog, product context and cart links, and how to hand the buyer a ready cart. Building an app or site without an agent? Skip to step 3.
Read https://raw.githubusercontent.com/loyaltie-partners/connect/main/skill.md and use it to find and buy products from independent brands on Loyaltie for me.
curl https://raw.githubusercontent.com/loyaltie-partners/connect/main/skill.md
Your agent or app picks the products. One link builds the cart on Loyaltie and lands the buyer on it, ready to check out across every maker in it. Works for members and guests.
Sending one product? Use its link from the catalog.
https://loyaltie.com/cart?products=<id>:<qty>,<id>:<qty> &cart_origin=connect&agent_id=<your agent>
// Build a cart link from the products your user chose function cartLink(items, agentId) { // [{ id: "234ec9ed-…", qty: 1 }] const products = items.map(i => `${i.id}:${i.qty || 1}`).join(","); return `https://loyaltie.com/cart?products=${products}` + `&cart_origin=connect&agent_id=${encodeURIComponent(agentId)}`; } cartLink([ { id: "234ec9ed-a19a-470e-b277-01f7ad7cbb06", qty: 2 }, // toffee { id: "5b34e2a7-ec7a-4e84-bbcf-ad6a6602abfe" } // jerky ], "my-assistant");
Of the whole basket, on new and returning orders through you. Builders who integrate Loyaltie into their product, content or media qualify for Featured, at 10%; Standard, open to everyone, is 5%. Subscription reorders don’t earn. Your integration stays the same: you wrap Loyaltie links in your tracking link, and tracking happens on the click.
Fill in a short form. We approve applications within 24 to 48 hours, register you on Impact and send you your partner ID and tracking link.
Get your partner IDPut any Loyaltie URL inside your tracking link: a cart link, a product page or a category.
When the buyer clicks your link to a product, category or cart page, Impact records the click with your partner ID and the IDs you add. The order that follows is yours: the whole basket, including makers you never linked to.
| Part | What it is |
|---|---|
| <PARTNER_ID> | Your partner ID, sent when you sign up |
| u | The Loyaltie page or cart link, URL-encoded |
| sharedid | Your click or conversation ID. It comes back to you in Impact reports and postbacks. |
| subId1 | Your own placement ID, visible only to you |
IDs: up to 255 characters, letters and numbers, no spaces. Orders are attributed once you have your partner ID. Links without it still work for the buyer.
// https://loyaltiecomltd.sjv.io/c/<PARTNER_ID>/4008618/57003 // ?u=<URL-encoded Loyaltie URL>&sharedid=<click ID> const PARTNER_ID = "[YOUR PARTNER ID]"; function earnLink(loyaltieUrl, clickId) { return `https://loyaltiecomltd.sjv.io/c/${PARTNER_ID}/4008618/57003` + `?u=${encodeURIComponent(loyaltieUrl)}&sharedid=${clickId}`; } // Wrap a cart link: the buyer lands on a ready cart, the order is yours earnLink(cartLink([{ id: "234ec9ed-a19a-470e-b277-01f7ad7cbb06", qty: 2 }], "my-assistant"), "conv8812");
Built on the same catalog and the same economics.
Search, product context and cart links as tools any MCP client can call.
Cart, checkout and orders inside your agent or app, aligned with UCP.
Member promotions applied straight from the link.
No. The catalog, the skill and cart links are open to everyone. You need a partner ID only to earn.
Yes. Keep it, index it and rank it your way. It refreshes every 6 hours and lists only products that are in stock, so a fresh copy is your availability check.
Yes. You may use product names, descriptions, images, prices and links in your product, including images served from cdn.loyaltie.com (hotlinking is fine). Keep prices and availability current by refreshing the catalog.
No. Any app, site or newsletter can use the catalog and cart links. Skip step 2.
Up to 10% of the whole basket, on new and returning orders through you. Builders who integrate Loyaltie into their product, content or media qualify for Featured, at 10%. Standard, open to everyone, is 5%. Subscription reorders don’t earn.
24 to 48 hours after you apply. Until then, your links still work for the buyer.
Prices are in USD. Most products ship within the US only. For a buyer outside the US, offer only products whose ships_to_countries includes their country; checkout on Loyaltie lets the buyer set their country.
Independent brands from every platform: Shopify, WooCommerce, Wix, Squarespace and their own sites. Every order is sold and guaranteed through Loyaltie.
Not yet. Today the cart link hands the buyer a ready cart on Loyaltie, where they check out once across every maker. Checkout inside your product is in early access.
Tracking happens when the buyer clicks your tracking link. Impact records the click with your partner ID and the IDs you add (sharedid, subId1), and the Loyaltie link carries your agent_id. The order that follows is attributed to you: the whole basket, on new and returning orders.
On GitHub at github.com/loyaltie-partners/connect, as Markdown your agent can read. Questions: partners@loyaltie.com.
“Start with step 1. Add your partner ID when you want to earn.”