Products are a fundamental organizational tool within Sulu, allowing Merchants to group resources related to a specific offering or service.

Purpose of Products

Think of a Product as the container for everything related to something you sell or monetize:

  • Organization: It groups related Billable Metrics, Plans, Customers, and Subscriptions.
  • Analytics: Sulu provides analytics broken down by Product, giving you insights into the performance of different offerings.
  • Clarity: It helps separate different business lines or services within a single Merchant Organization.

A useful analogy is to think of Products like projects or folders within your Organization to keep your different offerings neatly organized.

Example: Judge0

Consider a company like Judge0, which offers an API for executing code snippets.

  • Product: They might define a single Product called “Judge0 Code Execution API”.
  • Billable Metrics: Within this Product, they might have Billable Metrics like “Executed Snippets”, “CPU Seconds”, “Memory Usage MB”, etc.
  • Plans: They could create different Plans under this Product, perhaps a free tier with limits and a paid tier with higher usage allowances and specific pricing for each metric.

All these resources (Billable Metrics, Plans, and the resulting Customers and Subscriptions) would belong to the “Judge0 Code Execution API” Product.

Product Details

When creating a Product, you define a few key details. Some of these are visible to your Consumers during the checkout process or on dashboards.

  • name: The display name of the product (e.g., “My Awesome API”, “Image Generation Service”). This is customer-facing.
  • description: A short description explaining what the product offers. This is also customer-facing.
  • metadata: Optional key-value pairs for storing any additional internal information you need about the product.

Creating Products helps structure your billing setup logically from the start.

Next, let’s look at how you define what you measure for billing within a Product using Billable Metrics.