EOFY Sale Pages for Shopify: Keep the Rankings
Run one permanent EOFY sale URL on Shopify and refresh it each year: what to do on 1 July, how to redirect old sale pages and how to handle expired offers.
Quick answer: Give your EOFY sale one permanent Shopify address with no year in it, such as
/collections/eofy-sale, and keep it published after 30 June instead of deleting it. Each year, change what is on the page (dates, offer, terms), clear the old tags, prices and discounts on 1 July, and 301-redirect any year-specific sale pages from earlier years to it. Google’s Black Friday advice is to use a recurring URL for a recurring event, but it says nothing about what to do after the sale, so the “keep it live” half is my recommendation, not Google’s. Nobody can promise this lifts a ranking.
The Australian financial year ends on 30 June. The ATO’s income tax due-dates page (last updated 8 September 2025, read on 31 October 2026) refers to 30 June as the end of the Australian financial year for entities that balance on that date. In 2027 that is a Wednesday. That is the only thing I will say about tax in this post: the date. Nothing here is tax, legal or financial advice.
A store builds a sale page in a hurry in early June, runs the sale, and then someone tidies up. The collection is deleted, or the address is redirected to the home page, or the page is left up with last week’s banner. Next May the cycle starts again from nothing, under a new address with the new year in it.
I am publishing this in December on purpose. Google’s advice for sale pages is to create them well before the sale so that Googlebot has time to find and index them. The work that matters happens at two points: months before June, when the page is created and linked, and on 1 July, when it is closed down properly. This post covers both, plus what to do with the old EOFY pages you already have. I will not give you a ranking promise or a timeframe, and Google does not give one either.
What goes wrong on 1 July
There are four common ways to handle the end of a sale page. Three of them lose something.
Make a new address every year. /collections/eofy-2026 followed by /collections/eofy-2027 means every email, social post, partner mention and bookmark from last year points at a page that no longer matters. Google’s page on consolidating duplicate or similar URLs gives the reasons to settle on one address: you choose what shows in results, signals such as links from other sites consolidate onto one URL, tracking is simpler, and Google spends less crawl time on duplicates. Last year’s and this year’s sale pages are similar pages, and a new address each year splits all of that.
Delete the page. Google treats all 4xx errors (apart from 429) the same, so a 404 and a 410 are handled alike. A URL that was in the index and now returns a 4xx is removed from it. Whatever that page had earned, it loses, and anyone arriving from an old link meets an error page.
Leave it live, unchanged. A page still saying the sale ends tonight, a countdown that has reached zero, or a “was” price that no longer applies is a false statement sitting on your store. The ACCC’s recent releases, covered below, show that prices, discounts and time limits are all things the regulator looks at.
Redirect everything to the home page. It feels tidy, but Google’s guidance on moving a site warns against sending many old URLs to one unrelated page, such as the home page: it can confuse users and Google may treat it as a soft 404. Consolidating several old pages into one genuinely equivalent page is fine.
The version that keeps what the page has built is the boring one: same address, new content.
What Google says, and where it stops
Two Google Search Central blog posts are the closest thing to official guidance on sale pages. Both are old, so treat them as principles, not rules.
October 2020, “Best practices for Black Friday and Cyber Monday pages.” Create the page well before the sale. Check you are not blocking Google from crawling the URL (URL Inspection does this). Link to the page from your home page or similar. Get it recrawled after testing any structured data. On the address, the post says:
“Use a recurring URL, not a new URL for each occurrence of the event.”
Its example is /sale/black-friday, not /sale/2020/black-friday. That is the rule behind this post, applied to a different event.
July 2021, “Engage shoppers with deal pages in Google Search.” This recommends a dedicated page for each promotional event, not only Black Friday, with the event named in the page title and described in the page text. If you only reveal details on the day, publish general information in advance and ask Google to recrawl after the update. It was written about the deals carousel, which the post described as limited to the US. I could not confirm whether any such feature applies in Australia as at 31 October 2026, and nothing here depends on it.
Two more Google documents cover the redirect side. Its redirect page says a 301 or 308 is permanent and the target is treated as a canonical signal, while a 302, 303 or 307 is temporary and the target is not. Its duplicate-URL page lists redirects and rel="canonical" as strong signals for choosing the canonical, and a sitemap entry as a weak one.
What Google does not say is what to do after the event. Neither blog post covers it. The advice to keep the page live afterwards is my reasoning: the address is the thing that accumulates history, so you keep it.
Pick the address and the page type
The address
Short, plain, no year: /collections/eofy-sale or /pages/eofy-sale. Look at last June’s queries in Search Console to see which phrase your shoppers use (EOFY or end of financial year), then pick one handle. Shopify’s help says not to edit a collection handle too often because the collection might stop displaying in search results, so choose once. If you ever must change it, Shopify offers a redirect from the previous handle at the time.
Collection, page, or a block on your main sale page
| Option | Fits when | Watch out for |
|---|---|---|
Collection (/collections/eofy-sale) | You want a product grid that fills itself | Empty between sales (next section) |
Page (/pages/eofy-sale) | You want terms, dates and links on a content page | You maintain the product links by hand |
| A block on your main sale page | You already run one yearless sale URL | One address has to carry every event |
If you already run the single sale address described in Click Frenzy and Boxing Day: one sale URL, not many, start with EOFY as a block on that page. Give EOFY its own address only when it passes two tests:
- The offer is genuinely different. Different products, discount structure or terms, not just a different banner.
- Shoppers search for it by name. Check last June’s Search Console impressions for queries containing “eofy”.
If both are true, a dedicated yearless page is justified. If only one is, keep it on the main page. The wider yearly picture is in the Australian sale calendar for Shopify stores.
Make the collection fill itself
A grid you fill by hand is wrong by day two of the sale. Shopify’s help describes smart (automated) collections as selecting products by conditions such as tag, price, compare-at price, product status and inventory, and lets you require all conditions or any one. Shopify’s help also says a new collections model is replacing the legacy manual and smart collections model, so your admin may label things differently. The idea carries over: I use a tag. Tag the sale products eofy-sale, add a condition that the tag is included, and remove the tag when the sale ends.
Why not compare-at price? Shopify’s smart collection help says a product matches “compare-at price is set” only if every variant has a compare-at value, and that the value can be 0, so $0.00 counts as set. A compare-at price left on one variant, or a zero typed in to clear it, is an easy way to get a product stuck in or out of the collection. A tag is a decision. A compare-at price can be an accident.
The off-season problem: what does the page show in August?
Once the tag is gone, the grid is empty. Google’s ecommerce URL guidance says that if a category has no items you should use a noindex robots meta tag, or, if your site removes empty categories from navigation and search, consider a 404. A 200-status page showing a “no products” message can also be reported in Search Console as a soft 404 (see our guide to soft 404s on Shopify). So the permanent address needs a plan for the rest of the year. Three options:
| Off-season state | What you do | Trade-off |
|---|---|---|
| A. Live, with honest content | A “sale returns June 2027” block at the top, plus a few full-price favourites below | Stays indexable and useful. Needs one extra tag |
| B. Content page only | /pages/eofy-sale with dates, terms, a sign-up and links to your main collections | Nothing to empty. No self-filling grid |
| C. Noindex while empty | Add noindex between sales, remove it before the sale | Follows Google’s advice. You must remember to remove it, and Google has to recrawl |
My default is A. Add a second tag, eofy-favourites, and set the collection to include products with either tag (in a legacy smart collection, that means matching any condition rather than all). Between sales only the favourites tag is applied: full-price products, no strikethrough prices, no sale wording in titles, and an introduction saying when the next sale returns. In May you tag the sale products and take the favourites off. If you choose C, put “remove noindex” in your calendar. A page left on noindex through June is the most expensive way to forget.
Build it now
- Create the tag and the collection, and publish it. A page that stays unpublished until the sale cannot be crawled. Use URL Inspection to confirm Google is not blocked from it.
- Write the evergreen text once. What your EOFY sale is and who it suits, how it works (what is included, what is excluded, how long), and where to find delivery and returns information. Our guide to Shopify collection page SEO covers what a collection introduction should do.
- Keep one swappable block at the top. Offer in one sentence, dates in plain text, exclusions next to the headline. Everything else stays put all year, so the page never looks abandoned and never carries stale dates.
- Set the title and meta description. Shopify recommends titles of 60 characters or fewer and builds the page’s H1 from the title you enter. A workable pattern: “EOFY Sale 2027 | Your Brand” during the sale, “EOFY Sale: Returns June 2027 | Your Brand” between sales. The year lives in the title, never the address.
- Link to it from the footer and the home page. Google’s advice is to link sale pages from your home page or similar so people and Googlebot find them quickly.
- Give dates only when they are confirmed. If they are not final, say “June 2027” and nothing more, then update and request a recrawl once the details are live.
- Keep campaign tags off internal links. Google’s ecommerce URL guidance says to avoid linking internally to temporary parameters such as session IDs and tracking codes. Put UTM tags on links outside your store: emails, social posts, ads, partner pages. We do not run ads or email, but every one of those channels should land on the same permanent address.
Do not lean on recrawl requests. Google’s page on them says the individual-URL quota is limited, that repeated requests for the same URL do not speed anything up, and that crawling can take anywhere from a few days to a few weeks. Request once, after a real change.
The yearly calendar
Dates are for 2027, anchored on 30 June. Move them if your sale runs on different dates.
| Phase | When | Jobs |
|---|---|---|
| Build and publish | Now to March | Create the page, publish, link it, write the evergreen text |
| Refresh | April | Re-read last year’s terms, update title and block, check delivery cut-offs |
| Confirm | May | Set the offer, tag products, check prices and markup |
| Live | June | Monitor daily, fix problems the same day |
| Close | 1 July | The runbook below |
| Review | July | Save the page’s Search Console numbers |
If an organiser runs a sale, their dates are theirs. Click Frenzy’s media release of 18 June 2026 gave its first EOFY event as 18 to 24 June 2026. I found no EOFY 2027 event dates from Click Frenzy as at 31 October 2026, so check clickfrenzy.com.au. The page should not depend on them either way.
During the sale: keep prices, markup and claims true
Prices. Shopify’s help says a sale price works by setting a compare-at price higher than the price. Both amounts can show on product and collection pages, only the sale price appears at checkout, and your theme controls whether sale prices are displayed. To end a sale, clear the compare-at field entirely rather than setting it to 0.00.
Structured data. Your theme or an app may output Product structured data, so check what yours actually outputs. Google’s general guidelines say markup must be a true representation of the page content. Its merchant listing documentation says a listing may not display if priceValidUntil is a past date, and that a sale period is marked with a start (validFrom) and an end (validThrough or priceValidUntil), start not later than end. View the markup on one sale product when the sale goes live and again on 1 July. A priceValidUntil of 30 June 2026 still sitting in a theme or app’s output is the kind of thing to catch. The fields to check are in the product page SEO checklist.
Merchant Center. If you feed products to Google, its help says a sale price must match your landing page and checkout, and that sale_price_effective_date carries the sale dates; without it the sale price applies straight away. The page I read does not say what happens to the price when the range ends, so remove the sale price from the feed yourself on 1 July.
Claims about time and discounts. The ACCC’s release of 17 December 2024 on its Black Friday sweep described site-wide claims that had exclusions, “was/now” pricing that may mislead, “up to” claims where few products reached the headline figure, and recommended-retail-price comparisons that may mislead if the business had not sold at that price recently, for a reasonable period. It said it was collecting price data before, during and after sale periods. Price comparisons are covered in our guide to was/now pricing rules for Australian Shopify stores.
What matters most for a page you reuse is time. In a release of 24 April 2026, the ACCC reported that the Federal Court ordered Emma Sleep companies to pay $15 million in total penalties. Emma Sleep Pty Ltd had admitted in June 2025 to showing strikethrough prices and savings claims on all 74 of its products online, when 58 had not previously been for sale at the higher price or without the discount, and the other 16 almost never had. It also admitted misleading limited-time claims, using a countdown timer that would reset during a sale campaign and phrases such as “Ending Soon” while the products continued to be advertised at the same or similar discount.
I am not saying a small store does this. I am saying that on a page you reuse each year, the date any timer counts to has to be the real one. These are my own working rules for the EOFY page, not a statement of what the law requires:
- Write the end date and time in text, and name the time zone you mean.
- A countdown ends when the sale ends. Never reset it.
- If you extend the sale, say so on the page.
- Last year’s “was” price is not this year’s. Re-check every one.
This is general information from the regulator’s own releases, not legal advice, and I will not tell you whether any particular wording complies. For that, ask a lawyer who knows the Australian Consumer Law.
The 1 July runbook
Put it in the calendar for the morning of 1 July with a named owner. Shoppers who land after the end time see whatever you left up.
- Take the sale tag off the products, in bulk. With state A, the collection falls back to the favourites tag.
- Clear compare-at prices. Empty the field. Shopify does not treat $0.00 as empty.
- End the discounts. Shopify’s help says customers who use a deactivated code see an error that no valid discount matches. It also says reactivating an expired discount makes it active with no end date, so set a new end date before reusing last year’s.
- Swap the page block. Replace the sale block with the “returns June 2028” text, remove “ends tonight” lines, turn off any countdown, and add a plain line for late arrivals (the sale has ended, here is when it returns, here is a link to your best sellers).
- Update the title and heading. Remove the year and sale wording (A or B), or confirm noindex is on (C).
- Check the markup and the feed. Look at one product’s structured data and clear sale prices in Merchant Center.
- Click through every link you sent. Open the page from the emails, social posts and ads that carried the sale.
- Request a recrawl once for the permanent URL, then save the numbers: export the page’s June figures from Search Console.
- Set next year’s reminders: April for the refresh, May for the confirm.
Redirects for the old EOFY pages you already have
If you used /collections/eofy-2026 last year, you have a page with a year in its address. Do not delete it blindly. Work through this in order.
- List the old sale pages: collections, pages, category sub-collections, one-off bundles.
- Check what each has. In Search Console, filter the Performance report to that page over the last 16 months, and note any links you know of from partners, press or old emails.
- Pick the closest equivalent as the target. Not the home page. Google’s site-move guidance says to decide where each old URL should redirect, and not to send many of them to one irrelevant destination. Several old EOFY pages consolidating into the permanent one is fine. An old EOFY skincare sub-collection may belong with your skincare collection instead.
- Use a permanent redirect. You are retiring these for good, which is what Google says permanent redirects are for. A temporary redirect does not pass the target as a canonical signal.
- Create it in Shopify. In the admin, go to Content, then Menus, then View URL Redirects, then Create URL redirect. “Redirect from” is the old path and “Redirect to” is the new one. Redirects start working immediately, and CSV import helps if you have many.
- Avoid chains. If
/collections/eofy-2025already redirects to/collections/eofy-2026, point it straight at/collections/eofy-sale. Google says Googlebot can follow up to 10 hops but to redirect straight to the final destination, and if you can’t, to keep chains short: ideally no more than three, and fewer than five. - Keep the redirects for as long as possible; Google says generally at least one year.
- Test each old address in a browser and check the address bar changes to the new page.
Shopify’s redirect rules decide the order of work:
- You can redirect only from an address that is broken. If the old URL still loads a page, the redirect will not work. Delete the old page or collection first, or hide the collection. Shopify says a hidden collection returns a 404, which makes it eligible, but if you make it visible again the redirect is deleted automatically.
- Collection tag URLs can’t be redirected.
- Market subfolders. Shopify’s redirect page says a redirect applies to all language or market subfolders, but another line on the same page says redirects do not apply automatically to them. If you sell through subfolders, test an old address in each one and add a separate redirect where it does not work.
- Query strings might not work as expected, and browsers cache 301s, so test with a real link.
An illustrative redirect map (invented addresses, not a real store):
| Old address | What it is | Action |
|---|---|---|
/collections/eofy-sale-2025 | Last year’s sale collection, linked from a partner page | 301 to /collections/eofy-sale |
/collections/eofy-2026 | Same, with the year in the address | 301 to /collections/eofy-sale |
/pages/end-of-financial-year-clearance | One-off page, no links or traffic | 301 to /collections/eofy-sale |
/collections/eofy-2026-skincare | Overlaps /collections/skincare | 301 to /collections/skincare |
/products/eofy-mystery-bundle | One-off bundle, now discontinued | Closest bundle, or leave as 404/410 |
The last row shows the other rule. If there is no real equivalent, a 404 or 410 is acceptable, because Google treats them the same. Pointing it at something unrelated just to avoid an error is not. The product version of this decision is in discontinued products on Shopify: 301 or 410, and sold-out items are covered in out-of-stock products on Shopify.
Measure it year to year
Filter the Search Console Performance report to the permanent URL and look at impressions, clicks and queries containing your EOFY phrase, month by month. Compare June 2028 with June 2027, not with May 2028. Google’s traffic debugging guide suggests the last 16 months of data and a year-over-year comparison to see whether a pattern repeats because of a holiday or trend, and says longer histories need the Search Analytics API or bulk data exports. June 2027 will still be inside the 16 months in June 2028, but export it anyway. For orders, use the same habits as in the Black Friday checklist: a baseline, and the sale period reported separately.
When this is more than you need
If your EOFY offer is a single email code for existing customers and nobody searches for it, you do not need a public page. You still need to deactivate the code on the day. The permanent page earns its keep when you run a public sale with its own offer and expect shoppers to look for it.
Key takeaways
- Use one permanent, yearless address for the EOFY sale. Google’s advice for Black Friday is a recurring URL, not a new one each time. Applying that to EOFY is my reasoning, not Google’s wording.
- Create and publish the page months ahead and link it from your home page. Google says to create sale pages well before the sale.
- Keep the page live after 30 June (the ATO’s date for the end of the Australian financial year; a Wednesday in 2027). Swap the content, not the address.
- Plan the off-season. An empty grid is a case Google’s own guidance covers.
- On 1 July: remove tags and compare-at prices, end discounts, swap the block, check markup and the feed, request a recrawl once.
- Redirect old year-specific sale pages with a 301 to the closest equivalent, not in bulk to the home page. Keep the redirects for at least a year and avoid chains.
- Keep claims about time and prices true, and never reset a timer. This is general information, not legal advice.
- Compare year over year, and export your numbers.
FAQs
Should I delete my EOFY sale page after 30 June?
No. Google removes URLs that were already indexed and now return a 4xx response from its index. Keep the address and change the content: remove the sale, say when the next one returns, and update the title.
Can I put the year in the EOFY sale URL?
I would not. Google’s example for a recurring event is a yearless address. Put the year in the title and heading, which you can change, and keep the address the same.
When should I publish the EOFY sale page?
As early as you can. Google says to create sale pages well before the sale so Googlebot has time to find and index them, and nobody can say how long that takes. A page published in the first quarter of 2027 has months of lead time before a 30 June sale. Link it from your home page or footer.
Should I use a 301 or a 302 for old EOFY pages?
A 301, if you are sure the redirect will not be reversed, which is the case for pages you are retiring. Google treats a permanent redirect’s target as a canonical signal and a temporary redirect’s target as not. Use a 302 only for something genuinely temporary.
What do I do with discount codes after the sale?
Deactivate them on 1 July. Shopify says customers using a deactivated code see an error that no valid discount matches, and that reactivating an expired discount makes it active with no end date. Add a line to the page for late arrivals so the click does not end in a dead end.
How do I stop expired offers showing up in Google?
Remove sale prices and tags on the day, check the product structured data and clear any past priceValidUntil date, and remove sale prices from your Merchant Center feed if you use one. Google says a listing may not display if priceValidUntil is in the past.
When is EOFY 2027, and when do the big sales run?
30 June 2027 is a Wednesday, and the ATO describes 30 June as the end of the Australian financial year for entities that balance on that date. Sale dates are set by each retailer. Click Frenzy’s EOFY event ran 18 to 24 June in 2026, and I found no 2027 dates from Click Frenzy as at 31 October 2026. Check clickfrenzy.com.au.
Want help with your collection pages and old URLs before June?
Collection pages and category architecture are part of the e-commerce SEO work in our Shopify SEO service. We do not give tax or accounting advice: anything about EOFY dates, deductions or reporting is a question for your accountant, not for us. If you would like a second opinion on your collection pages and old URLs first, book a free 30-minute diagnostic or tell us about your store. We look at your store before we recommend anything, and we tell you honestly if SEO isn’t the right move. No pitch.
Free 30-min diagnostic
Seen enough?
Book a free diagnostic.
We'll look at your store's search pages, find what is costing you traffic and tell you what to fix first. No pitch. No email gate. 30 minutes.
More from Prism3
Afterpay vs Zip vs Shop Pay Instalments: Shopify AU
Afterpay, Zip and Shop Pay Instalments compared for Australian Shopify stores: merchant fees, payouts, approval, checkout placement and a worked margin example.
AI-Referred Orders on Shopify: What Is Real and What Is Hype
What Shopify has disclosed about AI-referred orders, why the 13x headline needs context, how to find AI traffic in GA4 and Shopify, and what to do now.
AI Visibility Tools for Shopify: What They Measure and Miss
What AI visibility tools for Shopify stores really count: mentions, share of voice and citations, where the data is sampled or unstable, and how to use them.