> For the complete documentation index, see [llms.txt](https://docs.funnelish.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.funnelish.com/integrations/shopify/connect/custom-app.md).

# Shopify custom app

A [Shopify custom app](https://help.shopify.com/en/manual/apps/custom-apps) can be connected to Funnelish by going through [**Account > Integrations > Shopify**](https://app.funnelish.com/integrations/5) then clicking on **"Connect using a custom app..."**

<figure><img src="/files/YZxaLYVPleSTKVpPXdur" alt=""><figcaption></figcaption></figure>

### Creating a Shopify custom app

Now let's head to Shopify to create our custom app and get the credentials needed to connect it to Funnelish.

1. Go to your Shopify store and click on **Apps** > **App and Sales channel settings.**

<figure><img src="/files/RfPcPDL603FfWiF7Nnwm" alt=""><figcaption></figcaption></figure>

2\. Click **Develop apps for your store.**

<figure><img src="/files/ncgaS54RiYpLz0DuEYH1" alt=""><figcaption></figcaption></figure>

3\. If it's first time creating a custom app, you'll be asked to **allow custom app developments first.**

![](/files/2ell8fbDhAqgZtqlmySk)

4\. Click **Create an app** and give it a name, eg. "Funnelish".

### Assign access scopes

Once the app is created we need to assign it certain access scopes for it to have access to your store to create orders and list products.

1. Click **Configure Admin API scopes** inside the app panel.

&#x20;![](/files/BPogg74d3s7UwMaFnAua)

2\. Assign the following permissions:

* &#x20;`read_products`, `write_products`
* &#x20;`read_orders`, `write_orders`
* &#x20;`read_customers`, `write_customers`
* `read_fulfillments`, `write_fulfillments`

Once these are selected click **save.**

### Install the custom app

Now we are ready to install the app and connect it to Funnelish.

1. Click **Install app.**&#x20;

<figure><img src="/files/RQDl7qvsIfI76i7ClSJs" alt=""><figcaption></figcaption></figure>

2\. You'll be given a token, click **Reveal token once** and then **copy** it.

<figure><img src="/files/e9wdBwDSWGxSrYcTO3gF" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
The access token is shown only once, make sure to copy it into Funnelish. Otherwise you'll need to recreate a new custom app.
{% endhint %}

3\. Also, copy the **API Key** and  **API secret key** into Funnelish as wel&#x6C;**.**

![](/files/r0Z7NMqYdX8PzyWCFo5Q)

4\. Make sure to add your store name into Funnelish as well, either as: **storename** or **storename.myshopify.com**, both formats are valid.

Once all the details are added to Funnelish, click **Save Changes** and your Shopify store will be connected to your Funnelish account.

*If there is a problem connecting to your Shopify custom app, Funnelish will show an error popup with further details.*

Now it's time to set the product automations. Click [here](/integrations/shopify/automate.md) to learn how to do this.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.funnelish.com/integrations/shopify/connect/custom-app.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
