> ## Documentation Index
> Fetch the complete documentation index at: https://docs.way.co/llms.txt
> Use this file to discover all available pages before exploring further.

# listing.published

> Fires when a listing - an experience or a collection - is published.

## When it fires

Way sends `listing.published` when a listing is published. This covers both experience listings and collection listings. When an experience is published, this event is sent alongside `experience.published`; when a collection is published, only `listing.published` is sent.

Events arrive at your endpoint as a `POST` request with the body `{ "event": "listing.published", "payload": { ... } }`. When a webhook secret is set, the `X-Way-Signature` header carries an HMAC of the request body - see [Verify signatures](/webhooks/verify-signatures).

## Payload

Part of the payload is shaped by `listingType`. For experience listings, the experience-level fields (`maxParticipantsCount`, `sessionDurationMinutes`, `partySize`, `healthAndSafety`, `provider`, `taxes`, `priceTiers`, and `hostedBy`) are populated at the payload root and `resourceGroups` is `null`. For collection listings, those root fields are `null` and `resourceGroups` carries each resource group's published experiences with the same fields.

| Field                               | Type                      | Description                                                                                                                                                                                                                                                             |
| ----------------------------------- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `brand.id`                          | string (UUID)             | Unique identifier of the brand.                                                                                                                                                                                                                                         |
| `brand.name`                        | string                    | Display name of the brand.                                                                                                                                                                                                                                              |
| `brand.tier`                        | string                    | Subscription tier of the brand.                                                                                                                                                                                                                                         |
| `brand.countryCode`                 | string                    | Country code of the brand.                                                                                                                                                                                                                                              |
| `brand.currency`                    | string                    | Currency code used by the brand.                                                                                                                                                                                                                                        |
| `brand.externalReferenceId`         | string \| null            | External reference identifier configured for the brand.                                                                                                                                                                                                                 |
| `title`                             | string \| null            | Title of the listing.                                                                                                                                                                                                                                                   |
| `summary`                           | string \| null            | Short summary of the listing.                                                                                                                                                                                                                                           |
| `description`                       | string \| null            | Full description of the listing, as HTML.                                                                                                                                                                                                                               |
| `location`                          | object \| null            | Location of the listing.                                                                                                                                                                                                                                                |
| `location.id`                       | string (UUID)             | Unique identifier of the location.                                                                                                                                                                                                                                      |
| `location.name`                     | string                    | Display name of the location.                                                                                                                                                                                                                                           |
| `location.additionalInfo`           | string \| null            | Extra directions or meeting instructions.                                                                                                                                                                                                                               |
| `location.city`                     | string \| null            | City of the location.                                                                                                                                                                                                                                                   |
| `location.state`                    | string \| null            | State of the location.                                                                                                                                                                                                                                                  |
| `location.country`                  | string \| null            | Country of the location.                                                                                                                                                                                                                                                |
| `location.latitude`                 | number                    | Latitude of the location.                                                                                                                                                                                                                                               |
| `location.longitude`                | number                    | Longitude of the location.                                                                                                                                                                                                                                              |
| `location.timezoneId`               | string                    | IANA time zone of the location.                                                                                                                                                                                                                                         |
| `paymentMethods`                    | string\[]                 | Payment methods accepted for the listing.                                                                                                                                                                                                                               |
| `isNoHost`                          | boolean                   | Whether the listing runs without a host.                                                                                                                                                                                                                                |
| `publishedAt`                       | string (ISO 8601) \| null | Timestamp when the listing was published.                                                                                                                                                                                                                               |
| `bookingAvailabilityMode`           | string                    | Booking availability mode: `private`, `group`, or `non-restricted`.                                                                                                                                                                                                     |
| `category`                          | string \| null            | Name of the listing's category.                                                                                                                                                                                                                                         |
| `vibes`                             | string\[]                 | Names of the vibes assigned to the listing.                                                                                                                                                                                                                             |
| `categoryDetails`                   | object \| null            | The listing's category, with its identifier. `null` when no category is set.                                                                                                                                                                                            |
| `categoryDetails.id`                | string (UUID)             | Unique identifier of the category.                                                                                                                                                                                                                                      |
| `categoryDetails.name`              | string                    | Name of the category.                                                                                                                                                                                                                                                   |
| `vibeDetails`                       | array                     | Vibes assigned to the listing, each with its identifier.                                                                                                                                                                                                                |
| `vibeDetails[].id`                  | string (UUID)             | Unique identifier of the vibe.                                                                                                                                                                                                                                          |
| `vibeDetails[].name`                | string                    | Name of the vibe.                                                                                                                                                                                                                                                       |
| `listingId`                         | string (UUID)             | Unique identifier of the listing.                                                                                                                                                                                                                                       |
| `listingType`                       | string                    | Type of listing: `experience` or `collection`.                                                                                                                                                                                                                          |
| `listingTypeId`                     | string (UUID) \| null     | Identifier of the underlying experience or collection.                                                                                                                                                                                                                  |
| `productLine`                       | string                    | Product line of the listing: `activate`, `host`, or `reserve`.                                                                                                                                                                                                          |
| `languages`                         | string\[]                 | Languages the listing is available in.                                                                                                                                                                                                                                  |
| `publishedCount`                    | number                    | Number of times the listing has been published.                                                                                                                                                                                                                         |
| `customFields`                      | array                     | Custom fields configured on the listing.                                                                                                                                                                                                                                |
| `customFields[].id`                 | string (UUID)             | Unique identifier of the custom field.                                                                                                                                                                                                                                  |
| `customFields[].fieldName`          | string                    | Name of the custom field.                                                                                                                                                                                                                                               |
| `customFields[].value`              | any                       | Value of the custom field.                                                                                                                                                                                                                                              |
| `isUnlisted`                        | boolean                   | Whether the listing is hidden from public discovery.                                                                                                                                                                                                                    |
| `medias`                            | array                     | Media attached to the listing.                                                                                                                                                                                                                                          |
| `medias[].id`                       | string (UUID)             | Unique identifier of the media.                                                                                                                                                                                                                                         |
| `medias[].type`                     | string                    | Media type: `image` or `video`.                                                                                                                                                                                                                                         |
| `medias[].kind`                     | string                    | Media kind: `gallery`, `cover`, `map`, or `description`.                                                                                                                                                                                                                |
| `medias[].altText`                  | string \| null            | Alternative text for the media, for accessibility. `null` when not set.                                                                                                                                                                                                 |
| `medias[].links`                    | array                     | Available renditions of the asset at different resolutions.                                                                                                                                                                                                             |
| `medias[].links[].type`             | string                    | Type of the media link: `image` or `video`.                                                                                                                                                                                                                             |
| `medias[].links[].url`              | string                    | URL of this rendition.                                                                                                                                                                                                                                                  |
| `medias[].links[].resolution`       | string                    | Resolution of this rendition. Images carry `original` plus the pixel widths `384`, `480`, `640`, `750`, and `1080`. Videos carry the resolutions of the source asset.                                                                                                   |
| `autoUnpublishAt`                   | string (ISO 8601) \| null | Timestamp when the listing will be automatically unpublished, if scheduled.                                                                                                                                                                                             |
| `onlineBookingCutoffHours`          | number \| null            | Number of hours before the session when online booking closes.                                                                                                                                                                                                          |
| `experienceUrl`                     | string \| null            | Public URL of the listing.                                                                                                                                                                                                                                              |
| `maxParticipantsCount`              | number \| null            | Maximum number of participants per session. `null` for collection listings.                                                                                                                                                                                             |
| `sessionDurationMinutes`            | number \| null            | Duration of a session in minutes. `null` for collection listings.                                                                                                                                                                                                       |
| `partySize`                         | number \| null            | Party size for private bookings, when set. `null` for collection listings.                                                                                                                                                                                              |
| `healthAndSafety`                   | string \| null            | Health and safety information, as HTML. `null` for collection listings.                                                                                                                                                                                                 |
| `provider`                          | string\[] \| null         | Items provided to participants. `null` for collection listings.                                                                                                                                                                                                         |
| `taxes`                             | array \| null             | Taxes configured on the experience. `null` for collection listings.                                                                                                                                                                                                     |
| `taxes[].id`                        | string (UUID)             | Unique identifier of the tax.                                                                                                                                                                                                                                           |
| `taxes[].includedInPrice`           | boolean                   | Whether the tax is included in the advertised price.                                                                                                                                                                                                                    |
| `taxes[].percentage`                | number                    | Tax percentage, for percentage-based taxes.                                                                                                                                                                                                                             |
| `taxes[].amount`                    | number                    | Tax amount, for fixed-amount taxes.                                                                                                                                                                                                                                     |
| `taxes[].isHostTax`                 | boolean                   | Whether the tax applies to the host, when set.                                                                                                                                                                                                                          |
| `taxes[].order`                     | number \| null            | Order in which the tax is applied, when set.                                                                                                                                                                                                                            |
| `taxes[].showInAdvertisedPrice`     | boolean \| null           | Whether the tax is shown in the advertised price, when set.                                                                                                                                                                                                             |
| `taxes[].appliesTo`                 | string\[] \| null         | Identifiers of the items the tax applies to, when set.                                                                                                                                                                                                                  |
| `priceTiers`                        | array \| null             | Price tiers configured on the experience. `null` for collection listings.                                                                                                                                                                                               |
| `priceTiers[].id`                   | string (UUID)             | Unique identifier of the price tier.                                                                                                                                                                                                                                    |
| `priceTiers[].name`                 | string                    | Name of the price tier.                                                                                                                                                                                                                                                 |
| `priceTiers[].price`                | number                    | Price of the tier.                                                                                                                                                                                                                                                      |
| `priceTiers[].maxQuantity`          | number                    | Maximum quantity bookable on the tier, when set.                                                                                                                                                                                                                        |
| `hostedBy`                          | object \| null            | Host assigned to the experience. `null` when there is no host, and for collection listings.                                                                                                                                                                             |
| `hostedBy.id`                       | string (UUID)             | Unique identifier of the host.                                                                                                                                                                                                                                          |
| `hostedBy.firstName`                | string                    | Host's first name.                                                                                                                                                                                                                                                      |
| `hostedBy.lastName`                 | string                    | Host's last name.                                                                                                                                                                                                                                                       |
| `hostedBy.emailAddress`             | string                    | Email address of the host.                                                                                                                                                                                                                                              |
| `hostedBy.description`              | string \| null            | Host's bio. `null` when not set.                                                                                                                                                                                                                                        |
| `hostedBy.allowOverlappingBookings` | boolean                   | Whether this host can be booked for overlapping sessions.                                                                                                                                                                                                               |
| `resourceGroups`                    | array \| null             | Resource groups of a collection listing. `null` for experience listings.                                                                                                                                                                                                |
| `resourceGroups[].id`               | string (UUID)             | Unique identifier of the resource group.                                                                                                                                                                                                                                |
| `resourceGroups[].title`            | string                    | Title of the resource group.                                                                                                                                                                                                                                            |
| `resourceGroups[].description`      | string                    | Description of the resource group.                                                                                                                                                                                                                                      |
| `resourceGroups[].experiences`      | array                     | Published experiences in the resource group. Each carries `id`, `title`, and the same experience-level fields as the payload root: `maxParticipantsCount`, `sessionDurationMinutes`, `partySize`, `healthAndSafety`, `provider`, `taxes`, `priceTiers`, and `hostedBy`. |

## Sample

```json theme={null}
{
  "event": "listing.published",
  "payload": {
    "brand": {
      "id": "8e12bfdc-a74c-48e2-8a76-2996a359c10c",
      "name": "The Seaside Hotel",
      "tier": "growth",
      "currency": "USD",
      "countryCode": "US"
    },
    "title": "Cabana Rental",
    "vibes": [
      "Daily Resort Activities ",
      "Resort Experiences "
    ],
    "vibeDetails": [
      {
        "id": "2f8c1a44-90b7-4e21-9c3d-6a5e8f0b1d72",
        "name": "Daily Resort Activities "
      },
      {
        "id": "b6d9e017-3c54-4a88-812f-5e7a9c0d3b41",
        "name": "Resort Experiences "
      }
    ],
    "medias": [
      {
        "id": "83566ef6-7450-450b-9b4d-ce86e6f9b259",
        "kind": "cover",
        "type": "image",
        "altText": "Poolside cabana with plush daybeds",
        "links": [
          {
            "url": "https://images.letsway.com/staging/tr:w-original/https://storage.googleapis.com/kouto-api-media/2026/6/accbde4c0064e535c67fd874a3b95d235d72465ed862dca1.jpg",
            "type": "image",
            "resolution": "original"
          },
          {
            "url": "https://images.letsway.com/staging/tr:w-384/https://storage.googleapis.com/kouto-api-media/2026/6/accbde4c0064e535c67fd874a3b95d235d72465ed862dca1.jpg",
            "type": "image",
            "resolution": "384"
          },
          {
            "url": "https://images.letsway.com/staging/tr:w-480/https://storage.googleapis.com/kouto-api-media/2026/6/accbde4c0064e535c67fd874a3b95d235d72465ed862dca1.jpg",
            "type": "image",
            "resolution": "480"
          },
          {
            "url": "https://images.letsway.com/staging/tr:w-640/https://storage.googleapis.com/kouto-api-media/2026/6/accbde4c0064e535c67fd874a3b95d235d72465ed862dca1.jpg",
            "type": "image",
            "resolution": "640"
          },
          {
            "url": "https://images.letsway.com/staging/tr:w-750/https://storage.googleapis.com/kouto-api-media/2026/6/accbde4c0064e535c67fd874a3b95d235d72465ed862dca1.jpg",
            "type": "image",
            "resolution": "750"
          },
          {
            "url": "https://images.letsway.com/staging/tr:w-1080/https://storage.googleapis.com/kouto-api-media/2026/6/accbde4c0064e535c67fd874a3b95d235d72465ed862dca1.jpg",
            "type": "image",
            "resolution": "1080"
          }
        ]
      },
      {
        "id": "9711a957-521b-407d-aa19-9a30174e8db6",
        "kind": "gallery",
        "type": "image",
        "altText": null,
        "links": [
          {
            "url": "https://images.letsway.com/staging/tr:w-original/https://storage.googleapis.com/kouto-api-media/2026/6/accbde4c0064e535c67fd874a3b95d235d72465ed862dca1.jpg",
            "type": "image",
            "resolution": "original"
          },
          {
            "url": "https://images.letsway.com/staging/tr:w-1080/https://storage.googleapis.com/kouto-api-media/2026/6/accbde4c0064e535c67fd874a3b95d235d72465ed862dca1.jpg",
            "type": "image",
            "resolution": "1080"
          }
        ]
      }
    ],
    "summary": "Luxurious adult cabana & daybed rentals by the pool. Enjoy privacy, plush comforts, personal service, and gourmet treats for an ultimate relaxation experience.",
    "category": null,
    "categoryDetails": null,
    "isNoHost": false,
    "location": {
      "id": "953bcdd8-2ff4-4427-97e9-4851d8db7439",
      "name": "Austin, TX, USA",
      "latitude": 30.267153,
      "longitude": -97.7430608,
      "timezoneId": "America/Chicago",
      "additionalInfo": null,
      "city": "Austin",
      "state": "TX",
      "country": "United States"
    },
    "languages": [
      "en-US"
    ],
    "listingId": "b8459588-c7f3-42ed-a010-d455917b676e",
    "isUnlisted": false,
    "description": "<p>Indulge in the epitome of poolside luxury with our combined offering of an adult cabana and daybed rental, designed for discerning guests seeking an unparalleled relaxation experience. Nestled beside a sparkling pool, our adult cabana provides a private sanctuary where comfort meets elegance. It features stylish furnishings, a personal plunge pool, and an outdoor dining area, perfect for enjoying a meal under the sky. The cabana is complemented by state-of-the-art amenities, including a high-speed Wi-Fi connection, a premium sound system, and a fully stocked mini-bar with an array of refreshing beverages.</p>",
    "listingType": "collection",
    "productLine": "reserve",
    "publishedAt": "2025-07-11T20:57:48.970Z",
    "customFields": [],
    "experienceUrl": "https://embed-demo.staging.letsway.com/brands/8e12bfdc-a74c-48e2-8a76-2996a359c10c#!/e/c3789d11",
    "listingTypeId": "8afaf6f6-5901-4328-8579-bb0a3b5c2f30",
    "paymentMethods": [
      "credit-card"
    ],
    "publishedCount": 19,
    "autoUnpublishAt": null,
    "bookingAvailabilityMode": "group",
    "onlineBookingCutoffHours": -1,
    "maxParticipantsCount": null,
    "sessionDurationMinutes": null,
    "partySize": null,
    "healthAndSafety": null,
    "provider": null,
    "taxes": null,
    "priceTiers": null,
    "hostedBy": null,
    "resourceGroups": [
      {
        "id": "5f1e0f6a-9a1e-4a44-b7a4-7f3f7a1a2b3c",
        "title": "Cabanas",
        "description": "Private poolside cabanas",
        "experiences": [
          {
            "id": "c3789d11-4d2a-4d6e-9f0a-1b2c3d4e5f6a",
            "title": "Poolside Cabana",
            "maxParticipantsCount": 8,
            "sessionDurationMinutes": 480,
            "partySize": null,
            "healthAndSafety": "<p>Adults only.</p>",
            "provider": [
              "Towels",
              "Bottled water"
            ],
            "taxes": [
              {
                "id": "ccf8424c-2da0-41a0-87d3-ef228cf30cf9",
                "percentage": 5,
                "includedInPrice": false
              }
            ],
            "priceTiers": [
              {
                "name": "Full day",
                "price": 250
              }
            ],
            "hostedBy": {
              "id": "7c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
              "firstName": "Maria",
              "lastName": "Gonzalez",
              "emailAddress": "maria.gonzalez@theseasidehotel.com",
              "description": "Maria has hosted poolside experiences at The Seaside Hotel for six years.",
              "allowOverlappingBookings": false
            }
          }
        ]
      }
    ]
  }
}
```

## Related endpoints

Retrieve the full listing with [Get Listing](/api-reference/listings/get-listing).
