The brief
The client sells beeswax church candles across Spain: thin, even-burning candles for the Orthodox church and for prayer at home, in packs of 10 to 50. His buyers are parishioners of the Orthodox communities in Spain, many of them ordering on a phone, many for a parish or a family, and many reading Spanish as a second language, which is why the store speaks Spanish, Romanian, Ukrainian, English and Russian.
The work started in June 2026 with an advertising landing page and grew over the summer and autumn into the whole store: catalogue, checkout, bank payments, returns, a customer account, shipping labels and the advertising around it. The same small team ran it end to end, with the owner in a working chat and every change confirmed in writing before it went live.

What we built
An advertising landing page first (June)
On 17 June 2026 a single-offer landing page went live for the first Meta campaign: the packs, the prices, free shipping above a threshold and one button that opens WhatsApp with the chosen pack and the ad source already written into the message. The page sent its events to Meta through the Conversions API from the server, so the campaign could learn even when a browser blocked the pixel. It ran in Spanish and Russian, and the owner could change the phone number, the packs and the prices in one config block without a developer.
The store (July to October)
The store itself was audited at the end of July: 231 findings across code, content and configuration, from a canonical address pointing at an unrelated domain to unconfirmed prices on sizes the client had never priced. Everything that followed was built on the fixed version.
The catalogue follows the client's own published price table: four sizes on sale, from 30 cm by 0.95 cm in packs of 10 to 16.5 cm by 0.6 cm in packs of 50, at 13 to 14 euros a pack, with shipping at 5.50 euros and free above 50 euros. Sizes the client has not priced are shown as "on request" and cannot be bought.
On 14 October the order form in the first screen was replaced by a quick-buy card: pick a size, set the number of packs, see the total with shipping, and go straight to checkout. On a phone the whole decision fits on one screen.


Card and Bizum through a Spanish bank (October)
Spanish buyers pay with Bizum, the phone-number transfer most Spanish banks support, at least as readily as with a card. The store had a card processor that was still in test mode, so on 12 October it was switched off and the bank's own payment gateway (Redsys, through BBVA) went in: card and Bizum, signed requests, and a notification endpoint that marks an order paid exactly once. It ran against the bank's test environment the same day and went live on 14 October with the production key.

A bank page has no "the buyer gave up" event, so an order abandoned at the bank used to sit as new forever. Since 29 October the store writes to the buyer an hour later with a signed link that reopens the payment, and cancels the order after 48 hours.
Returns and cancellations under Spanish rules
Returns were built from the store's own terms, one rule per order state: an order not yet shipped is cancelled and refunded at once; a shipped one can be cancelled or reported as not received; a delivered one can be returned within 14 days, or reported as defective or wrong at any time. Refunds go back through the same bank gateway, a corrective invoice is issued, the shipping label is cancelled and the buyer gets an e-mail in their language. On 14 October a real order placed to test the flow was cancelled through it, and the money came back to the card.
A customer account
Also on 14 October the account page became a working cabinet: order history, a "where is my order" timeline fed by the carrier, the saved delivery address that pre-fills checkout, and a referral programme that the owner switches on when he decides. Customers can sign in with Google as well as with a password.
Shipping labels and tracking
Orders are shipped through a parcel aggregator: the label is created from the order, the tracking number comes back on its own every five minutes, and the buyer gets the tracking link. Each pack has a measured weight, so a quote matches what the carrier charges. Since 29 October the default carrier is Correos Express with door pick-up, with GLS as the alternative on the mainland.
Speed on a weak connection
On 23 October the owner reported that the site took forever on a weak connection. The audit found 1.4 to 3.6 MB videos loaded from a third-party host, a black preloader that waited for every script, and web fonts served with the wrong content type, so browsers had been discarding them all along. Videos moved to the store's own server at 350 KB or less, the first screen's background now loads after the page and stays off on data-saver connections, and scripts the pages did not need were removed. Every asset now carries a version in its address, so a visitor never sees a stale file after a change.
The ads
Meta campaigns on Facebook and Instagram have run since June, with a second round from 14 October. A cookie banner holds back the Meta pixel until the visitor agrees, as Spanish law (LSSI, article 22.2) requires; after consent the server sends the purchase and lead events with hashed contact details, under the same event id as the browser, so Meta counts each one once. A tap on WhatsApp or Telegram counts as a lead.
What happened
The measured result of the speed work, from our Lighthouse runs on a throttled Slow 4G phone profile on 23 October 2026: the home page went from a performance score of 45 to 76, from 4,278 KB to 385 KB of data, and the main picture appeared after 2.5 seconds instead of 3.7.
The first orders paid through the bank, by card and by Bizum, arrived in October 2026. Sales numbers are left out of this case on purpose: a few weeks of a niche store say nothing reliable about a channel yet.
What we would do next
Weigh the packs. The pack weights are estimates from the owner's measurements of single candles. Weighing each pack once makes every shipping quote exact.
Turn on referrals for parishes. The programme is built and switched off. A parish or a family buying together is the natural group for it.
Message buyers on WhatsApp. The abandoned-payment reminder goes by e-mail. A short WhatsApp message from the owner's number reaches this audience faster.
Related
How we build stores: online store development. The campaigns: targeted ads. The first landing page: landing pages.
Project lead: Marketing MIX. Client: an online shop of church candles in Spain, published without the brand name at the owner's request. Year: 2026.

