Skip to main content

Products

The Products page displays your complete product catalog with filtering and search capabilities.

Dashboard Features

Catalog Statistics

Three key metrics at the top:

MetricDescription
Total ProductsNumber of products in your catalog
CategoriesNumber of unique product categories
BrandsNumber of unique product brands

Filters

Filter products using multiple criteria:

FilterDescription
SearchFind products by name, description, or SKU
CategoryFilter by product category
BrandFilter by brand name
Stock StatusShow In Stock, Out of Stock, or All

Product Table

A sortable table displaying:

ColumnDescription
ImageProduct thumbnail or placeholder
NameProduct name and SKU
PriceCurrent price and compare-at price (strikethrough)
CategoryProduct categories (badges)
BrandBrand name
StockIn Stock (green) or Out of Stock (red)

Viewing Products

  1. Navigate to E-Commerce > Products
  2. Use the search box to find specific products
  3. Apply filters to narrow results
  4. Browse paginated results

Understanding Product Data

Product Fields

FieldDescription
externalIdYour unique product identifier (e.g., SKU)
nameProduct display name
priceCurrent selling price
compareAtPriceOriginal price (shows discount)
currencyPrice currency code
categoriesArray of category names
tagsArray of product tags
brandBrand or vendor name
imageUrlMain product image
inStockAvailability status
variantsSize/color variations

Variants

Products can have multiple variants with different:

  • Prices
  • SKUs
  • Stock status
  • Options (size, color, etc.)

Syncing Products

Products are typically synced from your e-commerce platform. Joryio supports:

  • Shopify - Automatic sync via webhook
  • WooCommerce - REST API integration
  • Magento - Joryio Connect extension
  • Custom platforms - Use the Products API

Bulk Import

Use the bulk upsert API to import products - POST a bare JSON array (max 500) to the products endpoint:

POST /catalog/products
[
{ "productId": "SKU-001", "name": "Product 1", "price": 19.99, "source": "shopify" },
{ "productId": "SKU-002", "name": "Product 2", "price": 29.99, "source": "shopify" }
]

Using Products in Campaigns

Product Recommendations

Include products in email campaigns using Liquid templates:

{% for product in recommended_products %}
<div class="product">
<img src="{{ product.imageUrl }}" alt="{{ product.name }}">
<h3>{{ product.name }}</h3>
<p>${{ product.price }}</p>
<a href="{{ product.url }}">Shop Now</a>
</div>
{% endfor %}

Abandoned Cart Products

Access cart products in recovery emails:

{% for item in cart.items %}
<p>{{ item.name }} x {{ item.quantity }} - ${{ item.total }}</p>
{% endfor %}
<p>Cart Total: ${{ cart.value }}</p>
<a href="{{ cart.checkoutUrl }}">Complete Purchase</a>

Product Selections

A Selection is a saved, reusable filter over your product catalog - for example "discounted footwear", "in-stock items under $50", or "everything tagged new-arrival". Build them once and reuse them wherever you show products.

Create one: on the Products page click Selections → New Selection. Give it a name, add one or more rules over product fields (name, brand, price, in-stock, categories, tags, …) with type-aware operators, choose whether to match all or any of the rules, and set a max number of products. Preview shows exactly which products match right now.

Selections are the product-catalog counterpart of entity Selections - a saved filter tree you can point content and recommendations at instead of hand-listing product IDs.

Best Practices

  1. Keep products synced: Ensure regular sync with your e-commerce platform
  2. Use high-quality images: Product images improve email engagement
  3. Maintain accurate stock: Out-of-stock notifications require accurate data
  4. Categorize consistently: Use consistent categories for better filtering
  5. Include URLs: Product URLs enable click-through tracking

Troubleshooting

Products Not Appearing

  • Check your API authentication
  • Verify workspace ID is correct
  • Ensure products have required fields (externalId, name, price)

Images Not Loading

  • Verify image URLs are publicly accessible
  • Check for HTTPS requirements
  • Ensure image URLs aren't expired

Stock Status Incorrect

  • Sync interval may need adjustment
  • Check webhook configuration
  • Verify inventory tracking is enabled

Next Steps