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

# Connect Shopline to Vortex IQ

> Connect Shopline to Vortex IQ for 52 KPI cards, plus cross-platform Vortex Mind diagnostics.

Connecting Shopline to Vortex IQ gives the AI OS a live read on your Shopline data, feeding the Nerve Centre dashboard, Vortex Mind diagnostics, and Ask Viq.

## What data Vortex IQ reads from Shopline

* **Order**
* **Product**
* **Customer**
* **InventoryLevel**
* **Channel**

## How to connect

<Note>
  Shopline uses credential-based authentication rather than OAuth. You provide these values directly rather than approving a redirect.
</Note>

<Steps>
  <Step title="Open Connected Sources">
    In your Vortex IQ workspace, go to **Settings → Connected Sources**. You need Admin role in the workspace to connect sources.
  </Step>

  <Step title="Find the Shopline card">
    Locate the Shopline connector card and click **+ Connect**. The connector drawer opens with a credential form.
  </Step>

  <Step title="Gather your credentials from Shopline">
    You will need:

    * **API Token (JWT Bearer)**: Long-lived HS512 JWT issued by the Shopline seller portal. Sent as 'Authorization: Bearer {token}'. Decode the payload to read sellerId, storeId, and exp; store those alongside the raw token. Phillipstoys' token expires 2027-07-24.
    * **API Region**: Shopline runs region-pinned hosts. Maps to base\_url: us → sl-open-us.myshopline.com, apac → sl-open-apac.myshopline.com, asean → sl-open-asean.myshopline.com. Cross-check the JWT payload's `domain` claim, it's the source of truth.
    * **Storefront Handle**: myshopline.com subdomain (e.g. phillipstoys3.myshopline.com, the merchant-facing storefront, NOT the open-api host). Used for deep-links into the Shopline admin from finding rows.
    * **App Key**: Shopline developer app identifier (decoded from the JWT `appKey` claim). Captured at credential-import; not required on every request.
    * **Seller ID**: Decoded from the JWT `sellerId` claim. Useful for support tickets + cross-store dedup if the same merchant runs more than one Shopline store.
    * **Store ID**: Decoded from the JWT `storeId` claim. The unique store identifier within Shopline's seller graph.
    * **Token Expiry**: Decoded from the JWT `exp` claim at credential-import. Powers the auth\_token\_expiry alert card.
    * **API Version**: Shopline API revision pinned in the URL (e.g. /admin/openapi/v20241201/orders.json). Phillipstoys is on v20241201; new merchants should use the latest documented.
    * **Webhook Secret**: Optional HMAC secret if the merchant has wired Shopline webhooks for order/refund events. Used to verify X-SL-Hmac-Sha256 on inbound POSTs.
  </Step>

  <Step title="Enter credentials in Vortex IQ">
    Paste each value into its matching field in the connector drawer.
  </Step>

  <Step title="Verify and connect">
    Click **Verify and Connect**. Vortex IQ makes a test API call to validate the credentials before saving them.
  </Step>
</Steps>

<Note>
  Vortex IQ only ever requests read-only access. Where Shopline offers scoped or read-only API keys, use one.
</Note>

## Available KPI cards

Vortex IQ populates **52** Nerve Centre cards from your Shopline data. See the [Shopline KPI card reference](/nerve-centre/kpi-cards/shopline) for the full list with definitions, calculations, and sentiment bands.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Credential verification fails">
    Re-check each value against the Shopline developer console for typos or trailing whitespace. If a scope or permission is missing, Shopline will typically return a 401 or 403 on the verification call rather than a generic failure.
  </Accordion>

  <Accordion title="Cards show no data after connecting">
    Allow time for the first sync to complete; large accounts can take longer. If cards are still empty after an hour, disconnect and reconnect to confirm the credentials were saved correctly.
  </Accordion>
</AccordionGroup>
