> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryaeris.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Publish to Shopify

> Connect your Shopify store so Aeris can publish AEO/SEO content and on-page fixes to it. Create a custom app, grant access, and paste the credentials into Aeris.

Connect your store so Aeris can publish content to it. You create a custom app in Shopify, grant access, and paste the credentials here. **\~5 minutes.**

<Info>
  Every publish is a **draft** you approve — nothing goes live on its own.
</Info>

<Steps>
  <Step title="Create the app">
    Shopify admin → **Settings → Apps and sales channels → Develop apps → Build apps in Dev Dashboard → Create app**. Name it **Aeris Publish**.
  </Step>

  <Step title="Set the URLs (Configuration)">
    **App URL**

    ```text theme={null}
    https://tryaeris.ai
    ```

    **Redirect URL**

    ```text theme={null}
    https://ads.realry.com/api/v1/content-connections/shopify/callback
    ```
  </Step>

  <Step title="Add the scopes (Access → Scopes)">
    ```text theme={null}
    read_products,read_inventory,read_content,write_content,write_products,write_themes,write_publications
    ```
  </Step>

  <Step title="Release, then Install">
    Click **Release**, then **Install app**. Don't skip Install — it's what actually grants access.
  </Step>

  <Step title="Copy the credentials">
    **Settings → Credentials** → copy the **Client ID** and **Client secret**. Your store domain is under **Settings → Domains**.
  </Step>

  <Step title="Connect in Aeris">
    **Settings → Publishing** → paste the domain, Client ID, and secret → **Connect Shopify**. You'll authorize on Shopify and land back here connected.
  </Step>
</Steps>

<Note>
  Publishes are draft-first and reversible. We request no customer or order data.
</Note>

## Troubleshooting

<AccordionGroup>
  <Accordion title="&#x22;bad_hmac&#x22; error">
    Re-copy the client secret. Trailing whitespace on the paste is the usual cause.
  </Accordion>

  <Accordion title="Redirect error">
    The **Redirect URL** in Shopify must exactly match Step 2: `https://ads.realry.com/api/v1/content-connections/shopify/callback`. Any trailing slash difference fails.
  </Accordion>

  <Accordion title="You deleted the app in Shopify">
    Just reconnect from Aeris. Nothing carries over; the flow re-runs from Step 1.
  </Accordion>
</AccordionGroup>
