---
title: Publishing Products
slug: publishing-products
docTags: 
createdAt: 2026-02-13T04:24:49.103Z
---

Nue's approach to self-service products creates an additional layer on top of your existing product catalog:

1. **Source of Truth**: Your main product catalog in Nue remains the single source of truth
2. **Selective Publishing**: Only explicitly published products are available in self-service
3. **Stability**: Published products remain consistent until republished, even if the source product changes

This publishing mechanism provides several benefits for self-service implementations:

- Protects self-service customers from unexpected product changes
- Allows testing of product changes before making them available to self-service
- Provides a clean separation between direct sales and self-service offerings

## Publishing Workflow for Self-Service

To make products available through the Self-Service API, follow this two-step process:

**Enable a Price Book**:

1. Navigate to Price Builder → Price Books
2. Select the price book and click 'Edit'
3. Click 'Enable for Self Service'
4. Once complete, two Webhook Endpoints will be created that allow you to track the success of actions syncing to Salesforce from Nue.

:::Iframe{code="<iframe src='https://scribehow.com/embed/How_to_Enable_Price_Book_for_Self_Service__e7eNmLPGRjGKPgtgWQtfHA?as=video' width='100%' height='800' allow='fullscreen' style='aspect-ratio: 16 / 12; border: 0; min-height: 480px'></iframe>" iframeHeight="800"}

:::

**Publish Individual Products**:

1. Navigate to Price Builder → Product Catalog
2. Select the product to publish and click 'Edit'
3. Click 'Publish' to make it available for self-service

:::Iframe{code="<iframe src='https://scribehow.com/embed/How_To_Publish_a_Product_in_Product_Catalog__2FLydgBTSuGETnadVb_v8w?as=video' width='100%' height='800' allow='fullscreen' style='aspect-ratio: 16 / 12; border: 0; min-height: 480px'></iframe>" iframeHeight="800"}

:::

Only products that have both an enabled price book and have been explicitly published will appear in API responses.

:::hint{type="danger"}
Please refrain from editing or removing the automatically generated webhook endpoints listed below:

1. order.activated
2. subscription.updated

Deleting or editing these will lead sync failure from Nue to Salesforce.
:::

## Checking Publication Status via API

Once you understand the publishing workflow, you'll want to programmatically verify publication status and filter products based on their availability.

### Verify Product Publication Status

**Try it now:** [Fetch products API →](https://api-docs.nue.io/fetch-product)

```javascript
const myHeaders = new Headers();
myHeaders.append("nue-api-key", "YOUR_API_KEY_HERE");
myHeaders.append("Content-Type", "application/json");

async function checkPublicationStatus() {
  const response = await fetch("https://api.nue.io/catalog/products", {
    method: 'GET',
    headers: myHeaders
  });
  
  const products = await response.json();
  
  // Analyze publication status
  const publicationReport = {
    published: [],
    unpublished: [],
    totalProducts: products.length
  };
  
  products.forEach(product => {
    const statusInfo = {
      id: product.id,
      name: product.name,
      status: product.status,
      publishStatus: product.publishStatus,
      lastPublishedDate: product.lastPublishedDate,
      hasActivePricing: product.priceBookEntries?.some(entry => entry.active) || false
    };
    
    if (product.publishStatus === 'Published' && product.status === 'Active') {
      publicationReport.published.push(statusInfo);
    } else {
      publicationReport.unpublished.push(statusInfo);
    }
  });
  
  return publicationReport;
}

// Usage
checkPublicationStatus().then(report => {
  console.log('📊 Publication Status Report');
  console.log(`Total Products: ${report.totalProducts}`);
  console.log(`Published: ${report.published.length}`);
  console.log(`Unpublished: ${report.unpublished.length}`);
  
  console.log('\n✅ Published Products:');
  report.published.forEach(product => {
    console.log(`  • ${product.name} (${product.id})`);
    console.log(`    Last published: ${product.lastPublishedDate}`);
    console.log(`    Active pricing: ${product.hasActivePricing ? 'Yes' : 'No'}`);
  });
  
  if (report.unpublished.length > 0) {
    console.log('\n❌ Unpublished Products:');
    report.unpublished.forEach(product => {
      console.log(`  • ${product.name} (${product.id})`);
      console.log(`    Status: ${product.status}, Publish Status: ${product.publishStatus}`);
    });
  }
});
```

## Best Practices for Publication Management

1. **Regular Monitoring**: Check publication status regularly to ensure product availability
2. **Staged Publishing**: Test products internally before publishing to self-service
3. **Publication History**: Track when products were last published for maintenance scheduling
4. **Graceful Degradation**: Handle cases where no products are available
5. **Status Transparency**: Provide clear feedback about product availability to customers

The publishing layer gives you complete control over what products are available in self-service while maintaining the flexibility to make changes without disrupting customer experiences.
