Pro

Healthcare Provider Map Demo

Below is a healthcare provider finder, a map that helps patients find the right clinic near them and filter by the type of care, the services on offer and the insurance each location accepts.

Try it live

Walk-ins Welcome
  • Yes
Telehealth Available
  • Yes
On-Site Lab
  • Yes
On-Site Imaging
  • Yes
Bilingual Staff
  • Yes
Aetna
  • Yes
Blue Cross Blue Shield
  • Yes
Cigna
  • Yes
Medicare
  • Yes
UnitedHealthcare
  • Yes
Close
Get Directions
Directions driving travel mode
Directions walking travel mode
Directions transit travel mode
Directions bicycle travel mode
'; ';
Options hide options
Print Reset
Fetching directions...

How it works

Help patients find the right kind of care

Group your locations by care type (primary care, urgent care, pediatrics, women’s health, mental health and specialty care) and patients can tap a category to show only the clinics that match. It turns a crowded national map into a shortlist of the places relevant to them.

Filter by the things that actually matter

Custom fields let people narrow down further by what each location offers, such as walk-ins, telehealth, an on-site lab or imaging, and bilingual staff. Just as important in healthcare, they can filter by the insurance accepted (Aetna, Blue Cross Blue Shield, Cigna, Medicare and UnitedHealthcare), so nobody arrives somewhere their plan is not taken.

A clear, searchable list beside the map

A marker listing sits alongside the map so visitors can scan every provider, search by their own location within a distance radius, and open directions to the one they choose. The map and the list stay in step as filters are applied.

Built for networks and directories

Import your whole provider list in bulk and keep it up to date as locations and details change. The map scales comfortably from a single practice to a nationwide network, stays responsive on every device, and drops into any page with a shortcode.

For developers Copy the CSS used on this demo

Pick a feature and paste it into the Custom CSS area (Maps -> Settings -> Custom Scripts) to give your own WP Go Maps the same look.

/* WP Go Maps - "Care Type" category filter as click-to-toggle pills */
.wpgmza-marker-listing-category-filter > label {
  display: block;
  margin: 0 0 12px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #0e7388;
}
.wpgmza_cat_ul {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.wpgmza_cat_ul li { position: relative; margin: 0; }
/* hide the native checkbox; the label is the pill (toggles via for=) */
.wpgmza_cat_ul li input.wpgmza_checkbox {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  margin: 0;
}
.wpgmza_cat_ul li label {
  display: inline-flex;
  align-items: center;
  padding: 9px 16px;
  font-size: 13.5px;
  font-weight: 600;
  color: #0e7388;
  background: #fff;
  border: 1px solid #cde6ee;
  border-radius: 999px;
  cursor: pointer;
  white-space: nowrap;
  transition: background .15s ease, color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.wpgmza_cat_ul li label:hover { border-color: #1591b0; }
.wpgmza_cat_ul li:has(input:checked) label {
  background: #1591b0;
  color: #fff;
  border-color: #1591b0;
  box-shadow: 0 4px 12px rgba(21, 145, 176, .22);
}
/* WP Go Maps - custom-field filters as click-to-toggle pills.
   The "Yes" text and the checkbox are hidden; the whole pill is the control.
   Pair this with the small script in the "JS" tab to toggle on click. */
.wpgmza-filter-widgets {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 28px 0 18px;
}
/* optional "Filter by:" heading above the pills */
.wpgmza-filter-widgets::before {
  content: "Filter by:";
  flex-basis: 100%;
  margin-bottom: 2px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #0e7388;
}
.wpgmza-custom-field-filter-widget-checkboxes {
  display: inline-flex;
  align-items: center;
  padding: 9px 16px;
  font-size: 13.5px;
  font-weight: 600;
  color: #0e7388;
  background: #fff;
  border: 1px solid #cde6ee;
  border-radius: 999px;
  cursor: pointer;
  white-space: nowrap;
  transition: background .15s ease, color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.wpgmza-custom-field-filter-widget-checkboxes::before { content: attr(data-field-name); }
.wpgmza-custom-field-filter-widget-checkboxes:hover { border-color: #1591b0; }
/* Show only the field name and hide the plugin inner markup. Hiding the parent
   (.wpgmza-placeholder-label) beats the inline display the plugin puts on the
   dropdown <ul>. The checkbox stays in the DOM (hidden) for the JS + :has(). */
.wpgmza-placeholder-label { display: none !important; }
.wpgmza-custom-field-filter-widget-checkboxes:has(input:checked) {
  background: #1591b0;
  color: #fff;
  border-color: #1591b0;
  box-shadow: 0 4px 12px rgba(21, 145, 176, .22);
}
.wpgmza-reset-custom-fields { border-radius: 999px; }
.wpgmza-reset-custom-fields:hover { color: #0e7388; border-color: #1591b0; background: #e9f4f8; }
/* Make each WP Go Maps custom-field filter pill toggle on click. The pill
   checkbox is hidden, so we toggle it here and fire a change event for the map
   to pick up. Add this once - e.g. a footer script or a custom JS plugin. */
document.addEventListener("click", function (e) {
  var pill = e.target.closest(".wpgmza-custom-field-filter-widget-checkboxes");
  if (!pill) return;
  var cb = pill.querySelector("input[type=checkbox]");
  if (!cb) return;
  cb.checked = !cb.checked;
  cb.dispatchEvent(new Event("change", { bubbles: true }));
});
/* WP Go Maps - info window, medical theme.
   Renders inside the Google Maps popup (.gm-style-iw). */
.gm-style-iw.gm-style-iw-c {
  border-radius: 14px;
  box-shadow: 0 12px 34px rgba(14, 115, 136, .18);
}
/* slim teal scrollbar + nudge Google close X off it */
.gm-style-iw-d { overflow: auto !important; overflow-x: hidden !important; }
.gm-style-iw-d::-webkit-scrollbar { width: 8px; }
.gm-style-iw-d::-webkit-scrollbar-track { background: transparent; }
.gm-style-iw-d::-webkit-scrollbar-thumb { background: #cfe7ef; border-radius: 8px; }
.gm-style-iw-d::-webkit-scrollbar-thumb:hover { background: #1591b0; }
.gm-style-iw-chr .gm-ui-hover-effect { transform: translateX(-10px); }

.wpgmza-infowindow { padding: 2px 10px 4px 2px; }
.wpgmza_infowindow_title {
  margin: 0 0 8px;
  font-size: 17px;
  font-weight: 700;
  line-height: 1.25;
  color: #0e7388;
}
.wpgmza_infowindow_categories {
  display: inline-block;
  margin: 0 0 10px;
  padding: 3px 11px;
  font-size: 12px;
  font-weight: 600;
  color: #0e7388;
  background: #e9f4f8;
  border: 1px solid #cde6ee;
  border-radius: 999px;
}
.wpgmza_infowindow_address { margin: 0 0 10px; font-size: 13px; line-height: 1.45; color: #5b5e6b; }
.wpgmza_infowindow_description { font-size: 13px; line-height: 1.5; color: #5b5e6b; }
.wpgmza_infowindow_description strong { color: #0e7388; }
/* Get Directions as a small teal pill */
.wpgmza-infowindow .wpgmza_gd {
  display: inline-flex;
  align-items: center;
  margin: 10px 0;
  padding: 6px 14px;
  font-size: 12px;
  font-weight: 600;
  color: #fff;
  background: #1591b0;
  border-radius: 999px;
  text-decoration: none;
}
.wpgmza-infowindow .wpgmza_gd:hover { background: #0e7388; }
/* Custom fields -> compact bordered blocks (icon + name); no ":" or "Yes" */
.wpgmza-infowindow [data-custom-field-id] {
  display: inline-flex;
  align-items: center;
  margin: 0 6px 6px 0;
  padding: 5px 11px 5px 6px;
  font-size: 0;
  border: 1px solid #cde6ee;
  border-radius: 8px;
  background: #fff;
  vertical-align: top;
}
.wpgmza-infowindow [data-custom-field-id] .custom-field-label { display: none; }
.wpgmza-infowindow [data-custom-field-id]::after {
  content: attr(data-custom-field-name);
  margin-left: 7px;
  font-size: 12px;
  font-weight: 600;
  color: #0e7388;
}
.wpgmza-infowindow [data-custom-field-id] i.wpgmza-custom-field {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  margin: 0;
  border-radius: 7px;
  background: #f6f6f4;
  border: 1px solid #ececef;
  color: #1591b0;
  font-size: 11px;
}

Pricing

Loading pricing…