# Etsy Sync for PrestaShop — Documentation

> Etsy Sync connects your PrestaShop store to your Etsy shop: it exports your products as listings, keeps your stock in sync and automatically imports your Etsy orders into PrestaShop. This…

- Page: <https://www.datafirefly.com/en/documentation/sync-etsy-prestashop/>
- Language: en
- Last updated: 2026-07-06
- Other languages: [fr](https://www.datafirefly.com/documentation/sync-etsy-prestashop/index.md), [es](https://www.datafirefly.com/es/documentation/sync-etsy-prestashop/index.md), [de](https://www.datafirefly.com/de/documentation/sync-etsy-prestashop/index.md), [it](https://www.datafirefly.com/it/documentation/sync-etsy-prestashop/index.md), [pl](https://www.datafirefly.com/pl/documentation/sync-etsy-prestashop/index.md), [pt](https://www.datafirefly.com/pt/documentation/sync-etsy-prestashop/index.md), [nl](https://www.datafirefly.com/nl/documentation/sync-etsy-prestashop/index.md)
- Index: <https://www.datafirefly.com/en/documentation/llms.txt>

Etsy Sync connects your PrestaShop store to your Etsy shop: it exports your products as listings, keeps your stock in sync and automatically imports your Etsy orders into PrestaShop. This guide covers installation, connecting to Etsy, settings and day-to-day operation.

Compatible with PrestaShop 8.0 to 9.x, multistore. The module uses the official Etsy Open API v3 and an OAuth 2.0 connection (with PKCE): you never enter your Etsy password in PrestaShop.

## Requirements

- A working PrestaShop 8 or 9 store with back-office access.
- An active Etsy shop.
- An app registered on the Etsy developer portal (free) — see the next step.
- A server cron (or an external cron service) to automate stock sync and order import.

## Installation

1. In the PrestaShop back office, go to **Modules > Module Manager**.
2. Click **Upload a module** and drop the `dfetsy.zip` file.
3. Once installed, click **Configure**. You land on the module admin page, organized into tabs: Connection, Products, Orders, Settings, Cron, Logs.

## Create your Etsy app

The module connects to Etsy through your own developer app. The process is free and takes a few minutes.

1. Go to the Etsy developer portal (etsy.com/developers) and create a new application.
2. Etsy gives you an API key called the **keystring** (this is your Client ID).
3. In your Etsy app configuration, declare the **redirect URL** (Callback URL) exactly as shown in the module's **Connection** tab.

The redirect URL must be copied exactly. Any difference (http/https, presence or absence of a trailing slash) will make the OAuth connection fail.

## Connecting to Etsy

In the **Connection** tab:

1. Paste your **keystring** into the field and click **Save**.
2. Click **Connect my Etsy shop**. An Etsy tab opens and asks you to authorize the app.
3. After authorization you are redirected to a confirmation page. Return to the back office and reload the page: the banner should show **Connected** with your shop's name and ID.
4. Use the **Test connection** button to check everything works.

The access token is refreshed automatically by the module. The **Disconnect** button removes the tokens and the shop association.

## Settings

The **Settings** tab groups the sync behavior and the default Etsy attributes.

### Synchronization

- **Push PS stock to Etsy**: every quantity change is queued and sent on the next cron run.
- **Update the listing on every product save**: automatically re-exports the listing when you edit a linked product.
- **Import Etsy orders**: enables automatic import of paid orders.
- **Push product images**: attaches the product images to the listing on export.
- **Sync prices**: sends the PrestaShop price to Etsy.
- **Etsy price markup (%)**: applies a percentage to the exported price to absorb Etsy fees, without touching your PrestaShop price.
- **Export language**: language used for the listing title and description.

### Default Etsy attributes

- **Who made it / When**: mandatory Etsy values (who_made / when_made) applied to new listings.
- **Taxonomy ID**: default Etsy category for listings (refer to Etsy's Seller Taxonomy).
- **Shipping profile** and **Return policy**: lists loaded automatically from your Etsy shop once connected.
- **Listing state on export**: _Draft_ (recommended — you review before publishing) or _Active_ (immediate publication, Etsy listing fees apply).

### Order import

- **Order state**: PrestaShop status assigned to imported orders.
- **Carrier**: default carrier associated with imported orders.
- **Send PrestaShop emails on import**: disabled by default, because Etsy already notifies the buyer. Leave it off in most cases.

## Exporting products to Etsy

In the **Products** tab, search for an item by name, reference or ID.

- **Export to Etsy** creates a listing with the product's title, description, tags, images and price. The listing is created as a draft (or active depending on your settings), then the inventory (SKU, price, quantity) is sent.
- **Update** pushes the information again to an already-linked listing.
- **Link (listing ID)** manually associates a PrestaShop product with an existing Etsy listing by entering the listing ID.
- **Unlink** removes the association (the Etsy listing is not deleted).

In version 1.0, a product is exported as a single SKU: the total quantity and base price are used. Products with combinations are therefore handled as a single SKU. Native Etsy variations are planned for a later version.

## Stock synchronization

When the quantity of a linked product changes in PrestaShop, a sync job is added to a deduplicated queue. No call to Etsy is made during browsing: the queue is processed by the cron, which avoids any slowdown of the front and back office. You can also trigger processing manually from the **Cron** tab.

## Order import

Paid Etsy orders are imported as PrestaShop orders:

- A guest customer is created (or reused if one already exists for that email).
- The Etsy shipping address is carried over. If the country is not recognized, the order is skipped and a message appears in the logs.
- The amount paid is applied to the cent: the PrestaShop order total matches the amount paid on Etsy.
- The buyer's note is attached as a message in the order's support thread.
- Deduplication by Etsy order ID (receipt) prevents any double import.

An Etsy order for a listing not linked to a PrestaShop product is skipped (a warning is written to the logs). Make sure the products you sell on Etsy are properly linked on the PrestaShop side.

## Setting up the cron

The **Cron** tab shows a token-secured URL. Call it every 5 to 15 minutes to process the queue (stock and products) and import new orders.

```
*/10 * * * * curl -s "https://your-store/index.php?fc=module&module=dfetsy&controller=cron&token=YOUR_TOKEN" > /dev/null
```

The **Run the queue now** button lets you trigger a manual run to test.

Without a regular cron run for several weeks, the Etsy refresh token may expire. Reconnecting from the Connection tab is enough to regenerate it.

## Logs and diagnostics

The **Logs** tab shows the event log (export, stock, import, errors). If a sync goes wrong, check it first: every Etsy error is recorded there with its message. Entries older than 30 days are purged automatically.

## Version 1.0 limitations

- One product = one single-SKU listing (no native Etsy variations).
- Single Etsy shop (one shop connected at a time).
- Shipment tracking is not yet pushed back to Etsy.
- The detailed per-line breakdown of shipping fees is not reconstructed (the Etsy total paid is authoritative).

## Frequently asked questions

### Are my listings published automatically?

By default no: they are created as drafts so you can review them before publishing on Etsy. You can choose the "Active" state in the settings to publish immediately.

### How do I avoid overselling across both channels?

Enable stock sync and a regular cron: every sale or quantity change in PrestaShop updates the Etsy quantity on the next cron run.

### Where is the source code?

The full code is included in the ZIP, uncrypted (PSR-4, SPL autoloader), for audit or customization.
