WooCommerce to Shopify: Rebuilding a Greek Fortune-Telling Store by Georgia TsiouliWooCommerce to Shopify: Rebuilding a Greek Fortune-Telling Store by Georgia Tsiouli

WooCommerce to Shopify: Rebuilding a Greek Fortune-Telling Store

Georgia Tsiouli

Georgia Tsiouli

WooCommerce to Shopify: rebuilding a Greek fortune-telling brand around how it actually operates


Magic-Shop.gr is a Thessaloniki-based e-commerce business offering online fortune-telling and spiritual guidance — coffee reading (καφεμαντεία), card reading (χαρτομαντεία), love predictions and dream interpretation. Every reading is prepared by hand for one customer and delivered to their inbox in one of three formats: written, audio, or video.
After several years on WooCommerce, the platform had stopped fitting the business. The catalogue had grown, the customer base had grown, and the operational workarounds had multiplied. We migrated the store to Shopify — then kept going, because migration turned out to be the easy part.

Challenges

A product that isn't really a product. Each reading needs custom fields WooCommerce only handled through plugins: delivery format, urgency, the customer's own name and the name of the person they're asking about, their questions, and in the case of coffee readings, photo uploads of their cup. Reproducing that in Shopify meant rebuilding the purchase flow around variant logic and line-item properties rather than a plugin stack.
Express delivery the business couldn't reliably honour. Express — a one-hour turnaround — existed as a product variant. But it's only deliverable when the reader is actually at her desk, Monday to Friday, 11:00–19:00. Outside those hours the only way to stop people buying it was to manually delete the variant from every product, then manually re-add it. Inevitably, customers bought Express at midnight on a Sunday and expected a reading within the hour. Each one meant an apology email, a refund conversation, or an unhappy customer.
Greek Payment Compliance: IRIS is a mandatory payment method in Greece under local e-commerce regulations. Standard Shopify payment providers do not include IRIS out of the box. Integration required connecting Viva Wallet's Smart Checkout (which supports IRIS) to the Shopify checkout.
Domain & DNS Migration: The domain (magic-shop.gr) was managed through Cloudflare and previously pointed to the WordPress host. Migrating to Shopify required disabling Cloudflare's proxy on all relevant records and pointing A records to Shopify's infrastructure, while ensuring zero disruption to existing email routing (SPF, DKIM, DMARC, MX records).
SEO & URL Structure Preservation: WordPress/WooCommerce uses different URL structures than Shopify (/product/ vs /products/, /product-category/ vs /collections/). With established Google rankings, a broken URL structure post-migration would have caused significant organic traffic loss, requiring careful redirect mapping.
Customer Communication Automation: The previous WooCommerce setup lacked sophisticated email automation. Building flows for new customer acquisition, abandoned cart recovery, and post-purchase follow-up from scratch was a core requirement.
Net Income Tracking: Different payment methods with different fee structures, 24% VAT to back out of every order, and an accountant who needs clean numbers at the end of the month, created a lot of needless headache.

Goals

Migrate the full product catalogue and store to Shopify without losing Google search rankings
Configure custom product fields to support the unique digital service model (express delivery, customer questions, file uploads)
Integrate Viva Smart Checkout to offer IRIS payments, meeting Greek legal requirements
Set up Klaviyo flows: welcome discount for new subscribers, abandoned cart recovery, and post-purchase sequences
Implement full Greek localisation of the storefront
Ensure seamless DNS cutover from Cloudflare/WordPress to Shopify with no email disruption
Maintain and improve conversion rates relative to the WordPress baseline

What I built

Time-aware Express availability

Rather than reinstating a variant that had to be manually policed, we built an availability layer that understands the reader's working hours. A settings panel in the theme controls it: an on/off switch, which days Express runs, and the opening and closing hour. Those values feed a client-side script that evaluates the current time in Europe/Athens — not the visitor's timezone, since what matters is whether she's working — and disables the Express option outside the window.
Three decisions made it hold up in practice:
Disabled, not hidden. Express appears struck through with a note explaining when it returns and what the customer gets instead. People learn the option exists and come back for it, rather than never discovering it.
Both rendering modes. The theme renders variants as swatches or as a <select> depending on configuration. The script handles both, and removes the option cleanly from the select rather than relying on CSS, which browsers ignore on <option> elements.
Survives re-renders. Shopify themes rebuild the variant picker over AJAX on every option change. A MutationObserver reapplies the rule each time, and if Express happened to be pre-selected, the script reassigns the selection and fires the change event so price and labels stay correct.

Net Income Tracker

A local HTML tool that connects to Shopify's API. Orders sync automatically. Each one gets the correct processing fee applied depending on how the customer paid — Viva Wallet, PayPal, card and Klarna all charge differently — VAT is backed out, and what remains is actual net income. Filter by month, export to CSV when the accountant asks.

Post-launch SEO Recovery

Monitoring after go-live surfaced an organic decline the migration had introduced. Landing-page analysis showed real search traffic still arriving at old WooCommerce URLs and finding nothing — including a blog post that had been the site's second-strongest organic entry point.
I mapped and deployed redirects for every legacy URL still receiving traffic, corrected a blog handle change that had silently detached thirteen article URLs from their rankings, and rebuilt the collection pages with proper descriptions and metadata targeting the terms the store had never ranked for.
I also stripped foreign markup from all 23 product descriptions — editor artefacts pasted in from other tools that were breaking list layouts on the new theme and bloating every page's HTML.

Outcome

Conversion rate increased by 50% within the first few days of the new store going live, compared to the WordPress baseline
Express is self-managing — no manual variant deletion, no unfulfillable orders
Google search rankings were maintained post-migration with no significant drop in organic traffic
IRIS payments went live at launch, ensuring full compliance with Greek e-commerce payment regulations from day one
Abandoned cart and welcome flows began recovering revenue and capturing new subscribers from the first week
A local HTML file that connects to Shopify's API. Orders sync automatically. Each one gets the right fee applied depending on how the customer paid (Viva Wallet, PayPal, card, and Klarna all charge differently), VAT gets removed, and the remaining number is actual net income. They can filter by month and export to CSV when the accountant asks.
The digital service model translated cleanly to Shopify, with customers able to submit personalised reading requests, choose delivery format and urgency, and complete checkout entirely in Greek
Income Tracker Custom App Preview
Income Tracker Custom App Preview

Stack

Shopify Liquid
JavaScript
Klaviyo
Viva Wallet Smart Checkout
Cloudflare DNS
Shopify Admin API
Shopify Flow
Like this project

Posted Jun 10, 2026

WooCommerce to Shopify for a Greek fortune-telling brand. Custom Express scheduling, IRIS compliance, rebuilt email flows and automated net-income reporting.

Likes

0

Views

3

Timeline

May 1, 2026 - Sep 1, 2026