> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firmhouse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Automatically sync Shopify products

> Learn how the Firmhouse Shopify app automatically creates and updates products from Shopify product tags.

The Firmhouse Shopify app can automatically create and update Firmhouse products when you change products in Shopify. Shopify becomes the source of truth for product details such as title, price, availability, and inventory. You do not need to start a product sync manually.

This automatic sync works for plan-based projects and order-based projects with plan support. In **Apps > Shopify > Product sync**, you can confirm that your project uses it when you see **Automatic product syncing enabled**.

<Note>
  If the Product sync page shows checkboxes for choosing how and what to sync, your project still uses the [legacy Shopify product sync](/shopify/importing-and-syncing-products). Contact Firmhouse if you want to discuss migrating an existing project to automatic product sync.
</Note>

## Choose which products to sync

Add one or both of these tags to a **product** in Shopify:

| Shopify product tag      | Product created in Firmhouse                                                                 |
| ------------------------ | -------------------------------------------------------------------------------------------- |
| `FIRMHOUSE_SUBSCRIPTION` | A recurring product. In an order-based project, it follows the subscription's billing cycle. |
| `FIRMHOUSE_ONE_TIME`     | A product that is scheduled only once.                                                       |
| Both tags                | Both a recurring product and a one-time product for every Shopify variant.                   |

Shopify product tags apply to every variant of the product. For example, if a Shopify product has three variants and both tags, Firmhouse creates six products: a recurring and a one-time product for each variant.

The automatic sync does not use the legacy `FIRMHOUSE_SHIPMENT_*` tags to create products. It supports products that are scheduled once or on the billing cycle. Configure the available billing frequencies with Firmhouse plans and Shopify selling plans instead of putting a custom shipment interval on an individual product.

## Sync a product

1. In Shopify admin, go to **Products** and open the product you want to sync.
2. Add `FIRMHOUSE_SUBSCRIPTION`, `FIRMHOUSE_ONE_TIME`, or both in the **Tags** section.
3. Set the product status to **Active** or **Unlisted**.
4. Save the product.
5. In Firmhouse, go to **Products** and verify that every expected variant and product type appears.

Firmhouse receives the Shopify update and processes every variant in the background. Most updates appear shortly after you save the product, but large product updates or Shopify API limits can cause a short delay.

## What is synchronized

For every tagged Shopify variant, Firmhouse synchronizes:

* Product and variant title
* Price
* SKU
* Variant image, or the product's featured image when the variant has no image
* Vendor and Shopify product type
* Whether the product requires shipping
* Inventory and in-stock status
* Shopify product status and Firmhouse availability

When a recurring product is created or updated, Firmhouse synchronizes its applicable Shopify selling plans.

Changes made to these fields in Shopify can overwrite their values in Firmhouse the next time the product is synchronized.

The product's separate **Available in Firmhouse checkout** and **Existing customers can add this product to their subscription** settings are managed in Firmhouse. Automatic product sync does not overwrite them. This lets an Active or Unlisted Shopify product remain available to existing subscribers while new Firmhouse checkouts reject it. Shopify checkout imports are unaffected.

## Understand tags and availability

For Active and Unlisted Shopify products, changing a tag updates the availability of the corresponding Firmhouse product:

* Adding a tag creates the matching product type if it does not exist and makes it available.
* Removing `FIRMHOUSE_SUBSCRIPTION` makes the corresponding recurring product unavailable.
* Removing `FIRMHOUSE_ONE_TIME` makes the corresponding one-time product unavailable.
* Replacing one tag with the other makes the old product type unavailable and creates or enables the new product type.
* Removing both tags makes both Firmhouse product types unavailable.

Firmhouse retains the product records and their connections to subscriptions and order history when products become unavailable or are archived. If you add a removed tag again while the Shopify product still exists, the matching Firmhouse product becomes available after the next sync.

### Availability in the Customer Portal

An unavailable product is excluded from the product choices customers see when they add, replace, or swap products in the Customer Portal. Customers cannot newly select that product while it is unavailable.

If the product is already on a subscription, it remains visible on that subscription. Making it unavailable does not automatically remove it, replace it, or change its next scheduled order. Whether Firmhouse should skip unavailable products when creating orders is configured separately with [Product availability controls](/configure/subscription-options/skip-orders-with-unavailable-products).

Availability is one of several Customer Portal filters. Making a product available does not guarantee that every customer can select it: its separate Customer Portal availability setting, country settings, collections, plan, compatible order schedule, and stock configuration can also affect whether it appears.

## Shopify product statuses

| Shopify status             | Automatic sync behavior                                                                                                                                                                              |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Active** or **Unlisted** | Tagged variants are created or updated and are available in Firmhouse.                                                                                                                               |
| **Draft**                  | New products are not created. Products that were synced previously are updated and made unavailable.                                                                                                 |
| **Archived**               | Existing products are made unavailable. New archived products are skipped unless **Import archived products** is enabled in the Shopify app settings; imported archived products remain unavailable. |
| **Deleted**                | Firmhouse archives the matching products. Products that are still in use remain unarchived and are made unavailable.                                                                                 |

Deleting a variant has the same safe-archive behavior as deleting its Shopify product.

## Inventory and existing subscriptions

Firmhouse synchronizes Shopify's sellable online inventory. A product is marked out of stock when its tracked online inventory reaches zero. It remains in stock when Shopify does not track inventory or allows selling after inventory reaches zero.

Product tags, Shopify status, and inventory determine whether a product is available for new use. They do not automatically remove or replace that product on existing subscriptions. Review affected subscriptions separately before archiving a product or removing its tags.

## Common edge cases

### Both tags create what looks like a duplicate

This is expected. One Firmhouse product is recurring and the other is one-time. Remove the tag for the product type you do not want; that Firmhouse product will become unavailable.

### Only some variants should be synchronized

Shopify tags are set on the product and apply to all its variants. The automatic sync cannot select variants individually with these tags. Split the variants into separate Shopify products if they need different Firmhouse product types.

### A product does not appear in Firmhouse

Check that:

* The Shopify app settings show **Automatic product syncing enabled**.
* The tag is spelled exactly `FIRMHOUSE_SUBSCRIPTION` or `FIRMHOUSE_ONE_TIME`.
* The tag is on the Shopify product, not an individual variant.
* The product status is **Active** or **Unlisted**.
* The Shopify app is still connected and authorized.

Save the Shopify product again after correcting the configuration. If the product still does not appear, contact Firmhouse support with the Shopify product URL and your Firmhouse project name.

### A product is unavailable in Firmhouse

Confirm that its matching tag is still present and that the Shopify product is Active or Unlisted. If the product cannot be selected because it is out of stock, also check its sellable online inventory and inventory policy in Shopify.

## Related articles

* [Quick install Firmhouse on Shopify](/quick-install-shopify)
* [Selling plans and groups](/shopify/selling-plans-and-groups)
* [Order not created in Shopify](/configure/shopify/order-not-created-in-shopify)
