• Online Stores

Online pet store: feed, scales, repeat orders

The development of an online pet store rests on two things: the same feed formula lives in several scales, and the buyer comes for it every two or three weeks. Therefore, we build the frame around weight as a card option and repeat order in one step, and not around the number of catalog pages. We took metrics from three live stores with a catalog of the same scale: first server response of 235.0, 402.9, and 494.7 ms with HTML weights ranging from 143.6 to 502.3 KB. The term is 25–45 working days from the approval of the technical specifications. There is no price here on purpose: first a free audit.

See how it works
Price
after a free audit
Guarantee
30 days after project sign-off
Development period
25–45 working days from the approval of the TK
after a free audit
Price
30
Guarantee

days after project sign-off

25–45
Development period

working days from the approval of the TK

3
Stores with a catalog of this scale were measured

sites, measurement 07/31–08/01, 2026

235.0
The first response from the server

ms, 402.9ms and 494.7ms

from 143.6 to 502.3 KB — spread in all directions on one platform
The weight of the HTML main
/sitemap.xml returns an HTTP 200 with a body of 0 bytes
A typical find
free audit, 2-4 working days
Before the estimate
Who it's for

Situations where this service delivers results

Scenario 1 of 5

Offline pet store, where orders are accepted by phone

The regular buyer dictates the same name and the same weight every time, the seller checks the balance every time. The site removes this repetition: the order history already contains an item, the repeat button moves it to the basket, the manager sees the completed order instead of correspondence.

We'll review your situation in a free audit
What's included

Complete list of work and what you get as a result

  • Catalog by type of animal, type of product and brand with filter by age, weight of the animal and special needs - the buyer reaches the right feed without a manager
  • Weights and packaging as options for one card with canonical to the main address — the buyer switches the weight, the search engine sees one page instead of three
  • A card with the composition, feeding rate and package weight in separate fields - questions about dosage are closed to the basket
  • Re-order in one step from the purchase history - a regular buyer does not search for the same item again
  • Buyer groups for breeders and vet clinics: own price and multiplicity after authorization, without a second site
  • Payment: LiqPay, WayForPay, Privat24, monobank, post-payment - a person pays in the usual way, not the one that is left
  • Delivery: Nova Poshta with branch selection right at the checkout, Ukrposhta, courier around the city, self-delivery; threshold of free delivery from the amount
  • Technical SEO: CNC, canonical, unique title and sitemap, which we open and measure in response bytes
  • JSON-LD micro-markup: Store, Product, Offer, BreadcrumbList — price and availability are given in machine format
  • Analytics: GTM, GA4, cart, purchase, and reorder events — see repeat share in numbers, not by ear
  • Transfer: access, written instructions for your processes, passing the admin check with the live order manager
  • Terms: 50% down payment, two rounds of edits at the design stage, warranty period of 30 calendar days after acceptance
When this service isn't right

What's not included — so there are no surprises at delivery

  • Description of feed composition and feeding recommendations - these data are provided by the manufacturer
  • Veterinary consultations on the website as a service
  • Circulation of veterinary drugs that require a separate permit
  • Post-launch advertising
  • Hosting, domain, acquiring

Instead of a price fork — a free pet store audit

The pet store lives on repeated purchases: the same food is taken every two or three weeks. The audit shows how well your site is adapted to this and how much work is hidden in packaging. Without these two answers, any given amount will be a guess.

What we measure

  • Weights and packagingHow many price points are one feed formula in several packages. It depends on this number whether the weights will be card options or individual products, and how many addresses the catalog will eventually give.
  • Reorder mechanicsCan a buyer repeat a pre-order in one step and is the history saved at all. In a niche with a purchase cycle of two to three weeks, this is the most important thing after availability.
  • Filter by animal and ageDoes the data include animal species, age, weight, and special needs as separate fields? If these signs are in the name of the product in text, the filter will not be collected until the price is analyzed.
  • Page speed and weightFirst server response and markup weight. Measured benchmarks for stores with a catalog of the same scale range from 235.0 ms at 143.6 KB to 494.7 ms at 502.3 KB. We measure the category page separately: in the watering shop, the category for 100 items weighs 554 KB compared to 143.6 KB on the main page.
  • Site map statusNot "is it configured", but how many bytes it gives. In two of the three measured stores, /sitemap.xml returns an HTTP 200 with a body of zero bytes, and the Sitemap line in robots.txt is commented out from the default OpenCart template.
  • Groups of buyersIs there a separate price for breeders and clinics in the price list and is it tied to multiples. This determines whether we will go in groups of buyers or will need a separate entrance.
  • AnalyticsWhat does it cost and does it collect data. Two of the three stores measured found no meter at all—no GA4, no GTM, no Pixel. Counting repeat purchases in this state is nothing.

What you get

  • A document on the current site with numbers: the first response of the server, the weight of HTML, how many bytes the site map gives, a list of payments and deliveries, the state of analytics.
  • Evaluation of works by weight and packaging: options or separate cards, how many addresses will this give and what to do with those already in the index.
  • A proposal on the mechanics of re-ordering with an estimate of the volume — from a button in the history to reminders by the postal service.
  • A conversation for 30–40 minutes on the document, where we answer points.

Timeline: 2-4 working days from the moment we received the site address or price download

Why is it free

Because in pet products, money is not brought in by the first sale, but by the second and tenth, and the estimate must take into account the mechanics of the buyer's return. It's faster to see the current state than to discuss an abstract fork. The document remains yours, even if we do not make the store.

What's next

After the audit, we name the amount and term in stages with calendar dates, then the contract, invoice, act. If it becomes clear from the numbers that you do not need a store now, we will say so - the cases are listed below on this page.

Short form: your contact and site URL

  • Contract, act and 30-day warranty

    Every project gets a written contract: scope, deadlines, amount, acceptance procedure. After delivery — act and invoice, then 30 calendar days of warranty.

  • Sole proprietor & bank transfer

    The contractor is a registered sole proprietor. Payment by invoice with closing documents.

  • Rights & access — yours

    Code, design and materials transfer to you after full payment. Domain, hosting, repository and analytics are registered to you.

  • Client portal instead of email chains

    During the project you get access to a portal: contracts, invoices, acts and project status in one place.

  • European clients

    Among our work — projects for Norway, Bulgaria, Moldova and Spain.

  • Verifiable numbers

    Every case in the portfolio comes with a link to a live site and a technical measurement.

  • Audit first, then pricing

    There is no price list on the site intentionally: the scope of the same work differs multiples between clients.

  • We say "no" when unsure

    If the task isn't ours or the deadline is unrealistic — we tell you upfront.

What affects the price

Why two seemingly identical tasks are priced differently

  • Weights and packagingThe price, where the weight is shown in a separate field, is collected in options automatically. The price, where the weight sits at the end of the product name in a row, has to be sorted by rules and checked by hand - and this is the most common condition that we have seen.
  • Reorder mechanicsThe "retry" button in the order history is a few days old. Regular deliveries with schedule, reminder by date and balance calculation are a separate logic on top of the store and are calculated separately.
  • Filter depthAnimal type and brand — a basic set. Age, weight of the animal, special needs, type of feed, presence of grains - every feature must be in the data, otherwise it must be entered there first. The work here is not in setting the filter, but in bringing the price to a suitable form.
  • Groups of buyersThe price for the breeder or clinic is the setting. Multipacks, personal volume discounts, and FOP billing add checkout steps and verification at each.
  • Veterinary group of goodsSeparate fields, warnings in the card and restrictions on the sale of part of the items are not a line in the price list, but a separate branch of the catalog with its own rules. Exactly what you are allowed to sell online is decided before assembly, not after.
  • Content statusPhotos of packages from the manufacturer and filled-in specifications save weeks. The catalog, where the composition and feeding rate are in a PDF image, must be typed — this is a separate line of the estimate and a separate term.
Process steps

Transparent stages with approval at every step

Total duration:25–45 days

  1. Audit and brief

    3-5 working days

    We measure the current site, if it exists, and analyze the price: how many formulas, how many packages, what signs are in the data and which are not. The output is a TK, based on which the estimate is calculated and the work is accepted.

  2. Directory structure and fodder card

    3-5 working days

    Tree by type of animal and product type, a set of features for the filter, card fields for storage, feeding rate and package weight, the rule for choosing the weight in the card. We agree with the design: it is expensive to redo it after layout.

  3. Design

    5-8 working days

    Home, category, card with weight switch, cart, checkout, cabinet with order history. Here we fix the target weight of the page - both the main and the heaviest category, because the difference between them is several times.

  4. Assembly of the store

    8-13 working days

    Theme layout, catalog and filter, weight options from canonical to main address, shopping cart and checkout, buyer groups, admin roles, payment, delivery and return pages.

  5. Price, repeat order, analytics

    4-9 working days

    Mapping of price fields and test filling, reconciliation of card count by two independent methods, cabinet with history and repeat button, GTM and GA4 with cart, purchase and repeat events, JSON-LD, sitemap with response size check.

  6. Testing, transfer, launch

    2-5 working days

    End-to-end running of the order from the shopping cart to the TTN, separate running of the re-order by the old buyer, measurements of the first response and HTML weights, passing of the admin with your manager, transfer of accesses.

Did not find your case?

Describe how it works on your side — we will tell you whether “Development of an online pet store” fits and what it means in your situation. No brief and no call: one question, one answer.

Technologies & integrations

What we build on and what it connects to

Stack

  • OpenCart 4.x is the basic version; some of the Ukrainian modules for it have not yet been assembled
  • OpenCart 3.x — when you need a module without assembly under 4.x; the branch is no longer being developed
  • PHP in supported version - two out of three stores measured were 7.3, no support since 2021
  • MySQL is an average catalog of pet products, a separate search engine is unnecessary here
  • nginx + HTTP/2 — keeps the first response within 235–500 ms; then rests on the topic, not on the server
  • Brotli compression - in a measured store watering 143.6 KB markups go over the network as 22.5 KB
  • OCFilter — a filter based on the characteristics of the card; combinations have to be closed with canonicals and robots
  • Product variants with canonical — remove duplicate weights, but reduce the number of addresses in the site map
  • Order history and repeat module - gives a button, does not give a demand

Integrations

  • LiqPay
  • WayForPay
  • Privat24
  • monobank
  • postpaid
  • Nova Poshta
  • Ukrposhta
  • courier delivery around the city
  • self pickup
  • Google Tag Manager
  • GA4
  • Google Ads
  • Meta Pixel
  • eSputnik
  • Telegram
  • Viber
Own pet store against orders in the messenger and marketplace

How this option differs from the alternative

Repeat purchasebutton in the order history: feed and weight are already selected
Weight and packagingvariants of one card, canonical to the main address
Price for breeder and clinicbuyer group, price and multiple after authorization
Commission on each saleno — hosting, domain and acquiring
Base of regular customersyour order history is downloaded together with your contacts
Cases

Tasks and results in numbers — all metrics measured by us

a store of automatic and drip irrigation systems with landscape services

Task
Collect a technical assortment, where the nomenclature is small and visually the same: elbows, couplings and tees differ only in diameter and thread. A task of the same nature as fodder in one formula and several packages.
Solution
OpenCart 3 under nginx with HTTP/2 and brotli compression. Directory at four levels of nesting, in OCFilter categories. At the checkout, Nova Poshta with branch, courier and post machine and Ukrposhta; cash on delivery, bank transfer and LiqPay.
Result
Measurement 08/01/2026: 300 products in 40 categories at four levels, a figure confirmed by two independent methods with a 0% discrepancy. The first response from the server is 235 ms, the weight of the main HTML is 143.6 KB, in brotli - 22.5 KB; a category page with 100 items weighs 554 KB. Defects found: /sitemap.xml gives 200 and zero bytes, JSON-LD does not have a single block, analytics is not installed at all.

online store for the delivery of sweets, snacks and gift sets

Task
Sell ​​goods that are taken repeatedly and mainly from the phone: a catalog with filters by type and purpose, a basket with a choice of delivery, online payment.
Solution
OpenCart 3.x under nginx with HTTP/2. Five online payment methods and four delivery methods; free delivery to the Novaya Poshta branch from UAH 2,500 is displayed with a banner on the main page.
Result
Measured on 07/31/2026: first server response 402.9ms, full HTML load 532.4ms at 303.4KB. Defects found: it was not possible to calculate the volume of the directory from the outside — /sitemap.xml gives HTTP 200 with a body of zero bytes, and the sitemap feed is 404; there is no analytics counter on the site.

a specialized store of goods with restrictions on sale

Task
To sell a narrow group of goods, where the card should contain not only the characteristics, but also legal information about the use - so that the buyer can choose without consultation.
Solution
OpenCart 3.x under nginx with HTTP/2, two language versions, card with legal block and model comparison. Payment by card and cash on delivery, Nova Poshta and Ukrposhta, delayed loading of images.
Result
Measure 07/31/2026: site map as an index of four submaps — 48 products and 18 categories, 68 addresses in total. First response 494.7 ms, full download 567.5 ms at a weight of 502.3 KB; 154 out of 190 images (81%) are slow to load. Defects found: there is no type of structured markup, there is no h1 tag on the main page, there is only a social network pixel from analytics.
What we need from you

We can't start without this — best to prepare in advance

  1. Price by machine file: name, brand, package weight, type of animal, age, price, balance. A photo of a table is not such a file.
  2. Feeding rates, if you show them in the card - they come from the manufacturer, not from us.
  3. Photo of packages; the manufacturer's photo is usually enough in the feeds, it is not necessary to shoot from scratch.
  4. Delivery rules: zones, free delivery threshold, self-delivery.
  5. A list of buyer groups with their prices and multiples if you work with breeders or clinics.
  6. Access to hosting and domain or agree to choose hosting for you.
  7. One person with the right to approve the structure of the catalog and say "yes" to layouts.

If something is missing — let us know, we'll help you gather it or do it as a separate task.

FAQ

Most frequently asked questions — with concrete answers

Is the same feed in three weights three products or one?

Usually one product with a choice of weight: the buyer compares the formula, not the packaging, and it is more convenient for him to switch packaging directly in the card. Separate cards are justified when a specific weight has its own article number and is searched for by a separate request. Our recommendation: as long as there is no such request, do not produce cards - three almost identical pages compete with each other and blur the site navigation. We fix the solution in the TK before the assembly, because the number of addresses and the work with duplicates depend on it.

How to keep customers coming back for food?

The technical part is simple: order history, a repeat button in one step and reminders by means of the postal service. We do mechanics. Whether it will work depends on the assortment and price, and we will not promise a specific increase in repeat purchases - we do not have our own measurement of this indicator. What can be measured immediately is the share of repeat orders, provided that the site has analytics. In two of the three stores we measured, she was not standing at all, so a similar conversation there would be based on words.

Is it possible to sell veterinary drugs through the website?

Part of it is yes, part of it is no, and this question is not related to the site, but to the rules of circulation of a specific group of drugs. Technically, we display the required fields, card warnings and order limits, but you are responsible for what exactly you are allowed to sell online. Let's talk about it at the start: it is more expensive to transfer a part of the catalog to another branch after launch than to separate product groups at the structure stage. One of the stores we measured solves a similar problem with a legal block right in the card — the buyer reads the restrictions before the cart, not after.

Why is the pet store not in the index, although the site map is supposedly there?

Because it can return zero bytes. In two of the three measured stores, /sitemap.xml returned an HTTP 200 with an empty body, the sitemap feed returned a 404, and the Sitemap line in robots.txt was commented out from the default template. In the browser, everything looks normal, in fact, the search engine does not receive any address. We check this first and measure it in response bytes. A fair limit: the site map itself does not raise positions and does not guarantee indexing - Google writes about it directly, and the real number of indexed pages is visible only in your Search Console.

How many signs to take out in the feed catalog filter?

As much as is actually in the data. Animal type, age, animal weight and special needs close most of the selection scenarios; then the profit growth falls rapidly. Two limits to be aware of in advance. The first: on a catalog of several hundred items, complex filtering does not give much - there a clear structure of categories works better, and a measured irrigation store with 300 items on four nesting levels is just such a case. The second: filters generate a combinatorial number of addresses, and if they are not closed by canonicals and robots, thousands of almost identical pages will go to the index.

Do you need a separate site for breeders and vet clinics?

No, there are enough buyer groups: the breeder or clinic sees its price and multiple after authorization, the rest of the catalog is the same. A separate entrance makes sense when wholesale is your main direction and retail lives next to it according to the residual principle - then it is better to build the frame around wholesale, and this is already a neighboring page. We don't recommend the intermediate option of "a little wholesale on the side": it usually ends up with two catalogs that someone has to keep in sync with their hands.

Category page takes a long time to open - is the platform to blame?

Most often, the theme and the number of items on the page, and not the engine, are to blame. In the measured irrigation store, the main one is given in 235 ms and weighs 143.6 KB, and the category page with 100 items is already 554 KB; it's the same site. Therefore, we fix the weight at the design stage separately for the main and separately for the heaviest category, and do not measure after complaints. The line of fairness here is simple: speed removes the technical loss, but does not make the offer attractive. A page that loads in 200ms will simply give a person a reason to leave faster.

How many delivery methods to connect?

The ones that your buyer actually uses, and nothing more. Measured benchmark: in the irrigation store, there are six ways to pay in the checkout from two carriers — a branch, a courier, and a Nova Poshta post office plus three Ukrposhta options. Choosing a branch right at the checkout removes the need for the manager to clarify the address on each order. What it doesn't do: it doesn't make the delivery itself cheaper, it doesn't speed up the carrier, and it doesn't save the buyer who chose the wrong branch. And the freed hour of the manager becomes money only when it is really redistributed to something.

How long does development take and what does the deadline depend on?

25–45 working days from approval of technical specifications, six stages. The catalog in this niche is usually medium-sized, so the main time is not spent on imports, but on packaging, filter by animal and age, and replay mechanics. If the price is structured and the weight in it is a separate field, the term is at the lower limit. If the weight has to be extracted from the names of the goods by the rules and checked by hand, use the upper one.

Send a price - we'll get back to you with figures on packaging

In 2-4 working days, you will receive a document: speed, weight of HTML, state of the site map, assessment of work on weights and on the mechanics of re-ordering. Next - the amount and term by stages.

From measured casesMeasured on 07/31/2026: first server response 402.9ms, full HTML load 532.4ms at 303.4KB

View cases
  • Reply within 2 hours
  • No commitment
  • We work under a contract

There is no price list on the site on purpose: the same work differs several times over between two clients, and a “from” figure explains nothing in that case. First a free audit — we count your pages, duplicates and speed — then we name the sum and the deadline and fix both in the contract.