Skip to content
Featured

Zigly · launched October 2025

Online vet and grooming booking

Online booking straight into the clinics' own calendar, then a careful rework of what the first launch missed.

Employer and timeframe: Zigly · launched October 2025; rework live in 2026.

Problem
About 75% of calls to customer care were simply to book a vet or grooming appointment
Role
Product lead; designed the booking journey and the VetBuddy integration; led delivery and the post-launch rework
Key decision
Book in VetBuddy only from the paid Shopify order, with form fields that refresh in dependency order
Result
Appointments are about 16% of daily online orders; calls to care about 70% lower, together with order self-service

Business context

Vet care and grooming are a large part of Zigly's business. Every booking taken by phone used agent time that could go to other customers, and customers could only book during calling hours.

The problem

Agents spent much of their day on bookings customers could make themselves. Customers who called outside hours, or couldn't get through, often didn't book at all.

Who it affected

  • Pet parents, who wanted to pick a centre, doctor or groomer and a time without calling.
  • Care agents, whose day was dominated by booking calls.
  • Clinics, who needed bookings to arrive cleanly in their own system.

Goals and how success was measured

  • Working target: at least 50% fewer calls from booking alone.
  • Appointments booked online, and bookings that match between Shopify and VetBuddy.

Role and scope

  • Product lead for the booking journey: research, journey design, the field logic, the VetBuddy integration design, and the test plan.
  • Specified the rework as 43 test cases and set the release gate.
  • The developers built the drawer and the integration; QA tested against the release gate.

Discovery and evidence

  • Call analysis: about 75% of monthly calls were bookings, which set the target.
  • Journey research: a research and benchmark study shaped the redesign of both the vet and the grooming paths.
  • Post-launch review: failed or wrong bookings were traced to three gaps in the booking drawer. City was locked, Package was missing, and changing an early choice didn't refresh the fields after it.

Options considered

  • Keep a separate booking calendar on the website Means keeping a second calendar in sync with the clinics. Not chosen.
  • Book through VetBuddy's APIs, the clinics' own system ChosenOne source of truth for slots.
  • Create the booking from journey data before payment Risks bookings that were never paid for, or that carry stale choices. Not chosen.
  • Create the booking only from the paid Shopify order ChosenEvery booking matches a real order.

The solution

  1. One path, end to end: choose, pay a ₹49 advance on Shopify, then book the same slot in VetBuddy.
  2. Book only from the paid order, never from older journey data.
  3. Carry choices forward: store, pet type, service and package picked earlier are prefilled.
  4. Fail small, never silently: a failed lookup affects one field; a failed booking after payment retries, then alerts operations.

The booking drawer has eight fields, each feeding the next. VetBuddy's slot API needs five values: pet type, reason for visit, centre, doctor and date.

  • FieldPetPrefilled fromJourneyOptionsSaved pets, or a new dog or cat
  • FieldCityPrefilled fromJourneyOptionsCities with a Zigly centre
  • FieldStore / centrePrefilled fromPageOptionsVetBuddy centres in that city
  • FieldServicePrefilled fromCard clickedOptionsVet consultation, vaccination, grooming
  • FieldPackagePrefilled fromJourneyOptionsPackages mapped to a VetBuddy reason for visit
  • FieldDoctor / groomerPrefilled fromNot prefilledOptionsVetBuddy list for that centre and package
  • FieldDatePrefilled fromNot prefilledOptionsCalendar, past dates disabled
  • FieldTime slotPrefilled fromNot prefilledOptionsVetBuddy slot API

The one rule: a change in any field reloads only the fields below it. A value is kept if it's still valid; if not, a single line explains why.

Technical and operational considerations

Website booking drawer and Ringg.ai voice agent both booking into VetBuddy
  • One booking object holds the whole journey and is saved on every change.
  • The package-to-reason-for-visit mapping is kept as configuration; an unmapped package is hidden and logged.
  • The slot API is called only when all five values are set, and stale responses are dropped.
  • The slot is rechecked twice: at Add to Bag, and before booking after payment.

Voice agent (pilot). A Ringg.ai voice agent calls customers who abandoned a booking or missed an appointment, confirms details and can book during the call through the same booking API. It also places reminder calls using appointment data that Zoho receives from VetBuddy. Results are not measured yet.

Execution and collaboration

  • The fix after launch was written as 43 test cases in seven groups.
  • Release gate: every test case passed on desktop and mobile, logged in and as a guest, plus 10 real bookings matching between Shopify and VetBuddy.

Challenges and trade-offs

  • The first launch missed field dependencies. Bookings failed or went wrong until the rework, which is the main lesson of this project.

Outcomes

  • Calls to customer careBeforeApril 2025 levelAfterAbout 70% lower, together with order self-service (target for booking alone: 50%)
  • Appointments in daily online ordersBeforeNone onlineAfterAbout 16%
  • How customers bookBeforePhone, during calling hoursAfterOnline, any time, straight into VetBuddy

Lessons

The way the drawer fields depend on each other should have been specified before launch. The gaps only showed up afterwards, in failed bookings.