Opti Plaza switch guide
Shopify to the new store (WordPress + WooCommerce + Stripe). Written 4 Nov 2026, late evening your time; updated overnight as items closed.
The short answer
- The switch is one DNS change. Visitors move to the new store within 1 to 2 minutes. The site never goes down: Shopify keeps selling right up to the flip.
- Cutover session: about 3 hours of my work at the quietest hour, Wednesday 15:30 your time (Thursday 04:00 in India). Your part is 30 minutes: be reachable and place one real order, which I refund.
- Earliest go-live: 4 to 7 days after you finish steps 1 to 3 below. If you do them Thursday, the earliest cutover is Wednesday 11 Nov.
- Nobody lands on Shopify afterwards. The domain points only at the new store, every old Shopify link is caught by it, and Shopify sits locked behind a password page for about 4 months (only for chargebacks and payouts). Then we close it.
- One live problem found that is not about the switch: Google Shopping's India rupee prices have been frozen since 8 September. Say
go India feed and I refresh them today (details under Google Merchant Center below).
- Already working on the test store tonight: today's Shopify data copied in (973 customers, 73 orders, 59 changed products), sitemaps and robots, Google Analytics and Klaviyo tags, live shipping prices, account pages, order numbers carrying on from #1075, shipping emails with tracking, every old Shopify link (order emails, cart and discount links), the 3 live discount codes, each country's own currency, and Shopify's send-people-to-their-country rule.
Your steps, in order
Each step ends with what to say to me. Type the money and DNS ones (2, 3 and 12) in the laptop chat, not WhatsApp: the laptop blocks those actions without a typed go there.
- Stripe account. Gurpreet applies for Opti Plaza Ltd with the answers file on your Desktop (Opti Plaza folder: Stripe-application-answers). Website optiplaza.co, payouts to RBC. Once approved, invite
trejon@simplifygenai.com in Stripe (Settings, Team) with the Developer role. Stripe's rules use the same "brand-name goods" wording Shopify did, so keep the authorised-retailer papers handy in case they ask.
Then say: Stripe connectedAbout 30 minutes. Shopify keeps selling until a live Stripe payment works.
- Server. A small Hetzner server for the store, about EUR 8.50 a month with backups. I build it the same day.
Say: go Hetzner
- Domain to Cloudflare. (a) In your personal Cloudflare, Add a site:
optiplaza.co, Free plan. Cloudflare copies the current records; visitors see no change. Tell me, and wait for my OK: I check every record first, including the 2 Google Search Console records. (b) In the GoDaddy account that holds optiplaza.co (it is not in either GoDaddy account I have), change the nameservers to the 2 that Cloudflare shows.
Say: Cloudflare added, then after my OK: nameservers done15 minutes. After this I do all DNS myself.
- Merchant Center access. merchants.google.com, account 5329074243, gear icon, People and access, Add person:
optiplaza-seo@optiplaza-seo-2026.iam.gserviceaccount.com with Standard access. Without this I cannot move your Google Shopping listings.
Say: Merchant access done2 minutes.
- Order email sender. The new store has to send order, shipping and password emails from optiplaza.co. I recommend Resend on the free plan (3,000 emails a month, 100 a day; we send a few dozen). I make the account with trejon@ and add its DNS records.
Say: go Resend
- Klaviyo. Log in to Klaviyo once in Chrome on the laptop before cutover day. On the night I connect the new store, so the 750 newsletter subscribers stay and new orders reach Klaviyo.
Say: Klaviyo logged in
- Three Shopify checks. Look only, change nothing. (a) Settings, Plan, Cancel plan: is "Pause and build" in the list? Shopify's help pages disagree on whether this plan still exists. Do not confirm anything. (b) Finances, Payouts: is any balance held? (c) Do Papa or Chacha ring up shop sales on the Shopify POS app?
Say: Pause yes/no, held $___, POS yes/no5 minutes.
- Logins for the new admin. Who needs one (Papa, Chacha, anyone else) and their email.
Say: logins: Papa name@..., Chacha name@...
- Privacy policy line. The live policy still has "NOTE TO MERCHANT" placeholders, and Stripe reads policy pages. I will write: Opti Plaza Ltd, British Columbia, with operations in India.
Say: policy line OK (or the line you want)
- Google Business Profile and Meta. Open the 3 shop profiles (Ludhiana, Jalandhar, Amritsar). Tell me any website, product or order link that is not plain optiplaza.co. In Meta Commerce Manager, check whether a product catalog exists.
Say: GBP links fine, Meta catalog yes/no10 minutes.
- Phone test. I send a link to the hidden test copy on the new server. On your phone: browse, search, add to cart and pay with the test card I give you, once as India and once as another country.
Say: staging OK (or list what looks wrong)20 minutes.
- Pick the time. Type it in the laptop chat. Tell Papa and Chacha: no Shopify edits from 13:30 that day.
Say: go cutover Wed 15:30
- Cutover day. Be reachable 15:30 to 16:30. When I message, place one small real order on optiplaza.co with your card. I refund it.
- After. Use Shopify admin only if a dispute email arrives. Around mid-March 2027 (120 days after the last Shopify order, when card chargebacks run out) close Shopify.
Say: close Shopify
Any time: rollback puts the domain back on Shopify in about 5 minutes (works until Shopify is closed). status gets you where we are in 5 lines.
How fast is the switch
Day 0. Your steps 1 to 3. Nothing changes for visitors.
Day 1. I build the server and put the whole store on a hidden address (password, kept off Google).
Day 2. Rehearsal: a full fresh copy from Shopify, then a crawl of all ~12,900 live pages compared with the new store (status, title, description, canonical, hreflang, structured data, images), and test payments in all 15 markets. We go only when the differences are zero.
Day 3. Your phone test. The day before cutover I set the domain's DNS refresh time to 60 seconds, so the flip spreads in a minute.
Cutover, Wednesday 15:30 your time. Final copy, flip, checks. Visitors move in 1 to 2 minutes. No downtime.
About 2 hours later. When Shopify's Live View shows no visitors left, Shopify gets its password page and its sales channels are switched off.
About 4 months later. Close Shopify.
How nobody reaches Shopify again
| Door to Shopify | How it gets shut |
| Typing optiplaza.co, Google results, bookmarks | The domain points only at the new store. The DNS refresh time is 60 seconds from the day before, so old answers expire within a minute. The few devices still holding the old answer can still buy on Shopify for those minutes; I copy any such order across, and the password page goes up once Live View is empty. |
| Old links in customer emails (order status, "view your order") | The new store answers the same links and opens the same order on optiplaza.co after the customer confirms their email (as Shopify asks for its email code), with tracking and what they paid. done |
| Old checkout, cart and discount links (abandoned-cart emails, shared links) | The new store catches /checkouts/..., /cart/... and /discount/CODE: it fills the cart or applies the code at checkout. Staff typing optiplaza.co/admin land in the new admin. done |
| opti-plaza.myshopify.com | We keep optiplaza.co as Shopify's main domain, so this address forwards to the new store. Anything else shows Shopify's password page, where nobody can buy. |
| Google Shopping, Instagram and Facebook products | They already link to optiplaza.co, so they open the new store. Merchant Center gets our own feed with the same product IDs. The Shopify Google, Facebook, Inbox and POS channels are switched off after the flip. |
| Habit: Papa or Chacha edit products or orders in Shopify | They get new admin logins before the night. Their Shopify staff access is removed the day after, so a Shopify edit cannot happen by mistake. |
| Shopify POS in the shops (if used) | Shop sales move to the new admin (manual order) or a Stripe card reader. Your answer in step 7 decides this. |
| Our own sage-1 desks (8 of them write to Shopify) | I stop them before the final copy and point them at the new store after. |
Everything that can go wrong, and the fix
done working on the test store fixing tonight mine, under way needs you waits on a step above cutover night after launch
Data
| What can go wrong | Fix | Status |
| Products, prices or stock change between now and the switch | Final copy on the night with Shopify edits frozen 2 hours. Tonight's test copy took 59 changed products, 56 new customers and 10 new orders cleanly. | done night |
| Stock not going down when someone buys | Found and fixed: tracked items now count down and stop at zero, like Shopify. | done |
| Customers lose their order history | All 73 orders imported against the 973 customers. A test customer logged in and saw order #1074. | done |
| Order numbers restart at 1 | New orders carry on from #1075. | done |
| Shopify signs customers in with an email code; the new store uses passwords | Imported customers set a password through "forgot password". Needs the order email sender (step 5). | step 5 |
| The 3 live discount codes (SAVE10, SAVE12.5, FIRSTPAIR5) stop working | Recreated with the same rules and usage: FIRSTPAIR5 already counts its 2 customers, SAVE12.5 is used up and refused, as on Shopify. | done |
| Copy wipes filter names and product videos | Found and fixed: the copy now stops if those files are missing. | done |
| Gift cards, store credit, open invoices, reviews | None to move: 0 gift cards, 0 store credit across all 973 customers, 0 open draft invoices, and the live pages show no review widgets. | checked |
| Product photos and videos vanish when Shopify closes | Every one of the 26,749 image references and all 52 product videos has its own copy on the new store, plus the llms.txt file AI assistants read. Nothing points at Shopify's servers. | checked |
| Sales from the Shop app or AI shopping assistants stop | All 72 real orders came through the website, none through Shop or assistants, so nothing is lost. | checked |
Google search (SEO)
| What can go wrong | Fix | Status |
| Pages Google knows return errors after the switch | Same URLs for every page in all 15 market folders. The audit compared 246 live pages field by field and found 6 differences, all fixed tonight: Serbian language tags (Shopify changed them this month), translated "Collections" titles, 10 crawl rules, 2 structured-data fields, the favicon and llms.txt. The rehearsal crawl must still show zero differences before cutover. | fixed |
| Old Shopify redirects lost | All 1,748 redirects copied into the new store. | done |
| Sitemaps or robots rules change shape | Same sitemap index and per-language files at the same addresses; Shopify's crawl rules copied. | done |
| Image addresses Google Images indexed (11,446) break | The new store serves the same /cdn/shop/... image paths. | done |
| Search Console loses its verification when the DNS moves | Its 2 TXT records go into Cloudflare before the nameserver change; I check before you switch them. | step 3 |
| Visitors from Canada, the US, India, the UAE and Serbia are no longer sent to their own folder, as Shopify does today | Copied Shopify's rule: people go to their country's folder with their language kept; Google is never redirected. Tested for the US, Canada (French kept), India, the UAE, Serbia and the UK. | done |
| The old Shopify copy gets indexed as a duplicate | Shopify password page after the switch. | night |
| We blame the move for a drop that started earlier | Google clicks were already down 44% in the last 28 days (883 against 1,586) before any change. That baseline is saved; after launch I compare daily against it. | watch |
Payments
| What can go wrong | Fix | Status |
| Stripe refuses or holds the account | Apply first, before anything else. No switch until a live Stripe payment has gone through, so Shopify keeps selling if Stripe is slow. | step 1 |
| Buyers in countries without their own folder (UK, Australia, Switzerland, Saudi Arabia, ...) see US dollars, where Shopify shows their own currency. 11 of the 26 orders from outside India were paid that way. | Copied: each country sees and pays in its own currency at Shopify's rate and rounding (UK £228.00 and Japan ¥48,500 for the same frame, exactly as live). Rates are read from live Shopify again on cutover night. | done |
| A market's checkout fails | Test payments in all 15 markets on the rehearsal, then your phone test, then one real order on the night. | rehearsal |
| A chargeback arrives on an old Shopify order | Shopify stays on (locked) about 4 months so you can answer disputes. | after |
| Money held by Shopify | Check payouts before closing (step 7). | step 7 |
Emails
| What can go wrong | Fix | Status |
| Order and password emails never arrive (optiplaza.co has no email set up) | Resend sender with the domain's DNS signatures; reply-to stays your current address. | step 5 |
| Customers stop getting the "on the way" email with tracking | Tracking box on each order: the team types carrier and number, the customer gets Shopify's "on the way" email with the link. | done |
Google Merchant Center, Ads, Analytics, Business Profile
| What can go wrong | Fix | Status |
| Shopping listings go stale or disapproved (prices and stock stop updating once the Shopify channel stops) | Our own feed with the exact product IDs Google has now, swapped in one step on the night (two feeds with the same IDs clash, so no overlap). | step 4 |
Product IDs changed format inside Google (Shopify moved some stores from shopify_IN_ to shopify_ZZ_) | I read the real IDs from Merchant Center before building the feed. | step 4 |
| The India rupee prices Google Shopping reads have not updated since 8 September: the daily job refuses because the active catalog shrank (4,619 rows then, 1,481 now) | The drop is real (products were made inactive), so the job should publish today's 1,481 rows. This writes to the live sheet Google reads, so it waits for your word. Say go India feed. | needs you |
| Analytics tags disappear with Shopify | Same GA4 and Google tag IDs and the same Klaviyo tracking on the new store, production only. Live runs no Meta pixel, so none is lost. | done |
| Old orders counted again as sales in GA4 | Purchase event fires once per order, never for copied Shopify orders. | done |
| Google Ads conversions stop | No live campaigns today, so nothing breaks. | checked |
| Business Profile links to a Shopify-only address | Your 10-minute look (step 10). | step 10 |
Klaviyo, Meta, Shopify leftovers
| What can go wrong | Fix | Status |
| Klaviyo stops getting orders and sign-ups | Connect the new store on the night. The 750 subscribers live in Klaviyo and stay. The 6 email flows are still drafts, so nothing live breaks. | step 6 |
| Meta catalog (741 products) stops updating | If a catalog exists, I give Meta a feed from the new store with the same IDs. | step 10 |
| Shopify's "Pause and build" plan no longer exists | Not needed: Shopify stays on Basic, locked behind the password page, for about 4 months. | step 7 |
| Shop chat (Shopify Inbox) and Shop Pay saved details disappear | Expected; the WhatsApp contact stays. Shop Pay buyers type their card once. | known |
The new server
| What can go wrong | Fix | Status |
| Server down means no store | Cloudflare in front, uptime check every minute with a WhatsApp alert to you, nightly backups kept off the server. | step 2 |
| Admin broken into | No default admin names, strong passwords, admin locked down. | step 2 |
Cutover night, step by step
| Your time (India) | What happens |
| 13:30 (02:00) | Shopify edits frozen. I stop the sage-1 desks that write to Shopify, then take the final copy. |
| 14:15 (02:45) | Copy imported, store restarted, spot checks. |
| 15:20 (03:50) | Stripe live keys on. |
| 15:30 (04:00) | Flip. optiplaza.co points at the new server. |
| 15:35 (04:05) | Home, product, cart and checkout checked in India, Canada and the World market. GA4 realtime shows visits. |
| 15:45 (04:15) | Your real order, then my refund. |
| 16:00 (04:30) | Crawl of the top 1,000 pages by Google clicks. Sitemaps resubmitted, Merchant Center feed swapped, Klaviyo connected. |
| ~17:30 (06:00) | Shopify Live View empty: password page on, Shopify channels off. |
Rollback: if anything serious breaks, say rollback. I point the domain back to Shopify and take its password page off; that takes about 5 minutes. Any order taken on the new store meanwhile stays there and is fulfilled from the new admin.
First weeks after
- Every day: Google clicks and impressions against the saved baseline, the error log for missing pages, orders, Stripe disputes. You hear from me only if something moves.
- Changes to the store come after launch, one at a time (returns wording, delivery promise, EU and UK shipping, title cleanup), so any Google movement has one cause.
Full working plan: trejon plans/optiplaza-migration-2026-09/cutover-plan-2026-11.md