Goal: Copy product data, such as prices and compare-at prices, from a source store to a destination store automatically, as often as every hour (or every 30 minutes on request). A scheduled export on the source store makes a file at a fixed URL, and a scheduled import on the destination store downloads that file and updates the products. You do not need an FTP server or another app.
Prerequisites:
You have Altera installed on both stores
Both stores are on the Pro plan, because scheduled jobs are only available on Pro (see Altera pricing plans)
The products already exist in the destination store with the same handles and the same variant SKUs as in the source store
Step 1 - Choose the columns to sync
The import updates every column that is in the file, so the export must only include the columns that you want to copy. A blank cell in the file clears that field in the destination store, and an extra column can overwrite data that you changed in the destination store.
For a price sync, use these columns:
Handle | Variant SKU | Variant Price | Variant Compare At Price |
|
|
|
|
|
|
|
Altera finds each product in the destination store by its Handle, and then finds the variant by its Variant SKU.
Do not include the ID or Variant ID columns. These IDs belong to the source store, and the products in the destination store have different IDs. Without them, Altera matches the rows by handle and SKU. For more information, see How imports find existing Shopify products.
If the handles are different in the two stores but the SKUs are the same, leave out the Handle column too. Altera then finds each variant by its SKU only, so each SKU must be unique in the destination store.
Step 2 - Create the export on the source store
In the source store, open Altera and create a new export.
Select Products.
Clear the column groups that you do not need, such as Category and Customs Information.
Click the edit button next to General and select only Handle. Then click the edit button next to Inventory / Variants and select only Variant SKU, Variant Price, and Variant Compare At Price.
Under Options, set File format to Single CSV (.csv).
Turn on the URL Visibility switch. The badge changes from Private to Visible.
Altera then saves the output at a long, random URL that the destination store can download without a login. Anyone who has the URL can download the file, so keep it private.
Step 3 - Keep the file name fixed
The URL of the file ends with the file name, so the file name must be the same for every run.
If you leave File name empty, Altera uses a fixed name such as Products_Export.csv for an export with a visible URL. If you enter your own file name, do not use date, time, or job run placeholders such as %Y, %H%M%S, or %{jobrun_id}. These placeholders change the name, and the URL, at every run. For the list of placeholders, see Export create page.
Note: If you create an export with a private URL and then make it visible later on the job page, the file name can still contain the date and time. Turn on URL Visibility before you create the export.
Step 4 - Schedule the export and copy the URL
In the Scheduling card, turn on Run job on a schedule.
Set the Start date and Start time, for example 9:00 AM.
In Repeat, select Every hour. This is the shortest interval by default. To sync every 30 minutes, contact support and ask for 30-minute schedules on both stores. The Every 30 minutes option then shows in the list.
Click Start export (or Schedule export if the start time is in the future).
When the first run is complete, open the job page and click the copy button next to Public URL.
The URL looks like https://files.getaltera.com/job-output/.../Products_Export.csv. Each run replaces the file at this URL with the latest data.
Step 5 - Create the remote import on the destination store
In the destination store, open Altera and click Remote import in the left menu.
Make sure that Connection type is Web URL (HTTP/HTTPS).
Paste the URL from Step 4 into the URL field.
Click Download.
Altera downloads the file and opens the import page, where you can check that all the columns matched. For more information about remote imports, see How to import Shopify data from FTP, SFTP, WebDAV server or remote URL.
Step 6 - Schedule the import
In the Scheduling card, turn on Run job on a schedule.
In Repeat, select the same interval as the export.
Set the Start time a few minutes after the start time of the export, for example 9:10 AM. This gives the export time to finish, so that each import downloads the new file.
Click Start import.
Rows without a Command value import with MERGE, so you do not need a Command column. MERGE updates the products that Altera finds. If no product in the destination store has the handle, MERGE tries to create a new product, and the row fails because the file has no Title. These rows show in the import results.
Outcome
On each run, the source store exports the latest prices to the same URL, and a few minutes later the destination store downloads the file and updates the matching variants. You can see each run in the job history of both stores, and in the Scheduling card on each job page. For more information, see Job detail page.
If you use the Updated at filter from the tips below, some exports have no products because nothing changed. The import of such a file finishes as successful with 0 rows imported. This is expected, and the next run imports the next changes.
To stop the sync, open the job page, click Edit in the Scheduling card, and set the status to Paused.
Tips
Small catalogs: export all products at every run. This is the most reliable setup, because it also corrects prices that a failed run did not update.
Large catalogs: add a filter to the export to include only products that changed recently. Click Add filter, select Updated at, select the condition in the last X minutes, and enter a window that is larger than the schedule interval, for example
120for an hourly schedule or60for a 30-minute schedule. The window is calculated again at each run. A change to a variant price also changes the Updated at time of its product, so price changes are included. The overlap is not a problem, because an import of the same price twice has no effect, but a window that is too small can miss changes when a run starts late. For more information, see Last X minutes.More fields: you can sync other columns in the same way, for example Tags or Status. Add only the columns that the source store controls, because each run overwrites them in the destination store.
Next steps
How to duplicate a Shopify store to copy all products to a new store before you start the sync
