---
title: "How to show or hide content based on a feature's attributes"
description: "Show different popup content for each feature, from its attribute values: text, images, buttons, tables, charts, or a second condition."
seo:
  title: "Show or hide popup content"
sidebar:
  label: "Conditional content"
---

A conditional shows different content in a custom popup for each feature, based on that feature's attribute values. You set a condition, such as `bookable equals true` or `photo_url is not null`, and choose what the popup shows when it is true and when it is false.

**[See it on an example map](https://mangomap-staging.com/examples-staging/maps/y4h0ctdr/popup-media-logic-lab)**

Open the Popup Media & Logic Lab. In the legend, turn on `Sites — Logic` and turn off `Sites — Default`. Click a few sites. The `Status` and `Bookings` text changes from site to site, and a photo shows only when the site has one.

Each branch can hold much more than a line of text:

- **Rich content:** formatted text with headings, colours, and lists, plus field values, links, images, buttons, tables, charts, and equations. A site with a photo can show it with a booking button; a site without one can show a short note instead.
- **A second conditional:** test another value, for if, else-if, else logic.
- **A field's value,** or **nothing**, so the whole section disappears.

Click `Insert conditional` in the popup editor to build one in three steps: `Condition`, `Output`, and `Test`.

{/* video-content: id=conditional-content-wizard
Start: Popup Media & Logic Lab with the Popup section of Sites — Logic open.
The Custom popup editor shows the existing template, and the cursor is at the
end of the template.

Show:

1. Click Insert conditional. The Conditional Expression builder opens on the
   Condition step.
2. Pick bookable as the field, equals as the operator, and type true as the
   value.
3. Click Next. The Output step opens.
4. For the TRUE branch, set Content Type to Rich Content and type
   "Bookings open. Ask at the front desk." For the FALSE branch, set Content
   Type to Nothing.
5. Click Next. The Test step shows sample 1 with its TRUE or FALSE chip and its
   output.
6. Click Next sample until a sample shows FALSE and an empty output.

End: The Test step on a FALSE sample, with Save not clicked.

Exclude: Authentication, loading screens, the Save and Save Changes buttons,
and any saved change. The builder and editor are dropped when the capture ends.
*/}
{/* walkthrough: id=conditional-content-wizard */}
<video
  src="/_assets/walkthroughs/conditional-content-wizard.webm"
  controls muted playsInline width="960">
  <track kind="captions" src="/_assets/walkthroughs/conditional-content-wizard.vtt" srclang="en" default />
</video>

{/* /walkthrough */}

## Before you start

- The popup type must be `Custom`. See [How to write a custom popup template](/docs/configuring-popups/write-custom-popup-template).
- Decide what attribute drives the condition before opening the wizard. Conditionals work on attribute values — you'll need to know which field and what comparison.

## Open the conditional builder

In the Custom popup editor, place the cursor where the conditional content should appear. Click `Insert conditional` in the toolbar.

The `Conditional Expression` builder opens. It has three steps: `Condition`, `Output`, and `Test`. This example shows the `Condition` step for `bookable` equals `true`:

<img src="/_assets/configuring-popups/add-conditional-content-to-popup--builder.png" alt="Conditional Expression builder with the steps Condition, Output, and Test. The Condition step shows the AND — all conditions match select, IF bookable, equals, true, and the Add condition, Add sub-group, and Next buttons" width="1600" height="960" />

Click any step to open it. You can complete the steps in any order.

## Step 1 — Condition

Set up the comparison that decides whether the conditional section renders.

The wizard lets you build a condition like _"`bookable` equals `true`"_ or _"`population` is greater than `10000`"_. Each comparison has three parts:

- **Field** — the layer attribute to test.
- **Operator** — the comparison.
- **Value** — what to compare against.

Available operators (as they appear in the dropdown):
| Operator | Meaning |
| --- | --- |
| `equals` | Field value matches the given value |
| `does not equal` | Field value is anything other than the given value |
| `is greater than` | Field value is numerically larger |
| `is less than` | Field value is numerically smaller |
| `is at least` | Field value is greater than or equal to |
| `is at most` | Field value is less than or equal to |
| `is null` | Field has no value for this feature |
| `is not null` | Field has any value for this feature |

Click `Add condition` to add more conditions. The list above the conditions sets how they combine:

- **`AND — all conditions match`** — the default. A feature matches only when every condition is true.
- **`OR — any condition matches`** — a feature matches when at least one condition is true.

Click `Add sub-group` to add a group of conditions with its own `AND` or `OR`. For example: `status equals Open` AND a sub-group of `bookable equals true` OR `phone is not null`. A sub-group cannot hold another sub-group.

Click `Next` to advance to Step 2.

## Step 2 — Output

Choose what the popup shows when the condition is true, and when it is false. The panel shows both branches at once. For each one, pick a `Content Type`:

- **Field** — one attribute's value, with its formatting from the Format tab. Pick the field in `Select Field`.
- **Rich Content** — an editor with its own toolbar, almost the same as the popup editor. See [What a Rich Content branch can hold](#what-a-rich-content-branch-can-hold).
- **Conditional** — a second conditional. See [Nest a second conditional](#nest-a-second-conditional).
- **Nothing** — no content. Use it on the false branch to hide the whole section when the condition fails.

Each branch starts at `Please select...`. Pick a content type for both before you go on.

### What a Rich Content branch can hold

The Rich Content editor has the same tools as the popup editor, so a branch can be a complete popup section:

| Content | What it does in a branch | How to |
| --- | --- | --- |
| Text and formatting | Headings, bold, italic, colours, alignment, lists, quotes, and dividers. | [Write a custom popup template](/docs/configuring-popups/write-custom-popup-template) |
| Field values | `Insert simple variable` adds a `{field_name}` that shows the feature's value. | [Insert attribute values](/docs/configuring-popups/insert-attribute-values-into-popup) |
| Links | Web, email, phone, and text-message links, with `{field_name}` in the address. | [Add call or message links](/docs/configuring-popups/add-call-or-message-links-to-popup) |
| Images | One image for all features, or `{photo_url}` for each feature's own image. | [Add images](/docs/configuring-popups/add-images-to-popup) |
| Buttons | A button that opens a page or starts an email, call, or message. | [Add interactive buttons](/docs/configuring-popups/add-interactive-buttons-to-popup) |
| Tables | A table of labels and field values. | [Add tables](/docs/configuring-popups/add-tables-to-popup) |
| Charts | A bar or pie chart of the feature's number fields. | [Add charts](/docs/configuring-popups/add-charts-to-popup) |
| Equations | A number calculated from the feature's fields, such as `{revenue} / 12`. | [Add equations](/docs/configuring-popups/add-equations-to-popup) |

The branch editor also has `Insert YouTube video`, and the video plays in the popup. See [How to embed a YouTube video in a custom popup](/docs/configuring-popups/embed-youtube-in-popup). A branch has no `Insert iframe` button, so it cannot hold a web page or a video file.

Click `Next` to advance to Step 3.

## Step 3 — Test

The `Test` step runs the condition on up to 5 sample records from the layer's dataset, one record at a time. For each record you see:

- Each rule, with the record's value and a `TRUE` or `FALSE` chip.
- With more than one rule, a `Combined (AND):` or `Combined (OR):` chip for the rules together, and a line for each sub-group.
- `Output:` — the content this record would show in the popup.

Click `Previous sample` and `Next sample` to step through the records. The counter, for example `Sample 2 of 5`, shows where you are.

If a record gives the wrong result, click back to Step 1 to adjust the condition.

When you're satisfied, save the conditional. The wizard closes, and the conditional shows as a chip in the popup editor, such as `If {bookable} === true`. With more than one condition, the chip ends in `AND ...` or `OR ...`. To change the conditional, hover over the chip and click `Edit conditional`. To remove it, click `Delete conditional`.

## Nest a second conditional

Set `Content Type` to `Conditional` on either branch to test a second value. A second builder opens, with its own `Condition`, `Output`, and `Test` steps, and its branches take the same content types: field, rich content, or nothing. Its `Condition` step has the same AND/OR select and `Add sub-group`.

This gives you if, else-if, else logic in one block. For example: if `status equals Open`, show opening hours and a booking button; else if `status equals Under review`, show a note; else show nothing.

You can nest one level only: inside the second conditional, `Content Type` has no `Conditional` choice. To test more values, place separate conditionals one after another in the popup editor.

## How it renders per feature

The diagram follows one feature through a conditional whose false branch holds a second conditional:

{/* diagram:popup-conditional-flow */}
<svg class="dark:hidden" style="width: 100%; height: auto" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="popup-conditional-flow-inline-title popup-conditional-flow-inline-desc">
  <title id="popup-conditional-flow-inline-title">How a conditional picks its content</title>
  <desc id="popup-conditional-flow-inline-desc">Flowchart: when the condition is true the popup shows the true branch; when it is false it shows the false branch, unless that branch is a second conditional, which tests its own condition and shows its own true or false branch, with no third level.</desc>
  <defs>
    <marker id="popup-conditional-flow-inline-arrow" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#525252"/></marker>
    <marker id="popup-conditional-flow-inline-arrow-accent" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#c4360c"/></marker>
  </defs>
  <rect width="100%" height="100%" fill="#f5f5f5"/>
  <path d="M192 60 L192 82" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-arrow)"/>
  <path d="M316 136 L358 136" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-arrow)"/>
  <path d="M316 292 L358 292" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-arrow)"/>
  <path d="M316 448 L358 448" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-arrow)"/>
  <path d="M192 188 L192 238" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-arrow)"/>
  <path d="M192 344 L192 394" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-arrow)"/>
  <path d="M192 500 L192 550" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-arrow)"/>
  <rect x="318" y="112" width="34" height="16" rx="2" fill="#f5f5f5"/><text x="335" y="124" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="322" y="268" width="26" height="16" rx="2" fill="#f5f5f5"/><text x="335" y="280" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="318" y="424" width="34" height="16" rx="2" fill="#f5f5f5"/><text x="335" y="436" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="200" y="198" width="26" height="16" rx="2" fill="#f5f5f5"/><text x="213" y="210" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="200" y="354" width="34" height="16" rx="2" fill="#f5f5f5"/><text x="217" y="366" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="200" y="510" width="26" height="16" rx="2" fill="#f5f5f5"/><text x="213" y="522" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="76" y="16" width="232" height="44" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="192" y="43" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">A feature’s popup opens</text>
  <polygon points="192,84 316,136 192,188 68,136" fill="rgba(196,54,12,0.08)" stroke="#c4360c" stroke-width="1.4"/>
  <text x="192" y="134" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Condition true?</text>
  <text x="192" y="152" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">rules joined by AND or OR</text>
  <polygon points="192,240 316,292 192,344 68,292" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="192" y="287" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Is the false branch</text><text x="192" y="305" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">a Conditional?</text>
  <polygon points="192,396 316,448 192,500 68,448" fill="#ffffff" stroke="#171717" stroke-width="1"/>
  <text x="192" y="446" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Second condition true?</text>
  <text x="192" y="464" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">the else-if test</text>
  <rect x="360" y="100" width="264" height="72" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/><text x="492" y="122" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Show the true branch</text><text x="492" y="142" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">Field, Rich Content,</text><text x="492" y="158" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">Conditional or Nothing</text>
  <rect x="360" y="264" width="264" height="56" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/><text x="492" y="286" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Show the false branch</text><text x="492" y="306" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">Field, Rich Content or Nothing</text>
  <rect x="360" y="412" width="264" height="72" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/><text x="492" y="434" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Show its true branch</text><text x="492" y="454" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">Field, Rich Content or Nothing</text><text x="492" y="470" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">no Conditional at this level</text>
  <rect x="62" y="552" width="260" height="72" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="192" y="574" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Show its false branch</text>
  <text x="192" y="594" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">Field, Rich Content or Nothing</text>
  <text x="192" y="610" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">no Conditional at this level</text>
</svg>
<svg class="hidden dark:block" style="width: 100%; height: auto" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="popup-conditional-flow-inline-dark-title popup-conditional-flow-inline-dark-desc">
  <title id="popup-conditional-flow-inline-dark-title">How a conditional picks its content</title>
  <desc id="popup-conditional-flow-inline-dark-desc">Flowchart: when the condition is true the popup shows the true branch; when it is false it shows the false branch, unless that branch is a second conditional, which tests its own condition and shows its own true or false branch, with no third level.</desc>
  <defs>
    <marker id="popup-conditional-flow-inline-dark-arrow" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#a3a3a3"/></marker>
    <marker id="popup-conditional-flow-inline-dark-arrow-accent" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#ff7a4d"/></marker>
  </defs>
  <rect width="100%" height="100%" fill="#141414"/>
  <path d="M192 60 L192 82" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-dark-arrow)"/>
  <path d="M316 136 L358 136" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-dark-arrow)"/>
  <path d="M316 292 L358 292" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-dark-arrow)"/>
  <path d="M316 448 L358 448" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-dark-arrow)"/>
  <path d="M192 188 L192 238" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-dark-arrow)"/>
  <path d="M192 344 L192 394" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-dark-arrow)"/>
  <path d="M192 500 L192 550" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#popup-conditional-flow-inline-dark-arrow)"/>
  <rect x="318" y="112" width="34" height="16" rx="2" fill="#141414"/><text x="335" y="124" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="322" y="268" width="26" height="16" rx="2" fill="#141414"/><text x="335" y="280" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="318" y="424" width="34" height="16" rx="2" fill="#141414"/><text x="335" y="436" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="200" y="198" width="26" height="16" rx="2" fill="#141414"/><text x="213" y="210" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="200" y="354" width="34" height="16" rx="2" fill="#141414"/><text x="217" y="366" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="200" y="510" width="26" height="16" rx="2" fill="#141414"/><text x="213" y="522" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="76" y="16" width="232" height="44" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="192" y="43" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">A feature’s popup opens</text>
  <polygon points="192,84 316,136 192,188 68,136" fill="rgba(255,122,77,0.10)" stroke="#ff7a4d" stroke-width="1.4"/>
  <text x="192" y="134" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Condition true?</text>
  <text x="192" y="152" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">rules joined by AND or OR</text>
  <polygon points="192,240 316,292 192,344 68,292" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="192" y="287" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Is the false branch</text><text x="192" y="305" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">a Conditional?</text>
  <polygon points="192,396 316,448 192,500 68,448" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/>
  <text x="192" y="446" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Second condition true?</text>
  <text x="192" y="464" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">the else-if test</text>
  <rect x="360" y="100" width="264" height="72" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/><text x="492" y="122" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Show the true branch</text><text x="492" y="142" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">Field, Rich Content,</text><text x="492" y="158" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">Conditional or Nothing</text>
  <rect x="360" y="264" width="264" height="56" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/><text x="492" y="286" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Show the false branch</text><text x="492" y="306" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">Field, Rich Content or Nothing</text>
  <rect x="360" y="412" width="264" height="72" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/><text x="492" y="434" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Show its true branch</text><text x="492" y="454" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">Field, Rich Content or Nothing</text><text x="492" y="470" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">no Conditional at this level</text>
  <rect x="62" y="552" width="260" height="72" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="192" y="574" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Show its false branch</text>
  <text x="192" y="594" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">Field, Rich Content or Nothing</text>
  <text x="192" y="610" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">no Conditional at this level</text>
</svg>
{/* /diagram:popup-conditional-flow */}

## Common patterns

**Hide a section when an attribute is empty.** Condition: `field_name is not null`. True branch: the content. False branch: `Nothing`.

**Show a photo only when the feature has one.** Condition: `photo_url is not null`. True branch: rich content with an image whose `Image URL` is `{photo_url}`. False branch: `Nothing`, so no broken-image icon shows.

**Show a note for more than one value.** Set the group to `OR — any condition matches`. Conditions: `status equals Closed` and `status equals Under review`. True branch: rich content with a note that the site is not open. False branch: `Nothing`.

**Show a booking button only where booking is open.** Condition: `bookable equals true`. True branch: rich content with a line of text and a button that links to `https://example.com/book/{slug}`. False branch: rich content that says how to ask instead.

**Show a chart only when there is data.** Condition: `q1_revenue is not null`. True branch: rich content with a bar chart of the quarterly fields. False branch: `Nothing`.

**Show different content for different categories.** Condition: `category equals "A"`. True branch: rich content for category A. False branch: a second conditional that checks for category B, with category B's content in its true branch and the content for every other category in its false branch.

## Save the popup

After saving the conditional in the wizard, click `Save Changes` at the bottom right of the popup editor to commit the change to the layer.

## Troubleshooting

**The `Test` step says sample records could not be loaded.** MangoMap couldn't fetch records to test with. You can still save the conditional. Check it afterwards by clicking features on the map.

**The `Test` step says the dataset has no records to test against.** The layer's dataset is empty. Save the conditional, and check it on the map once the dataset has features.

## Related

- [How to write a custom popup template](/docs/configuring-popups/write-custom-popup-template)
- [How to add dynamic content to a custom popup](/docs/configuring-popups/add-dynamic-content-to-popup)
- [How to insert attribute values into a custom popup](/docs/configuring-popups/insert-attribute-values-into-popup)
- [Popup tab controls](/docs/configuring-popups/popup-reference)
