> For the complete documentation index, see [llms.txt](https://docs.violet.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.violet.io/ecom-platforms/shopify/troubleshooting-faqs.md).

# Troubleshooting & FAQs

## Troubleshooting Common Issues

<details>

<summary>404 Redirect Error During OAuth</summary>

**Problem**: Merchant clicks the installation link and sees a 404 error from Shopify during the OAuth redirect.

**Cause**: The **App URL** in Shopify Partner Dashboard uses a different host than the **Redirect URI**. Shopify requires both URLs to share the same host.

**What went wrong:**

* ❌ App URL: `https://yourcompany.com` + Redirect URI: `https://connect.violet.io/...` → **Hosts don't match**
* ✅ App URL: `https://connect.violet.io/your-alias` + Redirect URI: `https://connect.violet.io/your-alias/...` → **Hosts match**

**Solution:**

1. Go to [Shopify Partner Dashboard](https://partners.shopify.com) → **App Distribution**
2. Navigate to your Custom App → select **View on Dev Dashboard** (far right link)
3. Click **Configuration** (or **App setup**)
4. Update the **App URL** field to:
   * **Live Mode**: `https://connect.violet.io/{YOUR_APP_ALIAS}`
   * **Test Mode**: `https://connect.violet.dev/{YOUR_APP_ALIAS}`
5. Verify the **Redirect URI** uses the same host as the App URL
6. Save changes
7. Have the merchant retry the installation link

**Finding Your App Alias:** [Channel Dashboard](https://channel.violet.io) → App Settings → Violet Connect

**Prevention:** See [Shopify App Setup](/ecom-platforms/shopify/shopify-app-setup.md#app-url) for correct configuration.

</details>

<details>

<summary>Install Link Missing or Invalid</summary>

**Problem**: Cannot find the Install Link in Shopify Partner Dashboard, or the Install Link field shows an error in Violet pre-registration.

**Cause**: Custom distribution was not selected for the app.

**Solution:**

1. Go to [Shopify Partner Dashboard](https://partners.shopify.com) → **App Distribution** → Your Custom App
2. Look for the **Distribution** section on the app overview page
3. Click **"Select distribution method"**
4. Choose **"Custom distribution"** and confirm
5. After selection, you'll see the Distribution page with the Install Link
6. Copy the Install Link and use it in your Violet pre-registration

![Select Distribution Method](/files/vjUnK5li5tB5dlqPJEKo)

**Prevention:** Always select "Custom distribution" immediately after creating your custom app. See [Shopify App Setup - Step 5](/ecom-platforms/shopify/shopify-app-setup.md#step-5-select-custom-distribution).

</details>

<details>

<summary>Merchant Clicked Violet Connect Before Installing App</summary>

**Problem**: Merchant clicked the Violet Connect link but sees an error because the app isn't installed.

**Cause**: The merchant needs to install the custom app via the Shopify Install Link BEFORE using Violet Connect.

**Solution:**

1. Ask the merchant to close the Violet Connect page
2. Send them the **Shopify Install Link** (Channel Dashboard → Pre-Registered → Actions → Copy Shopify Install Link)
3. Have them click the Install Link and complete app installation in Shopify admin
4. After installation is confirmed, send them the Violet Connect link again
5. They should now be able to complete onboarding successfully

**Prevention:** Always send the Shopify Install Link first and confirm the merchant has installed the app before sending the Violet Connect link.

</details>

<details>

<summary>Wrong Store URL</summary>

**Problem**: Merchant reports the Violet Connect link shows the wrong store name/URL.

**Cause**: Store URL was entered incorrectly during pre-registration.

**Solution**:

1. Delete the incorrect pre-registration (Actions menu → Delete)
2. Create a new pre-registration with the correct store URL
3. Copy and send the new Violet Connect link to merchant

</details>

<details>

<summary>Permission Errors - Features Don't Work</summary>

**Problem**: Merchant completes installation but features don't work (products missing, shipping rates not calculating, etc.)

**Cause**: Missing API scopes in the custom app configuration.

**Solution**:

1. Go to [Shopify Partner Dashboard](https://partners.shopify.com) → **App Distribution**
2. Navigate to your Custom App → select **View on Dev Dashboard** (far right link)
3. Check Configuration tab → Admin API access scopes
4. Add missing scopes from [Prerequisites](/ecom-platforms/shopify/prerequisites.md) section
5. Update pre-registration: Actions menu → Edit
6. Have merchant use new link and reinstall

</details>

<details>

<summary>Missing Credentials from Shopify Partner Dashboard</summary>

**Problem**: Can't pre-register merchant because you don't have credentials.

**Cause**: Haven't completed prerequisites in Shopify Partner Dashboard.

**Solution**:

1. Review the [Prerequisites](/ecom-platforms/shopify/prerequisites.md) section
2. Log in to [Shopify Partner Dashboard](https://partners.shopify.com)
3. Create custom app for this merchant
4. Configure required API scopes
5. Generate and copy credentials
6. Return to Channel Dashboard to pre-register

</details>

<details>

<summary>Merchant Already Connected</summary>

**Problem**: Merchant tries to connect but sees "store already connected" error.

**Cause**: This store is already connected to your channel (check "Connected Merchants" tab).

**Solution**:

* If merchant needs a fresh connection, delete the existing connection first
* Create a new pre-registration
* Send new link to merchant

</details>

***

## Frequently Asked Questions

### Migration & Timeline

<details>

<summary>Do we need to migrate all existing custom apps immediately?</summary>

**No.** Existing merchant-created custom apps continue working indefinitely. Only migrate when you need to:

* Change permissions
* Rotate credentials
* Set up a new merchant

</details>

<details>

<summary>Can merchants still access their existing custom apps?</summary>

**Yes.** They can view them in Settings > Apps and sales channels, and they can uninstall them if needed. They just can't create new ones after January 1, 2026.

</details>

<details>

<summary>What happens to my old Shopify integrations?</summary>

**Old integrations**: Merchants connected before January 2026 will continue to work as-is. No changes needed for existing merchants.

**New onboarding**: All new merchants must follow the pre-registration process in this guide.

</details>

<details>

<summary>Why did Shopify require this change?</summary>

Shopify deprecated the previous channel-controlled custom app model to give merchants better security and control. With single-merchant custom apps:

* Each merchant owns their app and credentials
* Merchants can revoke access at any time
* Merchants have full visibility into API permissions
* Better audit trail for data access
* Merchants have full control over their integrations

</details>

### Permissions & Scopes

<details>

<summary>What if a merchant needs additional permissions?</summary>

You must create a new single-merchant app with the expanded permissions and send them a new installation link. The old app will continue working until they're ready to switch.

Permission changes require:

1. Update the custom app in Shopify Partner Dashboard to include additional scopes
2. Create a new pre-registration with the updated credentials
3. Have merchant reinstall using the new link

</details>

<details>

<summary>Do we need to update our API version?</summary>

Not necessarily. Single-merchant apps work with any stable API version. However, it's good practice to use recent versions (2025-10 or later).

</details>

### App Management

<details>

<summary>Can one single-merchant app be installed on multiple stores?</summary>

**No.** Each single-merchant app is designed for exactly one merchant. You need to create separate apps for each merchant, even if they're owned by the same company.

</details>

<details>

<summary>How do we handle merchants who create new stores after January 1, 2026?</summary>

You'll need to create a new single-merchant app and send them the installation link for each new store.

</details>

<details>

<summary>Can we automate app creation via API?</summary>

Shopify doesn't currently provide an API to create single-merchant apps programmatically. You must create them through the Partner dashboard. Violet will proactively notify you if this changes.

</details>

<details>

<summary>What if we have hundreds of merchants?</summary>

This is time-intensive but manageable:

* Create apps in batches
* Prioritize based on need
* Remember that existing apps don't require immediate migration
* Establish a process for creating new apps efficiently

</details>

### Credentials & Security

<details>

<summary>I lost my Client Secret or forgot to copy it before navigating away</summary>

The Client Secret appears only once in Shopify. If you didn't copy it, you'll need to regenerate it:

1. Go to [Shopify Partner Dashboard](https://partners.shopify.com) → **App Distribution**
2. Navigate to your Custom App → select **View on Dev Dashboard** (far right link)
3. Navigate to the **API credentials** section
4. Find the Client Secret field and click **Rotate**

![Shopify App Credentials](/files/nBNjHO9OxOHHJdkvdvDq)

4. Copy the new Client Secret immediately
5. Return to Violet Channel Dashboard
6. Edit the pre-registration for this merchant (Actions menu → Edit)
7. Update the **Client Secret** field with the new value
8. Save the pre-registration
9. If the merchant already started installation with the old credentials, send them the updated installation link

</details>

<details>

<summary>What happens to our existing API credentials?</summary>

They continue working unchanged. The access tokens from merchant-created custom apps remain valid.

</details>

### Pre-Registration

<details>

<summary>Can I edit a pre-registration after creating it?</summary>

Yes. Use the **Edit** action in the Pre-Registered tab to update:

* Merchant Name
* Store URL
* Client ID
* Client Secret

**Important**: If a merchant has already started installation, editing credentials will require them to reinstall with updated credentials.

</details>

<details>

<summary>How do I know when a merchant has completed installation?</summary>

The merchant automatically moves from the "Pre-Registered" tab to the "Connected Merchants" tab. You'll see them appear in your Connected Merchants list, and their status will change from "Pending" to "Active".

</details>

<details>

<summary>Can I pre-register the same merchant multiple times?</summary>

No. Each store URL can only have one active pre-registration. If you need to create a new pre-registration:

1. Delete the existing one (Actions menu → Delete)
2. Create a new pre-registration with the updated credentials
3. Send new installation link

</details>

<details>

<summary>What is the Install Link and where do I find it?</summary>

The **Install Link** is a Shopify-generated URL that allows merchants to install your custom app directly in their Shopify admin.

**Format:** `https://admin.shopify.com/store/{store}/oauth/install_custom_app?client_id=...`

**Where to find it:**

1. Go to [Shopify Partner Dashboard](https://partners.shopify.com)
2. Navigate to **App Distribution** → Select your custom app
3. Click on the **Distribution** section
4. If you haven't selected a distribution method, click "Select distribution method" and choose "Custom distribution"
5. The Install Link appears on the Distribution page with a Copy button

**When you need it:** The Install Link is required when creating a pre-registration in Violet Channel Dashboard. It's also what you send to merchants FIRST, before the Violet Connect link.

![Copy Custom Install Link](/files/rwulG4QhTaMV2X7nMyNI)

</details>

<details>

<summary>Why do merchants need to install the app before using Violet Connect?</summary>

The two-step process (Install Link, then Violet Connect) is required because:

1. **Shopify requirement**: Custom apps must be installed in the merchant's Shopify admin before OAuth can complete
2. **App authorization**: The Install Link triggers Shopify's app installation flow, which grants the necessary permissions
3. **OAuth handshake**: Violet Connect then completes the OAuth process using the pre-registered credentials

**The correct order is:**

1. Channel sends Shopify Install Link to merchant
2. Merchant installs app in Shopify admin
3. Channel sends Violet Connect link to merchant
4. Merchant completes Violet onboarding

Skipping step 2 will cause errors during Violet Connect onboarding.

</details>

### Global-E

<details>

<summary>Can Violet create orders for merchants who use Global-E?</summary>

**Yes, but with limitations.** Violet can create orders for domestic markets (e.g., US-to-US) without any issues. However, for international markets managed by Global-E, orders created through Violet bypass Global-E's checkout entirely. This means Global-E will not act as the Merchant of Record, and no duties, taxes, or landed costs will be calculated by Global-E for those orders. See the [Global-E x Shopify](/ecom-platforms/shopify/global-e.md) page for full details.

</details>

<details>

<summary>Why can't Violet route orders through Global-E's checkout?</summary>

Global-E's checkout is rendered inside an iFrame on the merchant's storefront and is not accessible via a standalone API. Duty/tax calculations, payment processing, and Merchant of Record coverage are all tightly coupled to that checkout session. There is no API endpoint to calculate duties independently or to retroactively assign MoR coverage to an order created outside of Global-E's flow.

</details>

<details>

<summary>What should a merchant do if they use Global-E and want to connect with Violet?</summary>

The merchant should notify their channel partner during onboarding that they use Global-E for international orders. The channel partner can then configure the integration so that Violet only creates orders in markets where Global-E is not the Merchant of Record, avoiding unintentional tax compliance gaps.

</details>

<details>

<summary>Will international orders created by Violet appear in Global-E's reporting?</summary>

**No.** Orders created by Violet go directly through the Shopify API and are invisible to Global-E. They will not receive a `GEOrderId`, will not appear in Global-E's settlement reports, and will not be covered by Global-E's financial reconciliation.

</details>

<details>

<summary>Is the merchant liable for taxes on international orders placed through Violet that bypass Global-E?</summary>

**Yes.** When an order bypasses Global-E, the merchant — not Global-E — is the legal seller. The merchant assumes responsibility for VAT/GST obligations, customs compliance, and duties in the destination country. Merchants should consult their tax and legal advisors before enabling international markets for Violet orders outside of Global-E's coverage.

</details>

## Costs & Billing

<details>

<summary>Are there any cost changes?</summary>

Single-merchant apps (custom apps) remain free. There's no cost difference between old and new custom apps.

</details>

***

### Installation Flow Diagram

```mermaid
graph TD
    A[Shopify Requires Change] --> B[Access Shopify Partner Dashboard]
    B --> C[Create Custom App for Each Merchant]
    C --> D[Configure Required API Scopes]
    D --> E[Select Custom Distribution]
    E --> F[Copy Install Link]
    F --> G[Copy Credentials<br/>Client ID & Secret]
    G --> H[Pre-register Merchant<br/>in Channel Dashboard]
    H --> I[Send Install Link<br/>to Merchant]
    I --> J[Merchant Installs App<br/>in Shopify Admin]
    J --> K[Send Violet Connect Link<br/>to Merchant]
    K --> L[Merchant Authenticates<br/>with Violet]
    L --> M[Pre-filled Store Details<br/>Displayed]
    M --> N[Merchant Clicks<br/>Connect to Shopify]
    N --> O[Violet Completes<br/>OAuth Handshake]
    O --> P[Merchant moves to<br/>Connected Merchants Tab]
    P --> Q[✓ Onboarding Complete]
```

***

### Additional Resources

#### Official Shopify Documentation

* [Partner Dashboard](https://partners.shopify.com/)
* [Custom Apps Guide](https://shopify.dev/docs/apps/build/authentication-authorization)
* [OAuth Documentation](https://shopify.dev/docs/apps/build/authentication-authorization/access-tokens/authorization-code-grant)
* [API Scopes Reference](https://shopify.dev/docs/api/usage/access-scopes)

#### Violet Documentation

* [Violet Connect Overview](/prism/violet-connect.md)
* [Platform Integration Guides](/ecom-platforms/ecom-platforms.md)


---

# 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.violet.io/ecom-platforms/shopify/troubleshooting-faqs.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.
