{"id":309706,"date":"2026-05-09T00:19:31","date_gmt":"2026-05-09T00:19:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/kennelflow-groom\/"},"modified":"2026-06-26T04:58:23","modified_gmt":"2026-06-26T04:58:23","slug":"kennelflow-groom","status":"publish","type":"plugin","link":"https:\/\/eu.wordpress.org\/plugins\/kennelflow-groom\/","author":12029770,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.1","stable_tag":"0.2.1","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"KennelFlow Groom","header_author":"LandTech Web Designs","header_description":"Grooming companion for KennelFlow: Hub entry point and shared pet alignment. Minimal first WordPress.org release; scheduling and groomer tools will ship in later versions.","assets_banners_color":"6f476c","last_updated":"2026-06-26 04:58:23","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/kennelflow-groom\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":160,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"brelandr","date":"2026-05-09 00:19:16"},"0.2.1":{"tag":"0.2.1","author":"brelandr","date":"2026-06-26 04:58:23"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3586702,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3586702,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3586702,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3586702,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3586749,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"kennelflow-core\"}},{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"kennelflow-groom\"}},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire_once '\\\/wordpress\\\/wp-load.php';\\n$loc_pt = function_exists( 'ltkf_get_location_post_type' ) ? ltkf_get_location_post_type() : 'kf_location';\\nwp_insert_post( array( 'post_title' => 'Main Campus', 'post_type' => $loc_pt, 'post_status' => 'publish' ) );\\n$owner_id = username_exists( 'demoowner' );\\nif ( ! $owner_id ) {\\n\\t$owner_id = wp_insert_user( array(\\n\\t\\t'user_login' => 'demoowner',\\n\\t\\t'user_pass' => 'password',\\n\\t\\t'user_email' => 'owner@kennelflow.demo',\\n\\t\\t'role' => 'subscriber',\\n\\t\\t'display_name' => 'Demo Owner',\\n\\t) );\\n}\\n$pet_pt = function_exists( 'ltkf_get_pet_post_type' ) ? ltkf_get_pet_post_type() : 'kf_pet';\\n$owner_key = function_exists( 'ltkf_get_pet_owner_user_meta_key' ) ? ltkf_get_pet_owner_user_meta_key() : 'kf_owner_user_id';\\nforeach ( array( 'Bailey (Golden Retriever)', 'Max (Labrador)' ) as $title ) {\\n\\t$pid = wp_insert_post( array( 'post_title' => $title, 'post_type' => $pet_pt, 'post_status' => 'publish' ) );\\n\\tif ( $pid && ! is_wp_error( $pid ) ) {\\n\\t\\tupdate_post_meta( $pid, $owner_key, (int) $owner_id );\\n\\t}\\n}\\nif ( class_exists( '\\\\Landtech\\\\KennelFlow\\\\Core\\\\OwnerPets' ) && $owner_id ) {\\n\\t\\\\Landtech\\\\KennelFlow\\\\Core\\\\OwnerPets::rebuild_user_pet_ids( (int) $owner_id );\\n}\\n$portal = wp_insert_post( array(\\n\\t'post_title' => 'Pet Owner Portal',\\n\\t'post_content' => \\\"<h1>My Pets<\\\/h1>\\\\n\\\\n[ltkf_dashboard]\\\\n\\\\n<p><em>Demo owner: demoowner \\\/ password<\\\/em><\\\/p>\\\",\\n\\t'post_status' => 'publish',\\n\\t'post_type' => 'page',\\n) );\\nif ( $portal && ! is_wp_error( $portal ) && ! (int) get_option( 'page_on_front' ) ) {\\n\\tupdate_option( 'show_on_front', 'page' );\\n\\tupdate_option( 'page_on_front', (int) $portal );\\n}\"}]}"}},"all_blocks":[],"tagged_versions":["0.1.0","0.2.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3586702,"resolution":"1","location":"assets","locale":"","width":1648,"height":932},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3586702,"resolution":"2","location":"assets","locale":"","width":1648,"height":1414},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3586702,"resolution":"3","location":"assets","locale":"","width":1648,"height":1401},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3586702,"resolution":"4","location":"assets","locale":"","width":1701,"height":895},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3586702,"resolution":"5","location":"assets","locale":"","width":1648,"height":863},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3586702,"resolution":"6","location":"assets","locale":"","width":1586,"height":1029},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3586702,"resolution":"7","location":"assets","locale":"","width":1859,"height":994},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3586702,"resolution":"8","location":"assets","locale":"","width":1500,"height":1929}},"screenshots":{"1":"Groomer Earnings \u2014 commission totals by groomer with pending, paid, and mark-as-paid actions.","2":"Grooming Schedule \u2014 weekly calendar with groomers as rows and grooming appointments in purple.","3":"GroomPress Settings \u2014 default commission rate and optional groomer medical access when KennelFlow Vet is active.","4":"Booking wizard \u2014 example public booking flow from KennelFlow Core (companion shortcode, not registered by GroomPress).","5":"My Account \u2014 WooCommerce account area often paired with the KennelFlow owner portal.","6":"KennelFlow Dashboard \u2014 owner portal tabs for boarding, vaccinations, medications, and waivers (<code>[ltkf_dashboard]<\/code>).","7":"Today (Pro) \u2014 daily grooming list with recipe snippets (KennelFlow Groom Pro add-on).","8":"Pet grooming profile \u2014 coat notes and digital recipe card (KennelFlow Groom Pro add-on)."}},"plugin_section":[],"plugin_tags":[416,251534,261051,2690,11523],"plugin_category":[40],"plugin_contributors":[251791],"plugin_business_model":[],"class_list":["post-309706","plugin","type-plugin","status-publish","hentry","plugin_tags-calendar","plugin_tags-grooming","plugin_tags-kennel","plugin_tags-pets","plugin_tags-salon","plugin_category-calendar-and-events","plugin_contributors-brelandr","plugin_committers-brelandr"],"banners":{"banner":"https:\/\/ps.w.org\/kennelflow-groom\/assets\/banner-772x250.png?rev=3586702","banner_2x":"https:\/\/ps.w.org\/kennelflow-groom\/assets\/banner-1544x500.png?rev=3586702","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kennelflow-groom\/assets\/icon-128x128.png?rev=3586702","icon_2x":"https:\/\/ps.w.org\/kennelflow-groom\/assets\/icon-256x256.png?rev=3586702","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/kennelflow-groom\/assets\/screenshot-1.png?rev=3586702","caption":"Groomer Earnings \u2014 commission totals by groomer with pending, paid, and mark-as-paid actions."},{"src":"https:\/\/ps.w.org\/kennelflow-groom\/assets\/screenshot-2.png?rev=3586702","caption":"Grooming Schedule \u2014 weekly calendar with groomers as rows and grooming appointments in purple."},{"src":"https:\/\/ps.w.org\/kennelflow-groom\/assets\/screenshot-3.png?rev=3586702","caption":"GroomPress Settings \u2014 default commission rate and optional groomer medical access when KennelFlow Vet is active."},{"src":"https:\/\/ps.w.org\/kennelflow-groom\/assets\/screenshot-4.png?rev=3586702","caption":"Booking wizard \u2014 example public booking flow from KennelFlow Core (companion shortcode, not registered by GroomPress)."},{"src":"https:\/\/ps.w.org\/kennelflow-groom\/assets\/screenshot-5.png?rev=3586702","caption":"My Account \u2014 WooCommerce account area often paired with the KennelFlow owner portal."},{"src":"https:\/\/ps.w.org\/kennelflow-groom\/assets\/screenshot-6.png?rev=3586702","caption":"KennelFlow Dashboard \u2014 owner portal tabs for boarding, vaccinations, medications, and waivers (<code>[ltkf_dashboard]<\/code>)."},{"src":"https:\/\/ps.w.org\/kennelflow-groom\/assets\/screenshot-7.png?rev=3586702","caption":"Today (Pro) \u2014 daily grooming list with recipe snippets (KennelFlow Groom Pro add-on)."},{"src":"https:\/\/ps.w.org\/kennelflow-groom\/assets\/screenshot-8.png?rev=3586702","caption":"Pet grooming profile \u2014 coat notes and digital recipe card (KennelFlow Groom Pro add-on)."}],"raw_content":"<!--section=description-->\n<p><strong>GroomPress<\/strong> (KennelFlow Groom) is the grooming companion for the KennelFlow stack. It adds a <strong>GroomPress<\/strong> admin menu with a weekly grooming calendar, groomer earnings and commissions, and salon-wide settings \u2014 all built on shared <strong>KennelFlow Core<\/strong> pet records.<\/p>\n\n<p><strong>What you get<\/strong><\/p>\n\n<ul>\n<li><strong>GroomPress Home<\/strong> \u2014 quick links to earnings and the grooming calendar.<\/li>\n<li><strong>Groomer Earnings<\/strong> \u2014 see pending and paid commission totals by groomer for any date range; mark commissions as paid.<\/li>\n<li><strong>Grooming Schedule<\/strong> \u2014 weekly calendar filtered to grooming appointments, with groomers as staff rows (uses the KennelFlow Hub calendar bundle).<\/li>\n<li><strong>GroomPress Settings<\/strong> \u2014 default commission percentage for WooCommerce grooming products; optional groomer access to KennelFlow Vet medical records when Vet is installed.<\/li>\n<li><strong>Groomer role<\/strong> \u2014 staff who appear on the grooming calendar and can view their own earnings.<\/li>\n<li><strong>Optional pickup SMS<\/strong> \u2014 when Twilio credentials are configured site-wide, owners can receive a text when a grooming appointment is marked complete.<\/li>\n<\/ul>\n\n<p>GroomPress does <strong>not<\/strong> register a public shortcode. Customer-facing pages use <strong>KennelFlow Core<\/strong> shortcodes such as <code>[ltkf_dashboard]<\/code> for the owner portal.<\/p>\n\n<p>Data stays on your site except for optional SMS delivery through your own Twilio account when enabled.<\/p>\n\n<h3>Try It Live - Preview This Plugin Instantly<\/h3>\n\n<p>Preview GroomPress in WordPress Playground: the blueprint installs <strong>KennelFlow Core<\/strong> and <strong>KennelFlow Groom<\/strong> from WordPress.org, seeds demo pets and the owner portal, and opens the <strong>Grooming Schedule<\/strong> calendar in wp-admin. Log in as <strong>admin<\/strong> \/ <strong>password<\/strong> (demo owner: <strong>demoowner<\/strong> \/ <strong>password<\/strong>).<\/p>\n\n<p><a href=\"https:\/\/playground.wordpress.net\/?blueprint-url=https:\/\/raw.githubusercontent.com\/brelandr\/kennelflow-groom\/main\/blueprint.json\">Preview on WordPress Playground<\/a><\/p>\n\n<p>The blueprint ships as <code>blueprint.json<\/code> and <code>assets\/blueprints\/blueprint.json<\/code>. WordPress.org also serves a copy from plugin SVN for directory live preview.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate <strong>KennelFlow Core<\/strong> (required).<\/li>\n<li>Install KennelFlow Groom through the WordPress.org plugin directory or by uploading the zip under <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate KennelFlow Groom through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Assign the <strong>Groomer<\/strong> role to staff who should appear on the calendar.<\/li>\n<li>Open <strong>GroomPress<\/strong> in the admin menu to view earnings or open <strong>Grooming Schedule<\/strong>.<\/li>\n<\/ol>\n\n<h4>Compatibility<\/h4>\n\n<p><strong>KennelFlow Groom<\/strong> is a companion plugin. It requires <strong>KennelFlow Core<\/strong> for pets, locations, and the calendar API. It works alongside <strong>KennelFlow Boarding<\/strong> and other KennelFlow add-ons. WooCommerce is optional and used for grooming product commissions. <strong>KennelFlow Vet<\/strong> is optional and unlocks groomer medical-access settings.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20groompress%20include%20a%20customer%20booking%20page%3F\"><h3>Does GroomPress include a customer booking page?<\/h3><\/dt>\n<dd><p>Not directly. GroomPress manages grooming in wp-admin. Use KennelFlow Core shortcodes (for example <code>[ltkf_dashboard]<\/code> for the owner portal) on public pages. Boarding or clinic booking wizards come from KennelFlow Core or KennelFlow Vet.<\/p><\/dd>\n<dt id=\"does%20this%20version%20include%20scheduling%20and%20commissions%3F\"><h3>Does this version include scheduling and commissions?<\/h3><\/dt>\n<dd><p>Yes. GroomPress includes the grooming calendar, groomer role, commission tracking, earnings reports, and salon settings.<\/p><\/dd>\n<dt id=\"does%20groom%20work%20without%20kennelflow%20core%3F\"><h3>Does Groom work without KennelFlow Core?<\/h3><\/dt>\n<dd><p>No. Activate KennelFlow Core first. WordPress lists Core as a required plugin when supported by your site.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20data%20to%20third%20parties%3F\"><h3>Does the plugin send data to third parties?<\/h3><\/dt>\n<dd><p>Core grooming features run entirely on your site. Optional completion SMS uses <strong>your<\/strong> Twilio account when configured; no other third-party APIs are required.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Release grooming calendar, groomer earnings, commissions, salon settings, groomer role, and optional completion SMS.<\/li>\n<li>WordPress.org assets: banner, icons, and screenshots.<\/li>\n<li>Readme aligned with current GroomPress admin features.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Readme: <strong>Tested up to: 7.0<\/strong>; formal <code>readme.txt<\/code> for WordPress.org (aligns with plugin header).<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial WordPress.org release: requires KennelFlow Core, Hub entry screen and link to Pets.<\/li>\n<\/ul>","raw_excerpt":"GroomPress for KennelFlow: grooming calendar, groomer pay, commissions, and salon settings. Requires KennelFlow Core. Developer: Randy Breland (brelan &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/eu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/309706","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/eu.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/eu.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=309706"}],"author":[{"embeddable":true,"href":"https:\/\/eu.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/brelandr"}],"wp:attachment":[{"href":"https:\/\/eu.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=309706"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/eu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=309706"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/eu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=309706"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/eu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=309706"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/eu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=309706"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/eu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=309706"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}