# Shopify

### How Releases Work

Shopify is one of the more advanced modules to run because stock is often very limited. Shopify is a general eCommerce platform used by many different stores, so running different Shopify sites is, for the most part, very similar.

Shopify releases can happen at a scheduled time or randomly. To know if a scheduled release is happening, the store will usually post about it on social media or on its release calendar.

Some Shopify sites and releases use a system called **Checkpoint**, which is simply a captcha that must be solved during the release before you are allowed to check out.

### Creating Tasks

To run Shopify, select one of the supported sites in the **Site** drop-down when creating a task group.

<figure><img src="https://1337991942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJECbanqeNDYnO0P6V06z%2Fuploads%2FAGKiwPtoOQKFonhqdGH5%2Fimage.png?alt=media&#x26;token=ce064947-6e40-441f-bc47-a063ca73f8fa" alt=""><figcaption></figcaption></figure>

After creating a task group, the first thing you will notice is the **Monitor** and **Checkout** tabs at the top. This is unique to Shopify. You will need to create separate **monitor tasks**, which only watch for the product, and **checkout tasks**, which handle the checkout process after product information is passed from the monitor tasks.

To add a **Monitor** task to the selected group, click the second blue **Add** icon to the right of the group name at the top of the page. Make sure to have the **Monitor** tab selected at the top of the task group.

* **Proxy Group (optional):** Select a proxy group if you want to run your tasks on proxies. Using proxies is highly recommended.
* **Monitor Delay**: Enter, in milliseconds, how often you want the monitor tasks to check the site.

<figure><img src="https://1337991942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJECbanqeNDYnO0P6V06z%2Fuploads%2Fi63w10o0Vc6jjHda6SkG%2Fimage.png?alt=media&#x26;token=fa381bcb-a2e7-45d7-89d3-427af61f0a29" alt=""><figcaption></figcaption></figure>

After entering these settings, click the **Products** tab to enter your product settings.

* **Monitor Input:** Enter the information for the product you want to run. More details on this are provided below.
* **Size:** Select the size you want to check out.
* Min Sizes Loaded: Enter the minimum number of sizes that must be in stock before your tasks will trigger.&#x20;
* **Product Quantity:** Enter how many of the product you want each task to check out.
* **Color (Optional):** Enter color keywords for the product. This setting is mainly used for **Supreme** and for products that have multiple variants loaded under the same product link.
* **Min Price / Max Price:** Set a price range if you want to filter products based on price. Does not include tax and shipping.
* **Task Quantity:** Enter the number of tasks you want to create.

<figure><img src="https://1337991942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJECbanqeNDYnO0P6V06z%2Fuploads%2F6zWWLv5fG2oo7jAdQ0Rp%2Fimage.png?alt=media&#x26;token=df84b4be-a982-41b2-92b4-95d22f2c4e78" alt=""><figcaption></figcaption></figure>

Once your settings are configured, click **Create** to create your tasks.

To add a **Checkout** task to the selected group, click the second blue **Add** icon to the right of the group name at the top of the page. Make sure to have the **Checkout** tab selected at the top of the task group.

* **Mode**: Select the task mode.
* **Retry Delay**: Enter, in milliseconds, how often you want the task to retry after a failure.
* **Proxy Group (Optional)**: Select a proxy group if you want to run tasks using proxies.
* **Discount/Promo Code (Optional)**: Enter a discount or promo code to apply at checkout.
* **Profile Group**: Select the profile group you want to use for the task.
* **Profile**: Select the specific profile to use.
* **Account Group (Optional)**: Select an account group if required.
* **Account (Optional)**: Select a specific account to use.
* **Wait for Discount Code**: Enable to wait until a discount code is applied before proceeding.
* **Task Quantity:** Enter the number of tasks you want to create.

<figure><img src="https://1337991942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJECbanqeNDYnO0P6V06z%2Fuploads%2FS7ZLDA0cPFn5DGTJcAB8%2Fimage.png?alt=media&#x26;token=49774629-81a0-45cf-b493-ec07a3be5ef5" alt=""><figcaption></figcaption></figure>

Once your settings are configured, click **Create** to create your tasks.

### Running Releases

#### Proxy Protection

Sometimes, a method Shopify uses to stop bots is proxy protection. This causes the site to throttle ISP proxies, which can leave your tasks stuck on a blue status for long periods of time (e.g., "Continuing Checkout..."), effectively slowing them down. This most commonly affects ISP proxies, so for these drops, you will need to run static residential proxies. Not all sites use this method. Some sites, such as Shoe Palace, consistently use it, while others may enable it randomly. You should be prepared in case a site turns it on.

#### Monitor Tasks

Monitor tasks are tasks whose sole job is to monitor the product and its stock. You do not want to run too many monitor tasks, as this can actually lead to worse performance. The suggested amount is 2 to 5 tasks. It is suggested to run at least 1 task without a proxy and 1 with a residential proxy in case a site turns on proxy protection. You can then run 2 to 3 on your ISP proxies. For monitor delay, it is suggested to run 1000ms. You will often start your monitor tasks one minute before the expected drop time.

In the Monitor Input section, there are several ways to set this up. Keywords are a way to specify possible words that will appear in the product info so the bot can automatically find the product you want. To enter words you want to match, use `+` with the words you want to match and `-` with the words you do not want to match. Each keyword must be comma-separated. If you do not include a symbol, it will be treated as a positive keyword. For example, if you want to run the product "Air Jordan 13 Retro White And University Red," possible keywords would be `+air,+jordan,+13,+university,+red,-grade,-school,-pre`. Note that the bot will match any product that contains your keywords. Here, we used negative keywords so the bot excludes grade school and preschool pairs, allowing it to only pick up the men's pair.

Additionally, with Valor, many sites allow you to run `+sku` and replace `sku` with the official retailer SKU. For example, you can run `+414571-102`, and the bot will pick up the Jordan 13 in men's sizing.

For Shopify, you can also enter multiline keywords. For example, if you were not sure whether a product was going to include "air" in the title, you could run `+air,+jordan,+13,+university,+red,-grade,-school,-pre` and then, on a new line, run `+jordan,+13,+university,+red,-grade,-school,-pre`.&#x20;

```
+air,+jordan,+13,+university,+red,-grade,-school,-pre
+jordan,+13,+university,+red,-grade,-school,-pre
```

You can run as many optional keyword sets as needed. This feature can also be used to run multiple different products in case you do not know which one is going to drop. For example, you can run 2 or more SKUs.

An important note about keywords is that they only work for new products on the site and may not pick up older products.

Another input type you can run on Shopify is the product link. Only some releases will require you to run a product link, which we will try to specify in Discord. If the product is already loaded on the site, you will often want to just run the link. When using a link, you cannot do multiline input. One task can only run 1 link at a time. You can mix and match monitor tasks, with some running keywords and some running links. Although this may not be needed most of the time, it is possible.

The next input type is variants. If you have a product's variants, you can input them in the format `var:123123,123123,12312`. With variants, you also cannot run multiline input. You also cannot run variants in the same task group as your other input types. The reason for this is that when monitor tasks are started with variants, they alert the checkout tasks immediately with the variant info, so it defeats the purpose of monitoring for when the product goes live.

To know which input type to run for a certain site or release, feel free to ask in the Discord.

#### Starting Tasks

Starting tasks on Shopify is something many people struggle with. The reason for this is Shopify's dynamic queue. Before explaining further, as of recently, Shopify now has 2 different queue systems based on the proxy type you are running. ISP proxies will now have to wait in queue longer than residential and local tasks.

When running a normal Shopify release, the bot will attempt to preload the checkout with a dummy product. When you create a checkout on a Shopify site, there is a possibility that you will have to wait in queue. What determines this is usually how much traffic is on the site at that moment. The more tasks people are running overall, the longer the queue wait time will be.

When the bot is preloading and creating the checkout before the drop, the purpose is so the bot can wait in queue before the release time and not have to wait in queue after the release.

After you have created your tasks several minutes before the release, you will want to begin testing the queue. How much earlier before the drop you should test depends on how hyped the release is, as for more desired products, a queue on the site can form up to 30 minutes before the release time.

To test the queue, simply select 5 of your checkout tasks and start them. If your tasks do not enter a queue, then you can stop them. If they do, look for the queue exit time shown on the task status and compare it to the release time. You want your tasks to be exiting within 5 minutes before the release. If the tasks are exiting much earlier than that, you will want to stop your test tasks, start them again, and continue this testing method. Sometimes, when testing, the tasks will be in the queue, but there will be no queue exit time. Simply restart the tasks and test again.

In some cases, 5 minutes before the release, there may not be a queue on the site. If that is the case, you will want to continue testing the queue up to 30 seconds before the release and try to get tasks that exit the queue as close as possible to the release.

Other times, there may not be a queue at all. In that case, simply let your tasks run.

If you let your tasks exit too early and they are on "Waiting For Product" when they pick up the product, they may be forced to wait in the queue again. Sometimes, if a site uses checkpoint, once checkpoint goes up it forces most of your tasks to enter the queue again, regardless. Other times, if the amount of site traffic increases significantly after a product drops, you will have to wait in the queue again.

### Captcha

Shopify has 2 types of captcha systems on its sites.

For Shopify checkpoint, you will need a Shopify Checkpoint harvester for this type of captcha. It is suggested to have 3 to 5 of these harvesters open.

A site can use this form of anti-bot protection to force you to solve a captcha in order to add an item to cart. There are currently two different forms of checkpoint captchas a Shopify website can use: reCAPTCHA v2 and hCaptcha. There are also two forms of hCaptcha a site can use for checkpoint. One may ask you to simply select all of the pictures of a specific item or animal, while the other may ask you to answer a question and then draw a box around an item in a picture. If a website uses hCaptcha for its checkpoint captcha, Valor will currently solve these for you automatically if you have checkpoint harvester(s) open. Valor will not solve reCAPTCHA v2 for you. These will need to be solved manually inside a Shopify Checkpoint harvester.

Another type is Shopify checkout captcha. Sometimes, after many checkout attempts, Shopify will require you to solve a checkout captcha. For this, you will need a Shopify Checkout harvester open. We suggest opening 3 to 5 of these as well. This captcha is hCaptcha. Note that this is not the same as checkpoint, but is in addition to it. You usually do not know beforehand if a task will need to solve hCaptcha, so it is suggested to always have the harvester open just in case.

We also suggest not enabling both categories on the same harvester window. Instead, have designated harvesters for each type to avoid checkout captchas getting in the way of checkpoint captchas, since you usually want to solve checkpoint captchas first.

### Antibots

Shopify uses the **Cloudflare** anti-bot system. This anti-bot system mainly focuses on the reputation of your proxies. They collect information about proxy IPs across the internet and decide how suspicious they appear. Because of that, there is often very little you can do as a user to fully control this. In some cases, proxies may already be flagged before you ever use them.
