Skip to main content

Introduction

Each PMS provider uses its own set of amenity names. For example, one provider might call it “Wireless Internet” while another calls it “WiFi/Wireless” or “Internet Wifi”. Zepl’s amenity mapping system lets you map these provider-specific names to a unified set of amenities in your workspace, so that listings from different providers can be searched and filtered consistently.

How It Works

The mapping flow has three layers:
  1. Raw PMS Amenities — When listings are synced from a PMS, the provider’s amenity names are stored as-is on each listing (in the rawAmenities field).
  2. Workspace Amenities — You define a unified set of amenity names and categories for your workspace. Each unified amenity has a providerNames array that maps one or more PMS amenity names to it.
  3. Listing Amenities — Based on the mapping, Zepl automatically matches each listing’s raw amenities to your unified amenities. These are returned in API responses grouped by category.
PMS Provider                 Your Workspace
─────────────               ──────────────
"Wireless Internet"  ──┐
"WiFi/Wireless"      ──┼──▶  Wifi (Common)
"Internet Wifi"      ──┘

"Dishwasher"         ──┐
"dish_washer"        ──┼──▶  Dishwasher (Kitchen)
"dishwashing_machine"──┘

Setting Up Amenity Mapping

Step 1: Review Available PMS Amenities

First, check which amenities the provider sends. You can find a reference list for each supported provider in the provider-specific pages below. These lists are a starting point — providers may add new amenities over time. To discover unmapped amenities (amenities that exist on your synced listings but haven’t been mapped yet), use:
GET /api/v1/integration-definition/{provider}/unmapped
This returns all raw amenity names from your listings that don’t match any existing mapping. Run this periodically to catch newly added amenities.

Step 2: Define Your Mapping

Structure your mapping as categories, each containing a list of unified amenities. Each unified amenity specifies which PMS names map to it via the providerNames array.
[
  {
    "id": "common",
    "name": "Common",
    "amenities": [
      {
        "id": "wifi",
        "name": "Wifi",
        "providerNames": ["Wireless Internet", "WiFi/Wireless", "Internet Wifi", "Free wifi"]
      },
      {
        "id": "air-conditioning",
        "name": "Air conditioning",
        "providerNames": ["Air conditioning", "Air Conditioning", "AC"]
      },
      {
        "id": "heating",
        "name": "Heating",
        "providerNames": ["Heating", "Central Heating"]
      }
    ]
  },
  {
    "id": "kitchen",
    "name": "Kitchen",
    "amenities": [
      {
        "id": "dishwasher",
        "name": "Dishwasher",
        "providerNames": ["Dishwasher"]
      },
      {
        "id": "microwave",
        "name": "Microwave",
        "providerNames": ["Microwave", "Microwave Oven"]
      }
    ]
  }
]
Key points:
  • id values must be unique within their scope (unique category IDs, unique amenity IDs within a category)
  • providerNames matching is case-sensitive — include the exact names as they appear in the PMS data
  • A single PMS amenity name should only appear in one unified amenity’s providerNames
  • Multiple PMS names can map to the same unified amenity (e.g., “Wireless Internet” and “WiFi/Wireless” both map to “Wifi”)

Step 3: Apply the Mapping

Send your mapping to the update endpoint:
PUT /api/v1/integration-definition/{provider}/amenity
{
  "amenityCategoryMapping": [
    {
      "id": "common",
      "name": "Common",
      "amenities": [
        {
          "id": "wifi",
          "name": "Wifi",
          "providerNames": ["Wireless Internet"]
        }
      ]
    }
  ]
}
This replaces the entire mapping for the provider. Include all categories and amenities you want mapped, not just the new ones.

Step 4: Verify

Retrieve the current mapping to verify it was applied:
GET /api/v1/integration-definition/{provider}/amenity
Check for unmapped amenities again to see if anything was missed:
GET /api/v1/integration-definition/{provider}/unmapped

How Mapped Amenities Appear

Once mapped, amenities appear on listing responses grouped by category:
{
  "amenities": {
    "categories": {
      "Common": {
        "categoryID": "common",
        "values": [
          { "name": "Wifi", "id": "wifi" },
          { "name": "Air conditioning", "id": "air-conditioning" }
        ]
      },
      "Kitchen": {
        "categoryID": "kitchen",
        "values": [
          { "name": "Dishwasher", "id": "dishwasher" },
          { "name": "Microwave", "id": "microwave" }
        ]
      }
    }
  }
}

Amenity Categories

To see all amenity categories currently defined across your workspace:
GET /api/v1/integration-definition/amenity-categories
Common categories include: Common, Kitchen, Facility, Outdoor, Home Safety, Location, Family, Accessibility. Mapped amenities can be used to filter search results. Pass amenity IDs in the amenities query parameter:
GET /api/v1/search?amenities=wifi,dishwasher&checkInDate=2025-07-01&checkOutDate=2025-07-05
Only listings that have all specified amenities will be returned. See the Search guide for more details.

Provider Amenity References

Each provider has its own set of amenity names. Use the pages below as a reference when setting up your mapping:

Beds24

BookingSync

Guesty

Hostaway

Hostfully

Hostify

Lodgify

OwnerRez

Uplisting

API Reference