Golden Rules
Before you migrate anything
- Squarify is a one-time migration, not an ongoing two-way sync - it copies your selected Square data into Shopify once, on your schedule. Products has separate opt-in tools (Inventory Sync, Re-sync Products) if you want to keep pulling in changes afterward.
- Square access is read-only. Squarify only reads your Square data - it never modifies, creates, or deletes anything there.
- All migrations are safe to re-run - existing Shopify records are skipped or updated, never duplicated.
- Every migration type has its own history table, downloadable report, and (for Inventory Sync and Gift Cards) an optional scheduler.
How a migration runs
Six phases, the same shape for every data type you choose.
Connect Square
Sign in on Square's own secure login screen and approve read-only access. Squarify never writes to or modifies your Square data.
Choose what to migrate
Pick which data types you want - Products, Customers, Gift Cards, and/or URL Redirects. Change this anytime later from Settings.
Configure each migration
Choose fields, locations, and settings for each migration type. Review counts and summaries before running.
Run the migration
Squarify creates or updates records in Shopify with real-time progress. Pause, resume, or cancel at any time.
Review the report
Download a detailed Excel report for every run - see exactly what was created, updated, skipped, or failed.
Migration complete
Once every data type you selected shows Completed on your dashboard checklist, you'll see a confirmation your one-time migration finished. Products still offers optional ongoing tools afterward - Inventory Sync and Re-sync Products.
Important to know
Product Catalog - what gets migrated
Your full Square catalog is imported to Shopify - titles, prices, variants, images, and inventory, plus the behind-the-scenes details covered further down this page. Configure field mapping and taxonomy before running to control exactly what comes across.
Build your Products checklist
InteractiveAnswer a few questions about your Square catalog - we'll tell you exactly what to select on the real Products settings page.
Your settings checklist
Included
- Product title, description, and body HTML
- Base price and compare-at price per variant
- SKU and barcode per variant - sourced from Square's UPC/EAN by default, or SKU instead if configured in Field Mapping
- Weight, height, width, and depth
- Product images - up to 250 per product
- All variants with individual pricing, SKUs, and stock levels
- Inventory quantities per mapped location
- Product tags from Square item labels
- Square category mapped to Shopify product type via taxonomy
Field Mapping
Choose which fields to include on the Products page before running. Required fields are always on; optional fields are fully configurable. Settings are saved between sessions.
Always included
- Title & description
- Price & compare-at price
- Variants
Configurable (on/off)
- SKU & barcode - including whether to keep your real barcode, use SKU as the barcode instead, or fall back between the two
- Product images
- Product tags
- Vendor
- Weight & dimensions
- SEO title & meta description
- Behind-the-scenes tracking info (status, archived/deleted flags, product type) - used to recognize this product on future syncs
- Modifier and option details - sizes, add-ons, and any extra charges
- Category details, used for filtering and reporting later
- A plain-text copy of the description, useful for search
Category → product type mapping
Square categories are matched to Shopify's standard product taxonomy on the Products page. Review and adjust before running. Unmapped categories default to the Square category name as the product type.
| Status | Meaning |
|---|---|
| Manual | You selected a Shopify taxonomy match yourself. |
| Auto | Squarify found a close match automatically. |
| Unmapped | Uses the Square category name as the product type instead. |
Large migrations (2,000+ products)
What Squarify remembers about each product
Behind every migrated product, Squarify quietly keeps a set of hidden details from Square - so nothing about its original source is lost, duplicate migrations are recognized automatically, and other Squarify tools (like Inventory Sync and Re-sync) know exactly which Shopify product to update later.
| What it remembers | Why it matters |
|---|---|
| Original Square product & variant | Lets Inventory Sync, Re-sync Products, and duplicate-detection recognize this exact item on every future run. |
| Real barcode (UPC/EAN) | Kept safe in the background when your barcode setting uses SKU instead - so the original value is never lost. |
| Active/inactive status at time of migration | A record of how the item looked in Square when it was brought over. |
| Archived / deleted flags | Tracked separately, since an item can be archived, deleted, both, or neither in Square. |
| Taxable status | Carried over from Square for reference. |
| Item type | Physical good, food & beverage, digital item, event, donation, and so on - used to decide whether Shopify treats it as a shippable product. |
| SEO permalink from Square Online | Used as a fallback match when creating URL Redirects. |
| Discount tags that apply to this product | So you can filter for exactly which products carry a given Square discount. |
| Modifier & option details | Group names, prices, and settings for every size/add-on option, preserved in full even though Shopify doesn't display them the same way Square does. |
| Bundled product components | For items built from other items in Square. |
What doesn't migrate
Not included
- Product orders, transaction history, or sales data
- Customer reviews or ratings
- Archived or deleted Square products - skipped by default; enable "Include Archived/Deleted Products" in Migration Settings to bring them in as archived Shopify products
- Square Online page layouts or custom sections
- Which sales channels a modifier set is restricted to - Square doesn't expose this reliably; everything else about a modifier still migrates
- Type-specific extras with no Shopify equivalent: a Digital item's downloadable file, an Event's date/location, a Donation's custom pricing - the product itself still migrates
Notes & edge cases
Inventory Sync
Refreshes stock quantities in Shopify for products already migrated from Square - without touching titles, prices, images, or any other field.
Find already-migrated products
Squarify looks through Shopify for every variant it recognizes as one it migrated from Square.
Check Square's current stock
For each matched variant, the current stock level is fetched fresh from Square.
Compare before writing
Squarify checks what Shopify currently has on hand at each mapped location before writing anything.
Write only real differences
If Square and Shopify already match at every mapped location, the variant is left untouched and marked Skipped - only differences are written.
Skip anything not recognized
A variant that isn't recognized as one Squarify migrated is left alone - run Product Migration first so it can be tracked.
Updates
- Available stock quantity per Shopify location
- Inventory level per variant at each mapped location
Stays unchanged
- Title, description, and images
- Prices or compare-at prices
- Tags and product organization
- Variant structure, SKUs, or barcodes
Notes
- You choose which mapped Square locations to include in a given sync, whether you run it immediately or schedule it - it's never forced to sync every location every time.
- Only products Squarify recognizes as already migrated are updated. If that recognition link is ever lost (e.g. removed manually in Shopify), the variant is excluded and shown as "Skipped (No Square Tracking Link)" in the report - re-run Product Migration to restore it.
- Can be scheduled to run automatically from the Products page - up to 14 days out, no need to keep the page open.
- A Square location with no matching Shopify location is skipped entirely for this sync.
- Products with inventory tracking turned off in Shopify are skipped, since there's no stock count to update.
- A variant whose stock already matches Square at every mapped location is left alone and marked Skipped - this is expected, not an error.
- The downloadable report shows both the Shopify and Square quantity at each mapped location, so you can see exactly what changed (or didn't) for every product.
Re-sync Products
Refreshes products already migrated with their latest Square data - and optionally creates any added since your last check - using your current Field Mapping and Taxonomy settings. It never touches Collections or Discounts, even if those are turned on in your settings.
| Mode | What happens |
|---|---|
| Only what changed since last sync | Asks Square for just the items it recorded a change to since your last full check - much faster on a large catalog. |
| My entire catalog | Checks every product regardless of when it last changed - slower, but thorough. Your very first re-sync always uses this. |
Notes
- Available once your first Product Catalog migration completes - disabled until then.
- The "Check for changes since" dropdown lets you manually pick any past completed run to check from instead of the automatic checkpoint - picking an earlier point only ever re-checks more products, never fewer, with no risk of duplication.
- The automatic checkpoint only moves forward once a run genuinely finishes - a cancelled or failed run never moves it, so nothing is silently missed on the next check.
- Only one Products/Inventory Sync job (Re-sync Products included) runs at a time per store - enforced on Squarify's servers as well as on screen.
Discounts
During Product Migration, every Square discount is saved onto its applicable products - a searchable label plus a stored record of the discount details - regardless of which mode you pick below. The mode decides whether Squarify also builds a real, working Shopify discount from that saved data.
| Mode | What happens |
|---|---|
| Save only | No Shopify discount is created - the discount details are saved on each product so you can build your own price rules or filter products by discount later. |
| Discount Code | A real Shopify discount code is created for each Square discount, automatically applied to the right products. Customers enter the code at checkout. |
| Automatic Discount | Applies on its own at checkout, with no code needed - targeted to the same products. |
Creating a discount yourself from saved data
If you chose "Save only," here's how to turn that saved data into a real Shopify discount whenever you're ready:
Automatic discount
- In Shopify Admin, go to Discounts → Create discount.
- Choose "Amount off products."
- Under Method, select "Automatic discount."
- Give it a title (e.g. "Spring Sale 20%").
- Set the discount value to match your original Square discount.
- Under "Applies to," choose "Products with a specific tag" and enter the label Squarify saved on your products for this discount.
- Set the active dates and save - every product that had this discount in Square already carries the matching label, so Shopify applies it to exactly the right products.
Discount code
- In Shopify Admin, go to Discounts → Create discount.
- Choose "Amount off products."
- Under Method, select "Discount code."
- Enter a code - often just the Square discount's name (e.g. SPRING-SALE-20).
- Set the discount value to match Square.
- Under "Applies to," choose "Products with a specific tag" and enter the saved label again.
- Optionally set usage limits and active dates, then save and share the code.
What doesn't carry over automatically
- Variable-amount discounts - if a Square discount lets your staff type in the amount at checkout rather than using a fixed value, Shopify can't recreate that automatically (it needs a fixed value up front). These are saved as a reference label only - set the actual value yourself when creating the Shopify discount.
- Day/time schedules - (e.g. weekdays only) - Shopify has no equivalent, so the migrated discount stays active every day within its date range instead of just the scheduled hours.
- "Apply discount after taxes" - every Shopify discount is calculated before tax, with no setting to change that. The discount itself still migrates; only that timing detail is dropped. If exact tax math matters, a common workaround is letting the order go through at full price and issuing a partial refund afterward.
- Point-of-Sale-only / Online-only restriction - Shopify has no setting that limits a discount to one sales channel, so Squarify labels the migrated discount " · POS Only" or " · Online Only" in its title and tags it accordingly, so you know it needs a manual channel restriction if that matters to you.
Collections
Square categories become Shopify manual collections. All products assigned to a category are automatically linked to the corresponding collection - created as part of Product Catalog Migration, not a separate step.
What migrates
- Collection title from Square category name
- Collection description, if set in Square
- All products assigned to that category, linked automatically
What doesn't
- Smart/automated collection rules beyond the tag match Squarify sets
- Collection sort order - Shopify defaults apply
- Collection images or banners
- Subcategory nesting - categories become flat top-level collections
Customers
Square customers are imported with full contact details, addresses, marketing preferences, and tags. Existing Shopify customers matched by email are automatically skipped, never overwritten.
Build your Customers checklist
InteractiveTell us about your Square customer list - we'll tell you exactly what to select on the real Customers settings page.
Your settings checklist
What migrates
- First name, last name, email, and phone number
- Billing and shipping addresses, including company name
- Email marketing consent (subscribed / unsubscribed)
- Customer notes
- Square customer groups, converted to Shopify customer tags
- Any global tags you set - added to every migrated customer
- A label marking the customer as migrated by Squarify, so it can always be found and grouped later
What doesn't
- Customers with neither email nor phone, unless "Migrate customers with no email and no phone" is on
- Order history or purchase records
- Payment methods or saved card data
- Loyalty points or reward balances
| What it remembers | Why it matters |
|---|---|
| Birthday | Carried over from Square, only if you turn that on in migration settings. |
| Original signup date | The date the customer was first created in Square. |
| Square's own reference ID | If the customer had one in Square, kept for reference. |
| How the customer was originally added | e.g. through a third-party app, or an instant checkout profile in Square. |
Gift Cards
Active Square gift cards are imported with their current balances. Customers can use the same codes at checkout immediately after migration.
Build your Gift Cards checklist
InteractiveA couple of quick questions - we'll tell you exactly what to select on the real Gift Cards settings page.
Your settings checklist
What migrates
- Gift card GAN code from Square
- Current balance at time of migration
- Currency
- Original creation date, as a note attribute
What doesn't
- Expired or deactivated Square gift cards
- Zero-balance gift cards
- Gift card transaction or redemption history
URL Redirects
Maps old Square product URLs to their new Shopify equivalents, preserving SEO rankings and ensuring saved links land on the right page. Run this after Products, so every product already has a Shopify handle.
| Example | |
|---|---|
| Your old Square link | yourstore.com/product/blue-mug/12ab34 |
| Where it now points | yourstore.com/products/blue-mug |
- Open the URL Redirects page - a sample of matched redirects is shown automatically.
- Download the Full Preview (CSV) to review every product's match before running anything.
- Check "Approve URL redirects and ready to migrate" - both this and the download are required before Migrate unlocks.
- Click "Migrate to Shopify" to create all matched redirects.
- Redirects go live immediately - Squarify then visits each one to confirm it actually works and reports how many are verified.
What doesn't get a redirect
- Products not yet migrated to Shopify - they have no Shopify page to point to yet
- Products no longer Active in Shopify (draft or archived), even if a Square match was found
- A close-but-not-exact match - flagged "Needs review" instead of created automatically
- Square category or collection page links (handled separately - see Notes)
- Custom Square Online pages or blog posts
Notes
- Run this after Products migration, so every product already has a Shopify page to redirect to.
- The on-screen sample mostly shows product redirects, but reserves a couple of rows for category/collection matches if your store has any.
- Re-running skips redirects that already exist - safe to run again after migrating more products.
- Both the CSV download and the approval checkbox are required every visit to this page, including right after clicking Refresh Data.
- After creating redirects, check the "verified working" summary and the downloaded report for any flagged as needing attention.
Product Weight + Online Price
Square doesn't share product weight or an original/sale price with any app, including Squarify - this is a separate, optional step using a file you export from Square yourself. Only products already migrated through Squarify are matched.
- Export your items from Square Dashboard → Items & catalog → Export items (CSV or Excel).
- Open the file and keep whichever of these columns you need: "Weight" with numeric values (optionally with a "Weight Unit" column too), and/or "Online Sale Price" - Square's own column for an item's active discounted price. A row only needs one of the two.
- For large catalogs, it helps to delete every other column and remove blank rows first - Squarify only ever reads the Token, Weight, Weight Unit, SKU, and Online Sale Price columns, so trimming the rest can shrink the file 10x or more.
- Upload the file in Settings → Product Weight Migration. Each row is matched to the right Shopify variant using a hidden tracking value Squarify added when it first migrated that product (the file's Token column) - falling back to matching by SKU for anything that's missing.
- If your file has an Online Sale Price column, a toggle appears offering to also update price - off by default, since it changes a live selling price.
- Preview the matched variants, then click Apply Weight Updates.
| Name this column in your file... | ...and Squarify reads it as |
|---|---|
| Weight (kg) | Kilograms, automatically |
| Weight (lb) | Pounds, automatically |
| Weight (g) | Grams, automatically |
| Weight (oz) | Ounces, automatically |
| Weight | Falls back to your chosen default unit |
What doesn't update
- Rows with no tracking match and no usable SKU fallback
- Price / compare-at price, unless the price-update toggle is on and your file has a value in Online Sale Price for that row
- Any other variant field - SKU, inventory, and so on are never touched by this tool
Notes
- Re-upload and re-apply at any time to correct weights or refresh prices - each upload creates a new job in Recent Migrations.
- A row is included if it has a value for Weight, Online Sale Price, or both - a blank cell in one column just means that field isn't touched, not that the whole row is skipped.
- Price updates stay off by default even when your file has an Online Sale Price column, since it's a live selling-price change.
- When a variant needs both weight and price updated, Squarify applies them together in one update rather than two, and groups multiple variants of the same product to apply faster on large files.
- Download the report afterward to see which variants updated or failed - rows matched by SKU fallback instead of the usual tracking link are noted as such.
- If a row's SKU matches more than one Shopify variant, Squarify never guesses - that row is flagged separately in the preview instead.
