View our change log and user documentation below.
Released: March 2026
Vaccination custom icon upload now saves correctly
The vaccination icon was missing from two places in the custom icon configuration handler, so uploading a custom image for the vaccination attribute had no effect — the upload appeared to succeed but the icon was never persisted. Two fixes applied:
savecustomicons(): vaccination was absent from the recognised icon keys list, so the posted attachment ID was silently discarded on saverendercustomicons_section(): vaccination was missing from the icon group definition, so the upload control was not rendered for the adopted animals contextThe adoptable animals tab already had the vaccination entry correctly and was unaffected.
Released: March 2026
Attribute icon states now correctly prefer NAME fields over integer fields
This release corrects the root cause of the icon state problem first addressed in v3.0.1.
ShelterManager returns attribute state data in two forms for the same field — an integer field (e.g. ISHOUSETRAINED: 0) and a string NAME field (e.g. ISHOUSETRAINEDNAME: "Yes"). PHP's ?? null-coalescing operator does not treat integer 0 as absent, so when both fields are present in the API response, the integer field was winning the lookup — and $ss_bool(0) correctly returned negative state, ignoring the NAME field entirely. This caused attributes to display as negative (cross icon) when they should have shown positive (tick icon).
The fix reverses the lookup priority for all 11 attribute fields — Core and PLUS: the *NAME string field is now checked first, the integer field second. The NAME field is what ShelterManager displays in its own UI and is the authoritative value. This matches the pattern documented in the ShelterManager API field behaviour notes and applies consistently across all attributes.
Released: March 2026
Attribute icons fall back to NAME fields when integer fields are absent
ShelterManager API responses may include only the string NAME variant of an attribute field (ISHOUSETRAINEDNAME) without the corresponding integer field (ISHOUSETRAINED). The plugin was reading only the integer field, so when only the NAME field was present, the icon fell back to unknown state (question mark) even when the animal's record clearly indicated a value.
This release adds *NAME fallbacks to the lookup chain for house trained, neutered/spayed, microchipped, and all good-with attribute fields. When the integer field is absent or null, the NAME field is resolved via the $ss_bool() helper ("Yes" → positive, "No" → negative).
Note: v3.0.2 further refines this fix by reversing the lookup priority so NAME fields always take precedence — see v3.0.2 release notes above.
Released: March 2026
Upgrading from: v2.0.1
v3.0.0 is the Phase 3 release. It delivers EDD-based licence key activation, support for self-hosted ShelterManager instances, the reserved animal badge, the vaccination status icon, shortcode exclusion parameters, and a set of PLUS display enhancements.
Licence key re-activation required for PLUS users. Phase 3 integrates directly with the EDD licence server at sheltersync.app. Existing PLUS installations must enter their licence key under ShelterSync → Settings → Licence and activate against the server. Until activated, the plugin falls back to Core behaviour. A 7-day grace period applies if the licence server is temporarily unreachable after the initial activation.
A background sync runs automatically on update. All enabled datasets are re-synced in the background after updating. No manual action is required.
Self-hosted users: If you are running a self-hosted ShelterManager (ASM3) instance, configure the API mode and your instance URL under ShelterSync → Settings → Advanced before running a sync.
---
PLUS licensing is now validated against the ShelterSync EDD store at sheltersync.app. The licence key entry and management UI lives under ShelterSync → Settings → Licence:
If the daily re-validation detects a status change (e.g. an expired subscription), a persistent admin notice appears on all ShelterSync pages.
The plugin now supports installations connecting to a self-hosted ShelterManager (ASM3) instance rather than the cloud service. Configure this under ShelterSync → Settings → Advanced:
http://yourserver.example.com/service)In self-hosted mode, the Account ID field is hidden (self-hosted instances do not use an account parameter), and images are served from your configured instance URL rather than the ShelterManager cloud endpoint. HTTP is permitted for self-hosted instances, but a persistent warning appears on all ShelterSync admin pages when a non-HTTPS URL is configured. HTTPS is still strongly recommended.
The connection test automatically targets the configured endpoint and confirms the URL in the success message.
Animals with an active reservation in ShelterManager now display a Reserved badge automatically — no admin configuration required. The badge appears:
The badge is triggered by the HASACTIVERESERVENAME field being the exact string "Yes". The reservation holder's name is used only as a boolean signal and is never displayed publicly.
The badge label defaults to "Reserved" and can be customised via ShelterSync → Animal Display → Field Labels (field key: reserved). The background colour defaults to green (#1a7a3f) and can be overridden via the --sheltermgr-reserved-badge-bg CSS custom property. To suppress the badge entirely, use display: none on .sheltermgr-reserved-badge in your theme CSS.
Reserved status is now a Core filter dimension available in the filter overlay. Visitors can filter to show only unreserved animals (reserved = No), or only reserved animals (reserved = Yes), depending on your use case.
The filter is manageable under ShelterSync → Filters & Sort → Adoptable Animals and can be toggled on or off like any other filter dimension. It also participates in filter display order configuration (PLUS).
All shortcodes now support exclude_* parameters to remove specific animals from the dataset server-side before the page is rendered. Excluded animals are entirely absent from the page source — they are not hidden via CSS or JS.
[shelter_adoptables exclude_species="Rabbit"]
[shelter_adoptables exclude_reserved="yes"]
[shelter_adoptables species="Cat" exclude_sex="Male"]
Exclusion parameters mirror all available filter dimensions. Multi-value exclusions use the + delimiter. Exclusions and pre-filter include parameters can be combined on the same shortcode.
A new PLUS toggle under ShelterSync → Animal Display → Adoptable Animals → Call to Action replaces the CTA button with a notice banner for animals where HASACTIVERESERVENAME is "Yes". This prevents reserved animals from receiving adoption enquiries while keeping them visible in the listing.
--sheltermgr-reserved-badge-bg, keeping the reserved colour consistentFor unreserved animals, the CTA continues to render normally regardless of whether the toggle is on.
A vaccination icon now appears in animal overlays (adoptable, adopted, and stray) showing the animal's vaccination status, calculated from ShelterManager's vaccination count fields:
The icon is togglable under ShelterSync → Animal Display → Icons and defaults to visible. It does not appear in Lost and Found overlays, where vaccination data is not part of the confirmed field set. A custom icon image can be uploaded via the Media Library (PLUS), and state labels are customisable (PLUS).
PLUS installations can now control the sequence in which filter dimensions appear in the filter overlay via ShelterSync → Filters & Sort → Filter Display Order. A drag-and-drop interface with keyboard alternative lets you arrange all enabled dimensions into the preferred order. A Reset to Default button restores the factory sequence.
The LFS Type filter is always first in LFS listings; date range filter controls are always last. Custom field filters not yet present in the saved order are appended automatically, so new custom fields are never silently dropped.
vaccination.png), consistent with the rest of the icon set. An SVG sprite symbol (for inline state-aware rendering) is deferred to Phase 4.SM-OI-027 closed. The attribution footer URL is now https://sheltersync.app.
ShelterSync for ShelterManager is developed by Reput8n. For support and licensing, visit sheltersync.app.
Version 3.0.3 | For shelter administrators and website managers
ShelterSync connects your WordPress website directly to your ShelterManager account. It automatically pulls your animal records from ShelterManager, caches them on your server, and displays them on your site in responsive grids with full animal detail overlays.
Your site visitors can search, filter, and sort animals, open a detailed profile for any individual animal, and click through to your adoption application or enquiry form.
ShelterSync comes in two tiers:
Throughout this guide, features marked PLUS require an active PLUS licence.
Alternatively, download the zip from WordPress.org and upload it via Plugins → Add New Plugin → Upload Plugin.
After activation, the ShelterSync menu appears in your WordPress admin sidebar.
Your credentials are encrypted before being stored. They are never written to log files or exposed in page source.
If you have purchased a PLUS licence from sheltersync.app:
The licence is re-validated daily in the background. A 7-day grace period keeps PLUS features active if the licence server is temporarily unreachable. If your licence expires or is deactivated, the plugin reverts to Core behaviour and a notice appears on ShelterSync admin pages.
After saving valid credentials, a background sync is scheduled automatically. To trigger one immediately, go to ShelterSync → Dashboard and click Sync Now.
Add [shelter_adoptables] to any WordPress page or post. Your adoptable animals will appear once a sync has completed.
All ShelterSync settings live under the ShelterSync top-level menu in your WordPress admin sidebar.
Your at-a-glance status view showing connection status, last sync timestamp, the Sync Now button, and any admin notices (sync failures, licence warnings, credential errors).
A dismissible notice appears here after plugin activation or update confirming that a background sync has been scheduled.
General tab
Licence tab
To purchase or manage a licence, visit sheltersync.app.
Advanced tab
Controls what information appears on animal cards and in detail overlays. The page has three tabs: Adoptable Animals, Adopted Animals, and Lost, Found & Stray. Each tab has its own independent configuration.
Field display — toggle individual fields on or off for the animal card and detail overlay.
Description field — choose whether the animal description comes from Animal Comments or Website Media Notes in ShelterManager.
Call to Action — configure the button shown in animal detail overlays:
--sheltermgr-reserved-badge-bg). This applies to adoptable overlays only.Field labels PLUS — override the displayed label for any field. The reserved key customises the label on the reserved badge.
Display order (overlay) PLUS — drag-and-drop field ordering for detail overlays. Add section dividers to group fields visually.
Display order (card) PLUS — separately configure card field order.
Icon configuration — controls attribute icons (Neutered/Spayed, Microchipped, House Trained, Vaccination, and others):
Bonded badge — configure the badge shown on bonded animal list cards: icon (Dashicons), label text (max 20 characters, default: BONDED), and visibility toggle.
CSS Configuration PLUS — see Section 7.
Independent configuration for the [shelter_adopted] shortcode:
Independent configuration per sub-type (Lost, Found, Stray):
Controls which filter dimensions and sort options are available to visitors, per listing area.
Filter visibility — toggle each filter dimension:
| Filter | Tier |
|---|---|
| Species | Core |
| Sex | Core |
| Age Group | Core |
| Reserved Status | Core |
| Breed | PLUS |
| Size | PLUS |
| Bonded Status | PLUS |
| Location | PLUS |
The Reserved Status filter lets visitors show only unreserved animals (the most common use case), or only reserved animals. Values shown to visitors are Yes and No.
Sort configuration — toggle which sort options are available.
Filter display order PLUS — drag-and-drop reordering of filter dimensions within the filter overlay. A Reset to Default button restores the factory order. Custom field filter dimensions are appended automatically when added — they are never silently dropped.
Filter visibility and sort configuration for the adopted animals context. Adoption Date is available as a sort option here.
Filter visibility including date range filters. Date Reported is available in Core; Date Lost and Date Found are available with PLUS.
Add any ShelterManager API field to cards, overlays, filters, and sorting:
Custom fields appear in display order panels for their configured listing types. Up to 20 custom fields can be configured.
Configure ShelterManager online forms for use with the [shelter_form] shortcode.
[shelter_form form="Your Display Label"] on any page.Supported field types: Text, Notes, Lookup (select), Yes/No, Checkbox, Date, Signature, Adoptable Animal selector, Section Headings.
IMAGE fields display a note directing applicants to email photos separately — a ShelterManager API restriction prevents remote file uploads.
Email notifications to a configurable address for sync failures, sync resolution, credential errors, and credential resolution. Each notification type is independently togglable. Repeated failure notifications are suppressed for 24 hours after the first alert.
Timestamped log of plugin events: syncs, failures, API errors, auto-sync triggers, licence validation events. Maximum 50 entries (configurable). Use this when troubleshooting API or sync issues.
Links to ShelterSync documentation, support, and external cron configuration guidance.
Basic usage:
[shelter_adoptables]
Pre-filtering — include parameters:
[shelter_adoptables species="Rabbit"]
[shelter_adoptables species="Rabbit+Cat" sex="Female"]
[shelter_adoptables reserved="no"]
[shelter_adoptables species="Cat" exclude_reserved="yes"]
Pre-set filter values lock the corresponding filter control — visitors cannot change them. To allow visitor adjustment, use allow_override="true" (PLUS).
Exclusion parameters:
Exclusion parameters remove animals from the dataset server-side before the page renders. Excluded animals are entirely absent from page source.
[shelter_adoptables exclude_species="Rabbit"]
[shelter_adoptables exclude_reserved="yes"]
[shelter_adoptables species="Cat" exclude_sex="Male"]
Exclusions can be combined with include parameters on the same shortcode.
Available filter parameters:
| Parameter | Description | Tier |
|---|---|---|
species |
Filter by species name (multi-value: "Rabbit+Cat") |
Core |
sex |
Filter by sex | Core |
age |
Filter by age group | Core |
reserved |
Filter by reservation status ("yes" or "no") |
Core |
breed |
Filter by breed | PLUS |
size |
Filter by size | PLUS |
bonded |
Filter by bonded status | PLUS |
location |
Filter by location | PLUS |
animal_type |
Filter by animal type | PLUS |
colour |
Filter by colour | PLUS |
coat |
Filter by coat type | PLUS |
display_loc |
Filter by display location | PLUS |
neutered_name |
Filter by neutered/spayed status label | PLUS |
declawed_name |
Filter by declawed status label | PLUS |
cf{apikey} |
Filter by configured custom field | PLUS |
Exclusion parameters — prefix any filter parameter with exclude_:
| Parameter | Example |
|---|---|
exclude_species |
exclude_species="Rabbit" |
exclude_sex |
exclude_sex="Male" |
exclude_age |
exclude_age="Baby" |
exclude_reserved |
exclude_reserved="yes" |
exclude_breed |
exclude_breed="Labrador" |
exclude_size |
exclude_size="Large" |
exclude_bonded |
exclude_bonded="yes" |
exclude_location |
exclude_location="Foster" |
exclude_colour |
exclude_colour="Black" |
Other parameters:
| Parameter | Description | Tier |
|---|---|---|
per_page |
Animals per page (5, 10, 15, 20, or 25) | Core |
pagination |
Set to "off" to disable pagination for this instance |
Core |
search |
Pre-fill the search box | Core |
allow_override |
"true" allows visitors to adjust pre-set filters |
PLUS |
[shelter_adopted]
[shelter_adopted species="Rabbit"]
[shelter_adopted per_page="10"]
Displays recently adopted animals. The date range is configured under ShelterSync → Settings. Configure display options independently under ShelterSync → Animal Display → Adopted Animals tab.
The same filter and exclusion parameters available for [shelter_adoptables] work here (excluding PLUS-only extended dimensions not applicable to the adopted context).
| Shortcode | Shows |
|---|---|
[shelter_community] |
All sub-types together with a Type filter |
[shelter_lost] |
Lost animals only |
[shelter_found] |
Found animals only |
[shelter_stray] |
Stray animals only |
[shelter_community]
[shelter_community type="lost+found"]
[shelter_lost species="Cat"]
[shelter_community exclude_species="Dog"]
The type parameter on [shelter_community] narrows which sub-types are shown. All filter and exclusion parameters apply.
[shelter_form form="Adoption Enquiry"]
The form parameter must match the Display Label configured under ShelterSync → Online Forms exactly (case-sensitive).
Animals with an active reservation in ShelterManager automatically show a Reserved badge — a small label overlaying the top-right corner of the animal's photo on list cards, and the top-right of the photo column in the detail overlay. No admin configuration is needed for the badge to appear.
The badge label defaults to "Reserved" and can be customised via ShelterSync → Animal Display → Field Labels (field key: reserved). The badge colour defaults to green and can be changed by adding --sheltermgr-reserved-badge-bg to your theme CSS. To remove the badge entirely, add .sheltermgr-reserved-badge { display: none; } to your theme.
The vaccination icon in animal overlays shows the animal's vaccination status, calculated from ShelterManager's vaccination count data:
Clicking any animal card opens the full detail overlay. Features include photos (gallery for PLUS), attribute icons, all configured fields, video embedding, a CTA button, and bonded partner navigation. Direct URL linking works — sharing a URL containing ?animal=123 opens that animal's overlay automatically. Keyboard navigable; press Escape to close.
Activate PLUS under ShelterSync → Settings → Licence with a key from sheltersync.app.
| Feature | Description |
|---|---|
| Photo gallery | Multiple photos per animal with thumbnail navigation |
| Extended filters | Breed, Size, Bonded Status, Location, Colour, Coat, and more |
| Custom sync interval | 15-minute to 24-hour sync schedule |
| Filter override | Allow visitors to adjust shortcode-locked filters |
| Filter display order | Drag-and-drop ordering of filter dimensions in the filter overlay |
| Merged bonded profiles | Dual-profile overlay for bonded pairs/groups with smooth scroll navigation and banner CTA |
| Custom Fields | Add any ShelterManager API field to cards, overlays, filters, and sort — per listing type |
| Display order | Drag-and-drop field ordering for overlays and cards, independently per listing type; section dividers |
| Reserved CTA suppression | Replace the CTA button with a notice banner for reserved animals, preventing enquiries |
| Time on shelter format | Show formatted duration (e.g. "3 weeks") instead of days count |
| Field label customisation | Override any built-in field label |
| Date filters for LFS | Date range filters for Date Lost and Date Found |
| CSS Configuration | Adjust colours, fonts, card border radius, shadow, and column count via admin UI |
| Custom icon upload | Replace any attribute icon with your own image via the Media Library |
| Vaccination icon state labels | Customise positive/negative/unknown labels for the vaccination icon |
| Attribution footer | Configure display of the ShelterSync attribution footer |
| Video controls | Configure autoplay, mute, and controls for YouTube video embeds |
| Licence grace period | 7-day cached-status window keeps PLUS active if the licence server is temporarily unreachable |
CSS Configuration lives under ShelterSync → Animal Display → Adoptable Animals → CSS Configuration. A live preview updates as you adjust values. Available controls: primary colour, secondary colour, text colour, heading colour, border colour, badge colours (positive/negative/unknown/reserved), body and heading font stacks, card border radius (0–24px), card shadow, card column count (1–5). Values output as CSS custom properties on .sheltermgr-container without modifying plugin files.
PLUS features are not available after updating
PLUS licensing now requires validation against the sheltersync.app licence server. Go to ShelterSync → Settings → Licence, enter your key, and click Activate. If you are within the 7-day grace period, PLUS remains active while you complete this.
Attribute icons are showing the wrong state (cross instead of tick)
Update to v3.0.2 or later. Earlier versions had a bug where ShelterManager's integer attribute fields (which can return 0) were taking priority over the string NAME fields (which return "Yes"), causing the icon to show as negative when it should have been positive. v3.0.2 fixes the lookup priority for all 11 attributes.
Animals are not showing on the page
Reserved animals are still receiving adoption enquiries
Enable the Reserved CTA suppression toggle under ShelterSync → Animal Display → Adoptable Animals → Call to Action (PLUS). This replaces the CTA button with a notice banner for reserved animals. Alternatively, use exclude_reserved="yes" on the shortcode to remove reserved animals from the listing entirely.
Self-hosted connection is failing
Check that the Service URL under ShelterSync → Settings → Advanced is correct and includes the full path to the service endpoint (e.g. http://yourserver.example.com/service). Trailing slashes are stripped on save. Run Test Connection to verify — the success message will confirm the endpoint URL being used.
The vaccination custom icon I uploaded is not appearing
Update to v3.0.3. Earlier v3.0.x releases had a bug where the vaccination icon key was missing from the custom icon save handler, so uploads were silently discarded. After updating, re-upload the icon under ShelterSync → Animal Display → Icons → Custom Icons.
The listing shows "listings temporarily unavailable"
The cache is empty and the plugin cannot reach ShelterManager. Check the Diagnostic Log for details. The message resolves automatically once connectivity is restored and a sync completes.
Filters are not appearing
Check ShelterSync → Filters & Sort and confirm filter dimensions are toggled on. Also check that shortcode filter parameters are not locking those dimensions.
Sync is running but data is stale
Your hosting platform may not be running WP-Cron reliably. Follow the guidance under ShelterSync → Help to configure an external cron job.
ShelterSync for ShelterManager is developed by Reput8n. Licensing and support: sheltersync.app
We use cookies to improve your experience on our site. By using our site, you consent to cookies.
Manage your cookie preferences below:
Essential cookies enable basic functions and are necessary for the proper function of the website.
These cookies are needed for adding comments on this website.
Stripe is a payment processing platform that enables businesses to accept online payments securely and efficiently.
Service URL: stripe.com (opens in a new window)
You can find more information in our Cookie Policy and Privacy Policy.