---
title: "product.created"
method: POST
path: "product.created"
---

# product.created

`POST product.created` (webhook)

Sent when a new product is created.

**Discord & Slack support:** Basic

## Payload

- WebhookProductCreatedPayload — Sent when a new product is created. **Discord & Slack support:** Basic
  - `type` 'product.created', required
  - `timestamp` string, date-time, required
  - `data` Product, required — A product.
    - `id` string, uuid4, required — The ID of the object.
    - `created_at` string, date-time, required — Creation timestamp of the object.
    - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
    - `trial_interval` 'day' | 'week' | 'month' | 'year', required
    - `trial_interval_count` integer, nullable, required — The number of interval units for the trial period.
    - `name` string, required — The name of the product.
    - `description` string, nullable, required — The description of the product.
    - `visibility` 'draft' | 'private' | 'public', required
    - `recurring_interval` 'day' | 'week' | 'month' | 'year', required
    - `recurring_interval_count` integer, nullable, required — Number of interval units of the subscription. If this is set to 1 the charge will happen every interval (e.g. every month), if set to 2 it will be every other month, and so on. None for one-time products.
    - `meter_interval` 'day' | 'week' | 'month' | 'year', required
    - `meter_interval_count` integer, nullable, required — Number of meter interval units. None when no meter cycle is set.
    - `is_recurring` boolean, required — Whether the product is a subscription.
    - `is_archived` boolean, required — Whether the product is archived and no longer available.
    - `organization_id` string, uuid4, required — The ID of the organization owning the product.
    - `metadata` MetadataOutputType, required
    - `prices` union[], required — List of prices for this product.
      - union
        - union
          - LegacyRecurringProductPriceFixed — A recurring price for a product, i.e. a subscription. **Deprecated**: The recurring interval should be set on the product itself.
            - `created_at` string, date-time, required — Creation timestamp of the object.
            - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
            - `id` string, uuid4, required — The ID of the price.
            - `source` 'catalog' | 'ad_hoc', required
            - `amount_type` 'fixed', required
            - `price_currency` string, required — The currency in which the customer will be charged.
            - `tax_behavior` 'location' | 'inclusive' | 'exclusive', required
            - `is_archived` boolean, required — Whether the price is archived and no longer available.
            - `product_id` string, uuid4, required — The ID of the product owning the price.
            - `type` 'recurring', required — The type of the price.
            - `recurring_interval` 'day' | 'week' | 'month' | 'year', required
            - `price_amount` integer, required — The price in cents.
            - `legacy` true, required
          - LegacyRecurringProductPriceCustom — A pay-what-you-want recurring price for a product, i.e. a subscription. **Deprecated**: The recurring interval should be set on the product itself.
            - `created_at` string, date-time, required — Creation timestamp of the object.
            - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
            - `id` string, uuid4, required — The ID of the price.
            - `source` 'catalog' | 'ad_hoc', required
            - `amount_type` 'custom', required
            - `price_currency` string, required — The currency in which the customer will be charged.
            - `tax_behavior` 'location' | 'inclusive' | 'exclusive', required
            - `is_archived` boolean, required — Whether the price is archived and no longer available.
            - `product_id` string, uuid4, required — The ID of the product owning the price.
            - `type` 'recurring', required — The type of the price.
            - `recurring_interval` 'day' | 'week' | 'month' | 'year', required
            - `minimum_amount` integer, required — The minimum amount the customer can pay. If 0, the price is 'free or pay what you want'.
            - `maximum_amount` integer, nullable, required — The maximum amount the customer can pay.
            - `preset_amount` integer, nullable, required — The initial amount shown to the customer.
            - `legacy` true, required
        - union
          - ProductPriceFixed — A fixed price for a product.
            - `created_at` string, date-time, required — Creation timestamp of the object.
            - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
            - `id` string, uuid4, required — The ID of the price.
            - `source` 'catalog' | 'ad_hoc', required
            - `amount_type` 'fixed', required
            - `price_currency` string, required — The currency in which the customer will be charged.
            - `tax_behavior` 'location' | 'inclusive' | 'exclusive', required
            - `is_archived` boolean, required — Whether the price is archived and no longer available.
            - `product_id` string, uuid4, required — The ID of the product owning the price.
            - `price_amount` integer, required — The price in cents.
          - ProductPriceCustom — A pay-what-you-want price for a product.
            - `created_at` string, date-time, required — Creation timestamp of the object.
            - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
            - `id` string, uuid4, required — The ID of the price.
            - `source` 'catalog' | 'ad_hoc', required
            - `amount_type` 'custom', required
            - `price_currency` string, required — The currency in which the customer will be charged.
            - `tax_behavior` 'location' | 'inclusive' | 'exclusive', required
            - `is_archived` boolean, required — Whether the price is archived and no longer available.
            - `product_id` string, uuid4, required — The ID of the product owning the price.
            - `minimum_amount` integer, required — The minimum amount the customer can pay. If 0, the price is 'free or pay what you want'.
            - `maximum_amount` integer, nullable, required — The maximum amount the customer can pay.
            - `preset_amount` integer, nullable, required — The initial amount shown to the customer.
          - ProductPriceSeatBased — A seat-based price for a product.
            - `created_at` string, date-time, required — Creation timestamp of the object.
            - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
            - `id` string, uuid4, required — The ID of the price.
            - `source` 'catalog' | 'ad_hoc', required
            - `amount_type` 'seat_based', required
            - `price_currency` string, required — The currency in which the customer will be charged.
            - `tax_behavior` 'location' | 'inclusive' | 'exclusive', required
            - `is_archived` boolean, required — Whether the price is archived and no longer available.
            - `product_id` string, uuid4, required — The ID of the product owning the price.
            - `seat_tiers` ProductPriceSeatTiersOutput, required — List of pricing tiers for seat-based pricing. The minimum and maximum seat limits are derived from the tiers: - minimum_seats = first tier's min_seats - maximum_seats = last tier's max_seats (None for unlimited)
              - …
          - ProductPriceMeteredUnit — A metered, usage-based, price for a product, with a fixed unit price.
            - `created_at` string, date-time, required — Creation timestamp of the object.
            - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
            - `id` string, uuid4, required — The ID of the price.
            - `source` 'catalog' | 'ad_hoc', required
            - `amount_type` 'metered_unit', required
            - `price_currency` string, required — The currency in which the customer will be charged.
            - `tax_behavior` 'location' | 'inclusive' | 'exclusive', required
            - `is_archived` boolean, required — Whether the price is archived and no longer available.
            - `product_id` string, uuid4, required — The ID of the product owning the price.
            - `unit_amount` string, required — The price per unit in cents.
            - `cap_amount` integer, nullable, required — The maximum amount in cents that can be charged, regardless of the number of units consumed.
            - `meter_id` string, uuid4, required — The ID of the meter associated to the price.
            - `meter` ProductPriceMeter, required — A meter associated to a metered price.
              - …
    - `benefits` Benefit[], required — List of benefits granted by the product.
      - union
        - BenefitCustom — A benefit of type `custom`. Use it to grant any kind of benefit that doesn't fit in the other types.
          - `id` string, uuid4, required — The ID of the benefit.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `type` 'custom', required
          - `description` string, required — The description of the benefit.
          - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
          - `deletable` boolean, required — Whether the benefit is deletable.
          - `is_deleted` boolean, required — Whether the benefit is deleted.
          - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
          - `metadata` MetadataOutputType, required
          - `visibility` 'draft' | 'private' | 'public', required
          - `properties` BenefitCustomProperties, required — Properties for a benefit of type `custom`.
            - `note` string, nullable, required
          - `visibility_configurable` boolean, required
        - BenefitDiscord — A benefit of type `discord`. Use it to automatically invite your backers to a Discord server.
          - `id` string, uuid4, required — The ID of the benefit.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `type` 'discord', required
          - `description` string, required — The description of the benefit.
          - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
          - `deletable` boolean, required — Whether the benefit is deletable.
          - `is_deleted` boolean, required — Whether the benefit is deleted.
          - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
          - `metadata` MetadataOutputType, required
          - `visibility` 'draft' | 'private' | 'public', required
          - `properties` BenefitDiscordProperties, required — Properties for a benefit of type `discord`.
            - `guild_id` string, required — The ID of the Discord server.
            - `role_id` string, required — The ID of the Discord role to grant.
            - `kick_member` boolean, required — Whether to kick the member from the Discord server on revocation.
            - `guild_token` string, required
          - `visibility_configurable` boolean, required
        - BenefitGitHubRepository — A benefit of type `github_repository`. Use it to automatically invite your backers to a private GitHub repository.
          - `id` string, uuid4, required — The ID of the benefit.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `type` 'github_repository', required
          - `description` string, required — The description of the benefit.
          - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
          - `deletable` boolean, required — Whether the benefit is deletable.
          - `is_deleted` boolean, required — Whether the benefit is deleted.
          - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
          - `metadata` MetadataOutputType, required
          - `visibility` 'draft' | 'private' | 'public', required
          - `properties` BenefitGitHubRepositoryProperties, required — Properties for a benefit of type `github_repository`.
            - `repository_owner` string, required — The owner of the repository.
            - `repository_name` string, required — The name of the repository.
            - `permission` 'pull' | 'triage' | 'push' | 'maintain' | 'admin', required — The permission level to grant. Read more about roles and their permissions on [GitHub documentation](https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization#permissions-for-each-role).
          - `visibility_configurable` boolean, required
        - BenefitDownloadables
          - `id` string, uuid4, required — The ID of the benefit.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `type` 'downloadables', required
          - `description` string, required — The description of the benefit.
          - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
          - `deletable` boolean, required — Whether the benefit is deletable.
          - `is_deleted` boolean, required — Whether the benefit is deleted.
          - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
          - `metadata` MetadataOutputType, required
          - `visibility` 'draft' | 'private' | 'public', required
          - `properties` BenefitDownloadablesProperties, required
            - `archived` object, required
            - `files` string[], required
          - `visibility_configurable` boolean, required
        - BenefitLicenseKeys
          - `id` string, uuid4, required — The ID of the benefit.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `type` 'license_keys', required
          - `description` string, required — The description of the benefit.
          - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
          - `deletable` boolean, required — Whether the benefit is deletable.
          - `is_deleted` boolean, required — Whether the benefit is deleted.
          - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
          - `metadata` MetadataOutputType, required
          - `visibility` 'draft' | 'private' | 'public', required
          - `properties` BenefitLicenseKeysProperties, required
            - `prefix` string, nullable, required
            - `expires` BenefitLicenseKeyExpirationProperties, required
              - …
            - `activations` BenefitLicenseKeyActivationProperties, required
              - …
            - `limit_usage` integer, nullable, required
          - `visibility_configurable` boolean, required
        - BenefitMeterCredit — A benefit of type `meter_unit`. Use it to grant a number of units on a specific meter.
          - `id` string, uuid4, required — The ID of the benefit.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `type` 'meter_credit', required
          - `description` string, required — The description of the benefit.
          - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
          - `deletable` boolean, required — Whether the benefit is deletable.
          - `is_deleted` boolean, required — Whether the benefit is deleted.
          - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
          - `metadata` MetadataOutputType, required
          - `visibility` 'draft' | 'private' | 'public', required
          - `properties` BenefitMeterCreditProperties, required — Properties for a benefit of type `meter_unit`.
            - `units` integer, required
            - `rollover` boolean, required
            - `meter_id` string, uuid4, required
          - `visibility_configurable` boolean, required
        - BenefitFeatureFlag — A benefit of type `feature_flag`. Use it to grant feature flags with key-value metadata that can be queried via the API and webhooks.
          - `id` string, uuid4, required — The ID of the benefit.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `type` 'feature_flag', required
          - `description` string, required — The description of the benefit.
          - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
          - `deletable` boolean, required — Whether the benefit is deletable.
          - `is_deleted` boolean, required — Whether the benefit is deleted.
          - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
          - `metadata` MetadataOutputType, required
          - `visibility` 'draft' | 'private' | 'public', required
          - `properties` BenefitFeatureFlagProperties, required — Properties for a benefit of type `feature_flag`.
          - `visibility_configurable` boolean, required
        - BenefitSlackSharedChannel
          - `id` string, uuid4, required — The ID of the benefit.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `type` 'slack_shared_channel', required
          - `description` string, required — The description of the benefit.
          - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
          - `deletable` boolean, required — Whether the benefit is deletable.
          - `is_deleted` boolean, required — Whether the benefit is deleted.
          - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
          - `metadata` MetadataOutputType, required
          - `visibility` 'draft' | 'private' | 'public', required
          - `properties` BenefitSlackSharedChannelProperties, required
            - `slack_integration_id` string, uuid4, required — Polar Slack integration linked to this benefit.
            - `channel_name_template` string, required — Template for the channel name. Supports placeholders: {customer_name}, {customer_email_local}, and {metadata.<key>} for any value stored in customer user metadata.
            - `private` boolean — Create the channel as private (recommended).
            - `welcome_message` string, nullable — Optional message posted to the channel right after creation.
            - `archive_on_revoke` boolean — Archive the channel when the benefit is revoked.
            - `team_invitees` string[] — Slack user IDs from the merchant workspace to invite to every channel created for this benefit.
          - `visibility_configurable` boolean, required
    - `medias` ProductMediaFileRead[], required — List of medias associated to the product.
      - `id` string, uuid4, required — The ID of the object.
      - `organization_id` string, uuid4, required
      - `name` string, required
      - `path` string, required
      - `mime_type` string, required
      - `size` integer, required
      - `storage_version` string, nullable, required
      - `checksum_etag` string, nullable, required
      - `checksum_sha256_base64` string, nullable, required
      - `checksum_sha256_hex` string, nullable, required
      - `last_modified_at` string, date-time, nullable, required
      - `version` string, nullable, required
      - `service` 'product_media', required
      - `is_uploaded` boolean, required
      - `created_at` string, date-time, required
      - `size_readable` string, required
      - `public_url` string, required
    - `attached_custom_fields` AttachedCustomField[], required — List of custom fields attached to the product.
      - `custom_field_id` string, uuid4, required — ID of the custom field.
      - `custom_field` union, required
        - CustomFieldText — Schema for a custom field of type text.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `id` string, uuid4, required — The ID of the object.
          - `metadata` MetadataOutputType, required
          - `type` 'text', required
          - `slug` string, required — Identifier of the custom field. It'll be used as key when storing the value.
          - `name` string, required — Name of the custom field.
          - `organization_id` string, uuid4, required — The ID of the organization owning the custom field.
          - `properties` CustomFieldTextProperties, required
            - `form_label` string
            - `form_help_text` string
            - `form_placeholder` string
            - `textarea` boolean
            - `min_length` integer
            - `max_length` integer
        - CustomFieldNumber — Schema for a custom field of type number.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `id` string, uuid4, required — The ID of the object.
          - `metadata` MetadataOutputType, required
          - `type` 'number', required
          - `slug` string, required — Identifier of the custom field. It'll be used as key when storing the value.
          - `name` string, required — Name of the custom field.
          - `organization_id` string, uuid4, required — The ID of the organization owning the custom field.
          - `properties` CustomFieldNumberProperties, required
            - `form_label` string
            - `form_help_text` string
            - `form_placeholder` string
            - `ge` integer
            - `le` integer
        - CustomFieldDate — Schema for a custom field of type date.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `id` string, uuid4, required — The ID of the object.
          - `metadata` MetadataOutputType, required
          - `type` 'date', required
          - `slug` string, required — Identifier of the custom field. It'll be used as key when storing the value.
          - `name` string, required — Name of the custom field.
          - `organization_id` string, uuid4, required — The ID of the organization owning the custom field.
          - `properties` CustomFieldDateProperties, required
            - `form_label` string
            - `form_help_text` string
            - `form_placeholder` string
            - `ge` integer
            - `le` integer
        - CustomFieldCheckbox — Schema for a custom field of type checkbox.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `id` string, uuid4, required — The ID of the object.
          - `metadata` MetadataOutputType, required
          - `type` 'checkbox', required
          - `slug` string, required — Identifier of the custom field. It'll be used as key when storing the value.
          - `name` string, required — Name of the custom field.
          - `organization_id` string, uuid4, required — The ID of the organization owning the custom field.
          - `properties` CustomFieldCheckboxProperties, required
            - `form_label` string
            - `form_help_text` string
            - `form_placeholder` string
        - CustomFieldSelect — Schema for a custom field of type select.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `id` string, uuid4, required — The ID of the object.
          - `metadata` MetadataOutputType, required
          - `type` 'select', required
          - `slug` string, required — Identifier of the custom field. It'll be used as key when storing the value.
          - `name` string, required — Name of the custom field.
          - `organization_id` string, uuid4, required — The ID of the organization owning the custom field.
          - `properties` CustomFieldSelectProperties, required
            - `form_label` string
            - `form_help_text` string
            - `form_placeholder` string
            - `options` CustomFieldSelectOption[], required
              - …
      - `order` integer, required — Order of the custom field in the resource.
      - `required` boolean, required — Whether the value is required for this custom field.

## Acknowledgement `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/polar/apis/polar-api.md) · [All operations](https://skmtc.net/polar/apis/polar-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/polar/polar-api/revisions/ff24109feac4/schema)
