Emergency situation

In case of emergencies or breakdowns, you can send an SMS to our emergency hotline

On-call phone (SMS only)

+45 29 70 15 95

Send an SMS with the following information:

  • Your name and webshop
  • Description of the problem
  • Your callback phone number

Notes: This service is only for critical situations where your webshop is down or has serious problems. For regular support, please use our normal support channels.

Copy a product using Claude or the REST API

Here's how to duplicate a product in Shoporama using Claude or the REST API. The copy is always saved as a draft, and you can override the name, EAN, SKU, price, and URL in the same call.

Reading time: approx. {eight} minutes
Shopejer Developer

If you need to create a sister product or a variant of a product you already have, you don't have to start from scratch. Shoporama has a tool that duplicates an existing product in the same store, so you can start with a finished product and just edit the parts that are different. The tool is available in two places: as the ` product_copy ` action when working with Claude, and as the ` POST /product/{id}/copy ` endpoint in our REST API.

For both store owners and developers

If you just need help with day-to-day operations, simply ask Claude to copy the product using plain language. If you’re building a permanent integration, call the same endpoint via the REST API. Both methods use the same functionality under the hood, so the result is identical.

How to use it with Claude

You’ll need the ID of the product you want to copy. If you’re unsure where to find it, read “Find the ID of a product, category, or order.” Once you know the ID, simply describe what you want, for example:

"Create a copy of product 227429, name it 'Sister T-shirt,' assign it EAN 5799999000011 and a price of 149.50, and save it as a draft."

Claude will create the copy, assign the name, EAN, and price you requested, and leave it as a draft so you can review it before it goes live in the shop. For Claude to work with products, the Catalog section must be enabled under your AI tools. You can read more about this in “Customize which tools Claude can use in your shop.”

What’s Included in the Copy

A copy includes everything that describes the product itself, so you rarely have to start from scratch. The following is copied automatically:

  • The product name, with “(copy)” appended to the end, unless you specify a different name yourself
  • Price and sale price
  • All descriptions, both the short and the long ones
  • Meta and SEO fields
  • All images, which are physically duplicated so that the copy has its own image files
  • Categories and main category
  • Product labels
  • Related products
  • The variant profile with its attributes and variant values, such as size and color
  • Additional fields (extension data)
  • A new, unique URL so that the copy does not conflict with the source’s address

Some items are intentionally omitted because they must be unique to each product or make the most sense to set manually. The following are not copied by default:

  • EAN/barcode (gtin): The copy does not receive a barcode, so you avoid two products sharing the same EAN
  • Item number/SKU (own_id): The source’s item number is not included
  • Stock quantity: Stock is event-based and is never copied. The copy starts with no stock, so you control when it can be sold
  • Similar products: The list of similar items is not carried over
  • Canonical: By default, the copy is a standalone product and does not point back to the source via a canonical link

Override fields in the same call

You can give the copy its own identity the moment it is created. This is useful because it means a copy will never appear online with the source’s name or EAN—not even for a brief moment. You can set the following fields in the copy call itself:

  • name: override the copy’s name. The default is the source’s name plus "(copy)"
  • gtin: Set the copy’s EAN/barcode. The default is no barcode
  • own_id: Set the copy’s item number/SKU. The default is no item number from the source
  • price: override the price. The default is the same price as the source
  • rewrite_url: override the URL slug. The default is a unique slug generated automatically
  • is_online: Set to true to publish the copy immediately. The default is false, meaning draft

Also copy EAN, SKU, or similar (optional)

Sometimes you’ll specifically want to include fields that aren’t copied by default. For this, there are four optional settings, all of which are disabled by default:

  • copy_gtin: Include the source’s EAN. Note that this creates a duplicate barcode, so use it only if you have a reason to do so
  • copy_own_id: Include the source’s item number/SKU
  • copy_similar: Copy the list of similar products
  • canonical_to_source: Set the copy’s canonical URL to the source product. This is useful for true duplicate variants where you want to consolidate SEO signals onto a single product

If you set both an override and the corresponding option, the override takes precedence. For example, if you specify both `gtin` and `copy_gtin`, the copy will use the EAN you entered yourself, not the source’s.

Draft by default

A copy is always created as a draft—that is, hidden from the store—unless you explicitly request that it be made live. This is intentional. This means that a copy will never be visible in the store with the source’s name or barcode during the split second between when it’s created and when you’ve edited it. You can take your time to check the name, price, images, and variants, and only then put the copy online. If you want to skip that step and publish immediately, simply set ` is_online ` to `true` in the call.

Via the REST API

If you’re building an integration, call the endpoint directly. Copying requires a token with write access, so make sure your key has write or full access. If you don’t have a key yet, read Find or Create an API Key and check out the general guide in the REST API.

The simplest copy requires no body. The copy will be a draft with the source’s name plus " (copy)":

curl -X POST -H "Authorization: YOUR-API-KEY" \
  https://dinshop.dk/REST/product/227429/copy

If you want to create a sister item with its own identity and publish it immediately, include the fields in a JSON body:

curl -X POST -H "Authorization: YOUR-API-KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Sister T-shirt","gtin":"5799999000011","own_id":"SIS-001","price":149.50,"rewrite_url":"sister-t-shirt","is_online":true}' \
  https://dinshop.dk/REST/product/227429/copy

You send the add-ons in the same way. Here, you copy the source’s EAN, and the copy is set to point the canonical URL back to the source:

curl -X POST -H "Authorization: YOUR-API-KEY" \
  -H "Content-Type: application/json" \
  -d '{"copy_gtin":true,"canonical_to_source":true}' \
  https://dinshop.dk/REST/product/227429/copy

The response is a 201 Created status with the entire new product, including its new product_id, so you can continue working with the copy in the same workflow.

Frequently Asked Questions

Does the copy go live immediately so my customers can see it?

No. A copy is always created as a hidden draft, so no customers will see it. It will only appear in the store once you choose to make it visible, or if you set `is_online` to `true` in the call itself. So feel free to review it at your leisure first.

How do I find the product ID I need?

The ID is listed in the product’s URL in the admin panel and in the product overview. Without the ID, the tool can’t know which product to duplicate. You can see exactly where it’s located in “Find ID for a Product, Category, or Order.”

What happens to the images?

The images are automatically transferred to the copy, so you don’t have to upload them again. They are physically duplicated, so the copy has its own image files and doesn’t share them with the original. If you want different images on the copy, you can simply edit them afterward.

Are the EAN, item number, and inventory carried over?

No, not by default. The EAN/barcode, item number/SKU, and stock levels are not copied, so you avoid having two products with the same barcode or item number. You can request to have the EAN and SKU included in the same transaction, and you can set the stock levels for the copy yourself.

Can I undo the action if I decide not to use the copy after all?

Yes. Since the copy starts as a hidden draft, you can simply delete it again. Customers won’t have seen it, and your original product remains completely untouched.

Does this work for products with variants?

Yes. The variant profile and its associated attributes and variant values—such as size and color—are copied over to the new product. However, the stock levels for the variants aren’t included; you’ll need to set those yourself.

Can I copy a product to one of my other stores?

No. The tool creates the copy in the same store as the source product. It’s intended for sister and variant items within a single store. If you need to move product lines between your stores, that’s a different workflow.

Do the copy and the original cause issues in Google?

The copy gets its own unique URL and isn’t set as the canonical version of the original, so it stands as a separate product. Write unique titles, descriptions, and meta descriptions for the copy so that the two pages do not compete for the same keywords. If the copy is essentially just a variant of the original, you can set the canonical tag to the source in the same step.

Can I copy many products quickly?

Yes. It takes just one call per product, so you can create many copies in a short amount of time. All copies are created as drafts and aren’t visible until you publish them, so you can safely bulk-create them and clean up afterward.

How do I make this call via the REST API?

Send a POST request to /product/{id}/copy with a JSON body, which can be empty for a standard copy. You must include a token with write access in the Authorization header. The request returns the new product’s full data, including a new product_id.

If you need help, feel free to email us at support@shoporama.dk.