Skip to main content
npayload is launching soon.
npayloadDocs
Marketplace

Listings

Create, manage, and optimize your marketplace listings

A listing is the marketplace representation of a channel. It wraps a channel with metadata, pricing, documentation, and analytics that help consumers discover and evaluate your data.

Listing lifecycle

Every listing moves through a defined set of states.

StateDescription
DraftThe listing is being prepared. Not visible to anyone outside your organization.
Pending reviewSubmitted for review by the npayload marketplace team.
PublishedLive and visible according to the listing's visibility setting (public, unlisted, or invite-only).
ArchivedRemoved from the marketplace. Existing subscribers continue to receive messages until they cancel.
import NPayload from '@npayload/node';

const npayload = new NPayload({ token: process.env.NPAYLOAD_TOKEN });

// Create a draft listing
const listing = await npayload.marketplace.listings.create({
  channel: 'sensor-readings',
  title: 'Industrial Sensor Readings',
  description: 'Temperature, pressure, and vibration data from 10,000+ industrial sensors',
  category: 'iot',
  pricing: { model: 'usage-based', tiers: [
    { upTo: 50000, unitPrice: 0.0005 },
    { upTo: null, unitPrice: 0.0002 },
  ]},
  visibility: 'public',
});

// Submit for review
await npayload.marketplace.listings.submit(listing.id);

// Archive a listing
await npayload.marketplace.listings.archive(listing.id);

Marketplace review typically completes within 48 hours. Listings are reviewed for completeness, accurate descriptions, and compliance with the marketplace terms of service.

Listing metadata

Every listing requires a title and description. The optional fields significantly improve discoverability and conversion.

FieldRequiredDescription
titleYesShort, descriptive name (max 100 characters)
descriptionYesWhat the channel provides, who it is for, and what format the data uses
categoryYesPrimary category for search and filtering
tagsNoUp to 10 keywords for additional discoverability
iconNoCustom icon URL for the listing card
websiteNoLink to external documentation or product page
supportEmailNoContact email for subscriber support
await npayload.marketplace.listings.update(listing.id, {
  tags: ['sensors', 'industrial', 'temperature', 'iot'],
  website: 'https://docs.example.com/sensor-api',
  supportEmail: 'data-support@example.com',
});

Categories

Listings are organized into categories to help consumers find relevant data.

CategorySlugExample listings
AI and MLai-mlModel predictions, training events, inference logs
Financial Datafinancial-dataMarket prices, transaction events, payment notifications
IoTiotSensor readings, device telemetry, location tracking
AnalyticsanalyticsClickstream data, funnel events, product metrics
CommercecommerceOrder events, inventory updates, shipping notifications
SocialsocialActivity feeds, engagement events, content updates
InfrastructureinfrastructureHealth checks, deployment events, system metrics

Schema documentation

Attach an event catalogue schema to your listing so consumers can see the exact message format before subscribing.

// Attach a schema
await npayload.marketplace.listings.update(listing.id, {
  schemaId: 'sch_sensor_reading_v3',
});

When a schema is attached, consumers see:

  • Field names and types
  • Required and optional fields
  • Example values
  • Version history

Changing the schema on a published listing does not break existing subscribers, but you should communicate breaking changes through versioning. Attach a new schema version rather than modifying the existing one.

Sample data

Provide representative messages so consumers can evaluate the data format without subscribing.

await npayload.marketplace.listings.update(listing.id, {
  sampleData: [
    {
      key: 'sensor-4821',
      payload: {
        sensorId: 'sensor-4821',
        type: 'temperature',
        value: 72.4,
        unit: 'fahrenheit',
        timestamp: '2026-03-07T10:15:00Z',
      },
    },
    {
      key: 'sensor-4821',
      payload: {
        sensorId: 'sensor-4821',
        type: 'pressure',
        value: 14.7,
        unit: 'psi',
        timestamp: '2026-03-07T10:15:00Z',
      },
    },
    {
      key: 'sensor-9033',
      payload: {
        sensorId: 'sensor-9033',
        type: 'vibration',
        value: 0.003,
        unit: 'g',
        timestamp: '2026-03-07T10:15:01Z',
      },
    },
  ],
});

Include at least 3 sample messages that cover the range of data shapes consumers can expect.

Versioning

Update your listing without breaking existing subscribers.

// Update metadata (safe, no subscriber impact)
await npayload.marketplace.listings.update(listing.id, {
  description: 'Updated description with more detail',
});

// Update schema version (notify subscribers)
await npayload.marketplace.listings.update(listing.id, {
  schemaId: 'sch_sensor_reading_v4',
  changeNote: 'Added humidity field. All existing fields remain unchanged.',
});

When you update the schema version, subscribers receive a notification with the change note. This allows them to update their integration before the new format takes effect.

Analytics

Track how your listing is performing.

const analytics = await npayload.marketplace.listings.analytics(listing.id, {
  period: 'last-30-days',
});

console.log(analytics.views);            // 1240
console.log(analytics.uniqueVisitors);   // 890
console.log(analytics.subscriptions);    // 23
console.log(analytics.cancellations);    // 2
console.log(analytics.revenue);          // 4521.30
console.log(analytics.averageRating);    // 4.6
console.log(analytics.conversionRate);   // 0.026 (2.6%)
MetricDescription
viewsTotal listing page views
uniqueVisitorsUnique organizations that viewed the listing
subscriptionsNew subscriptions in the period
cancellationsSubscriptions cancelled in the period
revenueTotal revenue earned in the period
averageRatingCurrent average star rating
conversionRateRatio of subscriptions to unique visitors

Featured listings appear prominently in the marketplace home page and category pages. Listings are selected for featuring based on:

  • High average rating (4.5 or above)
  • Consistent uptime and low latency
  • Complete documentation (schema, sample data, SLA)
  • Active publisher engagement (responding to reviews, regular updates)

There is no paid placement. Featured status is earned through quality and reliability.

Next steps

Was this page helpful?

On this page