Extensions Premium Joomla extensions backed by fast support & 7 day money back guarantee

SE Storefront for Shopify

SE Storefront for Shopify v1.2.1

SE Storefront for Shopify shows the products from your Shopify store on your Joomla site. Products, prices, variants and collections are copied into Joomla and refreshed automatically, and product images are copied to your own server. When a visitor buys, the Buy button takes them to your Shopify store to check out.

Contents

  1. Requirements
  2. Installation
  3. Quick start
  4. Options
  5. The shop page (menu item)
  6. The products module
  7. The dashboard
  8. Keeping products up to date
  9. Product images
  10. Search engines and sharing
  11. Styling
  12. Licence and updates
  13. Languages
  14. Permissions
  15. Troubleshooting
  16. Uninstalling
  17. Support

Requirements

  • Joomla 5.0 or later
  • PHP 8.1 or later
  • MySQL or MariaDB
  • Your server must be able to make outbound HTTPS requests (to your Shopify store)
  • The images folder of your site must be writable, so product images can be copied there
  • A Shopify store that is open to the public, or a Storefront API token (see Product source)

The installer checks the Joomla and PHP versions and stops with a clear message if either is too old.

Installation

  1. In Joomla, go to System > Install > Extensions.
  2. Upload pkg_seshopify_v1.2.2.zip.

This installs the package, which contains:

Part Element What it does
Component com_seshopify The shop page, product pages, dashboard and options
Module mod_seshopify_products Shows a selection of products anywhere on your site

To update, install the newer package over the top. Your settings, product choices and images are kept.

Quick start

  1. Go to Components > SE Storefront for Shopify and click Options.
  2. On the Store tab, enter your Shopify store URL, for example https://shop.example.com or https://yourshop.myshopify.com. Use the address only, with no path after it.
  3. Set the Currency symbol and Currency code to match your store, for example £ and GBP, or € and EUR.
  4. Click Save & Close.
  5. On the dashboard, click Sync now. Your products appear in the product list.
  6. Click Fetch images if the dashboard shows images still waiting. Large stores may need a few presses, or let the automatic refresh finish them.
  7. Go to Menus, add a new menu item, and choose SE Storefront for Shopify > Shop (product grid) as the type. Save it.
  8. Visit the new menu item on your site. You should see your products.

Options

Open Components > SE Storefront for Shopify > Options.

Store

Option Default What it does
Shopify store URL empty Your store's address, for example https://shop.example.com or https://yourshop.myshopify.com. No trailing path.
Product source Public feed, then Storefront API if the feed fails Where products are read from. See Product source.
Storefront API access token empty Optional. Used when the public feed is unavailable, or always if the source is set to Storefront API only.
Storefront API version 2026-07 The year and month of the Storefront API version. Shopify retires old versions after about a year, so update this if syncs start failing with a "not found" error.
Categories come from Shopify collections What the category filter on the shop page is built from: your collections, the product type field, or no category filter.
Collections to leave out frontpage,all Comma-separated collection handles that should not become categories, such as the home page collection. Only used when categories come from collections.
Currency symbol £ Shown before prices. Shopify's public feed doesn't include the currency, so set this to match your store's main currency.
Currency code GBP Three-letter code (GBP, EUR, USD) used in the product information for search engines. Leave empty to leave prices out of that information.
Refresh every (minutes) 60 How old the stored copy can be before it is refreshed. Minimum 5.
Cron secret key empty Turns on the cron URL. Letters and numbers only. See Keeping products up to date.

Product source

There are two ways to read products from Shopify:

  • Public feed. Every Shopify store publishes its products at /products.json. Nothing needs setting up apart from the store URL. It doesn't work if the store is password protected (for example, before launch) or if the feed has been turned off.
  • Storefront API. Shopify's official route. It needs an access token.

The default, Public feed, then Storefront API if the feed fails, uses the feed and only falls back to the API when the feed fails and a token is entered. Choose Storefront API only if your store is password protected, or if Shopify keeps rate-limiting your server (see Troubleshooting).

Getting a Storefront API access token

Shopify issues Storefront API tokens through its free Headless sales channel:

  1. In your Shopify admin, install the Headless channel from the Shopify App Store.
  2. Click Create storefront.
  3. Open the storefront and find its Storefront API access tokens.
  4. Copy either the public access token or the private access token. The extension works out which kind you entered.
  5. Paste it into Storefront API access token in the options, and save.

If you ever need to replace the token, generate a new one in Sales channels > Headless, update it in the options, then revoke the old one.

Display

Option Default What it does
Products per page 24 How many products appear on each page of the shop.
Columns 4 Products per row on wide screens. Narrower screens show fewer.
Thumbnail fit Fill the square (crops) Fill the square crops images to fill the square. Show the whole image fits the whole image inside the square.
Default sort order Featured Featured (your store's order), Newest, Price low to high, Price high to low, or Name A to Z.
Show sold out products Yes Whether products with no variants in stock are listed. Sold-out products show a Sold out badge.
Buy button text empty Replaces "Buy now" on the product page. Leave empty for the default.
Buy button background empty Background colour of the Buy button.
Buy button text colour empty Text colour of the Buy button.
Buy button background on hover empty Used while the pointer is over the button or it has keyboard focus.
Buy button text colour on hover empty As above, for the text. If both hover colours are empty, the button brightens slightly instead.
Product image background empty The colour behind product images, which shows through transparent PNGs. Empty means a light grey.
Accent colour empty (dark grey) Used for the Sale badge, focus outlines, and the Buy button when no button colour is set.
Text colour on the accent colour empty (white) Text on the accent colour, for example the Sale badge.
Category and sort buttons empty (light grey) Background of the category and sort buttons on the shop page.
Category and sort button text empty (dark grey) Text on those buttons.
Selected category and sort button empty (dark grey) Background of the selected button, also used while the pointer is over a button or it has keyboard focus.
Selected category and sort button text empty (white) Text on the selected button.
Open store links in A new tab Whether Buy buttons open your Shopify store in a new tab or the same tab.

Pick colours with enough contrast between background and text so everything stays readable. The same button colours are used for the module's "See all products" button.

Licence

Option What it does
Licence key The key from your SE24MEDIA account. See Licence and updates.
Licence server Leave as it is unless SE24MEDIA support tells you otherwise.

Permissions

Standard Joomla permissions for the component. See Permissions.

The shop page (menu item)

Create a menu item of type SE Storefront for Shopify > Shop (product grid). The shop page shows:

  • Category filter buttons, with a product count on each. Only categories with visible products are shown.
  • Sort buttons: Featured, Newest, Price low to high, Price high to low, Name A to Z.
  • The product grid, with image, name and price. Badges show Sold out or Sale (a variant priced below its compare-at price).
  • Pagination when there are more products than fit on one page.

Clicking a product opens its product page, which shows:

  • An image gallery. Click a thumbnail to swap the main image.
  • The name, categories and price, or a price range if variants are priced differently.
  • The Buy button, which goes to the product in your Shopify store.
  • For products with several variants, a list of every variant with its price and stock, and a Buy this option link for each one. That link opens the product in Shopify with that variant already selected.
  • The product description.

Menu item options

On the menu item's Shop options tab you can override the component options for this page:

Option What it does
Category Start on one category. Visitors can still switch to other categories.
Default sort order Use Global, or choose a sort order for this page.
Columns Products per row.
Products per page How many products per page.
Thumbnail fit Fill the square, or show the whole image.
Show sold out products Yes or No.

You can create several shop menu items, for example one per category.

The products module

Go to Content > Site Modules > New and choose SE Storefront Products for Shopify. Assign it to a position and to the pages where it should appear.

Option Default What it does
Category All products Only show products from one category.
Number of products 4 How many products to show (1 to 48).
Sort order Featured Featured, Newest, Price low to high, Price high to low, or Name A to Z.
Columns 4 Products per row, or products visible at once in the slider.
Links go to Product page on this site Where clicking a product goes: its page on your site, or straight to the product on Shopify.
Show sold out products No Whether sold-out products are included.
Layout Grid Grid or Slider (swipe or arrows).
Slide automatically No Slider only. Moves along every few seconds.
Seconds between slides 5 Slider only, when sliding automatically (2 to 30).
Show a button under the products Yes Shows a button below the products.
Button text empty The button's text. Empty shows "See all products".
Button link empty Where the button goes: a full address (https://…) or a path on your site (/shop). Empty links to the shop page.
Open the button link in The same tab Same tab or new tab.

About the slider:

  • Visitors can swipe or scroll it, or use the left and right arrows. The arrows hide when every product already fits.
  • Automatic sliding pauses while the pointer or keyboard focus is on the slider, and stops once a visitor uses it.
  • Automatic sliding never runs for visitors whose device asks for reduced motion.

The Button link only accepts web addresses and paths on your own site. Anything else, such as a javascript: link, is ignored and the button links to the shop page instead.

The dashboard

Components > SE Storefront for Shopify opens the dashboard.

Status

  • Shopify store URL: the connected store, or a warning if none is set.
  • Last successful sync: when products were last refreshed, and how many were found.
  • Last sync failed: shown when the most recent sync failed, with the reason.
  • Showing on the site: how many products are visible, out of the total.
  • Images: how many images are copied to your site, waiting, or failed.
  • Cron URL: the address for scheduled syncs, once a cron key is set.

Licence

Shows whether a licence key is entered and confirmed, the plan, and the date updates run until.

Toolbar

Button What it does
Sync now Refreshes all products from Shopify straight away and copies any new images.
Fetch images Copies images that are still waiting, and retries ones that failed.
Save Saves the hide and thumbnail choices in the product list.
Check licence Shown when a licence key is entered but not confirmed. Checks it with the licence server.
Remove licence check Shown when a licence is confirmed. Forgets the check and stops using the key for updates.
Options Opens the component options.

Product list

Every product from the store, with its image, name, categories and price.

  • Thumbnail: choose which of the product's images is used in the grid and the module.
  • Hide: tick to keep a product off your site. Hidden products don't appear in the shop or the module, and their product pages return "not found".

Click Save after changing either.

Sync log

The last 50 syncs, showing when each started, what triggered it (Automatic, Manual or Cron), whether it worked, how many products were found, and any message, such as which source was used and how many images were copied.

Keeping products up to date

Automatic refresh

When a visitor opens the shop, a product page or a page with the module, and the stored products are older than Refresh every (minutes), a refresh runs. It runs after the page has been sent to the visitor, so nobody waits for Shopify. Only one refresh runs at a time, however many visitors arrive.

If a refresh fails, the shop keeps showing the last good copy, and the next automatic attempt waits 5 minutes.

On a brand new install with no products yet, the first refresh runs straight away so the shop isn't empty.

Scheduled refresh (cron)

For quiet sites, or to keep images flowing on large stores, add a cron job:

  1. In Options > Store, enter a Cron secret key (letters and numbers only) and save.
  2. Copy the Cron URL from the dashboard. It looks like this:
 
   https://example.com/index.php?option=com_seshopify&task=cron&key=YOURKEY
  1. In your hosting control panel (for example, cPanel > Cron Jobs), add a job that calls it, for example every 30 minutes:
 
   */30 * * * * curl -s "https://example.com/index.php?option=com_seshopify&task=cron&key=YOURKEY" > /dev/null

The cron URL replies with plain text:

Reply Meaning
OK 120 Sync worked: 120 products.
OK 120 (images waiting: 35) Sync worked, and 35 images will be copied on the next runs.
Forbidden The key is wrong, or no key is set.
ERROR … The sync failed. The reason follows.

Keep the key private. Anyone with the full URL can start a sync, although they can't change anything else.

Product images

Images are copied from Shopify to your site so visitors' browsers never contact Shopify. This helps with GDPR, particularly for visitors in the EU.

  • Images are stored in images/seshopify/ in your Joomla site.
  • Each image is saved at up to three widths (480, 960 and 1600 pixels). Smaller originals are never enlarged.
  • Up to 12 images are kept per product.
  • Only JPG, PNG, GIF and WebP files of up to 8 MB are accepted, and only from Shopify's image servers or your store's own address.
  • Images are copied in batches. Each sync and each Fetch images press copies as many as time allows, and the rest follow on the next run.
  • An image that fails three times is marked failed. Sync now and Fetch images try failed images again.
  • When a product or image is removed from Shopify, its copies are deleted on the next sync.
  • Until an image has been copied, the product shows without it. Nothing is ever loaded from Shopify's servers instead.

Search engines and sharing

  • Product pages have readable addresses based on your shop menu item and the product handle, for example /shop/blue-cotton-tee.
  • Each product page sets the page title (following Joomla's "Site Name in Page Titles" setting), a meta description from the product description, and a canonical link.
  • Product information for search engines (schema.org) includes the name, description, images, brand (vendor), price range and stock. Prices are only included if a Currency code is set.
  • Sharing tags (Open Graph) give Facebook, LinkedIn and others the product's title and image.
  • The shop menu item's own Meta Description and Robots settings are applied to the shop page.

Styling

The extension takes its fonts and text colours from your template, and uses neutral greys by default so it fits most sites.

Colours in the options

The quickest way to match your brand is Options > Display:

  • Buy button: background, text, and hover colours. These are also used for the module's "See all products" button.
  • Accent colour: the Sale badge, focus outlines, and the Buy button if you haven't set button colours.
  • Category and sort buttons: normal and selected colours, each with a text colour.
  • Product image background: behind transparent images.

Leave any of them empty to keep the default. The colours apply to the shop page, product pages and the products module.

CSS variables

For anything else, such as spacing, rounded corners or the muted text colour, add CSS variables to your template's custom CSS file (for Cassiopeia, media/templates/site/cassiopeia/css/user.css):

 
css
.sebc,
.sebc-module {
    --sebc-radius: 6px;                  /* rounded corners */
    --sebc-gap: 1.25rem;                 /* space between products */
    --sebc-surface: rgba(0, 0, 0, 0.04); /* default image background */
    --sebc-border: rgba(0, 0, 0, 0.12);
    --sebc-muted: rgba(0, 0, 0, 0.6);    /* prices and small print */

    /* The colour options can also be set here instead: */
    --sebc-accent: #1f2937;
    --sebc-accent-contrast: #ffffff;
    --sebc-pill: #f3f4f6;                /* category and sort buttons */
    --sebc-pill-text: #1f2937;
    --sebc-pill-light: #1f2937;          /* selected button */
    --sebc-pill-active-text: #ffffff;
}

Colours chosen in the options take priority over the same variables in your CSS.

Licence and updates

There is no free or Pro version: every feature works without a licence key. A valid licence key is what lets your site receive updates.

  1. Enter your Licence key in Options > Licence and save.
  2. On the dashboard, click Check licence. The key is checked with the SE24MEDIA licence server.
  3. Once confirmed, the dashboard shows Licensed, and updates appear in System > Update > Extensions as normal.

The key is also kept in step with Joomla's download key for the update site, so you don't need to enter it under System > Update Sites.

If the licence expires or is suspended, the dashboard shows Expired. Everything keeps working, but no new updates are offered until it is renewed. To move the licence to another site, click Remove licence check on the old site.

Languages

The extension is translated into English, Spanish, Portuguese, German, French, Italian and Dutch. It uses whichever language your site and administrator are set to.

To change any wording, use Joomla's language overrides (System > Manage > Language Overrides). Search for the text you want to change.

Permissions

Set these in Options > Permissions.

Permission Allows
Configure ACL & Options Changing the options, and checking or removing the licence
Access Administration Interface Opening the dashboard, Sync now and Fetch images
Edit State Hiding products and choosing thumbnails

Troubleshooting

Message or problem What to do
"No store URL set" Enter your Shopify store URL in Options.
"The store URL in the component options is not valid" Use the full address including https://, with nothing after the domain.
"Shopify is rate limiting requests from this server (HTTP 429)" Shopify is limiting requests from your server, which is common on shared hosting. Wait a few minutes and try again. If it keeps happening, add a Storefront API token: the API has its own limits.
"Shopify refused the request" or "returned a web page instead of JSON" The store is probably password protected, or the public feed is turned off. Add a Storefront API token and set Product source to Storefront API only.
"Shopify rejected the Storefront API token" Check the token was copied in full from the Headless channel, and hasn't been revoked.
"Storefront API not found (HTTP 404)" Check the store URL, and set Storefront API version to a current version, for example the current year and month (YYYY-MM).
"The image folder images/seshopify could not be created or is not writable" Make the images folder writable by the web server. Ask your host if unsure.
Images stay "waiting" Press Fetch images a few times, or set up the cron job.
Some images "failed" Press Fetch images to try again. Images that aren't JPG, PNG, GIF or WebP, or are over 8 MB, can't be copied.
Prices show the wrong currency symbol Set Currency symbol in Options.
A product doesn't appear Check it isn't ticked Hide on the dashboard, and that Show sold out products is on if it's sold out.
"Could not reach the licence server" Your server must be able to make outbound HTTPS requests to se24media.co.uk. Ask your host.

Uninstalling

Go to System > Manage > Extensions, find SE Storefront for Shopify (type Package), and uninstall it. This removes the component, the module, the product tables and the copied images in images/seshopify/.

Support

Email support@se24media.co.uk or visit https://se24media.co.uk.

Shopify is a trademark of Shopify Inc. This extension is not made or endorsed by Shopify.

Version
v1.2.1 5 6
Last Updated
21 Oct 2026
Cost
£20 with 12 Month's Support
★ A developer license option is available at checkout for unlimited activations.

Contact us

If you have any questions, need a quote or want to chat to us about websites, please fill out the form and we will get back to you as soon as possible.

Turnstile *
Image