PetOffice
Utilities & PersonalConnect AI agents to PetOffice, animal shelter and rescue management software used in Germany and beyond. Agents read the animals a shelter has published for adoption and generate ready to embed list widgets for a website.
What This Integration Enables
PetOffice is shelter and rescue management software used by organizations in Germany and beyond, and the part of it this connector reaches is deliberately narrow. The Homepage-Integration API exposes exactly the animals a shelter has intentionally published, meaning the listings with the Homepage checkbox set, and nothing else. Contacts, adopters, intakes, medical records, and donations stay inside PetOffice and never appear on this wire. That boundary was drawn by the vendor, not by us, and it is the most important thing about building here: a flow constructed on this API cannot leak a shelter's confidential records, because those records are not reachable. For volunteer-run organizations that are rightly nervous about connecting anything to anything, that is a meaningful starting position.
Two consequences follow and both need stating plainly. The API is read-only. There are no create, update, or delete operations anywhere in this connector, and nothing it does can modify a shelter's data. An animal is published, unpublished, reserved, or edited by a person working in PetOffice, and this surface reports the result. Descriptions that suggest a flow can create animal records or publish listings are wrong about what the actions do. And the API requires no authentication at all, by design, because everything it returns is already public on the shelter's own homepage. The single configuration item is the PetOffice Address, which accepts a bare tenant slug such as beispielverein, a host such as beispielverein.petoffice.app, or a full URL, so a shelter using a custom homepage domain is supported.
What the connector returns is unusually well shaped for republishing. List Published Animals returns structured JSON with each animal's id, species, title, reserved flag, whether it is located in Germany, image ids, YouTube ids, prospect URL, and public headline and description, plus the set of tags in use, filterable by species and tag and sortable. Get Animal Profile returns a single listing with prerendered HTML fragments ready to embed, covering applyButton, description, extra, gallery, image, title, and videos, alongside a data object with the raw field values. Render Animal List (HTML) and Render Animal List (Raw HTML) go further and return a whole list widget for a species, the first wrapped in a JSON object under the list property and the second as a bare HTML string, both using po- prefixed CSS classes as stable styling anchors. Both render actions require the species, the sort field, the sort order, and the URLs of your own detail and list pages, so the generated links point back at your site rather than at PetOffice. List Species and List Tags derive their values from the current published list, which means they reflect only species and tags that have at least one animal published right now.
On reacting to change: PetOffice does support a webhook, but it is registered by the shelter in the PetOffice interface under Settings, Homepage-Integration, Webhook, and there is no API to create or manage it. This connector therefore ships no trigger. A shelter can point that webhook at a FlowRunner callback, or a flow can poll List Published Animals on a schedule and diff by animal id, which is the pattern the scenarios below assume.
Without FlowRunner
With FlowRunner
Use Case Scenarios
One published list, everywhere the shelter appears
A rescue maintains its animals in PetOffice and then re-enters the same information on its website, in a spreadsheet the volunteer coordinator uses, and on two partner directories. A scheduled flow calls List Published Animals, holds the result, and diffs it by animal id against the previous run. New listings are appended to the tracking sheet in Google Sheets with their species, title, public headline, and prospect URL. Listings whose reserved flag has flipped are updated in place. Listings that have disappeared are marked for review rather than deleted, because a disappearance has more than one possible cause. The shelter keeps working the way it already works, inside PetOffice, and every other surface follows within the hour instead of within a week.
A live adoption page on a site the shelter actually controls
A shelter wants adoptable animals on its own homepage without an iframe or a nightly export. A flow calls Render Animal List (HTML) for each active species returned by List Species, passing its own detail page URL and list page URL so every generated link points back into its site, and optionally scoping to a tag with the tag filter controls enabled. The returned fragment is written into the page through WordPress, styled against the po- prefixed classes the widget emits. For the individual animal pages, Get Animal Profile returns the prerendered gallery, description, and applyButton fragments alongside the raw data, so the detail page can use the vendor's markup where it is fine and the raw fields where the site's own design needs to win. Both render actions require the species, sort field, and sort order, and omitting a page URL returns a validation error rather than a partial result, so the flow supplies them explicitly.
Volunteers and adopters told the same day, not the same month
New animals matter most in the first days they are listed. A flow polling List Published Animals detects a new id, calls Get Animal Profile for the public headline, description, and image ids, and sends a notification through Brevo to the subscriber segment matching that species, using the tags on the listing to narrow it further where the shelter uses tags for things like small dogs or senior cats. The same new listing is queued for social. What the flow does not do is decide the tone of anything that concerns an animal leaving the list, which is the subject of the next section. New arrivals are safe to announce automatically because the shelter published them on purpose and the announcement says nothing the listing does not already say.
Human-in-Loop Highlight
The most consequential moment in a shelter flow is not a write, because this connector has no writes. It is an interpretation. List Published Animals returns only intentionally published listings, so an animal that vanishes between two polls has simply stopped being published, and the API says nothing whatsoever about why. Adopted is one reason. A vet hold is another. So is a foster placement that has not been finalized, a return to a previous owner, a transfer to a partner rescue, a behavioral assessment that paused the listing, and the death of an animal that people had been following for months. The reserved flag flipping to true has the same ambiguity in miniature: a reservation can be a family collecting on Saturday or an application that will fall through on Friday. A flow that treats disappearance as adoption will eventually post "Bella found her home!" about an animal that is in surgery, to an audience that includes the volunteers who walked her every week, and there is no version of that mistake that is recoverable by editing the post. The external copies compound it, because nothing in this connector can retract a listing that a previous run already syndicated to a partner directory or a social channel. So the agent handles the mechanical half completely and stops before the meaning. It runs the diff, resolves each changed id through Get Animal Profile while the record is still readable, and puts the change to the adoption coordinator: "Two animals left the published list overnight. Bella, id 4417, dog, listed 6 weeks, reserved flag was set on Tuesday. Rocco, id 4390, cat, listed 3 days, no reserved flag. Confirm the outcome for each: adopted, withdrawn, or no announcement." The coordinator answers in one line and the agent does the rest, updating the sheet, the partner directory, and the announcement queue accordingly. That is what a digital andon cord looks like in a rescue: the automation runs the tedious part every hour and stops the line at the one moment where being wrong would hurt people who care.
Agent Capabilities
6 actionsPublished Animals
2- List Published Animals Returns the animals a shelter has published to its homepage, meaning the listings with the Homepage checkbox set, as structured JSON along with the set of tags in use. Each animal includes its id, species, title, reserved flag, whether it is located in Germany, image ids, YouTube ids, prospect URL, and public headline and description. Optionally filter by species and tag and sort the results. Returns only intentionally published listings and requires no authentication.
- Get Animal Profile Returns the full public profile of a single published animal by its listing id. The response contains prerendered HTML fragments ready to embed, covering applyButton, description, extra, gallery, image, title, and videos, plus a data object with the raw field values including species, title, reserved, inGermany, imageId, tags, imageIds, youtubeIds, prospectUrl, publicHeadline, publicDescription, and extra. Requires no authentication.
Embeddable Widgets
2- Render Animal List (HTML) Returns a ready to embed HTML fragment of published animals of a given species, wrapped in a JSON object under the list property. The species, sort field, and sort order are all required, along with the URLs of your own detail and list pages so the generated links point back to your site. Optionally scope the fragment to a single tag and enable tag filter controls. Requires no authentication.
- Render Animal List (Raw HTML) Returns the same published animal list fragment as Render Animal List (HTML) but as a direct HTML string with no JSON wrapper. The species, sort field, and sort order are required, along with your detail and list page URLs. Optionally scope to a single tag and enable tag filter controls. Use this variant when the consuming system wants markup rather than JSON.
Filters
2- List Species Returns the distinct active species display names that currently have at least one animal published to the homepage, derived from the published animal list. Species names are shelter-defined and passed verbatim, so a returned value is what belongs in the Species filter of List Published Animals or the Species path parameter of the render actions.
- List Tags Returns the set of tags currently in use across published animals, as reported by the published animal list. Tags are configured per shelter, so use a returned value as the Tag filter in List Published Animals or the Selected Tag input in the render actions rather than assuming a fixed vocabulary.
Frequently Asked Questions
What can FlowRunner do with PetOffice?
FlowRunner agents can run List Published Animals, Get Animal Profile, and Render Animal List (HTML) in PetOffice, plus 3 more actions.
Does connecting PetOffice to FlowRunner require OAuth?
No. PetOffice needs no credentials at all, so there is no key to obtain, store, or rotate.
Can PetOffice trigger a FlowRunner workflow automatically?
PetOffice doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with PetOffice
$100 in credits. No card required. Connect in minutes.